@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.
- package/dist/cmd/build/app-router-detector.d.ts +2 -5
- package/dist/cmd/build/app-router-detector.d.ts.map +1 -1
- package/dist/cmd/build/app-router-detector.js +130 -154
- package/dist/cmd/build/app-router-detector.js.map +1 -1
- package/dist/cmd/build/ids.d.ts +11 -0
- package/dist/cmd/build/ids.d.ts.map +1 -0
- package/dist/cmd/build/ids.js +18 -0
- package/dist/cmd/build/ids.js.map +1 -0
- package/dist/cmd/build/vite/agent-discovery.d.ts +8 -4
- package/dist/cmd/build/vite/agent-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/agent-discovery.js +166 -487
- package/dist/cmd/build/vite/agent-discovery.js.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts +10 -16
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.js +67 -134
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
- package/dist/cmd/build/vite/docs-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/docs-generator.js +0 -2
- package/dist/cmd/build/vite/docs-generator.js.map +1 -1
- package/dist/cmd/build/vite/index.d.ts.map +1 -1
- package/dist/cmd/build/vite/index.js +0 -36
- package/dist/cmd/build/vite/index.js.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.d.ts +10 -2
- package/dist/cmd/build/vite/lifecycle-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/lifecycle-generator.js +302 -23
- package/dist/cmd/build/vite/lifecycle-generator.js.map +1 -1
- package/dist/cmd/build/vite/route-discovery.d.ts +11 -38
- package/dist/cmd/build/vite/route-discovery.d.ts.map +1 -1
- package/dist/cmd/build/vite/route-discovery.js +97 -177
- package/dist/cmd/build/vite/route-discovery.js.map +1 -1
- package/dist/cmd/build/vite/server-bundler.js +1 -1
- package/dist/cmd/build/vite/server-bundler.js.map +1 -1
- package/dist/cmd/build/vite/static-renderer.d.ts.map +1 -1
- package/dist/cmd/build/vite/static-renderer.js +1 -9
- package/dist/cmd/build/vite/static-renderer.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts +6 -3
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +171 -21
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.d.ts +8 -3
- package/dist/cmd/build/vite/vite-asset-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server.js +14 -13
- package/dist/cmd/build/vite/vite-asset-server.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +6 -36
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/build/vite/ws-proxy.d.ts +53 -0
- package/dist/cmd/build/vite/ws-proxy.d.ts.map +1 -0
- package/dist/cmd/build/vite/ws-proxy.js +95 -0
- package/dist/cmd/build/vite/ws-proxy.js.map +1 -0
- package/dist/cmd/build/vite-bundler.d.ts.map +1 -1
- package/dist/cmd/build/vite-bundler.js +0 -3
- package/dist/cmd/build/vite-bundler.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +0 -1
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
- package/dist/cmd/dev/file-watcher.js +2 -8
- package/dist/cmd/dev/file-watcher.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +369 -720
- package/dist/cmd/dev/index.js.map +1 -1
- package/package.json +6 -8
- package/src/cmd/ai/prompt/agent.md +0 -1
- package/src/cmd/ai/prompt/api.md +0 -7
- package/src/cmd/ai/prompt/web.md +51 -213
- package/src/cmd/build/app-router-detector.ts +152 -182
- package/src/cmd/build/ids.ts +19 -0
- package/src/cmd/build/vite/agent-discovery.ts +208 -679
- package/src/cmd/build/vite/bun-dev-server.ts +78 -154
- package/src/cmd/build/vite/docs-generator.ts +0 -2
- package/src/cmd/build/vite/index.ts +1 -42
- package/src/cmd/build/vite/lifecycle-generator.ts +345 -21
- package/src/cmd/build/vite/route-discovery.ts +116 -274
- package/src/cmd/build/vite/server-bundler.ts +1 -1
- package/src/cmd/build/vite/static-renderer.ts +1 -11
- package/src/cmd/build/vite/vite-asset-server-config.ts +196 -23
- package/src/cmd/build/vite/vite-asset-server.ts +25 -15
- package/src/cmd/build/vite/vite-builder.ts +6 -53
- package/src/cmd/build/vite/ws-proxy.ts +126 -0
- package/src/cmd/build/vite-bundler.ts +0 -4
- package/src/cmd/cloud/deploy.ts +0 -1
- package/src/cmd/dev/file-watcher.ts +2 -9
- package/src/cmd/dev/index.ts +409 -832
- package/dist/cmd/build/ast.d.ts +0 -78
- package/dist/cmd/build/ast.d.ts.map +0 -1
- package/dist/cmd/build/ast.js +0 -2703
- package/dist/cmd/build/ast.js.map +0 -1
- package/dist/cmd/build/entry-generator.d.ts +0 -25
- package/dist/cmd/build/entry-generator.d.ts.map +0 -1
- package/dist/cmd/build/entry-generator.js +0 -695
- package/dist/cmd/build/entry-generator.js.map +0 -1
- package/dist/cmd/build/vite/api-mount-path.d.ts +0 -61
- package/dist/cmd/build/vite/api-mount-path.d.ts.map +0 -1
- package/dist/cmd/build/vite/api-mount-path.js +0 -83
- package/dist/cmd/build/vite/api-mount-path.js.map +0 -1
- package/dist/cmd/build/vite/registry-generator.d.ts +0 -19
- package/dist/cmd/build/vite/registry-generator.d.ts.map +0 -1
- package/dist/cmd/build/vite/registry-generator.js +0 -1108
- package/dist/cmd/build/vite/registry-generator.js.map +0 -1
- package/dist/cmd/build/vite/tailwind-source-plugin.d.ts +0 -13
- package/dist/cmd/build/vite/tailwind-source-plugin.d.ts.map +0 -1
- package/dist/cmd/build/vite/tailwind-source-plugin.js +0 -44
- package/dist/cmd/build/vite/tailwind-source-plugin.js.map +0 -1
- package/dist/cmd/build/webanalytics-generator.d.ts +0 -16
- package/dist/cmd/build/webanalytics-generator.d.ts.map +0 -1
- package/dist/cmd/build/webanalytics-generator.js +0 -178
- package/dist/cmd/build/webanalytics-generator.js.map +0 -1
- package/dist/cmd/build/workbench.d.ts +0 -7
- package/dist/cmd/build/workbench.d.ts.map +0 -1
- package/dist/cmd/build/workbench.js +0 -55
- package/dist/cmd/build/workbench.js.map +0 -1
- package/dist/utils/route-migration.d.ts +0 -62
- package/dist/utils/route-migration.d.ts.map +0 -1
- package/dist/utils/route-migration.js +0 -630
- package/dist/utils/route-migration.js.map +0 -1
- package/src/cmd/build/ast.ts +0 -3529
- package/src/cmd/build/entry-generator.ts +0 -760
- package/src/cmd/build/vite/api-mount-path.ts +0 -87
- package/src/cmd/build/vite/registry-generator.ts +0 -1267
- package/src/cmd/build/vite/tailwind-source-plugin.ts +0 -54
- package/src/cmd/build/webanalytics-generator.ts +0 -197
- package/src/cmd/build/workbench.ts +0 -58
- 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
|
-
}
|