@agentuity/cli 0.0.100 → 0.0.101

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 (94) hide show
  1. package/AGENTS.md +1 -1
  2. package/dist/api.d.ts +1 -0
  3. package/dist/api.d.ts.map +1 -1
  4. package/dist/api.js +1 -1
  5. package/dist/api.js.map +1 -1
  6. package/dist/cmd/build/ast.d.ts +2 -1
  7. package/dist/cmd/build/ast.d.ts.map +1 -1
  8. package/dist/cmd/build/ast.js +135 -47
  9. package/dist/cmd/build/ast.js.map +1 -1
  10. package/dist/cmd/build/entry-generator.d.ts.map +1 -1
  11. package/dist/cmd/build/entry-generator.js +220 -188
  12. package/dist/cmd/build/entry-generator.js.map +1 -1
  13. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
  14. package/dist/cmd/build/vite/agent-discovery.js +103 -45
  15. package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
  16. package/dist/cmd/build/vite/bun-dev-server.js +1 -1
  17. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  18. package/dist/cmd/build/vite/docs-generator.d.ts +13 -0
  19. package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -0
  20. package/dist/cmd/build/vite/docs-generator.js +81 -0
  21. package/dist/cmd/build/vite/docs-generator.js.map +1 -0
  22. package/dist/cmd/build/vite/index.d.ts +3 -3
  23. package/dist/cmd/build/vite/index.d.ts.map +1 -1
  24. package/dist/cmd/build/vite/index.js +9 -7
  25. package/dist/cmd/build/vite/index.js.map +1 -1
  26. package/dist/cmd/build/vite/lifecycle-generator.d.ts +1 -1
  27. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
  28. package/dist/cmd/build/vite/lifecycle-generator.js +19 -5
  29. package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
  30. package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
  31. package/dist/cmd/build/vite/metadata-generator.js +145 -0
  32. package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
  33. package/dist/cmd/build/vite/registry-generator.d.ts +3 -3
  34. package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
  35. package/dist/cmd/build/vite/registry-generator.js +627 -103
  36. package/dist/cmd/build/vite/registry-generator.js.map +1 -1
  37. package/dist/cmd/build/vite/route-discovery.d.ts +4 -0
  38. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
  39. package/dist/cmd/build/vite/route-discovery.js.map +1 -1
  40. package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
  41. package/dist/cmd/build/vite/server-bundler.js +18 -1
  42. package/dist/cmd/build/vite/server-bundler.js.map +1 -1
  43. package/dist/cmd/build/vite/vite-builder.d.ts +1 -1
  44. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  45. package/dist/cmd/build/vite/vite-builder.js +28 -18
  46. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  47. package/dist/cmd/build/vite-bundler.js +6 -6
  48. package/dist/cmd/build/vite-bundler.js.map +1 -1
  49. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  50. package/dist/cmd/cloud/deploy.js +11 -5
  51. package/dist/cmd/cloud/deploy.js.map +1 -1
  52. package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
  53. package/dist/cmd/dev/file-watcher.js +4 -2
  54. package/dist/cmd/dev/file-watcher.js.map +1 -1
  55. package/dist/cmd/dev/index.d.ts.map +1 -1
  56. package/dist/cmd/dev/index.js +102 -21
  57. package/dist/cmd/dev/index.js.map +1 -1
  58. package/dist/cmd/dev/sync.d.ts.map +1 -1
  59. package/dist/cmd/dev/sync.js +19 -3
  60. package/dist/cmd/dev/sync.js.map +1 -1
  61. package/dist/config.d.ts.map +1 -1
  62. package/dist/config.js +8 -0
  63. package/dist/config.js.map +1 -1
  64. package/dist/index.d.ts +0 -1
  65. package/dist/index.d.ts.map +1 -1
  66. package/dist/index.js +0 -1
  67. package/dist/index.js.map +1 -1
  68. package/package.json +5 -8
  69. package/src/api.ts +1 -1
  70. package/src/cmd/build/ast.ts +161 -48
  71. package/src/cmd/build/entry-generator.ts +225 -190
  72. package/src/cmd/build/vite/agent-discovery.ts +151 -58
  73. package/src/cmd/build/vite/bun-dev-server.ts +1 -1
  74. package/src/cmd/build/vite/docs-generator.ts +87 -0
  75. package/src/cmd/build/vite/index.ts +9 -7
  76. package/src/cmd/build/vite/lifecycle-generator.ts +19 -5
  77. package/src/cmd/build/vite/metadata-generator.ts +178 -0
  78. package/src/cmd/build/vite/registry-generator.ts +727 -108
  79. package/src/cmd/build/vite/route-discovery.ts +4 -0
  80. package/src/cmd/build/vite/server-bundler.ts +20 -1
  81. package/src/cmd/build/vite/vite-builder.ts +44 -30
  82. package/src/cmd/build/vite-bundler.ts +6 -6
  83. package/src/cmd/cloud/deploy.ts +15 -5
  84. package/src/cmd/dev/file-watcher.ts +8 -2
  85. package/src/cmd/dev/index.ts +141 -30
  86. package/src/cmd/dev/sync.ts +41 -6
  87. package/src/config.ts +9 -0
  88. package/src/index.ts +0 -5
  89. package/src/runtime-bootstrap.md +1 -1
  90. package/dist/runtime-bootstrap.d.ts +0 -56
  91. package/dist/runtime-bootstrap.d.ts.map +0 -1
  92. package/dist/runtime-bootstrap.js +0 -95
  93. package/dist/runtime-bootstrap.js.map +0 -1
  94. package/src/runtime-bootstrap.ts +0 -131
