@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
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Version mismatch detection for @agentuity/* packages.
3
+ *
4
+ * Detects when a project uses outdated v1 SDK packages while the CLI is v2,
5
+ * and recommends running the migration tool.
6
+ */
7
+ import { existsSync, readFileSync } from 'node:fs';
8
+ import { join } from 'node:path';
9
+ import { getVersion } from '../version';
10
+ /**
11
+ * Extract major version from semver string
12
+ */
13
+ function extractMajor(version) {
14
+ // Handle ranges like ^1.0.0, ~2.0.0, >=1.0.0
15
+ const match = version.match(/(\d+)\.\d+\.\d+/);
16
+ if (match?.[1]) {
17
+ return parseInt(match[1], 10);
18
+ }
19
+ // Handle "latest" or "*"
20
+ if (version === 'latest' || version === '*') {
21
+ return 0; // Unknown major
22
+ }
23
+ return 0;
24
+ }
25
+ /**
26
+ * Get installed version from node_modules
27
+ */
28
+ function getInstalledVersion(projectDir, packageName) {
29
+ try {
30
+ const pkgPath = join(projectDir, 'node_modules', packageName, 'package.json');
31
+ if (!existsSync(pkgPath)) {
32
+ return null;
33
+ }
34
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
35
+ return pkg.version || null;
36
+ }
37
+ catch {
38
+ return null;
39
+ }
40
+ }
41
+ /**
42
+ * Detect version mismatches in @agentuity/* packages.
43
+ *
44
+ * @param projectDir - Root directory of the user's project
45
+ * @param logger - Logger instance
46
+ * @returns Version mismatch detection result
47
+ */
48
+ export function detectVersionMismatch(projectDir, logger) {
49
+ const cliVersion = getVersion();
50
+ const cliMajor = extractMajor(cliVersion);
51
+ const result = {
52
+ cliMajor,
53
+ packages: [],
54
+ mismatched: [],
55
+ outdated: [],
56
+ hasV1Packages: false,
57
+ hasMajorMismatches: false,
58
+ };
59
+ // Skip check for canary versions
60
+ if (cliVersion.includes('-')) {
61
+ logger.debug('Skipping version mismatch check for canary version: %s', cliVersion);
62
+ return result;
63
+ }
64
+ // Read package.json
65
+ const packageJsonPath = join(projectDir, 'package.json');
66
+ if (!existsSync(packageJsonPath)) {
67
+ logger.debug('No package.json found, skipping version mismatch check');
68
+ return result;
69
+ }
70
+ let packageJson;
71
+ try {
72
+ packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
73
+ }
74
+ catch (error) {
75
+ logger.debug('Failed to read package.json: %s', error);
76
+ return result;
77
+ }
78
+ // Collect all @agentuity/* packages
79
+ const allDeps = {
80
+ ...packageJson.dependencies,
81
+ ...packageJson.devDependencies,
82
+ };
83
+ const agentuitPackages = Object.entries(allDeps)
84
+ .filter(([name]) => name.startsWith('@agentuity/'))
85
+ .map(([name, specifier]) => ({ name, specifier }));
86
+ if (agentuitPackages.length === 0) {
87
+ logger.debug('No @agentuity/* packages found in package.json');
88
+ return result;
89
+ }
90
+ // Check each package's installed version
91
+ for (const { name } of agentuitPackages) {
92
+ const installedVersion = getInstalledVersion(projectDir, name);
93
+ if (!installedVersion) {
94
+ logger.debug('%s: not installed, skipping', name);
95
+ continue;
96
+ }
97
+ const major = extractMajor(installedVersion);
98
+ const info = {
99
+ name,
100
+ version: installedVersion,
101
+ major,
102
+ };
103
+ result.packages.push(info);
104
+ // Check if this is a v1 package when CLI is v2+
105
+ if (major === 1 && cliMajor >= 2) {
106
+ result.outdated.push(info);
107
+ result.hasV1Packages = true;
108
+ }
109
+ }
110
+ // Check for major version mismatches across installed packages
111
+ if (result.packages.length > 1) {
112
+ const majors = new Set(result.packages.map((p) => p.major));
113
+ if (majors.size > 1) {
114
+ result.hasMajorMismatches = true;
115
+ // Find packages that don't match the most common major version
116
+ const majorCounts = new Map();
117
+ for (const pkg of result.packages) {
118
+ majorCounts.set(pkg.major, (majorCounts.get(pkg.major) || 0) + 1);
119
+ }
120
+ const mostCommonMajor = [...majorCounts.entries()].sort((a, b) => b[1] - a[1])[0]?.[0] || cliMajor;
121
+ for (const pkg of result.packages) {
122
+ if (pkg.major !== mostCommonMajor) {
123
+ result.mismatched.push(pkg);
124
+ }
125
+ }
126
+ }
127
+ }
128
+ return result;
129
+ }
130
+ /**
131
+ * Format a warning message for version mismatches.
132
+ */
133
+ export function formatVersionMismatchWarning(result) {
134
+ const lines = [];
135
+ if (result.hasV1Packages) {
136
+ lines.push('You are using Agentuity SDK v1 packages, but v2 is now available.');
137
+ lines.push('');
138
+ lines.push(' Outdated packages:');
139
+ for (const pkg of result.outdated) {
140
+ lines.push(` • ${pkg.name}@${pkg.version}`);
141
+ }
142
+ lines.push('');
143
+ lines.push(' → Run `npx @agentuity/migrate` to upgrade your project to v2.');
144
+ lines.push(' This will automatically update your code and dependencies.');
145
+ lines.push('');
146
+ lines.push(' See the migration guide: https://docs.agentuity.com/migration/v1-to-v2');
147
+ }
148
+ else if (result.hasMajorMismatches) {
149
+ lines.push('Your project has mismatched major versions across @agentuity/* packages.');
150
+ lines.push('');
151
+ lines.push(' Packages:');
152
+ for (const pkg of result.packages) {
153
+ const marker = result.mismatched.includes(pkg) ? ' ⚠️' : '';
154
+ lines.push(` • ${pkg.name}@${pkg.version} (v${pkg.major})${marker}`);
155
+ }
156
+ lines.push('');
157
+ lines.push(' → Run `bun install` to sync versions, or pin to the same major version.');
158
+ }
159
+ return lines.join('\n');
160
+ }
161
+ //# sourceMappingURL=version-mismatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-mismatch.js","sourceRoot":"","sources":["../../src/utils/version-mismatch.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentuity/cli",
3
- "version": "1.0.59",
3
+ "version": "2.0.0-beta.1",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Agentuity employees and contributors",
6
6
  "type": "module",
