@agentlang/cli 0.11.9 → 0.12.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/out/studio.js CHANGED
@@ -1,41 +1,44 @@
1
- /* eslint-disable no-console */
2
1
  import express from 'express';
3
2
  import cors from 'cors';
4
3
  import path from 'path';
5
- import chalk from 'chalk';
6
4
  import ora from 'ora';
5
+ import { ui } from './ui/index.js';
7
6
  import open from 'open';
8
7
  import { getWorkspaceRoot, findLStudioPath } from './studio/utils.js';
9
8
  import { FileService } from './studio/services/FileService.js';
10
9
  import { StudioServer } from './studio/services/StudioServer.js';
11
10
  import { createRoutes } from './studio/routes.js';
12
11
  export async function startStudio(projectPath = '.', studioPort = 4000, serverOnly = false) {
13
- const spinner = ora(serverOnly ? 'Starting Studio backend server...' : 'Starting Agent Studio...').start();
14
12
  const inputDir = path.resolve(process.cwd(), projectPath);
15
13
  // Smart Parent Detection: Determine workspace root and initial app
16
14
  const { workspaceRoot, initialAppPath } = getWorkspaceRoot(inputDir);
15
+ // ── Startup banner ──────────────────────────────────────────────────────────
16
+ ui.blank();
17
+ ui.banner(serverOnly ? 'Agent Studio' : 'Agent Studio', serverOnly ? 'Backend Server' : undefined);
18
+ ui.blank();
19
+ if (initialAppPath) {
20
+ ui.label('Project', path.basename(initialAppPath), 'cyan');
21
+ }
22
+ ui.label('Workspace', workspaceRoot);
23
+ ui.label('Port', String(studioPort), 'cyan');
24
+ ui.blank();
25
+ // ── Initialize ──────────────────────────────────────────────────────────────
26
+ const spinner = ora({
27
+ text: ui.format.dim('Initializing...'),
28
+ spinner: 'dots',
29
+ }).start();
17
30
  // Initialize Services with workspace root
18
31
  const fileService = new FileService(workspaceRoot);
19
32
  const studioServer = new StudioServer(workspaceRoot, initialAppPath, fileService);
20
- // Always use Dashboard Mode
21
33
  if (initialAppPath) {
22
- // Launched from inside a project - show workspace with initial app highlighted
23
- console.log(chalk.blue(`ℹ Detected project: ${path.basename(initialAppPath)}`));
24
- console.log(chalk.blue(`ℹ Workspace root: ${workspaceRoot}`));
25
- console.log(chalk.dim(' Auto-launching app...'));
26
- // Auto-launch the detected app
27
- // This sets the current app in StudioServer, which the frontend can detect via /workspace or /apps
34
+ spinner.text = ui.format.dim(`Launching ${path.basename(initialAppPath)}...`);
28
35
  await studioServer.launchApp(initialAppPath);
29
36
  }
30
37
  else {
31
- // Launched from a workspace directory
32
- console.log(chalk.blue(`ℹ Workspace root: ${workspaceRoot}`));
33
- console.log(chalk.dim(' Starting in Dashboard Mode. Select an app from the UI to launch it.'));
38
+ spinner.text = ui.format.dim('Starting Dashboard Mode...');
34
39
  }
35
- spinner.succeed(chalk.green('Studio Dashboard Ready'));
40
+ spinner.succeed(ui.format.success('Studio initialized'));
36
41
  // Find @agentlang/lstudio (skip in server-only mode)
37
- // Try to find it in the input directory first (for projects with local lstudio)
38
- // then fall back to workspace root
39
42
  let lstudioPath = null;
40
43
  if (!serverOnly) {
41
44
  lstudioPath = findLStudioPath(inputDir);
@@ -43,9 +46,7 @@ export async function startStudio(projectPath = '.', studioPort = 4000, serverOn
43
46
  lstudioPath = findLStudioPath(workspaceRoot);
44
47
  }
45
48
  if (!lstudioPath) {
46
- // Only error if we really can't find it, but in dev mode it might differ.
47
- // Warn instead of exit in case we are just using API
48
- console.warn(chalk.yellow('Warning: Could not find @agentlang/lstudio UI files.'));
49
+ ui.warn('Could not find @agentlang/lstudio UI files.');
49
50
  }
50
51
  }
51
52
  // Create Express app
@@ -56,11 +57,8 @@ export async function startStudio(projectPath = '.', studioPort = 4000, serverOn
56
57
  app.use('/', createRoutes(studioServer, fileService));
57
58
  // Serve static files from @agentlang/lstudio/dist (skip in server-only mode)
58
59
  if (!serverOnly && lstudioPath) {
59
- // Serve static files with fallthrough disabled - if file not found, continue to next middleware
60
60
  app.use(express.static(lstudioPath, { fallthrough: true }));
61
- // Handle client-side routing - serve index.html for all non-API, non-static-file routes
62
61
  app.use((req, res, next) => {
63
- // Skip if this is an API route (already handled by createRoutes)
64
62
  if (req.path.startsWith('/files') ||
65
63
  req.path.startsWith('/file') ||
66
64
  req.path.startsWith('/test') ||
@@ -68,15 +66,12 @@ export async function startStudio(projectPath = '.', studioPort = 4000, serverOn
68
66
  req.path.startsWith('/branch') ||
69
67
  req.path.startsWith('/install') ||
70
68
  req.path.startsWith('/env-config.js') ||
71
- req.path.startsWith('/workspace') || // workspace info
69
+ req.path.startsWith('/workspace') ||
72
70
  req.path.startsWith('/apps') ||
73
71
  req.path.startsWith('/app/') ||
74
- req.path.startsWith('/documents') // document upload routes
75
- ) {
72
+ req.path.startsWith('/documents')) {
76
73
  return next();
77
74
  }
78
- // Check if this is a request for a static file with a known extension
79
- // express.static would have already served it if it existed
80
75
  const staticFileExtensions = [
81
76
  '.js',
82
77
  '.css',
@@ -95,12 +90,9 @@ export async function startStudio(projectPath = '.', studioPort = 4000, serverOn
95
90
  '.html',
96
91
  ];
97
92
  const hasStaticExtension = staticFileExtensions.some(ext => req.path.toLowerCase().endsWith(ext));
98
- // If it's a static file request that express.static didn't handle, return 404
99
93
  if (hasStaticExtension) {
100
94
  return res.status(404).send('File not found');
101
95
  }
102
- // For all other GET requests, serve index.html
103
- // (client-side routing will handle the rest, including routes with dots in them)
104
96
  if (req.method === 'GET' && lstudioPath) {
105
97
  res.sendFile(path.join(lstudioPath, 'index.html'));
106
98
  }
@@ -109,27 +101,30 @@ export async function startStudio(projectPath = '.', studioPort = 4000, serverOn
109
101
  }
110
102
  });
111
103
  }
112
- // Start server
104
+ // ── Start server ────────────────────────────────────────────────────────────
113
105
  await new Promise(resolve => {
114
106
  app.listen(studioPort, () => {
115
- spinner.succeed(chalk.green(`Studio server is running on http://localhost:${studioPort}`));
116
107
  const studioUrl = `http://localhost:${studioPort}`;
108
+ ui.blank();
109
+ ui.divider(50);
110
+ ui.success('Studio is ready');
111
+ ui.blank();
117
112
  if (serverOnly) {
118
- console.log(chalk.blue(`Backend API available at: ${studioUrl}`));
119
- console.log(chalk.dim('Endpoints: /files, /file, /info, /branch, /test, /workspace, /apps, /app/launch'));
113
+ ui.label('API', studioUrl, 'cyan');
114
+ ui.dim(' Endpoints: /files, /file, /info, /branch, /test, /workspace, /apps, /app/launch');
120
115
  }
121
116
  else {
122
- console.log(chalk.blue(`Studio UI is available at: ${studioUrl}`));
117
+ ui.label('Local', studioUrl, 'cyan');
123
118
  }
124
- // Open browser automatically (skip in server-only mode)
119
+ ui.blank();
120
+ ui.divider(50);
121
+ ui.blank();
125
122
  if (!serverOnly) {
126
- void open(studioUrl).catch(() => {
127
- // Ignore errors when opening browser
128
- });
123
+ void open(studioUrl);
129
124
  }
130
- // Handle cleanup on exit
131
125
  const cleanup = () => {
132
- console.log(chalk.yellow('\nShutting down...'));
126
+ ui.blank();
127
+ ui.warn('Shutting down...');
133
128
  studioServer.stopApp(false);
134
129
  process.exit(0);
135
130
  };
package/out/studio.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"studio.js","sourceRoot":"","sources":["../src/studio.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"studio.js","sourceRoot":"","sources":["../src/studio.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,GAAG,MAAM,KAAK,CAAC;AACtB,OAAO,EAAE,EAAE,EAAE,MAAM,eAAe,CAAC;AACnC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAC/D,OAAO,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AACjE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,WAAW,GAAG,GAAG,EAAE,UAAU,GAAG,IAAI,EAAE,UAAU,GAAG,KAAK;IACxF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,CAAC,CAAC;IAE1D,mEAAmE;IACnE,MAAM,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAErE,+EAA+E;IAC/E,EAAE,CAAC,KAAK,EAAE,CAAC;IACX,EAAE,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACnG,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,IAAI,cAAc,EAAE,CAAC;QACnB,EAAE,CAAC,KAAK,CAAC,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IACD,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC;IACrC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC,CAAC;IAC7C,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,+EAA+E;IAC/E,MAAM,OAAO,GAAG,GAAG,CAAC;QAClB,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC;QACtC,OAAO,EAAE,MAAM;KAChB,CAAC,CAAC,KAAK,EAAE,CAAC;IAEX,0CAA0C;IAC1C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,aAAa,CAAC,CAAC;IACnD,MAAM,YAAY,GAAG,IAAI,YAAY,CAAC,aAAa,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;IAElF,IAAI,cAAc,EAAE,CAAC;QACnB,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QAC9E,MAAM,YAAY,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;IAEzD,qDAAqD;IACrD,IAAI,WAAW,GAAkB,IAAI,CAAC;IACtC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,WAAW,GAAG,eAAe,CAAC,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,WAAW,IAAI,QAAQ,KAAK,aAAa,EAAE,CAAC;YAC/C,WAAW,GAAG,eAAe,CAAC,aAAa,CAAC,CAAC;QAC/C,CAAC;QACD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,EAAE,CAAC,IAAI,CAAC,6CAA6C,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;IACtB,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,eAAe;IACf,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC,CAAC;IAEtD,6EAA6E;IAC7E,IAAI,CAAC,UAAU,IAAI,WAAW,EAAE,CAAC;QAC/B,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE5D,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YACzB,IACE,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;gBAC7B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;gBAC9B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC/B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC;gBACrC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC;gBACjC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC5B,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EACjC,CAAC;gBACD,OAAO,IAAI,EAAE,CAAC;YAChB,CAAC;YAED,MAAM,oBAAoB,GAAG;gBAC3B,KAAK;gBACL,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,QAAQ;gBACR,MAAM;gBACN,MAAM;gBACN,OAAO;gBACP,MAAM;gBACN,OAAO;aACR,CAAC;YACF,MAAM,kBAAkB,GAAG,oBAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC;YAElG,IAAI,kBAAkB,EAAE,CAAC;gBACvB,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YAChD,CAAC;YAED,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,WAAW,EAAE,CAAC;gBACxC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC;YACrD,CAAC;iBAAM,CAAC;gBACN,IAAI,EAAE,CAAC;YACT,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,+EAA+E;IAC/E,MAAM,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;QAChC,GAAG,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,EAAE;YAC1B,MAAM,SAAS,GAAG,oBAAoB,UAAU,EAAE,CAAC;YAEnD,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACf,EAAE,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC9B,EAAE,CAAC,KAAK,EAAE,CAAC;YAEX,IAAI,UAAU,EAAE,CAAC;gBACf,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;gBACnC,EAAE,CAAC,GAAG,CAAC,mFAAmF,CAAC,CAAC;YAC9F,CAAC;iBAAM,CAAC;gBACN,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;YAED,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YACf,EAAE,CAAC,KAAK,EAAE,CAAC;YAEX,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC;YAED,MAAM,OAAO,GAAG,GAAG,EAAE;gBACnB,EAAE,CAAC,KAAK,EAAE,CAAC;gBACX,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;gBAC5B,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC,CAAC;YAEF,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YAE/B,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Box, Text } from 'ink';
3
+ function Separator() {
4
+ return _jsx(Text, { dimColor: true, children: '─'.repeat(56) });
5
+ }
6
+ function SectionTitle({ title }) {
7
+ return (_jsx(Box, { marginBottom: 1, children: _jsx(Text, { bold: true, color: "white", children: title }) }));
8
+ }
9
+ function Command({ name, args, description }) {
10
+ return (_jsxs(Box, { flexDirection: "column", marginBottom: 1, children: [_jsxs(Text, { children: [' ', _jsx(Text, { color: "cyan", bold: true, children: name }), args && _jsxs(Text, { dimColor: true, children: [" ", args] })] }), _jsxs(Text, { dimColor: true, children: [' ', description] })] }));
11
+ }
12
+ function Option({ flag, arg, desc }) {
13
+ return (_jsxs(Text, { children: [' ', _jsx(Text, { color: "cyan", children: flag }), arg && _jsxs(Text, { dimColor: true, children: [" ", arg] }), ' ', _jsx(Text, { dimColor: true, children: desc })] }));
14
+ }
15
+ function SubOptions({ children }) {
16
+ return (_jsxs(Box, { flexDirection: "column", marginLeft: 2, marginBottom: 1, children: [_jsx(Text, { color: "yellow", children: ' OPTIONS' }), children] }));
17
+ }
18
+ export default function Help({ version }) {
19
+ const g0 = '#00D9FF';
20
+ const g1 = '#00C4E6';
21
+ const g2 = '#00AFCC';
22
+ const g3 = '#009AB3';
23
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Box, { flexDirection: "column", borderStyle: "round", borderColor: "cyan", paddingX: 2, paddingY: 1, marginBottom: 1, children: [_jsxs(Text, { children: [_jsx(Text, { color: g0, children: '█████╗ ' }), _jsx(Text, { color: g1, children: ' ██████╗ ' }), _jsx(Text, { color: g2, children: '███████╗' }), _jsx(Text, { color: g3, children: '███╗ ██╗' }), _jsx(Text, { color: g0, children: '████████╗' })] }), _jsxs(Text, { children: [_jsx(Text, { color: g0, children: '██╔══██╗' }), _jsx(Text, { color: g1, children: '██╔════╝ ' }), _jsx(Text, { color: g2, children: '██╔════╝' }), _jsx(Text, { color: g3, children: '████╗ ██║' }), _jsx(Text, { color: g0, children: '╚══██╔══╝' })] }), _jsxs(Text, { children: [_jsx(Text, { color: g0, children: '███████║' }), _jsx(Text, { color: g1, children: '██║ ███╗' }), _jsx(Text, { color: g2, children: '█████╗ ' }), _jsx(Text, { color: g3, children: '██╔██╗ ██║' }), _jsx(Text, { color: g0, children: ' ██║' })] }), _jsxs(Text, { children: [_jsx(Text, { color: g0, children: '██╔══██║' }), _jsx(Text, { color: g1, children: '██║ ██║' }), _jsx(Text, { color: g2, children: '██╔══╝ ' }), _jsx(Text, { color: g3, children: '██║╚██╗██║' }), _jsx(Text, { color: g0, children: ' ██║' })] }), _jsxs(Text, { children: [_jsx(Text, { color: g0, children: '██║ ██║' }), _jsx(Text, { color: g1, children: '╚██████╔╝' }), _jsx(Text, { color: g2, children: '███████╗' }), _jsx(Text, { color: g3, children: '██║ ╚████║' }), _jsx(Text, { color: g0, children: ' ██║' })] }), _jsxs(Text, { children: [_jsx(Text, { color: g0, children: '╚═╝ ╚═╝ ' }), _jsx(Text, { color: g1, children: ' ╚═════╝ ' }), _jsx(Text, { color: g2, children: '╚══════╝' }), _jsx(Text, { color: g3, children: '╚═╝ ╚═══╝' }), _jsx(Text, { color: g0, children: ' ╚═╝' })] }), _jsx(Text, { children: " " }), _jsxs(Text, { children: [_jsx(Text, { bold: true, color: "white", children: "Agentlang CLI" }), ' ', _jsxs(Text, { dimColor: true, children: ["v", version] })] }), _jsx(Text, { dimColor: true, children: "CLI for all things Agentlang" })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, marginBottom: 1, children: [_jsx(SectionTitle, { title: "USAGE" }), _jsx(Separator, {}), _jsx(Box, { marginTop: 1, marginLeft: 2, children: _jsxs(Text, { children: [_jsx(Text, { dimColor: true, children: "$ " }), _jsx(Text, { color: "cyan", children: "agent" }), " ", _jsx(Text, { color: "yellow", children: '<command>' }), " ", _jsx(Text, { dimColor: true, children: "[options]" })] }) })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, marginBottom: 1, children: [_jsx(SectionTitle, { title: "COMMANDS" }), _jsx(Separator, {}), _jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Command, { name: "init", args: "<appname>", description: "Initialize a new Agentlang application" }), _jsx(SubOptions, { children: _jsx(Option, { flag: "-p, --prompt", arg: "<description>", desc: "Description or prompt for the application" }) }), _jsx(Command, { name: "run", args: "[file]", description: "Load and execute an Agentlang module" }), _jsx(SubOptions, { children: _jsx(Option, { flag: "-c, --config", arg: "<file>", desc: "Configuration file path" }) }), _jsx(Command, { name: "repl", args: "[directory]", description: "Start interactive REPL environment" }), _jsxs(SubOptions, { children: [_jsx(Option, { flag: "-w, --watch", desc: "Watch files and reload automatically" }), _jsx(Option, { flag: "-q, --quiet", desc: "Suppress startup messages" })] }), _jsx(Command, { name: "doc", args: "[file]", description: "Generate API documentation (Swagger/OpenAPI)" }), _jsxs(SubOptions, { children: [_jsx(Option, { flag: "-h, --outputHtml", arg: "<file>", desc: "Generate HTML documentation" }), _jsx(Option, { flag: "-p, --outputPostman", arg: "<file>", desc: "Generate Postman collection" })] }), _jsx(Command, { name: "parseAndValidate", args: "<file>", description: "Parse and validate Agentlang source code" }), _jsx(SubOptions, { children: _jsx(Option, { flag: "-d, --destination", arg: "<dir>", desc: "Output directory" }) }), _jsx(Command, { name: "ui-gen", args: "[spec-file]", description: "Generate UI from specification (requires Anthropic API key)" }), _jsxs(SubOptions, { children: [_jsx(Option, { flag: "-d, --directory", arg: "<dir>", desc: "Target directory" }), _jsx(Option, { flag: "-k, --api-key", arg: "<key>", desc: "Anthropic API key" }), _jsx(Option, { flag: "-p, --push", desc: "Commit and push to git" }), _jsx(Option, { flag: "-m, --message", arg: "<text>", desc: "Update instructions" })] }), _jsx(Command, { name: "fork", args: "<source> [name]", description: "Fork an app from a local directory or git repository" }), _jsxs(SubOptions, { children: [_jsx(Option, { flag: "-b, --branch", arg: "<branch>", desc: "Git branch to clone (for git URLs)" }), _jsx(Option, { flag: "-u, --username", arg: "<username>", desc: "GitHub username for authenticated access" }), _jsx(Option, { flag: "-t, --token", arg: "<token>", desc: "GitHub token for authenticated access" })] }), _jsx(Command, { name: "import", args: "<source> [name]", description: "Import an app (alias for fork)" }), _jsxs(SubOptions, { children: [_jsx(Option, { flag: "-b, --branch", arg: "<branch>", desc: "Git branch to clone (for git URLs)" }), _jsx(Option, { flag: "-u, --username", arg: "<username>", desc: "GitHub username for authenticated access" }), _jsx(Option, { flag: "-t, --token", arg: "<token>", desc: "GitHub token for authenticated access" })] }), _jsx(Command, { name: "studio", args: "[path]", description: "Start Agentlang Studio with local server" }), _jsx(SubOptions, { children: _jsx(Option, { flag: "-p, --port", arg: "<port>", desc: "Port to run Studio server on (default: 4000)" }) })] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, marginBottom: 1, children: [_jsx(SectionTitle, { title: "GLOBAL OPTIONS" }), _jsx(Separator, {}), _jsxs(Box, { flexDirection: "column", marginTop: 1, marginLeft: 2, children: [_jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: "-h, --help" }), ' ', _jsx(Text, { dimColor: true, children: "Display help information" })] }), _jsxs(Text, { children: [_jsx(Text, { color: "cyan", children: "-V, --version" }), ' ', _jsx(Text, { dimColor: true, children: "Display version number" })] })] })] }), _jsxs(Box, { flexDirection: "column", marginLeft: 2, marginBottom: 1, children: [_jsx(SectionTitle, { title: "LEARN MORE" }), _jsx(Separator, {}), _jsxs(Box, { flexDirection: "column", marginTop: 1, marginLeft: 2, children: [_jsxs(Text, { children: [_jsx(Text, { color: "white", children: "Docs" }), ' ', _jsx(Text, { color: "cyan", children: "https://github.com/agentlang/agentlang-cli" })] }), _jsxs(Text, { children: [_jsx(Text, { color: "white", children: "Issues" }), ' ', _jsx(Text, { color: "cyan", children: "https://github.com/agentlang/agentlang-cli/issues" })] })] })] }), _jsx(Box, { marginLeft: 4, marginBottom: 1, children: _jsxs(Text, { dimColor: true, children: ['Run ', _jsxs(Text, { color: "cyan", children: ["agent ", '<command>', " --help"] }), ' for detailed command information'] }) })] }));
24
+ }
25
+ //# sourceMappingURL=Help.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Help.js","sourceRoot":"","sources":["../../../src/ui/components/Help.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export { ui, ansi } from './print.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ui/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { renderToString, Text, Box } from 'ink';
3
+ function p(el) {
4
+ // eslint-disable-next-line no-console
5
+ console.log(renderToString(el));
6
+ }
7
+ function pe(el) {
8
+ process.stderr.write(`${renderToString(el)}\n`);
9
+ }
10
+ export const ui = {
11
+ // Bold green with ✔ prefix
12
+ success: (msg) => p(_jsxs(Text, { bold: true, color: "green", children: ['✔ ', msg] })),
13
+ // Red rounded border box with ✖ prefix — draws maximum attention
14
+ error: (msg) => pe(_jsx(Box, { borderStyle: "round", borderColor: "red", paddingX: 1, children: _jsxs(Text, { color: "red", children: ['✖ ', msg] }) })),
15
+ // Bold yellow with ⚠ prefix
16
+ warn: (msg) => p(_jsxs(Text, { bold: true, color: "yellow", children: ['⚠ ', msg] })),
17
+ // Cyan with › prefix — uses › instead of ℹ which breaks on many terminals
18
+ info: (msg) => p(_jsxs(Text, { color: "cyan", children: ['› ', msg] })),
19
+ cyan: (msg) => p(_jsx(Text, { color: "cyan", children: msg })),
20
+ dim: (msg) => p(_jsx(Text, { dimColor: true, children: msg })),
21
+ plain: (msg) => p(_jsx(Text, { children: msg })),
22
+ bold: (msg) => p(_jsx(Text, { bold: true, children: msg })),
23
+ magenta: (msg) => p(_jsx(Text, { color: "magenta", children: msg })),
24
+ gray: (msg) => p(_jsx(Text, { color: "gray", children: msg })),
25
+ // Startup banner — bold title with cyan underline
26
+ banner: (title, subtitle) => p(_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { children: [_jsx(Text, { bold: true, color: "white", children: title }), subtitle !== undefined && subtitle !== '' && (_jsxs(Text, { dimColor: true, children: [' ', subtitle] }))] }), _jsx(Text, { color: "cyan", children: '─'.repeat(title.length + (subtitle ? subtitle.length + 2 : 0)) })] })),
27
+ // Aligned key-value label pair — for project/workspace/port display
28
+ label: (key, value, valueColor) => p(_jsxs(Box, { marginLeft: 2, children: [_jsx(Box, { width: 12, children: _jsx(Text, { color: "gray", children: key }) }), _jsx(Text, { color: valueColor !== null && valueColor !== void 0 ? valueColor : 'white', children: value })] })),
29
+ // Section title with a cyan underline separator
30
+ header: (title) => p(_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { bold: true, color: "white", children: title }), _jsx(Text, { color: "cyan", children: '─'.repeat(title.length) })] })),
31
+ // Dim horizontal rule for visual separation
32
+ divider: (width = 48) => p(_jsx(Text, { dimColor: true, children: '─'.repeat(width) })),
33
+ // Empty line
34
+ // eslint-disable-next-line no-console
35
+ blank: () => console.log(''),
36
+ // Composite: "✓ label value" with bold green check + optional cyan value
37
+ step: (check, label, value) => p(_jsxs(Text, { children: [_jsx(Text, { bold: true, color: "green", children: check }), label, value !== undefined && _jsx(Text, { color: "cyan", children: value })] })),
38
+ // Multi-part row with mixed colors in a single line
39
+ row: (parts) => p(_jsx(Text, { children: parts.map((part, i) => (_jsx(Text, { color: part.color, bold: part.bold, dimColor: part.dimColor, children: part.text }, i))) })),
40
+ // Returns formatted ANSI strings (for spinner text, inline template use)
41
+ format: {
42
+ success: (msg) => renderToString(_jsx(Text, { color: "green", children: msg })),
43
+ error: (msg) => renderToString(_jsx(Text, { color: "red", children: msg })),
44
+ warn: (msg) => renderToString(_jsx(Text, { color: "yellow", children: msg })),
45
+ info: (msg) => renderToString(_jsx(Text, { color: "cyan", children: msg })),
46
+ cyan: (msg) => renderToString(_jsx(Text, { color: "cyan", children: msg })),
47
+ dim: (msg) => renderToString(_jsx(Text, { dimColor: true, children: msg })),
48
+ gray: (msg) => renderToString(_jsx(Text, { color: "gray", children: msg })),
49
+ bold: (msg) => renderToString(_jsx(Text, { bold: true, children: msg })),
50
+ boldWhite: (msg) => renderToString(_jsx(Text, { bold: true, color: "white", children: msg })),
51
+ hex: (color) => (msg) => renderToString(_jsx(Text, { color: color, children: msg })),
52
+ row: (parts) => renderToString(_jsx(Text, { children: parts.map((part, i) => (_jsx(Text, { color: part.color, bold: part.bold, dimColor: part.dimColor, children: part.text }, i))) })),
53
+ },
54
+ };
55
+ // Raw ANSI for string contexts that require a plain string (readline prompts)
56
+ export const ansi = {
57
+ cyan: (s) => `\x1b[36m${s}\x1b[0m`,
58
+ green: (s) => `\x1b[32m${s}\x1b[0m`,
59
+ dim: (s) => `\x1b[2m${s}\x1b[0m`,
60
+ };
61
+ //# sourceMappingURL=print.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"print.js","sourceRoot":"","sources":["../../src/ui/print.tsx"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'path';
3
- import chalk from 'chalk';
3
+ import { ui } from '../ui/index.js';
4
4
  /**
5
5
  * Searches for a UI spec file in the given directory
6
6
  * Looks for files in this priority order:
@@ -19,8 +19,7 @@ export async function findSpecFile(searchDir = process.cwd()) {
19
19
  for (const fileName of specFileNames) {
20
20
  const filePath = path.join(searchDir, fileName);
21
21
  if (await fs.pathExists(filePath)) {
22
- // eslint-disable-next-line no-console
23
- console.log(chalk.gray(` Found spec file: ${fileName}`));
22
+ ui.gray(` Found spec file: ${fileName}`);
24
23
  return filePath;
25
24
  }
26
25
  }
@@ -30,11 +29,9 @@ export async function findSpecFile(searchDir = process.cwd()) {
30
29
  const uiSpecFiles = files.filter(file => file.endsWith('.ui-spec.json'));
31
30
  if (uiSpecFiles.length > 0) {
32
31
  const filePath = path.join(searchDir, uiSpecFiles[0]);
33
- // eslint-disable-next-line no-console
34
- console.log(chalk.gray(` Found spec file: ${uiSpecFiles[0]}`));
32
+ ui.gray(` Found spec file: ${uiSpecFiles[0]}`);
35
33
  if (uiSpecFiles.length > 1) {
36
- // eslint-disable-next-line no-console
37
- console.log(chalk.yellow(` Note: Multiple spec files found, using ${uiSpecFiles[0]}. Other files: ${uiSpecFiles.slice(1).join(', ')}`));
34
+ ui.warn(` Note: Multiple spec files found, using ${uiSpecFiles[0]}. Other files: ${uiSpecFiles.slice(1).join(', ')}`);
38
35
  }
39
36
  return filePath;
40
37
  }
@@ -1 +1 @@
1
- {"version":3,"file":"specFinder.js","sourceRoot":"","sources":["../../src/ui-generator/specFinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB,OAAO,CAAC,GAAG,EAAE;IAClE,iDAAiD;IACjD,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEpD,2BAA2B;IAC3B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QAEzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,sCAAsC;YACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YAChE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,sCAAsC;gBACtC,OAAO,CAAC,GAAG,CACT,KAAK,CAAC,MAAM,CACV,4CAA4C,WAAW,CAAC,CAAC,CAAC,kBAAkB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9G,CACF,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,WAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,KAAK,CACb,4BAA4B,SAAS,KAAK;QACxC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;QAC5E,6DAA6D,CAChE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"specFinder.js","sourceRoot":"","sources":["../../src/ui-generator/specFinder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAEpC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,YAAoB,OAAO,CAAC,GAAG,EAAE;IAClE,iDAAiD;IACjD,MAAM,aAAa,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAEpD,2BAA2B;IAC3B,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,IAAI,CAAC,sBAAsB,QAAQ,EAAE,CAAC,CAAC;YAC1C,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAED,oEAAoE;IACpE,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC;QAEzE,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;YACtD,EAAE,CAAC,IAAI,CAAC,sBAAsB,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC3B,EAAE,CAAC,IAAI,CACL,4CAA4C,WAAW,CAAC,CAAC,CAAC,kBAAkB,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAC9G,CAAC;YACJ,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;IACH,CAAC;IAAC,WAAM,CAAC;QACP,iDAAiD;IACnD,CAAC;IAED,qBAAqB;IACrB,MAAM,IAAI,KAAK,CACb,4BAA4B,SAAS,KAAK;QACxC,mBAAmB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,iCAAiC;QAC5E,6DAA6D,CAChE,CAAC;AACJ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  import fs from 'fs-extra';
2
2
  import path from 'path';
3
- import chalk from 'chalk';
3
+ import { ui } from '../ui/index.js';
4
4
  export async function loadUISpec(specPath) {
5
5
  try {
6
6
  // Resolve the absolute path
@@ -16,8 +16,7 @@ export async function loadUISpec(specPath) {
16
16
  if (!spec.appInfo || !spec.appInfo.name) {
17
17
  throw new Error('Invalid UI spec: missing appInfo.name');
18
18
  }
19
- // eslint-disable-next-line no-console
20
- console.log(chalk.green(`✓ Loaded spec for: ${spec.appInfo.title || spec.appInfo.name}`));
19
+ ui.step('✓', ` Loaded spec for: ${spec.appInfo.title || spec.appInfo.name}`);
21
20
  return spec;
22
21
  }
23
22
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"specLoader.js","sourceRoot":"","sources":["../../src/ui-generator/specLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,KAAK,MAAM,OAAO,CAAC;AAW1B,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3D,uBAAuB;QACvB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,+BAA+B;QAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QAE3C,wCAAwC;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,sCAAsC;QACtC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAE1F,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"specLoader.js","sourceRoot":"","sources":["../../src/ui-generator/specLoader.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,EAAE,EAAE,MAAM,gBAAgB,CAAC;AAWpC,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,4BAA4B;QAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,QAAQ,CAAC,CAAC;QAE3D,uBAAuB;QACvB,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,KAAK,CAAC,2BAA2B,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;QAED,+BAA+B;QAC/B,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACzD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAW,CAAC;QAE3C,wCAAwC;QACxC,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;QAC3D,CAAC;QAED,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAE7E,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,8BAA8B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC"}