package/AGENTS.md CHANGED
@@ -142,7 +142,7 @@ The CLI uses a hybrid Vite + Bun build system:
142
142
  - Base path: configured workbench route
143
143
 
144
144
  3. **Server Bundle** - Bun.build creates single server file:
145
- - Input: `.agentuity/app.generated.ts`
145
+ - Input: `src/generated/app.ts`
146
146
  - Output: `.agentuity/app.js`
147
147
  - Externals: Heavy runtime deps (bun, fsevents, sharp, ws, etc.)
148
148
  - Minification: Controlled by `--dev` flag
package/dist/api.d.ts CHANGED
@@ -5,6 +5,7 @@
5
5
  */
6
6
  import type { Config, Logger } from './types';
7
7
  import { APIClient as BaseAPIClient } from '@agentuity/server';
8
+ export declare function getUserAgent(config?: Config | null): string;
8
9
  export declare class APIClient extends BaseAPIClient {
9
10
  constructor(baseUrl: string, logger: Logger, config?: Config | null);
10
11
  constructor(baseUrl: string, logger: Logger, apiKey: string, config?: Config | null);
package/dist/api.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EACN,SAAS,IAAI,aAAa,EAI1B,MAAM,mBAAmB,CAAC;AA4C3B,qBAAa,SAAU,SAAQ,aAAa;gBAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;gBACvD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAwBnF;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG5D;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG5D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CASnF"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAE9C,OAAO,EACN,SAAS,IAAI,aAAa,EAI1B,MAAM,mBAAmB,CAAC;AAE3B,wBAAgB,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAS3D;AAiCD,qBAAa,SAAU,SAAQ,aAAa;gBAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;gBACvD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAwBnF;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG5D;AAED,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAG5D;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CASnF"}
package/dist/api.js CHANGED
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { getVersion, getRevision } from './version';
7
7
  import { APIClient as BaseAPIClient, getAPIBaseURL as baseGetAPIBaseURL, getAppBaseURL as baseGetAppBaseURL, } from '@agentuity/server';
