@agentuity/cli 1.0.59 → 2.0.0-beta.1

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 (189) hide show
  1. package/bin/cli.ts +2 -3
  2. package/dist/cmd/build/app-config-extractor.d.ts +27 -0
  3. package/dist/cmd/build/app-config-extractor.d.ts.map +1 -0
  4. package/dist/cmd/build/app-config-extractor.js +152 -0
  5. package/dist/cmd/build/app-config-extractor.js.map +1 -0
  6. package/dist/cmd/build/app-router-detector.d.ts +2 -5
  7. package/dist/cmd/build/app-router-detector.d.ts.map +1 -1
  8. package/dist/cmd/build/app-router-detector.js +130 -154
  9. package/dist/cmd/build/app-router-detector.js.map +1 -1
  10. package/dist/cmd/build/ci.d.ts.map +1 -1
  11. package/dist/cmd/build/ci.js +5 -21
  12. package/dist/cmd/build/ci.js.map +1 -1
  13. package/dist/cmd/build/ids.d.ts +11 -0
  14. package/dist/cmd/build/ids.d.ts.map +1 -0
  15. package/dist/cmd/build/ids.js +18 -0
  16. package/dist/cmd/build/ids.js.map +1 -0
  17. package/dist/cmd/build/index.d.ts.map +1 -1
  18. package/dist/cmd/build/index.js +8 -0
  19. package/dist/cmd/build/index.js.map +1 -1
  20. package/dist/cmd/build/vite/agent-discovery.d.ts +8 -4
  21. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
  22. package/dist/cmd/build/vite/agent-discovery.js +166 -487
  23. package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
  24. package/dist/cmd/build/vite/bun-dev-server.d.ts +43 -14
  25. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
  26. package/dist/cmd/build/vite/bun-dev-server.js +290 -129
  27. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  28. package/dist/cmd/build/vite/config-loader.d.ts +15 -20
  29. package/dist/cmd/build/vite/config-loader.d.ts.map +1 -1
  30. package/dist/cmd/build/vite/config-loader.js +41 -74
  31. package/dist/cmd/build/vite/config-loader.js.map +1 -1
  32. package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -1
  33. package/dist/cmd/build/vite/docs-generator.js +0 -2
  34. package/dist/cmd/build/vite/docs-generator.js.map +1 -1
  35. package/dist/cmd/build/vite/index.d.ts.map +1 -1
  36. package/dist/cmd/build/vite/index.js +0 -36
  37. package/dist/cmd/build/vite/index.js.map +1 -1
  38. package/dist/cmd/build/vite/lifecycle-generator.d.ts +10 -2
  39. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
  40. package/dist/cmd/build/vite/lifecycle-generator.js +302 -23
  41. package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
  42. package/dist/cmd/build/vite/route-discovery.d.ts +11 -38
  43. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
  44. package/dist/cmd/build/vite/route-discovery.js +97 -177
  45. package/dist/cmd/build/vite/route-discovery.js.map +1 -1
  46. package/dist/cmd/build/vite/server-bundler.js +1 -1
  47. package/dist/cmd/build/vite/server-bundler.js.map +1 -1
  48. package/dist/cmd/build/vite/static-renderer.d.ts +0 -2
  49. package/dist/cmd/build/vite/static-renderer.d.ts.map +1 -1
  50. package/dist/cmd/build/vite/static-renderer.js +19 -13
  51. package/dist/cmd/build/vite/static-renderer.js.map +1 -1
  52. package/dist/cmd/build/vite/vite-asset-server-config.d.ts +6 -3
  53. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  54. package/dist/cmd/build/vite/vite-asset-server-config.js +175 -69
  55. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  56. package/dist/cmd/build/vite/vite-asset-server.d.ts +8 -3
  57. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
  58. package/dist/cmd/build/vite/vite-asset-server.js +14 -13
  59. package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
  60. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  61. package/dist/cmd/build/vite/vite-builder.js +42 -190
  62. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  63. package/dist/cmd/build/vite/ws-proxy.d.ts +53 -0
  64. package/dist/cmd/build/vite/ws-proxy.d.ts.map +1 -0
  65. package/dist/cmd/build/vite/ws-proxy.js +95 -0
  66. package/dist/cmd/build/vite/ws-proxy.js.map +1 -0
  67. package/dist/cmd/build/vite-bundler.d.ts.map +1 -1
  68. package/dist/cmd/build/vite-bundler.js +0 -3
  69. package/dist/cmd/build/vite-bundler.js.map +1 -1
  70. package/dist/cmd/cloud/deploy-fork.d.ts.map +1 -1
  71. package/dist/cmd/cloud/deploy-fork.js +15 -36
  72. package/dist/cmd/cloud/deploy-fork.js.map +1 -1
  73. package/dist/cmd/cloud/sandbox/exec.d.ts.map +1 -1
  74. package/dist/cmd/cloud/sandbox/exec.js +28 -86
  75. package/dist/cmd/cloud/sandbox/exec.js.map +1 -1
  76. package/dist/cmd/cloud/sandbox/run.d.ts.map +1 -1
  77. package/dist/cmd/cloud/sandbox/run.js +2 -9
  78. package/dist/cmd/cloud/sandbox/run.js.map +1 -1
  79. package/dist/cmd/cloud/sandbox/snapshot/build.js +2 -2
  80. package/dist/cmd/cloud/sandbox/snapshot/build.js.map +1 -1
  81. package/dist/cmd/coder/hub-url.d.ts.map +1 -1
  82. package/dist/cmd/coder/hub-url.js +1 -3
  83. package/dist/cmd/coder/hub-url.js.map +1 -1
  84. package/dist/cmd/coder/start.js +6 -6
  85. package/dist/cmd/coder/start.js.map +1 -1
  86. package/dist/cmd/coder/tui-init.d.ts +2 -2
  87. package/dist/cmd/coder/tui-init.js +2 -2
  88. package/dist/cmd/coder/tui-init.js.map +1 -1
  89. package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
  90. package/dist/cmd/dev/file-watcher.js +2 -8
  91. package/dist/cmd/dev/file-watcher.js.map +1 -1
  92. package/dist/cmd/dev/index.d.ts.map +1 -1
  93. package/dist/cmd/dev/index.js +432 -752
  94. package/dist/cmd/dev/index.js.map +1 -1
  95. package/dist/cmd/dev/process-manager.d.ts +104 -0
  96. package/dist/cmd/dev/process-manager.d.ts.map +1 -0
  97. package/dist/cmd/dev/process-manager.js +204 -0
  98. package/dist/cmd/dev/process-manager.js.map +1 -0
  99. package/dist/errors.d.ts +10 -24
  100. package/dist/errors.d.ts.map +1 -1
  101. package/dist/errors.js +12 -42
  102. package/dist/errors.js.map +1 -1
  103. package/dist/schema-generator.d.ts.map +1 -1
  104. package/dist/schema-generator.js +12 -2
  105. package/dist/schema-generator.js.map +1 -1
  106. package/dist/tui.d.ts.map +1 -1
  107. package/dist/tui.js +5 -19
  108. package/dist/tui.js.map +1 -1
  109. package/dist/utils/version-mismatch.d.ts +39 -0
  110. package/dist/utils/version-mismatch.d.ts.map +1 -0
  111. package/dist/utils/version-mismatch.js +161 -0
  112. package/dist/utils/version-mismatch.js.map +1 -0
  113. package/package.json +6 -6
  114. package/src/cmd/ai/prompt/agent.md +0 -1
  115. package/src/cmd/ai/prompt/api.md +0 -7
  116. package/src/cmd/ai/prompt/web.md +51 -213
  117. package/src/cmd/build/app-config-extractor.ts +186 -0
  118. package/src/cmd/build/app-router-detector.ts +152 -182
  119. package/src/cmd/build/ci.ts +5 -21
  120. package/src/cmd/build/ids.ts +19 -0
  121. package/src/cmd/build/index.ts +10 -0
  122. package/src/cmd/build/vite/agent-discovery.ts +208 -679
  123. package/src/cmd/build/vite/bun-dev-server.ts +383 -146
  124. package/src/cmd/build/vite/config-loader.ts +45 -77
  125. package/src/cmd/build/vite/docs-generator.ts +0 -2
  126. package/src/cmd/build/vite/index.ts +1 -42
  127. package/src/cmd/build/vite/lifecycle-generator.ts +345 -21
  128. package/src/cmd/build/vite/route-discovery.ts +116 -274
  129. package/src/cmd/build/vite/server-bundler.ts +1 -1
  130. package/src/cmd/build/vite/static-renderer.ts +23 -15
  131. package/src/cmd/build/vite/vite-asset-server-config.ts +200 -70
  132. package/src/cmd/build/vite/vite-asset-server.ts +25 -15
  133. package/src/cmd/build/vite/vite-builder.ts +49 -220
  134. package/src/cmd/build/vite/ws-proxy.ts +126 -0
  135. package/src/cmd/build/vite-bundler.ts +0 -4
  136. package/src/cmd/cloud/deploy-fork.ts +16 -39
  137. package/src/cmd/cloud/sandbox/exec.ts +23 -130
  138. package/src/cmd/cloud/sandbox/run.ts +2 -9
  139. package/src/cmd/cloud/sandbox/snapshot/build.ts +2 -2
  140. package/src/cmd/coder/hub-url.ts +1 -3
  141. package/src/cmd/coder/start.ts +6 -6
  142. package/src/cmd/coder/tui-init.ts +4 -4
  143. package/src/cmd/dev/file-watcher.ts +2 -9
  144. package/src/cmd/dev/index.ts +476 -859
  145. package/src/cmd/dev/process-manager.ts +261 -0
  146. package/src/errors.ts +12 -44
  147. package/src/schema-generator.ts +12 -2
  148. package/src/tui.ts +5 -18
  149. package/src/utils/version-mismatch.ts +204 -0
  150. package/dist/cmd/build/ast.d.ts +0 -78
  151. package/dist/cmd/build/ast.d.ts.map +0 -1
  152. package/dist/cmd/build/ast.js +0 -2703
  153. package/dist/cmd/build/ast.js.map +0 -1
  154. package/dist/cmd/build/entry-generator.d.ts +0 -25
  155. package/dist/cmd/build/entry-generator.d.ts.map +0 -1
  156. package/dist/cmd/build/entry-generator.js +0 -695
  157. package/dist/cmd/build/entry-generator.js.map +0 -1
  158. package/dist/cmd/build/vite/api-mount-path.d.ts +0 -61
  159. package/dist/cmd/build/vite/api-mount-path.d.ts.map +0 -1
  160. package/dist/cmd/build/vite/api-mount-path.js +0 -83
  161. package/dist/cmd/build/vite/api-mount-path.js.map +0 -1
  162. package/dist/cmd/build/vite/registry-generator.d.ts +0 -19
  163. package/dist/cmd/build/vite/registry-generator.d.ts.map +0 -1
  164. package/dist/cmd/build/vite/registry-generator.js +0 -1108
  165. package/dist/cmd/build/vite/registry-generator.js.map +0 -1
  166. package/dist/cmd/build/webanalytics-generator.d.ts +0 -16
  167. package/dist/cmd/build/webanalytics-generator.d.ts.map +0 -1
  168. package/dist/cmd/build/webanalytics-generator.js +0 -178
  169. package/dist/cmd/build/webanalytics-generator.js.map +0 -1
  170. package/dist/cmd/build/workbench.d.ts +0 -7
  171. package/dist/cmd/build/workbench.d.ts.map +0 -1
  172. package/dist/cmd/build/workbench.js +0 -55
  173. package/dist/cmd/build/workbench.js.map +0 -1
  174. package/dist/utils/route-migration.d.ts +0 -62
  175. package/dist/utils/route-migration.d.ts.map +0 -1
  176. package/dist/utils/route-migration.js +0 -630
  177. package/dist/utils/route-migration.js.map +0 -1
  178. package/dist/utils/stream-capture.d.ts +0 -9
  179. package/dist/utils/stream-capture.d.ts.map +0 -1
  180. package/dist/utils/stream-capture.js +0 -34
  181. package/dist/utils/stream-capture.js.map +0 -1
  182. package/src/cmd/build/ast.ts +0 -3529
  183. package/src/cmd/build/entry-generator.ts +0 -760
  184. package/src/cmd/build/vite/api-mount-path.ts +0 -87
  185. package/src/cmd/build/vite/registry-generator.ts +0 -1267
  186. package/src/cmd/build/webanalytics-generator.ts +0 -197
  187. package/src/cmd/build/workbench.ts +0 -58
  188. package/src/utils/route-migration.ts +0 -757
  189. package/src/utils/stream-capture.ts +0 -39
