@agentlang/cli 0.6.6

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/main.js ADDED
@@ -0,0 +1,544 @@
1
+ import chalk from 'chalk';
2
+ import { Command } from 'commander';
3
+ import { AgentlangLanguageMetaData } from 'agentlang/out/language/generated/module.js';
4
+ import { createAgentlangServices } from 'agentlang/out/language/agentlang-module.js';
5
+ import { internModule, load, loadAppConfig, loadCoreModules, runStandaloneStatements, } from 'agentlang/out/runtime/loader.js';
6
+ import { NodeFileSystem } from 'langium/node';
7
+ import { extractDocument } from 'agentlang/out/runtime/loader.js';
8
+ import * as path from 'node:path';
9
+ import { logger } from 'agentlang/out/runtime/logger.js';
10
+ import { generateSwaggerDoc } from './docs.js';
11
+ import { startRepl } from './repl.js';
12
+ import { generateUI } from './ui-generator/uiGenerator.js';
13
+ import { loadUISpec } from './ui-generator/specLoader.js';
14
+ import { findSpecFile } from './ui-generator/specFinder.js';
15
+ import { prepareIntegrations } from 'agentlang/out/runtime/integrations.js';
16
+ import { isNodeEnv } from 'agentlang/out/utils/runtime.js';
17
+ import { OpenAPIClientAxios } from 'openapi-client-axios';
18
+ import { registerOpenApiModule } from 'agentlang/out/runtime/openapi.js';
19
+ import { initDatabase } from 'agentlang/out/runtime/resolvers/sqldb/database.js';
20
+ import { runInitFunctions } from 'agentlang/out/runtime/util.js';
21
+ import { startServer } from 'agentlang/out/api/http.js';
22
+ import { readFileSync, existsSync, readdirSync, statSync, writeFileSync, mkdirSync } from 'node:fs';
23
+ import { fileURLToPath } from 'node:url';
24
+ import { dirname, join } from 'node:path';
25
+ const __filename = fileURLToPath(import.meta.url);
26
+ const __dirname = dirname(__filename);
27
+ // Read package.json for version
28
+ let packageVersion = '0.0.0';
29
+ try {
30
+ const packagePath = join(__dirname, '..', 'package.json');
31
+ const packageJson = JSON.parse(readFileSync(packagePath, 'utf-8'));
32
+ packageVersion = packageJson.version || '0.0.0';
33
+ }
34
+ catch (_a) {
35
+ // Fallback to a default version
36
+ }
37
+ // Helper function to recursively find .al files (excluding config.al)
38
+ function findAgentlangFiles(dir, fileList = []) {
39
+ try {
40
+ const files = readdirSync(dir);
41
+ files.forEach(file => {
42
+ const filePath = join(dir, file);
43
+ try {
44
+ const stat = statSync(filePath);
45
+ if (stat.isDirectory()) {
46
+ if (file !== 'node_modules' && file !== '.git') {
47
+ findAgentlangFiles(filePath, fileList);
48
+ }
49
+ }
50
+ else if (file.endsWith('.al') && file !== 'config.al') {
51
+ fileList.push(filePath);
52
+ }
53
+ }
54
+ catch (_a) {
55
+ // Skip files/directories we can't access
56
+ }
57
+ });
58
+ }
59
+ catch (_a) {
60
+ // Directory doesn't exist or can't be read
61
+ }
62
+ return fileList;
63
+ }
64
+ // Check if an Agentlang app is already initialized
65
+ function isAppInitialized(targetDir) {
66
+ const packageJsonPath = join(targetDir, 'package.json');
67
+ const hasPackageJson = existsSync(packageJsonPath);
68
+ const hasAgentlangFiles = findAgentlangFiles(targetDir).length > 0;
69
+ return hasPackageJson || hasAgentlangFiles;
70
+ }
71
+ // Initialize a new Agentlang application
72
+ export const initCommand = (appName) => {
73
+ const currentDir = process.cwd();
74
+ const targetDir = join(currentDir, appName);
75
+ // Check if already initialized
76
+ if (isAppInitialized(targetDir)) {
77
+ // eslint-disable-next-line no-console
78
+ console.log(chalk.yellow('āš ļø This directory already contains an Agentlang application.'));
79
+ // eslint-disable-next-line no-console
80
+ console.log(chalk.dim(' Found existing package.json or .al files.'));
81
+ // eslint-disable-next-line no-console
82
+ console.log(chalk.dim(' No initialization needed.'));
83
+ return;
84
+ }
85
+ try {
86
+ // eslint-disable-next-line no-console
87
+ console.log(chalk.cyan(`šŸš€ Initializing Agentlang application: ${chalk.bold(appName)}\n`));
88
+ mkdirSync(targetDir);
89
+ // Create package.json
90
+ const packageJson = {
91
+ name: appName,
92
+ version: '0.0.1',
93
+ };
94
+ writeFileSync(join(targetDir, 'package.json'), JSON.stringify(packageJson, null, 2), 'utf-8');
95
+ // eslint-disable-next-line no-console
96
+ console.log(`${chalk.green('āœ“')} Created ${chalk.cyan('package.json')}`);
97
+ const config = { service: { port: 8080 } };
98
+ // Create config.al
99
+ writeFileSync(join(targetDir, 'config.al'), JSON.stringify(config, null, 2), 'utf-8');
100
+ // eslint-disable-next-line no-console
101
+ console.log(`${chalk.green('āœ“')} Created ${chalk.cyan('config.al')}`);
102
+ // Create src directory
103
+ const srcDir = join(targetDir, 'src');
104
+ mkdirSync(srcDir, { recursive: true });
105
+ // Create src/core.al
106
+ const coreContent = `module ${appName}.core`;
107
+ writeFileSync(join(srcDir, 'core.al'), coreContent, 'utf-8');
108
+ // eslint-disable-next-line no-console
109
+ console.log(`${chalk.green('āœ“')} Created ${chalk.cyan('src/core.al')}`);
110
+ // eslint-disable-next-line no-console
111
+ console.log(chalk.green('\n✨ Successfully initialized Agentlang application!'));
112
+ // eslint-disable-next-line no-console
113
+ console.log(chalk.dim('\nNext steps:'));
114
+ // eslint-disable-next-line no-console
115
+ console.log(chalk.dim(' 1. Add your application logic to src/core.al'));
116
+ // eslint-disable-next-line no-console
117
+ console.log(chalk.dim(' 2. Run your app with: ') + chalk.cyan('agent run'));
118
+ }
119
+ catch (error) {
120
+ // eslint-disable-next-line no-console
121
+ console.error(chalk.red('āŒ Error initializing application:'), error instanceof Error ? error.message : error);
122
+ process.exit(1);
123
+ }
124
+ };
125
+ // Custom help formatter
126
+ function customHelp() {
127
+ const gradient = [chalk.hex('#00D9FF'), chalk.hex('#00C4E6'), chalk.hex('#00AFCC'), chalk.hex('#009AB3')];
128
+ const header = `
129
+ ${gradient[0]('ā–ˆā–ˆā–ˆā–ˆā–ˆā•—')} ${gradient[1](' ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—')} ${gradient[2]('ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—')}${gradient[3]('ā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•—')}${gradient[0]('ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—')}
130
+ ${gradient[0]('ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•—')}${gradient[1]('ā–ˆā–ˆā•”ā•ā•ā•ā•ā•')} ${gradient[2]('ā–ˆā–ˆā•”ā•ā•ā•ā•ā•')}${gradient[3]('ā–ˆā–ˆā–ˆā–ˆā•— ā–ˆā–ˆā•‘')}${gradient[0]('ā•šā•ā•ā–ˆā–ˆā•”ā•ā•ā•')}
131
+ ${gradient[0]('ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•‘')}${gradient[1]('ā–ˆā–ˆā•‘ ā–ˆā–ˆā–ˆā•—')}${gradient[2]('ā–ˆā–ˆā–ˆā–ˆā–ˆā•—')} ${gradient[3]('ā–ˆā–ˆā•”ā–ˆā–ˆā•— ā–ˆā–ˆā•‘')}${gradient[0](' ā–ˆā–ˆā•‘')}
132
+ ${gradient[0]('ā–ˆā–ˆā•”ā•ā•ā–ˆā–ˆā•‘')}${gradient[1]('ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘')}${gradient[2]('ā–ˆā–ˆā•”ā•ā•ā•')} ${gradient[3]('ā–ˆā–ˆā•‘ā•šā–ˆā–ˆā•—ā–ˆā–ˆā•‘')}${gradient[0](' ā–ˆā–ˆā•‘')}
133
+ ${gradient[0]('ā–ˆā–ˆā•‘ ā–ˆā–ˆā•‘')}${gradient[1]('ā•šā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•”ā•')}${gradient[2]('ā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā–ˆā•—')}${gradient[3]('ā–ˆā–ˆā•‘ ā•šā–ˆā–ˆā–ˆā–ˆā•‘')}${gradient[0](' ā–ˆā–ˆā•‘')}
134
+ ${gradient[0]('ā•šā•ā• ā•šā•ā•')} ${gradient[1]('ā•šā•ā•ā•ā•ā•ā•')} ${gradient[2]('ā•šā•ā•ā•ā•ā•ā•ā•')}${gradient[3]('ā•šā•ā• ā•šā•ā•ā•ā•')}${gradient[0](' ā•šā•ā•')}
135
+
136
+ ${chalk.bold.white('Agentlang CLI')} ${chalk.dim(`v${packageVersion}`)}
137
+ ${chalk.dim('CLI for all things Agentlang')}
138
+ `;
139
+ const usage = `
140
+ ${chalk.bold.white('USAGE')}
141
+ ${chalk.dim('$')} ${chalk.cyan('agent')} ${chalk.yellow('<command>')} ${chalk.dim('[options]')}
142
+
143
+ ${chalk.bold.white('COMMANDS')}
144
+
145
+ ${chalk.cyan.bold('init')} ${chalk.dim('<appname>')}
146
+ ${chalk.white('ā–ø')} Initialize a new Agentlang application
147
+ ${chalk.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
148
+
149
+ ${chalk.cyan.bold('run')} ${chalk.dim('[file]')}
150
+ ${chalk.white('ā–ø')} Load and execute an Agentlang module
151
+ ${chalk.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
152
+ ${chalk.yellow('OPTIONS')}
153
+ ${chalk.cyan('-c, --config')} ${chalk.dim('<file>')} Configuration file path
154
+
155
+ ${chalk.cyan.bold('repl')} ${chalk.dim('[directory]')}
156
+ ${chalk.white('ā–ø')} Start interactive REPL environment
157
+ ${chalk.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
158
+ ${chalk.yellow('OPTIONS')}
159
+ ${chalk.cyan('-w, --watch')} Watch files and reload automatically
160
+ ${chalk.cyan('-q, --quiet')} Suppress startup messages
161
+
162
+ ${chalk.cyan.bold('doc')} ${chalk.dim('[file]')}
163
+ ${chalk.white('ā–ø')} Generate API documentation (Swagger/OpenAPI)
164
+ ${chalk.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
165
+ ${chalk.yellow('OPTIONS')}
166
+ ${chalk.cyan('-h, --outputHtml')} ${chalk.dim('<file>')} Generate HTML documentation
167
+ ${chalk.cyan('-p, --outputPostman')} ${chalk.dim('<file>')} Generate Postman collection
168
+
169
+ ${chalk.cyan.bold('parseAndValidate')} ${chalk.dim('<file>')}
170
+ ${chalk.white('ā–ø')} Parse and validate Agentlang source code
171
+ ${chalk.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
172
+ ${chalk.yellow('OPTIONS')}
173
+ ${chalk.cyan('-d, --destination')} ${chalk.dim('<dir>')} Output directory
174
+
175
+ ${chalk.cyan.bold('ui-gen')} ${chalk.dim('[spec-file]')}
176
+ ${chalk.white('ā–ø')} Generate UI from specification ${chalk.dim('(requires Anthropic API key)')}
177
+ ${chalk.dim('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━')}
178
+ ${chalk.yellow('OPTIONS')}
179
+ ${chalk.cyan('-d, --directory')} ${chalk.dim('<dir>')} Target directory
180
+ ${chalk.cyan('-k, --api-key')} ${chalk.dim('<key>')} Anthropic API key
181
+ ${chalk.cyan('-p, --push')} Commit and push to git
182
+ ${chalk.cyan('-m, --message')} ${chalk.dim('<text>')} Update instructions
183
+
184
+ ${chalk.bold.white('GLOBAL OPTIONS')}
185
+ ${chalk.cyan('-h, --help')} Display help information
186
+ ${chalk.cyan('-V, --version')} Display version number
187
+
188
+ ${chalk.bold.white('LEARN MORE')}
189
+ ${chalk.white('Docs')} ${chalk.cyan('https://github.com/agentlang/agentlang-cli')}
190
+ ${chalk.white('Issues')} ${chalk.cyan('https://github.com/agentlang/agentlang-cli/issues')}
191
+
192
+ ${chalk.dim('Run')} ${chalk.cyan('agent <command> --help')} ${chalk.dim('for detailed command information')}
193
+ `;
194
+ return header + usage;
195
+ }
196
+ export default function () {
197
+ const program = new Command();
198
+ // Configure program
199
+ program
200
+ .name('agent')
201
+ .description(chalk.gray('CLI for all things Agentlang'))
202
+ .version(packageVersion, '-V, --version', 'Display version number')
203
+ .helpOption('-h, --help', 'Show help information')
204
+ .helpCommand(false)
205
+ .configureHelp({
206
+ sortSubcommands: true,
207
+ sortOptions: true,
208
+ });
209
+ // Override help display
210
+ program.helpInformation = customHelp;
211
+ const fileExtensions = AgentlangLanguageMetaData.fileExtensions.join(', ');
212
+ program
213
+ .command('init')
214
+ .argument('<appname>', 'Name of the application to initialize')
215
+ .description('Initialize a new Agentlang application')
216
+ .addHelpText('after', `
217
+ ${chalk.bold.white('DESCRIPTION')}
218
+ Creates a new Agentlang application with the necessary project structure.
219
+ This command will create:
220
+ • package.json with your app name and version
221
+ • config.al for application configuration
222
+ • src/core.al with your application module
223
+
224
+ The command checks if the directory is already initialized by looking for
225
+ existing package.json or .al files (excluding config.al).
226
+
227
+ ${chalk.bold.white('EXAMPLES')}
228
+ ${chalk.dim('Initialize a new app called CarDealership')}
229
+ ${chalk.dim('$')} ${chalk.cyan('agent init CarDealership')}
230
+
231
+ ${chalk.dim('Initialize a new e-commerce app')}
232
+ ${chalk.dim('$')} ${chalk.cyan('agent init MyShop')}
233
+
234
+ ${chalk.dim('Initialize with multiple words (use PascalCase)')}
235
+ ${chalk.dim('$')} ${chalk.cyan('agent init InventoryManagement')}
236
+ `)
237
+ .action(initCommand);
238
+ program
239
+ .command('run')
240
+ .argument('[file]', `Agentlang source file (${fileExtensions})`, '.')
241
+ .option('-c, --config <config>', 'Path to configuration file')
242
+ .description('Load and execute an Agentlang module')
243
+ .addHelpText('after', `
244
+ ${chalk.bold.white('DESCRIPTION')}
245
+ Loads and executes an Agentlang module, starting the runtime environment
246
+ and initializing all configured services, databases, and integrations.
247
+
248
+ ${chalk.bold.white('EXAMPLES')}
249
+ ${chalk.dim('Run module in current directory')}
250
+ ${chalk.dim('$')} ${chalk.cyan('agent run')}
251
+
252
+ ${chalk.dim('Run specific module file')}
253
+ ${chalk.dim('$')} ${chalk.cyan('agent run ./my-app/main.al')}
254
+
255
+ ${chalk.dim('Run with custom configuration')}
256
+ ${chalk.dim('$')} ${chalk.cyan('agent run ./my-app -c config.json')}
257
+
258
+ ${chalk.dim('Run module from specific directory')}
259
+ ${chalk.dim('$')} ${chalk.cyan('agent run ~/projects/erp-system')}
260
+ `)
261
+ .action(runModule);
262
+ program
263
+ .command('repl')
264
+ .argument('[directory]', 'Application directory (defaults to current)', '.')
265
+ .option('-w, --watch', 'Watch for file changes and reload automatically')
266
+ .option('-q, --quiet', 'Suppress startup messages')
267
+ .description('Start interactive REPL environment')
268
+ .addHelpText('after', `
269
+ ${chalk.bold.white('DESCRIPTION')}
270
+ Starts an interactive Read-Eval-Print Loop (REPL) environment for
271
+ Agentlang, allowing you to execute code interactively, test functions,
272
+ and explore your application in real-time.
273
+
274
+ ${chalk.bold.white('EXAMPLES')}
275
+ ${chalk.dim('Start REPL in current directory')}
276
+ ${chalk.dim('$')} ${chalk.cyan('agent repl')}
277
+
278
+ ${chalk.dim('Start REPL in specific directory')}
279
+ ${chalk.dim('$')} ${chalk.cyan('agent repl ./my-app')}
280
+
281
+ ${chalk.dim('Start with file watching enabled')}
282
+ ${chalk.dim('$')} ${chalk.cyan('agent repl --watch')}
283
+
284
+ ${chalk.dim('Start in quiet mode (no startup messages)')}
285
+ ${chalk.dim('$')} ${chalk.cyan('agent repl --quiet')}
286
+
287
+ ${chalk.dim('Combine options for development workflow')}
288
+ ${chalk.dim('$')} ${chalk.cyan('agent repl . --watch')}
289
+ `)
290
+ .action(replCommand);
291
+ program
292
+ .command('doc')
293
+ .argument('[file]', `Agentlang source file (${fileExtensions})`, '.')
294
+ .option('-h, --outputHtml <outputHtml>', 'Generate HTML documentation')
295
+ .option('-p, --outputPostman <outputPostman>', 'Generate Postman collection')
296
+ .description('Generate API documentation (Swagger/OpenAPI)')
297
+ .addHelpText('after', `
298
+ ${chalk.bold.white('DESCRIPTION')}
299
+ Generates comprehensive API documentation from your Agentlang module
300
+ in Swagger/OpenAPI format. Supports both HTML and Postman collection
301
+ output formats for easy API exploration and testing.
302
+
303
+ ${chalk.bold.white('EXAMPLES')}
304
+ ${chalk.dim('Generate OpenAPI spec (outputs to console)')}
305
+ ${chalk.dim('$')} ${chalk.cyan('agent doc')}
306
+
307
+ ${chalk.dim('Generate HTML documentation')}
308
+ ${chalk.dim('$')} ${chalk.cyan('agent doc --outputHtml api-docs.html')}
309
+
310
+ ${chalk.dim('Generate Postman collection')}
311
+ ${chalk.dim('$')} ${chalk.cyan('agent doc --outputPostman collection.json')}
312
+
313
+ ${chalk.dim('Generate both HTML and Postman')}
314
+ ${chalk.dim('$')} ${chalk.cyan('agent doc -h docs.html -p collection.json')}
315
+
316
+ ${chalk.dim('Generate docs for specific module')}
317
+ ${chalk.dim('$')} ${chalk.cyan('agent doc ./my-api -h api.html')}
318
+ `)
319
+ .action(generateDoc);
320
+ program
321
+ .command('parseAndValidate')
322
+ .argument('<file>', `Agentlang source file (${fileExtensions})`)
323
+ .option('-d, --destination <dir>', 'Output directory for generated files')
324
+ .description('Parse and validate Agentlang source code')
325
+ .addHelpText('after', `
326
+ ${chalk.bold.white('DESCRIPTION')}
327
+ Parses and validates an Agentlang source file, checking for syntax
328
+ errors, lexer issues, and semantic validation problems. Useful for
329
+ CI/CD pipelines and pre-deployment validation.
330
+
331
+ ${chalk.bold.white('EXAMPLES')}
332
+ ${chalk.dim('Validate a source file')}
333
+ ${chalk.dim('$')} ${chalk.cyan('agent parseAndValidate ./src/main.al')}
334
+
335
+ ${chalk.dim('Parse and validate with output directory')}
336
+ ${chalk.dim('$')} ${chalk.cyan('agent parseAndValidate main.al -d ./out')}
337
+
338
+ ${chalk.dim('Validate in CI/CD pipeline')}
339
+ ${chalk.dim('$')} ${chalk.cyan('agent parseAndValidate app.al && npm run deploy')}
340
+ `)
341
+ .action(parseAndValidate);
342
+ program
343
+ .command('ui-gen')
344
+ .argument('[spec-file]', 'Path to ui-spec.json (auto-detects if omitted)')
345
+ .option('-d, --directory <dir>', 'Target directory (default: current)', '.')
346
+ .option('-k, --api-key <key>', 'Anthropic API key (or set ANTHROPIC_API_KEY)')
347
+ .option('-p, --push', 'Commit and push changes to git', false)
348
+ .option('-m, --message <message>', 'User message for incremental updates')
349
+ .description('Generate UI from specification (requires Anthropic API key)')
350
+ .addHelpText('after', `
351
+ ${chalk.bold.white('DESCRIPTION')}
352
+ Generates a complete UI application from a ui-spec.json specification
353
+ using AI. Supports incremental updates, allowing you to evolve your UI
354
+ over time with natural language instructions.
355
+
356
+ ${chalk.yellow.bold('API KEY REQUIRED')}
357
+ Set ${chalk.cyan('ANTHROPIC_API_KEY')} environment variable or use ${chalk.cyan('--api-key')} flag
358
+ ${chalk.dim('Get your key at: https://console.anthropic.com')}
359
+
360
+ ${chalk.bold.white('EXAMPLES')}
361
+ ${chalk.dim('Generate UI with auto-detected spec')}
362
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen')}
363
+
364
+ ${chalk.dim('Generate from specific spec file')}
365
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen ui-spec.json')}
366
+
367
+ ${chalk.dim('Generate and commit to git')}
368
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen --push')}
369
+
370
+ ${chalk.dim('Generate in specific directory')}
371
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen -d ./frontend')}
372
+
373
+ ${chalk.dim('Update existing UI with changes')}
374
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen -m "Add dark mode toggle"')}
375
+
376
+ ${chalk.dim('Incremental update with git push')}
377
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen -m "Fix login validation" -p')}
378
+
379
+ ${chalk.dim('Use custom API key')}
380
+ ${chalk.dim('$')} ${chalk.cyan('agent ui-gen --api-key sk-ant-...')}
381
+ `)
382
+ .action(generateUICommand);
383
+ program.parse(process.argv);
384
+ }
385
+ export async function runPostInitTasks(appSpec, config) {
386
+ var _a;
387
+ await initDatabase(config === null || config === void 0 ? void 0 : config.store);
388
+ await runInitFunctions();
389
+ await runStandaloneStatements();
390
+ if (appSpec)
391
+ startServer(appSpec, ((_a = config === null || config === void 0 ? void 0 : config.service) === null || _a === void 0 ? void 0 : _a.port) || 8080);
392
+ }
393
+ export async function runPreInitTasks() {
394
+ let result = true;
395
+ await loadCoreModules().catch((reason) => {
396
+ const msg = `Failed to load core modules - ${String(reason)}`;
397
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
398
+ logger.error(msg);
399
+ // eslint-disable-next-line no-console
400
+ console.log(chalk.red(msg));
401
+ result = false;
402
+ });
403
+ return result;
404
+ }
405
+ /**
406
+ * Parse and validate a program written in our language.
407
+ * Verifies that no lexer or parser errors occur.
408
+ * Implicitly also checks for validation errors while extracting the document
409
+ *
410
+ * @param fileName Program to validate
411
+ */
412
+ export const parseAndValidate = async (fileName) => {
413
+ // retrieve the services for our language
414
+ const services = createAgentlangServices(NodeFileSystem).Agentlang;
415
+ // extract a document for our program
416
+ const document = await extractDocument(fileName, services);
417
+ // extract the parse result details
418
+ const parseResult = document.parseResult;
419
+ // verify no lexer, parser, or general diagnostic errors show up
420
+ if (parseResult.lexerErrors.length === 0 && parseResult.parserErrors.length === 0) {
421
+ // eslint-disable-next-line no-console
422
+ console.log(chalk.green(`Parsed and validated ${fileName} successfully!`));
423
+ }
424
+ else {
425
+ // eslint-disable-next-line no-console
426
+ console.log(chalk.red(`Failed to parse and validate ${fileName}!`));
427
+ }
428
+ };
429
+ export const runModule = async (fileName) => {
430
+ const r = await runPreInitTasks();
431
+ if (!r) {
432
+ throw new Error('Failed to initialize runtime');
433
+ }
434
+ const configDir = path.dirname(fileName) === '.' ? process.cwd() : path.resolve(process.cwd(), fileName);
435
+ const config = await loadAppConfig(configDir);
436
+ if (config.integrations) {
437
+ await prepareIntegrations(config.integrations.host, config.integrations.username, config.integrations.password, config.integrations.connections);
438
+ }
439
+ if (config.openapi) {
440
+ await loadOpenApiSpec(config.openapi);
441
+ }
442
+ try {
443
+ await load(fileName, undefined, async (appSpec) => {
444
+ await runPostInitTasks(appSpec, config);
445
+ });
446
+ }
447
+ catch (err) {
448
+ if (isNodeEnv && chalk) {
449
+ // eslint-disable-next-line no-console
450
+ console.error(chalk.red(String(err)));
451
+ }
452
+ else {
453
+ // eslint-disable-next-line no-console
454
+ console.error(String(err));
455
+ }
456
+ }
457
+ };
458
+ export const generateDoc = async (fileName, options) => {
459
+ const r = await runPreInitTasks();
460
+ if (!r) {
461
+ throw new Error('Failed to initialize runtime');
462
+ }
463
+ await load(fileName, undefined, async (_appSpec) => {
464
+ await generateSwaggerDoc(fileName, options);
465
+ });
466
+ };
467
+ export const replCommand = async (directory, options) => {
468
+ try {
469
+ await startRepl(directory || '.', {
470
+ watch: options === null || options === void 0 ? void 0 : options.watch,
471
+ quiet: options === null || options === void 0 ? void 0 : options.quiet,
472
+ verbose: !(options === null || options === void 0 ? void 0 : options.quiet),
473
+ });
474
+ }
475
+ catch (error) {
476
+ // eslint-disable-next-line no-console
477
+ console.log(chalk.red(`Failed to start REPL: ${error instanceof Error ? error.message : String(error)}`));
478
+ process.exit(1);
479
+ }
480
+ };
481
+ export async function internAndRunModule(module, appSpec) {
482
+ const r = await runPreInitTasks();
483
+ if (!r) {
484
+ throw new Error('Failed to initialize runtime');
485
+ }
486
+ const rm = await internModule(module);
487
+ await runPostInitTasks(appSpec);
488
+ return rm;
489
+ }
490
+ /* eslint-disable no-console */
491
+ export const generateUICommand = async (specFile, options) => {
492
+ try {
493
+ console.log(chalk.blue('šŸš€ Agentlang UI Generator\n'));
494
+ // Get API key from options or environment
495
+ const apiKey = (options === null || options === void 0 ? void 0 : options.apiKey) || process.env.ANTHROPIC_API_KEY;
496
+ if (!apiKey) {
497
+ console.error(chalk.red('āŒ Error: Anthropic API key is required.'));
498
+ console.log(chalk.yellow(' Set ANTHROPIC_API_KEY environment variable or use --api-key flag.'));
499
+ console.log(chalk.gray('\n Example:'));
500
+ console.log(chalk.gray(' $ export ANTHROPIC_API_KEY=sk-ant-...'));
501
+ console.log(chalk.gray(' $ agent ui-gen'));
502
+ console.log(chalk.gray('\n Or:'));
503
+ console.log(chalk.gray(' $ agent ui-gen --api-key sk-ant-...'));
504
+ process.exit(1);
505
+ }
506
+ // Set target directory
507
+ const targetDir = (options === null || options === void 0 ? void 0 : options.directory) || '.';
508
+ const absoluteTargetDir = path.resolve(process.cwd(), targetDir);
509
+ // Auto-detect spec file if not provided
510
+ let specFilePath;
511
+ if (!specFile) {
512
+ console.log(chalk.cyan('šŸ“„ Searching for UI spec file...'));
513
+ specFilePath = await findSpecFile(absoluteTargetDir);
514
+ }
515
+ else {
516
+ specFilePath = path.resolve(process.cwd(), specFile);
517
+ }
518
+ // Load the UI spec
519
+ console.log(chalk.cyan(`šŸ“„ Loading UI spec from: ${specFilePath}`));
520
+ const uiSpec = await loadUISpec(specFilePath);
521
+ console.log(chalk.cyan(`šŸ“‚ Target directory: ${absoluteTargetDir}`));
522
+ console.log(chalk.cyan(`šŸ“¦ Output will be created in: ${path.join(absoluteTargetDir, 'ui')}`));
523
+ // Generate or update the UI
524
+ await generateUI(uiSpec, absoluteTargetDir, apiKey, (options === null || options === void 0 ? void 0 : options.push) || false, options === null || options === void 0 ? void 0 : options.message);
525
+ console.log(chalk.green('\nāœ… UI generation completed successfully!'));
526
+ }
527
+ catch (error) {
528
+ console.error(chalk.red('\nāŒ Error:'), error instanceof Error ? error.message : error);
529
+ process.exit(1);
530
+ }
531
+ };
532
+ async function loadOpenApiSpec(openApiConfig) {
533
+ var _a;
534
+ for (const cfg of openApiConfig) {
535
+ const api = new OpenAPIClientAxios({ definition: cfg.specUrl });
536
+ await api.init();
537
+ const client = await api.getClient();
538
+ client.defaults.baseURL = (_a = cfg.baseUrl) !== null && _a !== void 0 ? _a : cfg.specUrl.substring(0, cfg.specUrl.lastIndexOf('/'));
539
+ const n = await registerOpenApiModule(cfg.name, { api, client });
540
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
541
+ logger.info(`OpenAPI module '${n}' registered`);
542
+ }
543
+ }
544
+ //# sourceMappingURL=main.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":"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"}