@@ -41,9 +41,9 @@
41
41
  "prepublishOnly": "bun run clean && bun run build"
42
42
  },
43
43
  "dependencies": {
44
- "@agentuity/auth": "1.0.59",
45
- "@agentuity/core": "1.0.59",
46
- "@agentuity/server": "1.0.59",
44
+ "@agentuity/auth": "2.0.0-beta.1",
45
+ "@agentuity/core": "2.0.0-beta.1",
46
+ "@agentuity/server": "2.0.0-beta.1",
47
47
  "@datasert/cronjs-parser": "^1.4.0",
48
48
  "@vitejs/plugin-react": "^5.1.2",
49
49
  "acorn-loose": "^8.5.2",
@@ -59,10 +59,10 @@
59
59
  "typescript": "^5.9.0",
60
60
  "vite": "^7.2.7",
61
61
  "zod": "^4.3.5",
62
- "@agentuity/frontend": "1.0.59"
62
+ "@agentuity/frontend": "2.0.0-beta.1"
63
63
  },
64
64
  "devDependencies": {
65
- "@agentuity/test-utils": "1.0.59",
65
+ "@agentuity/test-utils": "2.0.0-beta.1",
66
66
  "@types/adm-zip": "^0.5.7",
67
67
  "@types/bun": "latest",
68
68
  "@types/tar-fs": "^2.0.4",
@@ -7,7 +7,6 @@ This folder contains AI agents for your Agentuity application. Each agent is org
7
7
  The `src/generated/` folder contains auto-generated TypeScript files:
8
8
 
9
9
  - `registry.ts` - Agent registry with strongly-typed agent definitions and schema types
10
- - `routes.ts` - Route registry for API, WebSocket, and SSE endpoints
11
10
  - `app.ts` - Application entry point (regenerated on every build)
12
11
 
13
12
  **Important:** Never edit files in `src/generated/` - they are overwritten on every build.
@@ -6,18 +6,11 @@ This folder contains REST API routes for your Agentuity application. Each API is
6
6
 
7
7
  The `src/generated/` folder contains auto-generated TypeScript files:
8
8
 
9
- - `routes.ts` - Route registry with strongly-typed route definitions and schema types
10
9
  - `registry.ts` - Agent registry (for calling agents from routes)
11
10
  - `app.ts` - Application entry point (regenerated on every build)
12
11
 
13
12
  **Important:** Never edit files in `src/generated/` - they are overwritten on every build.
14
13
 
15
- Import generated types in your routes:
16
-
17
- ```typescript
18
- import type { POST_Api_UsersInput, POST_Api_UsersOutput } from '../generated/routes';
19
- ```
20
-
21
14
  ## Directory Structure
22
15
 
23
16
  Each API folder must contain:
@@ -6,19 +6,17 @@ This folder contains your React-based web application that communicates with you
6
6
 
7
7
  The `src/generated/` folder contains auto-generated TypeScript files:
8
8
 
9
- - `routes.ts` - Route registry with type-safe API, WebSocket, and SSE route definitions
10
9
  - `registry.ts` - Agent registry with input/output types
11
10
 
12
11
  **Important:** Never edit files in `src/generated/` - they are overwritten on every build.
13
12
 
14
- Import generated types in your components:
13
+ For type-safe API calls, use Hono's `hc()` client:
15
14
 
16
15
  ```typescript
17
- // Routes are typed automatically via module augmentation
18
- import { useAPI } from '@agentuity/react';
16
+ import { hc } from 'hono/client';
17
+ import type { AppType } from '../api/router';
19
18
 
20
- // The route 'GET /api/users' is fully typed
21
- const { data } = useAPI('GET /api/users');
19
+ const client = hc<AppType>('/');
22
20
  ```
23
21
 
24
22
  ## Directory Structure
@@ -48,12 +46,25 @@ src/web/
48
46
  ### App.tsx - Main Component
49
47
 
50
48
  ```typescript
51
- import { AgentuityProvider, useAPI } from '@agentuity/react';
49
+ import { AgentuityProvider } from '@agentuity/react';
50
+ import { hc } from 'hono/client';
51
+ import type { AppType } from '../api/router';
52
52
  import { useState } from 'react';
53
53
 
54
+ const client = hc<AppType>('/');
55
+
54
56
  function HelloForm() {
55
57
  const [name, setName] = useState('World');
56
- const { invoke, isLoading, data: greeting } = useAPI('POST /api/hello');
58
+ const [greeting, setGreeting] = useState<string | null>(null);
59
+ const [isLoading, setIsLoading] = useState(false);
60
+
61
+ const handleSubmit = async () => {
62
+ setIsLoading(true);
63
+ const res = await client.api.hello.$post({ json: { name } });
64
+ const data = await res.json();
65
+ setGreeting(data.greeting);
66
+ setIsLoading(false);
67
+ };
57
68
 
58
69
  return (
59
70
  <div>
@@ -65,7 +76,7 @@ function HelloForm() {
65
76
  />
66
77
 
67
78
  <button
68
- onClick={() => invoke({ name })}
79
+ onClick={handleSubmit}
69
80
  disabled={isLoading}
70
81
  >
71
82
  {isLoading ? 'Running...' : 'Say Hello'}
@@ -117,159 +128,30 @@ createRoot(root).render(<App />);
117
128
  </html>
118
129
  ```
119
130
 
120
- ## React Hooks
121
-
122
- All hooks from `@agentuity/react` must be used within an `AgentuityProvider`. **Always use these hooks instead of raw `fetch()` calls** - they provide type safety, automatic error handling, and integration with the Agentuity platform.
123
-
124
- ### useAPI - Type-Safe API Calls
125
-
126
- The primary hook for making HTTP requests. **Use this instead of `fetch()`.**
127
-
128
- ```typescript
129
- import { useAPI } from '@agentuity/react';
130
-
131
- function MyComponent() {
132
- // GET requests auto-execute and return refetch
133
- const { data, isLoading, error, refetch } = useAPI('GET /api/users');
134
-
135
- // POST/PUT/DELETE return invoke for manual execution
136
- const { invoke, data: result, isLoading: saving } = useAPI('POST /api/users');
137
-
138
- const handleCreate = async () => {
139
- // Input is fully typed from route schema!
140
- await invoke({ name: 'Alice', email: 'alice@example.com' });
141
- };
142
-
143
- return (
144
- <div>
145
- <button onClick={handleCreate} disabled={saving}>
146
- {saving ? 'Creating...' : 'Create User'}
147
- </button>
148
- {result && <p>Created: {result.name}</p>}
149
- </div>
150
- );
151
- }
152
- ```
153
-
154
- **useAPI Return Values:**
131
+ ## Type-Safe API Calls
155
132
 
156
- | Property | Type | Description |
157
- | ------------ | ------------------------ | ----------------------------------------- |
158
- | `data` | `T \| undefined` | Response data (typed from route schema) |
159
- | `error` | `Error \| null` | Error if request failed |
160
- | `isLoading` | `boolean` | True during initial load |
161
- | `isFetching` | `boolean` | True during any fetch (including refetch) |
162
- | `isSuccess` | `boolean` | True if last request succeeded |
163
- | `isError` | `boolean` | True if last request failed |
164
- | `invoke` | `(input?) => Promise<T>` | Manual trigger (POST/PUT/DELETE) |
165
- | `refetch` | `() => Promise<void>` | Refetch data (GET) |
166
- | `reset` | `() => void` | Reset state to initial |
167
-
168
- ### useAPI Options
133
+ Use Hono's `hc()` client for type-safe API calls. The types are derived directly from your router.
169
134
 
170
135
  ```typescript
171
- // GET with query parameters and caching
172
- const { data } = useAPI({
173
- route: 'GET /api/search',
174
- query: { q: 'react', limit: '10' },
175
- staleTime: 5000, // Cache for 5 seconds
176
- refetchInterval: 10000, // Auto-refetch every 10 seconds
177
- enabled: true, // Set to false to disable auto-fetch
178
- });
179
-
180
- // POST with callbacks
181
- const { invoke } = useAPI({
182
- route: 'POST /api/users',
183
- onSuccess: (data) => console.log('Created:', data),
184
- onError: (error) => console.error('Failed:', error),
185
- });
186
-
187
- // Streaming responses with onChunk
188
- const { invoke } = useAPI({
189
- route: 'POST /api/stream',
190
- onChunk: (chunk) => console.log('Received chunk:', chunk),
191
- delimiter: '\n', // Split stream by newlines (default)
192
- });
193
-
194
- // Custom headers
195
- const { data } = useAPI({
196
- route: 'GET /api/protected',
197
- headers: { 'X-Custom-Header': 'value' },
198
- });
199
- ```
136
+ import { hc } from 'hono/client';
137
+ import type { AppType } from '../api/router';
200
138
 
201
- ### useWebsocket - WebSocket Connection
139
+ // Create a typed client
140
+ const client = hc<AppType>('/');
202
141
 
203
- For bidirectional real-time communication. Automatically handles reconnection.
204
-
205
- ```typescript
206
- import { useWebsocket } from '@agentuity/react';
142
+ // All routes are fully typed
143
+ const res = await client.api.users.$get();
144
+ const users = await res.json();
207
145
 
208
- function ChatComponent() {
209
- const { isConnected, data, send, messages, clearMessages, error, reset } = useWebsocket('/api/chat');
210
-
211
- return (
212
- <div>
213
- <p>Status: {isConnected ? 'Connected' : 'Disconnected'}</p>
214
- <button onClick={() => send({ message: 'Hello' })}>Send</button>
215
- <div>
216
- {messages.map((msg, i) => (
217
- <p key={i}>{JSON.stringify(msg)}</p>
218
- ))}
219
- </div>
220
- <button onClick={clearMessages}>Clear</button>
221
- </div>
222
- );
223
- }
146
+ const res2 = await client.api.users.$post({ json: { name: 'Alice', email: 'alice@example.com' } });
147
+ const created = await res2.json();
224
148
  ```
225
149
 
226
- **useWebsocket Return Values:**
150
+ For WebSocket and SSE, use the native browser APIs or `WebSocketManager`/`EventStreamManager` from `@agentuity/frontend`.
227
151
 
228
- | Property | Type | Description |
229
- | --------------- | ---------------- | ---------------------------------------- |
230
- | `isConnected` | `boolean` | True when WebSocket is connected |
231
- | `data` | `T \| undefined` | Most recent message received |
232
- | `messages` | `T[]` | Array of all received messages |
233
- | `send` | `(data) => void` | Send a message (typed from route schema) |
234
- | `clearMessages` | `() => void` | Clear the messages array |
235
- | `close` | `() => void` | Close the connection |
236
- | `error` | `Error \| null` | Error if connection failed |
237
- | `isError` | `boolean` | True if there's an error |
238
- | `reset` | `() => void` | Reset state and reconnect |
239
- | `readyState` | `number` | WebSocket ready state |
240
-
241
- ### useEventStream - Server-Sent Events
242
-
243
- For server-to-client streaming (one-way). Use when server pushes updates to client.
244
-
245
- ```typescript
246
- import { useEventStream } from '@agentuity/react';
247
-
248
- function NotificationsComponent() {
249
- const { isConnected, data, error, close, reset } = useEventStream('/api/notifications');
250
-
251
- return (
252
- <div>
253
- <p>Connected: {isConnected ? 'Yes' : 'No'}</p>
254
- {error && <p>Error: {error.message}</p>}
255
- <p>Latest: {JSON.stringify(data)}</p>
256
- <button onClick={close}>Disconnect</button>
257
- </div>
258
- );
259
- }
260
- ```
261
-
262
- **useEventStream Return Values:**
152
+ ## React Hooks
263
153
 
264
- | Property | Type | Description |
265
- | ------------- | ---------------- | ---------------------------------- |
266
- | `isConnected` | `boolean` | True when EventSource is connected |
267
- | `data` | `T \| undefined` | Most recent event data |
268
- | `error` | `Error \| null` | Error if connection failed |
269
- | `isError` | `boolean` | True if there's an error |
270
- | `close` | `() => void` | Close the connection |
271
- | `reset` | `() => void` | Reset state and reconnect |
272
- | `readyState` | `number` | EventSource ready state |
154
+ `@agentuity/react` provides hooks for context, auth, WebRTC, and analytics. All hooks must be used within an `AgentuityProvider`.
273
155
 
274
156
  ### useAgentuity - Access Context
275
157
 
@@ -330,22 +212,21 @@ function AuthStatus() {
330
212
  ## Complete Example
331
213
 
332
214
  ```typescript
333
- import { AgentuityProvider, useAPI, useWebsocket } from '@agentuity/react';
334
- import { useEffect, useState } from 'react';
215
+ import { AgentuityProvider } from '@agentuity/react';
216
+ import { hc } from 'hono/client';
217
+ import type { AppType } from '../api/router';
218
+ import { useState } from 'react';
219
+
220
+ const client = hc<AppType>('/');
335
221
 
336
222
  function Dashboard() {
337
223
  const [count, setCount] = useState(0);
338
- const { invoke, data: agentResult } = useAPI('POST /api/process');
339
- const { isConnected, send, data: wsMessage } = useWebsocket('/api/live');
340
-
341
- useEffect(() => {
342
- if (isConnected) {
343
- const interval = setInterval(() => {
344
- send({ ping: Date.now() });
345
- }, 1000);
346
- return () => clearInterval(interval);
347
- }
348
- }, [isConnected, send]);
224
+ const [result, setResult] = useState<any>(null);
225
+
226
+ const handleProcess = async () => {
227
+ const res = await client.api.process.$post({ json: { name: 'Jeff', age: 30 } });
228
+ setResult(await res.json());
229
+ };
349
230
 
350
231
  return (
351
232
  <div style={{ fontFamily: 'sans-serif', padding: '2rem' }}>
@@ -359,15 +240,10 @@ function Dashboard() {
359
240
  </div>
360
241
 
361
242
  <div>
362
- <button onClick={() => invoke({ name: 'Jeff', age: 30 })}>
243
+ <button onClick={handleProcess}>
363
244
  Call API
364
245
  </button>
365
- <p>{JSON.stringify(agentResult)}</p>
366
- </div>
367
-
368
- <div>
369
- <strong>WebSocket:</strong>
370
- {isConnected ? JSON.stringify(wsMessage) : 'Not connected'}
246
+ <p>{JSON.stringify(result)}</p>
371
247
  </div>
372
248
  </div>
373
249
  );
@@ -451,47 +327,10 @@ Import in `index.html`:
451
327
  </div>
452
328
  ```
453
329
 
454
- ## RPC-Style API Client
455
-
456
- For non-React contexts (like utility functions or event handlers), use `createClient`:
457
-
458
- ```typescript
459
- import { createClient } from '@agentuity/react';
460
-
461
- // Create a typed client (uses global baseUrl and auth from AgentuityProvider)
462
- const api = createClient();
463
-
464
- // Type-safe RPC-style calls - routes become nested objects
465
- // Route 'GET /api/users' becomes api.users.get()
466
- // Route 'POST /api/users' becomes api.users.post()
467
- // Route 'GET /api/users/:id' becomes api.users.id.get({ id: '123' })
468
-
469
- async function fetchData() {
470
- const users = await api.users.get();
471
- const newUser = await api.users.post({ name: 'Alice', email: 'alice@example.com' });
472
- const user = await api.users.id.get({ id: '123' });
473
- return { users, newUser, user };
474
- }
475
- ```
476
-
477
- **When to use `createClient` vs `useAPI`:**
478
-
479
- | Use Case | Recommendation |
480
- | ------------------------- | -------------- |
481
- | React component rendering | `useAPI` hook |
482
- | Event handlers | Either works |
483
- | Utility functions | `createClient` |
484
- | Non-React code | `createClient` |
485
- | Need loading/error state | `useAPI` hook |
486
- | Need caching/refetch | `useAPI` hook |
487
-
488
330
  ## Best Practices
489
331
 
490
- - Wrap your app with **AgentuityProvider** for hooks to work
491
- - **Always use `useAPI` instead of `fetch()`** for type safety and error handling
492
- - Use **useAPI** for type-safe HTTP requests (GET, POST, PUT, DELETE)
493
- - Use **useWebsocket** for bidirectional real-time communication
494
- - Use **useEventStream** for server-to-client streaming
332
+ - Wrap your app with **AgentuityProvider** for auth and context
333
+ - Use **hc()** from `hono/client` for type-safe API calls
495
334
  - Use **useAuth** for authentication state management
496
335
  - Handle loading and error states in UI
497
336
  - Place reusable components in separate files
@@ -502,8 +341,7 @@ async function fetchData() {
502
341
  - **App.tsx** must export a function named `App`
503
342
  - **frontend.tsx** must render the `App` component to `#root`
504
343
  - **index.html** must have a `<div id="root"></div>`
505
- - Routes are typed via module augmentation from `src/generated/routes.ts`
344
+ - Route types are derived from your Hono router via `hc<typeof router>()`
506
345
  - The web app is served at `/` by default
507
346
  - Static files in `public/` are served at `/public/*`
508
347
  - Module script tag: `<script type="module" src="/web/frontend.tsx"></script>`
509
- - **Never use raw `fetch()` calls** - always use `useAPI` or `createClient`