@@ -1,49 +1,328 @@
1
1
  /**
2
2
  * Lifecycle Types Generator
3
3
  *
4
- * Generates src/generated/lifecycle.d.ts by analyzing app.ts for setup() function
4
+ * Generates src/generated/state.ts and src/generated/router.ts by analyzing
5
+ * app.ts for a setup() function.
6
+ *
7
+ * Uses TypeScript's type checker to extract the real return type of setup —
8
+ * no AST literal guessing needed.
9
+ */
10
+ import ts from 'typescript';
11
+ import { join, relative, dirname } from 'node:path';
12
+ import { mkdirSync } from 'node:fs';
13
+ import { StructuredError } from '@agentuity/core';
14
+ import { toForwardSlash } from '../../../utils/normalize-path';
15
+ const RuntimePackageNotFound = StructuredError('RuntimePackageNotFound');
16
+ /**
17
+ * Use the TypeScript type checker to extract the return type of the setup
18
+ * function passed to createApp(). Works with inline setup, exported setup,
19
+ * variable references, async functions — anything TS can resolve.
20
+ */
21
+ function extractSetupReturnType(appFilePath, logger) {
22
+ const compilerOptions = {
23
+ target: ts.ScriptTarget.ESNext,
24
+ module: ts.ModuleKind.ESNext,
25
+ moduleResolution: ts.ModuleResolutionKind.Bundler,
26
+ strict: true,
27
+ skipLibCheck: true,
28
+ noEmit: true,
29
+ allowJs: true,
30
+ esModuleInterop: true,
31
+ };
32
+ const program = ts.createProgram([appFilePath], compilerOptions);
33
+ const checker = program.getTypeChecker();
34
+ const sourceFile = program.getSourceFile(appFilePath);
35
+ if (!sourceFile) {
36
+ logger.debug('[lifecycle] Could not load source file');
37
+ return null;
38
+ }
39
+ let setupType = null;
40
+ function unwrapPromise(type) {
41
+ // Check for Promise by looking at typeArguments on TypeReference
42
+ const typeRef = type;
43
+ if (typeRef.typeArguments && typeRef.typeArguments.length > 0) {
44
+ const symbol = type.getSymbol() ?? type.aliasSymbol;
45
+ if (symbol?.name === 'Promise') {
46
+ return typeRef.typeArguments[0];
47
+ }
48
+ }
49
+ return type;
50
+ }
51
+ function extractFromProperty(prop) {
52
+ if (setupType)
53
+ return;
54
+ // Handle: setup: () => { ... } or setup: myFunc
55
+ if (ts.isPropertyAssignment(prop) &&
56
+ ts.isIdentifier(prop.name) &&
57
+ prop.name.text === 'setup') {
58
+ const type = checker.getTypeAtLocation(prop.initializer);
59
+ const callSigs = type.getCallSignatures();
60
+ if (callSigs.length > 0) {
61
+ setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
62
+ }
63
+ return;
64
+ }
65
+ // Handle shorthand: createApp({ setup })
66
+ if (ts.isShorthandPropertyAssignment(prop) && prop.name.text === 'setup') {
67
+ const type = checker.getTypeAtLocation(prop.name);
68
+ const callSigs = type.getCallSignatures();
69
+ if (callSigs.length > 0) {
70
+ setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
71
+ }
72
+ }
73
+ }
74
+ function visit(node) {
75
+ if (setupType)
76
+ return;
77
+ // Find createApp(...) call — with or without await
78
+ let callExpr;
79
+ if (ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {
80
+ if (node.expression.text === 'createApp')
81
+ callExpr = node;
82
+ }
83
+ else if (ts.isAwaitExpression(node) && ts.isCallExpression(node.expression)) {
84
+ const call = node.expression;
85
+ if (ts.isIdentifier(call.expression) && call.expression.text === 'createApp') {
86
+ callExpr = call;
87
+ }
88
+ }
89
+ if (callExpr && callExpr.arguments.length > 0) {
90
+ const configArg = callExpr.arguments[0];
91
+ if (configArg && ts.isObjectLiteralExpression(configArg)) {
92
+ for (const prop of configArg.properties) {
93
+ extractFromProperty(prop);
94
+ if (setupType)
95
+ return;
96
+ }
97
+ }
98
+ }
99
+ ts.forEachChild(node, visit);
100
+ }
101
+ visit(sourceFile);
102
+ // Fallback: look for an exported function named `setup` in the file
103
+ // (user may define `export function setup()` without passing it to createApp)
104
+ if (!setupType) {
105
+ for (const stmt of sourceFile.statements) {
106
+ if (ts.isFunctionDeclaration(stmt) &&
107
+ stmt.name?.text === 'setup' &&
108
+ stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
109
+ const type = checker.getTypeAtLocation(stmt);
110
+ const callSigs = type.getCallSignatures();
111
+ if (callSigs.length > 0) {
112
+ setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
113
+ }
114
+ break;
115
+ }
116
+ // Handle: export const setup = () => { ... }
117
+ if (ts.isVariableStatement(stmt) &&
118
+ stmt.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
119
+ for (const decl of stmt.declarationList.declarations) {
120
+ if (ts.isIdentifier(decl.name) && decl.name.text === 'setup' && decl.initializer) {
121
+ const type = checker.getTypeAtLocation(decl.initializer);
122
+ const callSigs = type.getCallSignatures();
123
+ if (callSigs.length > 0) {
124
+ setupType = unwrapPromise(checker.getReturnTypeOfSignature(callSigs[0]));
125
+ }
126
+ break;
127
+ }
128
+ }
129
+ if (setupType)
130
+ break;
131
+ }
132
+ }
133
+ }
134
+ if (!setupType) {
135
+ return null;
136
+ }
137
+ // Print the type as a string — TS gives us the real resolved type
138
+ const typeString = checker.typeToString(setupType, undefined, ts.TypeFormatFlags.NoTruncation | ts.TypeFormatFlags.MultilineObjectLiterals);
139
+ return typeString;
140
+ }
141
+ /**
142
+ * Find the @agentuity/runtime package by walking up the directory tree.
143
+ */
144
+ async function findRuntimePackage(rootDir, logger) {
145
+ let currentDir = rootDir;
146
+ const searchedPaths = [];
147
+ while (currentDir && currentDir !== '/' && currentDir !== '.') {
148
+ const candidatePath = join(currentDir, 'node_modules', '@agentuity', 'runtime');
149
+ searchedPaths.push(candidatePath);
150
+ if (await Bun.file(join(candidatePath, 'package.json')).exists()) {
151
+ logger.debug(`Found runtime package at: ${candidatePath}`);
152
+ return candidatePath;
153
+ }
154
+ const packagesPath = join(currentDir, 'packages', 'runtime');
155
+ searchedPaths.push(packagesPath);
156
+ if (await Bun.file(join(packagesPath, 'package.json')).exists()) {
157
+ logger.debug(`Found runtime package (source) at: ${packagesPath}`);
158
+ return packagesPath;
159
+ }
160
+ const parent = dirname(currentDir);
161
+ if (parent === currentDir)
162
+ break;
163
+ currentDir = parent;
164
+ }
165
+ throw new RuntimePackageNotFound({
166
+ message: `@agentuity/runtime package not found.\n` +
167
+ `Searched paths:\n${searchedPaths.map((p) => ` - ${p}`).join('\n')}\n` +
168
+ `Make sure dependencies are installed by running 'bun install' or 'npm install'`,
169
+ });
170
+ }
171
+ function generateStateContent(appStateType) {
172
+ return `// @generated
173
+ // AUTO-GENERATED from app.ts setup() return type
174
+ // This file is auto-generated by the build tool - do not edit manually
175
+
176
+ /**
177
+ * Application state type inferred from your createApp setup function.
178
+ * This type is automatically generated and available throughout your app via ctx.app.
179
+ *
180
+ * @example
181
+ * \`\`\`typescript
182
+ * // In your agents:
183
+ * const agent = createAgent({
184
+ * handler: async (ctx, input) => {
185
+ * // ctx.app is strongly typed as GeneratedAppState
186
+ * const value = ctx.app; // All properties from your setup return value
187
+ * return 'result';
188
+ * }
189
+ * });
190
+ * \`\`\`
5
191
  */
6
- import { join } from 'node:path';
7
- import { generateLifecycleTypes as generateLifecycleTypesFromAST } from '../ast';
192
+ export type GeneratedAppState = ${appStateType};
193
+
194
+ // Augment the @agentuity/runtime module with AppState
195
+ declare module '@agentuity/runtime' {
196
+ interface AppState extends GeneratedAppState {}
197
+ }
198
+
199
+ // FOUND AN ERROR IN THIS FILE?
200
+ // Please file an issue at https://github.com/agentuity/sdk/issues
201
+ // or if you know the fix please submit a PR!
202
+ `;
203
+ }
204
+ function generateRouterWrapper(runtimeImportPath) {
205
+ return `// @generated
206
+ // AUTO-GENERATED runtime wrapper
207
+ // This file is auto-generated by the build tool - do not edit manually
208
+
209
+ // Import augmentations file (NOT type-only) to trigger module augmentation
210
+ import type { GeneratedAppState } from './state';
211
+ import './state';
212
+
213
+ // Import from actual package location
214
+ import { createRouter as baseCreateRouter, type Env } from '${runtimeImportPath}/src/index';
215
+ import type { Hono } from 'hono';
216
+
217
+ // Type aliases to avoid repeating the generic parameter
218
+ type AppEnv = Env<GeneratedAppState>;
219
+ type AppRouter = Hono<AppEnv>;
220
+
8
221
  /**
9
- * Setup lifecycle types by analyzing app.ts for setup() function
222
+ * Creates a Hono router with extended methods for Agentuity-specific routing patterns.
223
+ *
224
+ * @returns Extended Hono router with custom methods and app state typing
225
+ *
226
+ * @example
227
+ * \`\`\`typescript
228
+ * const router = createRouter();
229
+ * router.get('/hello', (c) => c.text('Hello!'));
230
+ * router.get('/db', (c) => {
231
+ * const db = c.var.app; // Your app state from createApp setup
232
+ * return c.json({ connected: true });
233
+ * });
234
+ * \`\`\`
235
+ */
236
+ export function createRouter(): AppRouter {
237
+ return baseCreateRouter() as unknown as AppRouter;
238
+ }
239
+
240
+ // Re-export everything else
241
+ export * from '${runtimeImportPath}/src/index';
242
+
243
+ // FOUND AN ERROR IN THIS FILE?
244
+ // Please file an issue at https://github.com/agentuity/sdk/issues
245
+ // or if you know the fix please submit a PR!
246
+ `;
247
+ }
248
+ async function updateTsconfigPathMapping(rootDir, shouldAdd, logger) {
249
+ const tsconfigPath = join(rootDir, 'tsconfig.json');
250
+ if (!(await Bun.file(tsconfigPath).exists())) {
251
+ logger.debug('No tsconfig.json found, skipping path mapping update');
252
+ return;
253
+ }
254
+ try {
255
+ const tsconfigContent = await Bun.file(tsconfigPath).text();
256
+ const { parseJSONC } = await import('../../../utils/jsonc');
257
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
258
+ const tsconfig = parseJSONC(tsconfigContent);
259
+ const before = JSON.stringify(tsconfig);
260
+ if (!tsconfig.compilerOptions)
261
+ tsconfig.compilerOptions = {};
262
+ if (!tsconfig.compilerOptions.paths)
263
+ tsconfig.compilerOptions.paths = {};
264
+ if (shouldAdd) {
265
+ tsconfig.compilerOptions.paths['@agentuity/runtime'] = ['./src/generated/router.ts'];
266
+ logger.debug('Added @agentuity/runtime path mapping to tsconfig.json');
267
+ }
268
+ else {
269
+ if (tsconfig.compilerOptions.paths['@agentuity/runtime']) {
270
+ delete tsconfig.compilerOptions.paths['@agentuity/runtime'];
271
+ logger.debug('Removed @agentuity/runtime path mapping from tsconfig.json');
272
+ }
273
+ if (Object.keys(tsconfig.compilerOptions.paths).length === 0) {
274
+ delete tsconfig.compilerOptions.paths;
275
+ }
276
+ }
277
+ if (JSON.stringify(tsconfig) === before)
278
+ return;
279
+ await Bun.write(tsconfigPath, JSON.stringify(tsconfig, null, '\t') + '\n');
280
+ }
281
+ catch (error) {
282
+ logger.warn('Failed to update tsconfig.json:', error);
283
+ }
284
+ }
285
+ /**
286
+ * Setup lifecycle types by analyzing app.ts for setup() function.
287
+ *
288
+ * Uses TypeScript's type checker to extract the real return type — handles
289
+ * inline setup, exported setup, variable references, async functions, and
290
+ * any other pattern TS can resolve.
10
291
  */
11
292
  export async function generateLifecycleTypes(rootDir, srcDir, logger) {
12
293
  logger.debug('[lifecycle] Starting lifecycle type generation...');
13
- logger.debug(`[lifecycle] rootDir: ${rootDir}`);
14
- logger.debug(`[lifecycle] srcDir: ${srcDir}`);
15
294
  const outDir = join(srcDir, 'generated');
16
- logger.debug(`[lifecycle] outDir: ${outDir}`);
17
295
  // Look for app.ts in both root and src directories
18
296
  const rootAppFile = join(rootDir, 'app.ts');
19
297
  const srcAppFile = join(srcDir, 'app.ts');
20
298
  let appFile = '';
21
299
  if (await Bun.file(rootAppFile).exists()) {
22
300
  appFile = rootAppFile;
23
- logger.debug(`[lifecycle] Found app.ts at root: ${rootAppFile}`);
24
301
  }
25
302
  else if (await Bun.file(srcAppFile).exists()) {
26
303
  appFile = srcAppFile;
27
- logger.debug(`[lifecycle] Found app.ts in src: ${srcAppFile}`);
28
304
  }
29
305
  if (!appFile || !(await Bun.file(appFile).exists())) {
30
- logger.debug('[lifecycle] No app.ts found for lifecycle types generation');
306
+ logger.debug('[lifecycle] No app.ts found');
31
307
  return false;
32
308
  }
33
- try {
34
- logger.debug(`[lifecycle] Calling generateLifecycleTypesFromAST...`);
35
- const result = await generateLifecycleTypesFromAST(rootDir, outDir, appFile);
36
- if (result) {
37
- logger.debug(`[lifecycle] Lifecycle types generated successfully in ${outDir}`);
38
- }
39
- else {
40
- logger.debug('[lifecycle] generateLifecycleTypesFromAST returned false (no setup found)');
41
- }
42
- return result;
43
- }
44
- catch (error) {
45
- logger.error('[lifecycle] Failed to generate lifecycle types:', error);
309
+ // Use TypeScript type checker to extract the setup return type
310
+ const appStateType = extractSetupReturnType(appFile, logger);
311
+ if (!appStateType) {
312
+ logger.debug('[lifecycle] No setup() function found in createApp');
313
+ await updateTsconfigPathMapping(rootDir, false, logger);
46
314
  return false;
47
315
  }
316
+ logger.debug(`[lifecycle] Extracted setup return type: ${appStateType}`);
317
+ // Generate files
318
+ mkdirSync(outDir, { recursive: true });
319
+ const runtimePkgPath = await findRuntimePackage(rootDir, logger);
320
+ const runtimeImportPath = toForwardSlash(relative(outDir, runtimePkgPath));
321
+ await Bun.write(join(outDir, 'state.ts'), generateStateContent(appStateType));
322
+ logger.debug(`Generated lifecycle types: ${join(outDir, 'state.ts')}`);
323
+ await Bun.write(join(outDir, 'router.ts'), generateRouterWrapper(runtimeImportPath));
324
+ logger.debug(`Generated lifecycle wrapper: ${join(outDir, 'router.ts')}`);
325
+ await updateTsconfigPathMapping(rootDir, true, logger);
326
+ return true;
48
327
  }
49
328
  //# sourceMappingURL=lifecycle-generator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/lifecycle-generator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,sBAAsB,IAAI,6BAA6B,EAAE,MAAM,QAAQ,CAAC;AAGjF;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC3C,OAAe,EACf,MAAc,EACd,MAAc;IAEd,MAAM,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;IAClE,MAAM,CAAC,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;IAChD,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;IAE9C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IACzC,MAAM,CAAC,KAAK,CAAC,uBAAuB,MAAM,EAAE,CAAC,CAAC;IAE9C,mDAAmD;IACnD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAE1C,IAAI,OAAO,GAAG,EAAE,CAAC;IACjB,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAC1C,OAAO,GAAG,WAAW,CAAC;QACtB,MAAM,CAAC,KAAK,CAAC,qCAAqC,WAAW,EAAE,CAAC,CAAC;IAClE,CAAC;SAAM,IAAI,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;QAChD,OAAO,GAAG,UAAU,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,oCAAoC,UAAU,EAAE,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC3E,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACJ,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,MAAM,6BAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7E,IAAI,MAAM,EAAE,CAAC;YACZ,MAAM,CAAC,KAAK,CAAC,yDAAyD,MAAM,EAAE,CAAC,CAAC;QACjF,CAAC;aAAM,CAAC;YACP,MAAM,CAAC,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC3F,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAChB,MAAM,CAAC,KAAK,CAAC,iDAAiD,EAAE,KAAK,CAAC,CAAC;QACvE,OAAO,KAAK,CAAC;IACd,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"lifecycle-generator.js","sourceRoot":"","sources":["../../../../src/cmd/build/vite/lifecycle-generator.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Route Discovery - READ-ONLY AST analysis
2
+ * Route Discovery Explicit Routing Only
3
3
  *
4
- * Discovers routes by scanning src/api/**\/*.ts files or by following
5
- * explicit router mounts from createApp({ router }).
6
- * Extracts route definitions WITHOUT mutating source files.
4
+ * Discovers routes from `createApp({ router })` by importing the router
5
+ * module at build time and reading `router.routes` from the Hono instance.
6
+ *
7
+ * File-based routing (scanning src/api/**) is no longer supported.
7
8
  */
8
9
  import type { Logger } from '../../../types';
9
10
  import { type AppRouterDetection } from '../app-router-detector';
@@ -21,49 +22,21 @@ export interface RouteMetadata {
21
22
  output?: string;
22
23
  };
23
24
  }
24
- export interface RouteInfo {
25
- method: string;
26
- path: string;
27
- filename: string;
28
- hasValidator: boolean;
29
- routeType: 'api' | 'sms' | 'email' | 'cron' | 'websocket' | 'sse' | 'stream';
30
- agentVariable?: string;
31
- agentImportPath?: string;
32
- agentName?: string;
33
- agentDescription?: string;
34
- inputSchemaVariable?: string;
35
- outputSchemaVariable?: string;
36
- inputSchemaImportPath?: string;
37
- inputSchemaImportedName?: string;
38
- outputSchemaImportPath?: string;
39
- outputSchemaImportedName?: string;
40
- inputSchemaCode?: string;
41
- outputSchemaCode?: string;
42
- stream?: boolean;
43
- pathParams?: string[];
44
- /**
45
- * When a route is mounted via .route(), its filename is set to the parent file
46
- * (for dedup filtering). schemaSourceFile preserves the actual file where the
47
- * route's schema variables are defined/exported, so registry imports resolve correctly.
48
- */
49
- schemaSourceFile?: string;
50
- }
51
25
  /**
52
26
  * Extract path parameters from a route path.
53
27
  * Matches patterns like :id, :userId, :id?, *path, etc.
54
28
  */
55
29
  export declare function extractPathParams(path: string): string[];
56
30
  /**
57
- * Discover all routes tries explicit router detection first, falls back to file-based.
31
+ * Discover all routes from explicit router mounts in createApp({ router }).
32
+ *
33
+ * Imports each router module at build time and reads `router.routes` from
34
+ * the Hono instance to extract method, path, and route type.
58
35
  *
59
- * When `createApp({ router })` is detected in app.ts, routes are discovered by
60
- * following the router imports with code-derived mount paths. Otherwise, falls back
61
- * to scanning src/api/**\/*.ts with filesystem-derived paths.
36
+ * @throws If no explicit router is detected in app.ts
62
37
  */
63
38
  export declare function discoverRoutes(srcDir: string, projectId: string, deploymentId: string, logger: Logger): Promise<{
64
39
  routes: RouteMetadata[];
65
- routeInfoList: RouteInfo[];
66
- /** Whether explicit router was detected (vs file-based fallback) */
67
40
  explicitRouter?: AppRouterDetection;
68
41
  }>;
69
42
  export interface RouteConflict {
@@ -76,7 +49,7 @@ export interface RouteConflict {
76
49
  message: string;
77
50
  }
78
51
  /**
79
- * Detect conflicts between routes
52
+ * Detect conflicts between routes.
80
53
  */
81
54
  export declare function detectRouteConflicts(routes: Array<{
82
55
  method: string;
@@ -1 +1 @@
1
- {"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAG7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED,MAAM,WAAW,SAAS;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,SAAS,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,uBAAuB,CAAC,EAAE,MAAM,CAAC;IACjC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,aAAa,EAAE,SAAS,EAAE,CAAC;IAC3B,oEAAoE;IACpE,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC,CAuBD;AA8PD,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,aAAa,EAAE,CA2BjB"}
1
+ {"version":3,"file":"route-discovery.d.ts","sourceRoot":"","sources":["../../../../src/cmd/build/vite/route-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAE7C,OAAO,EAAwB,KAAK,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,KAAK,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,WAAW,GAAG,KAAK,GAAG,QAAQ,CAAC;IACxE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,MAAM,CAAC,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;CACF;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAWxD;AAmDD;;;;;;;GAOG;AACH,wBAAsB,cAAc,CACnC,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACZ,OAAO,CAAC;IACV,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,cAAc,CAAC,EAAE,kBAAkB,CAAC;CACpC,CAAC,CAmGD;AAED,MAAM,WAAW,aAAa;IAC7B,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClE,OAAO,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,KAAK,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,GAC/D,aAAa,EAAE,CAyBjB"}