8
- function getUserAgent(config) {
8
+ export function getUserAgent(config) {
9
9
  // If we're skipping version check, send "dev" to signal the server to skip too
10
10
  let version = getVersion();
11
11
  if (shouldSkipVersionCheck(config)) {
package/dist/api.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -42,9 +42,10 @@ export declare function checkRouteConflicts(content: string, workbenchEndpoint:
42
42
  */
43
43
  export declare function extractAppStateType(content: string): string | null;
44
44
  /**
45
- * Generate lifecycle type files (.agentuity/types.ts and .agentuity/.agentuity_runtime.ts)
45
+ * Generate lifecycle type files (src/generated/state.ts and src/generated/router.ts)
46
46
  *
47
47
  * @param rootDir - Root directory of the project
48
+ * @param outDir - Output directory (typically src/generated/)
48
49
  * @param appFilePath - Path to app.ts file
49
50
  * @returns true if files were generated, false if no setup found
50
51
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/ast.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA+HxE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AA8SD,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC9C,OAAO,CACT;IACC,MAAM;IACN,KAAK,CAAC;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACF,CACD,CAyNA;AAID,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAqPpD;AAyMD,wBAAsB,UAAU,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAuSlC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAoCjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CA8BvF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyKlE;AAyED;;;;;;GAMG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CAoKlB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAsLnE;AA+BD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0EhE"}
1
+ {"version":3,"file":"ast.d.ts","sourceRoot":"","sources":["../../../src/cmd/build/ast.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAAmB,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AA+HxE,wBAAgB,sBAAsB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAEpF;AA8SD,wBAAsB,iBAAiB,CACtC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,EAChB,aAAa,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAC9C,OAAO,CACT;IACC,MAAM;IACN,KAAK,CAAC;QACL,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,MAAM,CAAC;QACf,WAAW,CAAC,EAAE,MAAM,CAAC;KACrB,CAAC;CACF,CACD,CAyNA;AAID,wBAAsB,kBAAkB,CACvC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC,CAqPpD;AAyMD,wBAAsB,UAAU,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,CAgVlC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,eAAe,GAAG,IAAI,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAoCjF;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM,GAAG,OAAO,CA8BvF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgOlE;AA+DD;;;;;;;GAOG;AACH,wBAAsB,sBAAsB,CAC3C,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,WAAW,EAAE,MAAM,GACjB,OAAO,CAAC,OAAO,CAAC,CA8LlB;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAsLnE;AA+BD;;;;;;GAMG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA0EhE"}
@@ -773,6 +773,28 @@ export async function parseRoute(rootDir, filename, projectId, deploymentId) {
773
773
  }
774
774
  }
775
775
  }
776
+ // Scan for exported schemas (for WebSocket/SSE routes)
777
+ let exportedInputSchemaName;
778
+ let exportedOutputSchemaName;
779
+ for (const body of ast.body) {
780
+ if (body.type === 'ExportNamedDeclaration') {
781
+ const exportDecl = body;
782
+ if (exportDecl.declaration?.type === 'VariableDeclaration') {
783
+ const varDecl = exportDecl.declaration;
784
+ for (const d of varDecl.declarations) {
785
+ if (d.id.type === 'Identifier') {
786
+ const name = d.id.name;
787
+ if (name === 'inputSchema') {
788
+ exportedInputSchemaName = name;
789
+ }
790
+ else if (name === 'outputSchema') {
791
+ exportedOutputSchemaName = name;
792
+ }
793
+ }
794
+ }
795
+ }
796
+ }
797
+ }
776
798
  for (const body of ast.body) {
777
799
  if (body.type === 'ExportDefaultDeclaration') {
778
800
  const identifier = body.declaration;
@@ -989,6 +1011,15 @@ export async function parseRoute(rootDir, filename, projectId, deploymentId) {
989
1011
  routeConfig.stream = validatorInfo.stream;
990
1012
  }
991
1013
  }
1014
+ // For WebSocket/SSE routes that don't use validator(), fall back to exported schemas
1015
+ if (!routeConfig.hasValidator && (type === 'websocket' || type === 'sse')) {
1016
+ if (!routeConfig.inputSchemaVariable && exportedInputSchemaName) {
1017
+ routeConfig.inputSchemaVariable = exportedInputSchemaName;
1018
+ }
1019
+ if (!routeConfig.outputSchemaVariable && exportedOutputSchemaName) {
1020
+ routeConfig.outputSchemaVariable = exportedOutputSchemaName;
1021
+ }
1022
+ }
992
1023
  routes.push({
993
1024
  id,
994
1025
  method: method,
@@ -1094,10 +1125,11 @@ export function checkRouteConflicts(content, workbenchEndpoint) {
1094
1125
  */
1095
1126
  export function extractAppStateType(content) {
1096
1127
  try {
1097
- const sourceFile = ts.createSourceFile('app.ts', content, ts.ScriptTarget.Latest, true);
1128
+ const sourceFile = ts.createSourceFile('app.ts', content, ts.ScriptTarget.Latest, true, ts.ScriptKind.TS);
1098
1129
  let appStateType = null;
1099
1130
  let foundCreateApp = false;
1100
1131
  let foundSetup = false;
1132
+ let exportedSetupFunc;
1101
1133
  function visitNode(node) {
1102
1134
  // Look for createApp call expression (can be on await expression)
1103
1135
  let callExpr;
@@ -1145,10 +1177,40 @@ export function extractAppStateType(content) {
1145
1177
  }
1146
1178
  }
1147
1179
  }
1180
+ // Also record exported setup function
1181
+ if (ts.isFunctionDeclaration(node) &&
1182
+ node.name &&
1183
+ node.name.text === 'setup' &&
1184
+ node.modifiers?.some((m) => m.kind === ts.SyntaxKind.ExportKeyword)) {
1185
+ exportedSetupFunc = node;
1186
+ }
1148
1187
  ts.forEachChild(node, visitNode);
1149
1188
  }
1150
1189
  function findReturnObject(func) {
1151
1190
  let returnObject = null;
1191
+ // Handle arrow function with expression body: () => ({ ... })
1192
+ if (ts.isArrowFunction(func) && !ts.isBlock(func.body)) {
1193
+ const bodyExpr = func.body;
1194
+ // Handle parenthesized expression: () => ({ ... })
1195
+ const expr = ts.isParenthesizedExpression(bodyExpr) ? bodyExpr.expression : bodyExpr;
1196
+ if (ts.isObjectLiteralExpression(expr)) {
1197
+ return expr;
1198
+ }
1199
+ if (ts.isIdentifier(expr)) {
1200
+ // Support: const state = {...}; const setup = () => state;
1201
+ // Walk up to find the enclosing source file or statement list
1202
+ let scope = func;
1203
+ while (scope && !ts.isSourceFile(scope) && !ts.isBlock(scope)) {
1204
+ scope = scope.parent;
1205
+ }
1206
+ if (scope) {
1207
+ findVariableDeclaration(scope, expr.text);
1208
+ }
1209
+ return returnObject;
1210
+ }
1211
+ // For other expressions, can't extract type
1212
+ return null;
1213
+ }
1152
1214
  function visitFuncNode(node) {
1153
1215
  if (ts.isReturnStatement(node) && node.expression) {
1154
1216
  // Handle direct object literal
@@ -1160,7 +1222,9 @@ export function extractAppStateType(content) {
1160
1222
  // Try to find the variable declaration
1161
1223
  const varName = node.expression.text;
1162
1224
  // Walk back through the function to find the declaration
1163
- findVariableDeclaration(func.body, varName);
1225
+ if (func.body && ts.isBlock(func.body)) {
1226
+ findVariableDeclaration(func.body, varName);
1227
+ }
1164
1228
  }
1165
1229
  }
1166
1230
  ts.forEachChild(node, visitFuncNode);
@@ -1180,7 +1244,7 @@ export function extractAppStateType(content) {
1180
1244
  }
1181
1245
  visitForVar(body);
1182
1246
  }
1183
- if (func.body) {
1247
+ if (func.body && ts.isBlock(func.body)) {
1184
1248
  visitFuncNode(func.body);
1185
1249
  }
1186
1250
  return returnObject;
@@ -1226,6 +1290,17 @@ export function extractAppStateType(content) {
1226
1290
  return 'unknown';
1227
1291
  }
1228
1292
  visitNode(sourceFile);
1293
+ // If no inline setup found but we have an exported setup function, use that
1294
+ if (foundCreateApp && !foundSetup && exportedSetupFunc) {
1295
+ foundSetup = true;
1296
+ const returnObj = findReturnObject(exportedSetupFunc);
1297
+ if (returnObj) {
1298
+ appStateType = objectLiteralToTypeDefinition(returnObj, sourceFile);
1299
+ }
1300
+ else {
1301
+ logger.debug('Exported setup function found but no return object');
1302
+ }
1303
+ }
1229
1304
  if (!foundCreateApp) {
1230
1305
  logger.debug('Did not find createApp call in app.ts');
1231
1306
  }
@@ -1268,16 +1343,7 @@ async function updateTsconfigPathMapping(rootDir, shouldAdd) {
1268
1343
  }
1269
1344
  if (shouldAdd) {
1270
1345
  // Add or update the path mapping
1271
- tsconfig.compilerOptions.paths['@agentuity/runtime'] = [
1272
- './.agentuity/.agentuity_runtime.ts',
1273
- ];
1274
- // Ensure .agentuity_types.ts is included so module augmentation works
1275
- if (!tsconfig.include) {
1276
- tsconfig.include = [];
1277
- }
1278
- if (!tsconfig.include.includes('.agentuity/.agentuity_types.ts')) {
1279
- tsconfig.include.push('.agentuity/.agentuity_types.ts');
1280
- }
1346
+ tsconfig.compilerOptions.paths['@agentuity/runtime'] = ['./src/generated/router.ts'];
1281
1347
  logger.debug('Added @agentuity/runtime path mapping to tsconfig.json');
1282
1348
  }
1283
1349
  else {
@@ -1304,9 +1370,10 @@ async function updateTsconfigPathMapping(rootDir, shouldAdd) {
1304
1370
  }
1305
1371
  const RuntimePackageNotFound = StructuredError('RuntimePackageNotFound');
1306
1372
  /**
1307
- * Generate lifecycle type files (.agentuity/types.ts and .agentuity/.agentuity_runtime.ts)
1373
+ * Generate lifecycle type files (src/generated/state.ts and src/generated/router.ts)
1308
1374
  *
1309
1375
  * @param rootDir - Root directory of the project
1376
+ * @param outDir - Output directory (typically src/generated/)
1310
1377
  * @param appFilePath - Path to app.ts file
1311
1378
  * @returns true if files were generated, false if no setup found
1312
1379
  */
@@ -1322,40 +1389,51 @@ export async function generateLifecycleTypes(rootDir, outDir, appFilePath) {
1322
1389
  await updateTsconfigPathMapping(rootDir, false);
1323
1390
  return false;
1324
1391
  }
1325
- const agentuityDir = join(rootDir, '.agentuity');
1326
- // Ensure .agentuity directory exists
1327
- if (!existsSync(agentuityDir)) {
1328
- mkdirSync(agentuityDir, { recursive: true });
1329
- }
1330
- // First, determine the runtime package location
1331
- // Try multiple locations: app-level node_modules, then monorepo root
1332
- const appLevelPath = join(rootDir, 'node_modules', '@agentuity', 'runtime');
1333
- // From apps/testing/auth-app to monorepo root is 3 levels up (../../..)
1334
- const rootLevelPath = join(rootDir, '..', '..', '..', 'node_modules', '@agentuity', 'runtime');
1335
- let runtimePkgPath;
1336
- if (existsSync(appLevelPath)) {
1337
- runtimePkgPath = appLevelPath;
1338
- logger.debug(`Found runtime package at app level: ${appLevelPath}`);
1339
- }
1340
- else if (existsSync(rootLevelPath)) {
1341
- runtimePkgPath = rootLevelPath;
1342
- logger.debug(`Found runtime package at root level: ${rootLevelPath}`);
1392
+ // Ensure output directory exists (now src/generated instead of .agentuity)
1393
+ if (!existsSync(outDir)) {
1394
+ mkdirSync(outDir, { recursive: true });
1395
+ }
1396
+ // Find @agentuity/runtime by walking up directory tree
1397
+ // This works in any project structure - monorepos, nested projects, etc.
1398
+ let runtimePkgPath = null;
1399
+ let currentDir = rootDir;
1400
+ const searchedPaths = [];
1401
+ while (currentDir && currentDir !== '/' && currentDir !== '.') {
1402
+ const candidatePath = join(currentDir, 'node_modules', '@agentuity', 'runtime');
1403
+ searchedPaths.push(candidatePath);
1404
+ if (existsSync(candidatePath)) {
1405
+ runtimePkgPath = candidatePath;
1406
+ logger.debug(`Found runtime package at: ${candidatePath}`);
1407
+ break;
1408
+ }
1409
+ // Try packages/ for monorepo source layout
1410
+ const packagesPath = join(currentDir, 'packages', 'runtime');
1411
+ searchedPaths.push(packagesPath);
1412
+ if (existsSync(packagesPath)) {
1413
+ runtimePkgPath = packagesPath;
1414
+ logger.debug(`Found runtime package (source) at: ${packagesPath}`);
1415
+ break;
1416
+ }
1417
+ // Move up one directory
1418
+ const parent = dirname(currentDir);
1419
+ if (parent === currentDir)
1420
+ break; // Reached root
1421
+ currentDir = parent;
1343
1422
  }
1344
- else {
1423
+ if (!runtimePkgPath) {
1345
1424
  throw new RuntimePackageNotFound({
1346
- message: `@agentuity/runtime package not found in:\n` +
1347
- ` - ${appLevelPath}\n` +
1348
- ` - ${rootLevelPath}\n` +
1425
+ message: `@agentuity/runtime package not found.\n` +
1426
+ `Searched paths:\n${searchedPaths.map((p) => ` - ${p}`).join('\n')}\n` +
1349
1427
  `Make sure dependencies are installed by running 'bun install' or 'npm install'`,
1350
1428
  });
1351
1429
  }
1352
1430
  let runtimeImportPath = null;
1353
- // Calculate relative path from .agentuity/ to the package location
1431
+ // Calculate relative path from src/generated/ to the package location
1354
1432
  // Don't resolve symlinks - we want to use the symlink path so it works in both
1355
1433
  // local dev (symlinked to packages/) and CI (actual node_modules)
1356
1434
  if (existsSync(runtimePkgPath)) {
1357
- // Calculate relative path from .agentuity/ to node_modules package
1358
- const relPath = relative(agentuityDir, runtimePkgPath);
1435
+ // Calculate relative path from src/generated/ to node_modules package
1436
+ const relPath = relative(outDir, runtimePkgPath);
1359
1437
  runtimeImportPath = relPath;
1360
1438
  logger.debug(`Using relative path to runtime package: ${relPath}`);
1361
1439
  }
@@ -1370,10 +1448,11 @@ export async function generateLifecycleTypes(rootDir, outDir, appFilePath) {
1370
1448
  message: `Failed to determine import path for @agentuity/runtime`,
1371
1449
  });
1372
1450
  }
1373
- // Now generate .agentuity_types.ts
1451
+ // Now generate state.ts with AppState type
1374
1452
  // NOTE: We can ONLY augment the package name, not relative paths
1375
1453
  // TypeScript resolves @agentuity/runtime through path mapping -> wrapper -> actual package
1376
- const typesContent = `// AUTO-GENERATED from app.ts setup() return type
1454
+ const typesContent = `// @generated
1455
+ // AUTO-GENERATED from app.ts setup() return type
1377
1456
  // This file is auto-generated by the build tool - do not edit manually
1378
1457
 
1379
1458
  /**
@@ -1399,16 +1478,21 @@ export type GeneratedAppState = ${appStateType};
1399
1478
  declare module '@agentuity/runtime' {
1400
1479
  interface AppState extends GeneratedAppState {}
1401
1480
  }
1481
+
1482
+ // FOUND AN ERROR IN THIS FILE?
1483
+ // Please file an issue at https://github.com/agentuity/sdk/issues
1484
+ // or if you know the fix please submit a PR!
1402
1485
  `;
1403
- const typesPath = join(outDir, '.agentuity_types.ts');
1486
+ const typesPath = join(outDir, 'state.ts');
1404
1487
  await Bun.write(typesPath, typesContent);
1405
1488
  logger.debug(`Generated lifecycle types: ${typesPath}`);
1406
- const wrapperContent = `// AUTO-GENERATED runtime wrapper
1489
+ const wrapperContent = `// @generated
1490
+ // AUTO-GENERATED runtime wrapper
1407
1491
  // This file is auto-generated by the build tool - do not edit manually
1408
1492
 
1409
1493
  // Import augmentations file (NOT type-only) to trigger module augmentation
1410
- import type { GeneratedAppState } from './.agentuity_types';
1411
- import './.agentuity_types';
1494
+ import type { GeneratedAppState } from './state';
1495
+ import './state';
1412
1496
 
1413
1497
  // Import from actual package location
1414
1498
  import { createRouter as baseCreateRouter, type Env } from '${runtimeImportPath}/src/index';
@@ -1450,13 +1534,17 @@ type AppRouter = Hono<AppEnv>;
1450
1534
  * \`\`\`
1451
1535
  */
1452
1536
  export function createRouter(): AppRouter {
1453
- return baseCreateRouter() as any;
1537
+ return baseCreateRouter() as unknown as AppRouter;
1454
1538
  }
1455
1539
 
1456
1540
  // Re-export everything else
1457
1541
  export * from '${runtimeImportPath}/src/index';
1542
+
1543
+ // FOUND AN ERROR IN THIS FILE?
1544
+ // Please file an issue at https://github.com/agentuity/sdk/issues
1545
+ // or if you know the fix please submit a PR!
1458
1546
  `;
1459
- const wrapperPath = join(outDir, '.agentuity_runtime.ts');
1547
+ const wrapperPath = join(outDir, 'router.ts');
1460
1548
  await Bun.write(wrapperPath, wrapperContent);
1461
1549
  logger.debug(`Generated lifecycle wrapper: ${wrapperPath}`);
1462
1550
  // Update tsconfig.json with path mapping