@agentuity/cli 1.0.48 → 2.0.0-beta.0

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 (124) hide show
  1. package/dist/cmd/build/app-router-detector.d.ts +2 -5
  2. package/dist/cmd/build/app-router-detector.d.ts.map +1 -1
  3. package/dist/cmd/build/app-router-detector.js +130 -154
  4. package/dist/cmd/build/app-router-detector.js.map +1 -1
  5. package/dist/cmd/build/ids.d.ts +11 -0
  6. package/dist/cmd/build/ids.d.ts.map +1 -0
  7. package/dist/cmd/build/ids.js +18 -0
  8. package/dist/cmd/build/ids.js.map +1 -0
  9. package/dist/cmd/build/vite/agent-discovery.d.ts +8 -4
  10. package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
  11. package/dist/cmd/build/vite/agent-discovery.js +166 -487
  12. package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
  13. package/dist/cmd/build/vite/bun-dev-server.d.ts +10 -16
  14. package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
  15. package/dist/cmd/build/vite/bun-dev-server.js +67 -134
  16. package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
  17. package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -1
  18. package/dist/cmd/build/vite/docs-generator.js +0 -2
  19. package/dist/cmd/build/vite/docs-generator.js.map +1 -1
  20. package/dist/cmd/build/vite/index.d.ts.map +1 -1
  21. package/dist/cmd/build/vite/index.js +0 -36
  22. package/dist/cmd/build/vite/index.js.map +1 -1
  23. package/dist/cmd/build/vite/lifecycle-generator.d.ts +10 -2
  24. package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
  25. package/dist/cmd/build/vite/lifecycle-generator.js +302 -23
  26. package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
  27. package/dist/cmd/build/vite/route-discovery.d.ts +11 -38
  28. package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
  29. package/dist/cmd/build/vite/route-discovery.js +97 -177
  30. package/dist/cmd/build/vite/route-discovery.js.map +1 -1
  31. package/dist/cmd/build/vite/server-bundler.js +1 -1
  32. package/dist/cmd/build/vite/server-bundler.js.map +1 -1
  33. package/dist/cmd/build/vite/static-renderer.d.ts.map +1 -1
  34. package/dist/cmd/build/vite/static-renderer.js +1 -9
  35. package/dist/cmd/build/vite/static-renderer.js.map +1 -1
  36. package/dist/cmd/build/vite/vite-asset-server-config.d.ts +6 -3
  37. package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
  38. package/dist/cmd/build/vite/vite-asset-server-config.js +171 -21
  39. package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
  40. package/dist/cmd/build/vite/vite-asset-server.d.ts +8 -3
  41. package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
  42. package/dist/cmd/build/vite/vite-asset-server.js +14 -13
  43. package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
  44. package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
  45. package/dist/cmd/build/vite/vite-builder.js +6 -36
  46. package/dist/cmd/build/vite/vite-builder.js.map +1 -1
  47. package/dist/cmd/build/vite/ws-proxy.d.ts +53 -0
  48. package/dist/cmd/build/vite/ws-proxy.d.ts.map +1 -0
  49. package/dist/cmd/build/vite/ws-proxy.js +95 -0
  50. package/dist/cmd/build/vite/ws-proxy.js.map +1 -0
  51. package/dist/cmd/build/vite-bundler.d.ts.map +1 -1
  52. package/dist/cmd/build/vite-bundler.js +0 -3
  53. package/dist/cmd/build/vite-bundler.js.map +1 -1
  54. package/dist/cmd/cloud/deploy.d.ts.map +1 -1
  55. package/dist/cmd/cloud/deploy.js +0 -1
  56. package/dist/cmd/cloud/deploy.js.map +1 -1
  57. package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
  58. package/dist/cmd/dev/file-watcher.js +2 -8
  59. package/dist/cmd/dev/file-watcher.js.map +1 -1
  60. package/dist/cmd/dev/index.d.ts.map +1 -1
  61. package/dist/cmd/dev/index.js +369 -720
  62. package/dist/cmd/dev/index.js.map +1 -1
  63. package/package.json +6 -8
  64. package/src/cmd/ai/prompt/agent.md +0 -1
  65. package/src/cmd/ai/prompt/api.md +0 -7
  66. package/src/cmd/ai/prompt/web.md +51 -213
  67. package/src/cmd/build/app-router-detector.ts +152 -182
  68. package/src/cmd/build/ids.ts +19 -0
  69. package/src/cmd/build/vite/agent-discovery.ts +208 -679
  70. package/src/cmd/build/vite/bun-dev-server.ts +78 -154
  71. package/src/cmd/build/vite/docs-generator.ts +0 -2
  72. package/src/cmd/build/vite/index.ts +1 -42
  73. package/src/cmd/build/vite/lifecycle-generator.ts +345 -21
  74. package/src/cmd/build/vite/route-discovery.ts +116 -274
  75. package/src/cmd/build/vite/server-bundler.ts +1 -1
  76. package/src/cmd/build/vite/static-renderer.ts +1 -11
  77. package/src/cmd/build/vite/vite-asset-server-config.ts +196 -23
  78. package/src/cmd/build/vite/vite-asset-server.ts +25 -15
  79. package/src/cmd/build/vite/vite-builder.ts +6 -53
  80. package/src/cmd/build/vite/ws-proxy.ts +126 -0
  81. package/src/cmd/build/vite-bundler.ts +0 -4
  82. package/src/cmd/cloud/deploy.ts +0 -1
  83. package/src/cmd/dev/file-watcher.ts +2 -9
  84. package/src/cmd/dev/index.ts +409 -832
  85. package/dist/cmd/build/ast.d.ts +0 -78
  86. package/dist/cmd/build/ast.d.ts.map +0 -1
  87. package/dist/cmd/build/ast.js +0 -2703
  88. package/dist/cmd/build/ast.js.map +0 -1
  89. package/dist/cmd/build/entry-generator.d.ts +0 -25
  90. package/dist/cmd/build/entry-generator.d.ts.map +0 -1
  91. package/dist/cmd/build/entry-generator.js +0 -695
  92. package/dist/cmd/build/entry-generator.js.map +0 -1
  93. package/dist/cmd/build/vite/api-mount-path.d.ts +0 -61
  94. package/dist/cmd/build/vite/api-mount-path.d.ts.map +0 -1
  95. package/dist/cmd/build/vite/api-mount-path.js +0 -83
  96. package/dist/cmd/build/vite/api-mount-path.js.map +0 -1
  97. package/dist/cmd/build/vite/registry-generator.d.ts +0 -19
  98. package/dist/cmd/build/vite/registry-generator.d.ts.map +0 -1
  99. package/dist/cmd/build/vite/registry-generator.js +0 -1108
  100. package/dist/cmd/build/vite/registry-generator.js.map +0 -1
  101. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +0 -13
  102. package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +0 -1
  103. package/dist/cmd/build/vite/tailwind-source-plugin.js +0 -44
  104. package/dist/cmd/build/vite/tailwind-source-plugin.js.map +0 -1
  105. package/dist/cmd/build/webanalytics-generator.d.ts +0 -16
  106. package/dist/cmd/build/webanalytics-generator.d.ts.map +0 -1
  107. package/dist/cmd/build/webanalytics-generator.js +0 -178
  108. package/dist/cmd/build/webanalytics-generator.js.map +0 -1
  109. package/dist/cmd/build/workbench.d.ts +0 -7
  110. package/dist/cmd/build/workbench.d.ts.map +0 -1
  111. package/dist/cmd/build/workbench.js +0 -55
  112. package/dist/cmd/build/workbench.js.map +0 -1
  113. package/dist/utils/route-migration.d.ts +0 -62
  114. package/dist/utils/route-migration.d.ts.map +0 -1
  115. package/dist/utils/route-migration.js +0 -630
  116. package/dist/utils/route-migration.js.map +0 -1
  117. package/src/cmd/build/ast.ts +0 -3529
  118. package/src/cmd/build/entry-generator.ts +0 -760
  119. package/src/cmd/build/vite/api-mount-path.ts +0 -87
  120. package/src/cmd/build/vite/registry-generator.ts +0 -1267
  121. package/src/cmd/build/vite/tailwind-source-plugin.ts +0 -54
  122. package/src/cmd/build/webanalytics-generator.ts +0 -197
  123. package/src/cmd/build/workbench.ts +0 -58
  124. package/src/utils/route-migration.ts +0 -757
@@ -1,54 +0,0 @@
1
- /**
2
- * Vite plugin to fix Tailwind v4 oxide scanner hang in containers
3
- *
4
- * The Tailwind v4 oxide scanner (native Rust binary) can hang or fail when
5
- * scanning the filesystem in containerized environments. Adding source(none)
6
- * to @import "tailwindcss" disables the oxide filesystem scanner while still
7
- * allowing @tailwindcss/vite to detect class usage through Vite's module graph.
8
- *
9
- * @see https://github.com/tailwindlabs/tailwindcss/discussions/19661
10
- */
11
-
12
- import type { Plugin } from 'vite';
13
-
14
- export function tailwindSourcePlugin(): Plugin {
15
- return {
16
- name: 'agentuity:tailwind-source',
17
- enforce: 'pre',
18
-
19
- transform(code, id) {
20
- // Only transform CSS files
21
- if (!id.endsWith('.css')) {
22
- return null;
23
- }
24
-
25
- // Check if the file contains @import "tailwindcss" (with either quote type)
26
- if (!/@import\s+["']tailwindcss["']/.test(code)) {
27
- return null;
28
- }
29
-
30
- // Transform @import "tailwindcss" → @import "tailwindcss" source(none)
31
- // Handles both quote styles and preserves any other directives on the same statement
32
- // Does NOT transform if source() is already specified
33
- const transformed = code.replace(
34
- /@import\s+(["'])tailwindcss\1([^;]*);/g,
35
- (match, quote, rest) => {
36
- // If source() is already present, don't modify
37
- if (/source\s*\(/.test(rest)) {
38
- return match;
39
- }
40
- return `@import ${quote}tailwindcss${quote}${rest} source(none);`;
41
- }
42
- );
43
-
44
- if (transformed !== code) {
45
- return {
46
- code: transformed,
47
- map: null,
48
- };
49
- }
50
-
51
- return null;
52
- },
53
- };
54
- }
@@ -1,197 +0,0 @@
1
- /**
2
- * Web analytics beacon code generator
3
- * Generates src/generated/webanalytics.ts with the analytics beacon script
4
- */
5
-
6
- import { join } from 'node:path';
7
- import type { Logger, AnalyticsConfig } from '../../types';
8
-
9
- interface GenerateWebAnalyticsOptions {
10
- rootDir: string;
11
- logger: Logger;
12
- analytics?: boolean | AnalyticsConfig;
13
- }
14
-
15
- /**
16
- * Generate the web analytics files (webanalytics.ts and analytics-config.ts)
17
- */
18
- export async function generateWebAnalyticsFile(
19
- options: GenerateWebAnalyticsOptions
20
- ): Promise<void> {
21
- const { rootDir, logger, analytics } = options;
22
-
23
- const srcDir = join(rootDir, 'src');
24
- const generatedDir = join(srcDir, 'generated');
25
- const analyticsPath = join(generatedDir, 'webanalytics.ts');
26
- const configPath = join(generatedDir, 'analytics-config.ts');
27
-
28
- logger.trace(`Generating web analytics files...`);
29
-
30
- const analyticsEnabled = analytics !== false;
31
- const analyticsConfig: AnalyticsConfig = typeof analytics === 'object' ? analytics : {};
32
-
33
- // Generate the analytics config file with resolved values
34
- const configCode = generateAnalyticsConfigCode(analyticsEnabled, analyticsConfig);
35
- await Bun.write(configPath, configCode);
36
-
37
- // Generate the webanalytics file
38
- const code = analyticsEnabled ? getEnabledAnalyticsCode() : getDisabledAnalyticsCode();
39
- await Bun.write(analyticsPath, code);
40
-
41
- logger.trace(`Generated web analytics files at %s`, generatedDir);
42
- }
43
-
44
- function generateAnalyticsConfigCode(enabled: boolean, config: AnalyticsConfig): string {
45
- return `// @generated
46
- // Auto-generated by Agentuity
47
- // DO NOT EDIT - This file is regenerated on every build
48
-
49
- export interface AnalyticsConfig {
50
- enabled: boolean;
51
- requireConsent: boolean;
52
- trackClicks: boolean;
53
- trackScroll: boolean;
54
- trackOutboundLinks: boolean;
55
- trackForms: boolean;
56
- trackWebVitals: boolean;
57
- trackErrors: boolean;
58
- trackSPANavigation: boolean;
59
- sampleRate: number;
60
- excludePatterns: string[];
61
- globalProperties: Record<string, unknown>;
62
- }
63
-
64
- export const analyticsConfig: AnalyticsConfig = {
65
- enabled: ${enabled && config.enabled !== false},
66
- requireConsent: ${config.requireConsent ?? false},
67
- trackClicks: ${config.trackClicks ?? true},
68
- trackScroll: ${config.trackScroll ?? true},
69
- trackOutboundLinks: ${config.trackOutboundLinks ?? true},
70
- trackForms: ${config.trackForms ?? false},
71
- trackWebVitals: ${config.trackWebVitals ?? true},
72
- trackErrors: ${config.trackErrors ?? true},
73
- trackSPANavigation: ${config.trackSPANavigation ?? true},
74
- sampleRate: ${config.sampleRate ?? 1},
75
- excludePatterns: ${JSON.stringify(config.excludePatterns ?? [])},
76
- globalProperties: ${JSON.stringify(config.globalProperties ?? {})},
77
- };
78
- `;
79
- }
80
-
81
- function getDisabledAnalyticsCode(): string {
82
- return `// @generated
83
- // Auto-generated by Agentuity
84
- // DO NOT EDIT - This file is regenerated on every build
85
-
86
- import { createRouter } from '@agentuity/runtime';
87
- import type { AnalyticsConfig } from './analytics-config';
88
-
89
- // Analytics disabled
90
- export function injectAnalytics(html: string, _config: AnalyticsConfig): string {
91
- return html;
92
- }
93
-
94
- export function registerAnalyticsRoutes(_app: ReturnType<typeof createRouter>): void {}
95
- `;
96
- }
97
-
98
- function getEnabledAnalyticsCode(): string {
99
- return `// @generated
100
- // Auto-generated by Agentuity
101
- // DO NOT EDIT - This file is regenerated on every build
102
-
103
- import type { Context } from 'hono';
104
- import {
105
- BEACON_SCRIPT,
106
- createRouter,
107
- createWebSessionMiddleware,
108
- getOrganizationId,
109
- getProjectId,
110
- isDevMode as runtimeIsDevMode,
111
- } from '@agentuity/runtime';
112
- import type { AnalyticsConfig } from './analytics-config';
113
-
114
- // Inject analytics config and script into HTML
115
- // Note: Only static config is injected (org, project, devmode, tracking options)
116
- // Session and thread IDs are read from cookies by the beacon script
117
- //
118
- // In production: beacon is served from CDN as a hashed asset (injected by Vite build)
119
- // In development: beacon is served from /_agentuity/webanalytics/analytics.js route
120
- export function injectAnalytics(html: string, analyticsConfig: AnalyticsConfig): string {
121
- if (!analyticsConfig.enabled) return html;
122
-
123
- const orgId = getOrganizationId() || '';
124
- const projectId = getProjectId() || '';
125
- const isDevmode = runtimeIsDevMode();
126
-
127
- // Only include static config - session/thread come from cookies
128
- const pageConfig = {
129
- ...analyticsConfig,
130
- orgId,
131
- projectId,
132
- isDevmode,
133
- };
134
-
135
- const configScript = \`<script>window.__AGENTUITY_ANALYTICS__=\${JSON.stringify(pageConfig)};</script>\`;
136
- // Session script sets cookies and window.__AGENTUITY_SESSION__ (dynamic, not cached)
137
- const sessionScript = '<script src="/_agentuity/webanalytics/session.js" async></script>';
138
-
139
- // In production, the beacon is already in HTML as a CDN asset (data-agentuity-beacon marker)
140
- // Inject config/session BEFORE the beacon marker so config exists when beacon runs
141
- const beaconMarker = '<script data-agentuity-beacon';
142
- if (html.includes(beaconMarker)) {
143
- // Production: inject config/session right before the beacon script
144
- const injection = configScript + sessionScript;
145
- return html.replace(beaconMarker, injection + beaconMarker);
146
- }
147
-
148
- // Development: beacon served from local route, inject all three scripts
149
- const beaconScript = '<script src="/_agentuity/webanalytics/analytics.js"></script>';
150
- const injection = configScript + sessionScript + beaconScript;
151
-
152
- // Inject before </head> or at start of <body>
153
- if (html.includes('</head>')) {
154
- return html.replace('</head>', injection + '</head>');
155
- }
156
- if (html.includes('<body')) {
157
- return html.replace(/<body([^>]*)>/, \`<body$1>\${injection}\`);
158
- }
159
- return injection + html;
160
- }
161
-
162
- // Serve analytics routes
163
- export function registerAnalyticsRoutes(app: ReturnType<typeof createRouter>): void {
164
- // Dynamic thread config script - sets cookie and returns thread ID
165
- // Web analytics only tracks thread ID, not session ID (to avoid polluting sessions table)
166
- // This endpoint is NOT cached - it generates unique data per request
167
- app.get('/_agentuity/webanalytics/session.js', createWebSessionMiddleware(), async (c: Context) => {
168
- // Read from context (cookies aren't readable until the next request)
169
- const threadId = c.get('_webThreadId') || '';
170
-
171
- // Use JSON.stringify to safely escape threadId and prevent XSS/injection
172
- const sessionData = JSON.stringify({ threadId });
173
- const sessionScript = \`window.__AGENTUITY_SESSION__=\${sessionData};\`;
174
-
175
- return new Response(sessionScript, {
176
- headers: {
177
- 'Content-Type': 'application/javascript; charset=utf-8',
178
- 'Cache-Control': 'no-store, no-cache, must-revalidate',
179
- },
180
- });
181
- });
182
-
183
- // Dev mode only: serve beacon script from local route
184
- // In production, the beacon is served from CDN as a hashed asset
185
- if (runtimeIsDevMode()) {
186
- app.get('/_agentuity/webanalytics/analytics.js', async (c: Context) => {
187
- return new Response(BEACON_SCRIPT, {
188
- headers: {
189
- 'Content-Type': 'application/javascript; charset=utf-8',
190
- 'Cache-Control': 'no-store, no-cache, must-revalidate',
191
- },
192
- });
193
- });
194
- }
195
- }
196
- `;
197
- }
@@ -1,58 +0,0 @@
1
- import { join } from 'node:path';
2
- import { encodeWorkbenchConfig, type WorkbenchConfig } from '@agentuity/core';
3
- import { analyzeWorkbench, WorkbenchAnalysis } from './ast';
4
-
5
- export function generateWorkbenchMainTsx(config: WorkbenchConfig): string {
6
- const encodedConfig = encodeWorkbenchConfig(config);
7
- return `// Generated workbench entry point
8
- import React from 'react';
9
- import { createRoot } from 'react-dom/client';
10
- import { App } from '@agentuity/workbench';
11
-
12
- // Root element
13
- const rootElement = document.getElementById('root');
14
- if (!rootElement) {
15
- throw new Error('Root element not found');
16
- }
17
-
18
- // Render the app (App has its own provider and config)
19
- const root = createRoot(rootElement);
20
- console.log('encodedConfig', '${encodedConfig}');
21
- root.render(<App configBase64="${encodedConfig}" />);
22
- `;
23
- }
24
-
25
- export function generateWorkbenchStylesCss(): string {
26
- // This file will be replaced with the actual dist/styles.css content during build
27
- // We use @import here as a placeholder, but the bundler should resolve it to the built file
28
- return `/* Generated workbench styles - will be replaced with dist/styles.css */
29
- @import '@agentuity/workbench/styles-standalone';
30
- `;
31
- }
32
-
33
- export function generateWorkbenchIndexHtml(): string {
34
- return `<!DOCTYPE html>
35
- <html lang="en">
36
- <head>
37
- <meta charset="UTF-8">
38
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
39
- <title>Agentuity Workbench</title>
40
- <link rel="stylesheet" href="./styles.css">
41
- </head>
42
- <body>
43
- <div id="root"></div>
44
- <script type="module" src="./main.tsx"></script>
45
- </body>
46
- </html>`;
47
- }
48
-
49
- export async function getWorkbench(dir: string): Promise<WorkbenchAnalysis> {
50
- const appFile = Bun.file(join(dir, 'app.ts'));
51
- if (await appFile.exists()) {
52
- return analyzeWorkbench(await appFile.text());
53
- }
54
- return {
55
- hasWorkbench: false,
56
- config: null,
57
- };
58
- }