@agentlang/cli 0.7.9 → 0.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,88 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import chalk from 'chalk';
4
+ // CLI setup
5
+ const program = new Command();
6
+ program
7
+ .name('agentlang-build-ui')
8
+ .description('CLI tool to build deployable React apps from AgentLang schemas')
9
+ .version('1.0.0');
10
+ program.on('--help', () => {
11
+ console.log(chalk.blue.bold('🚀 Agentlang UI Builder'));
12
+ });
13
+ program
14
+ .command('build')
15
+ .description('Build a complete React application from AgentLang schema')
16
+ .requiredOption('-r, --repo <repo>', 'GitHub repository (format: owner/repo)')
17
+ .option('-b, --branch <branch>', 'Git branch to use', 'main')
18
+ .requiredOption('-o, --output <path>', 'Output directory for built files')
19
+ .requiredOption('--org <org>', 'GitHub organization')
20
+ .requiredOption('--username <username>', 'GitHub username')
21
+ .requiredOption('--token <token>', 'GitHub personal access token')
22
+ .requiredOption('--api-url <url>', 'API URL for the deployed application');
23
+ // .action(async options => {
24
+ // const builder = new AgentLangBuilder();
25
+ // // await builder.build(options);
26
+ // });
27
+ program
28
+ .command('generate-schema')
29
+ .description('Generate only the AgentLang schema (without building the app)')
30
+ .requiredOption('-r, --repo <repo>', 'GitHub repository (format: owner/repo)')
31
+ .option('-b, --branch <branch>', 'Git branch to use', 'main')
32
+ .requiredOption('--org <org>', 'GitHub organization')
33
+ .requiredOption('--username <username>', 'GitHub username')
34
+ .requiredOption('--token <token>', 'GitHub personal access token')
35
+ .action(async (options) => {
36
+ // Set environment variables
37
+ const envVars = {
38
+ GITHUB_REPO: options.repo,
39
+ GITHUB_BRANCH: options.branch || 'main',
40
+ GITHUB_ORG: options.org || options.repo.split('/')[0],
41
+ GITHUB_USERNAME: options.username || options.repo.split('/')[0],
42
+ GITHUB_TOKEN: options.token || process.env.GITHUB_TOKEN,
43
+ };
44
+ Object.entries(envVars).forEach(([key, value]) => {
45
+ if (value) {
46
+ process.env[key] = value;
47
+ }
48
+ });
49
+ if (!process.env.GITHUB_TOKEN) {
50
+ console.error(chalk.red('GitHub token is required. Set GITHUB_TOKEN environment variable or use --token option.'));
51
+ process.exit(1);
52
+ }
53
+ // generateSchema is private, so we cannot call it here.
54
+ // Instead, print an error message.
55
+ console.error(chalk.red('Error: generate-schema command is not available. This functionality is not exposed by AgentLangBuilder.'));
56
+ process.exit(1);
57
+ });
58
+ program
59
+ .command('build-app')
60
+ .description('Build only the React application (requires ui-schema.ts to exist)')
61
+ .action(async () => {
62
+ // buildReactApp is private, so we cannot call it here.
63
+ // Instead, print an error message.
64
+ console.error(chalk.red('Error: build-app command is not available. This functionality is not exposed by AgentLangBuilder.'));
65
+ process.exit(1);
66
+ });
67
+ // Handle errors
68
+ program.exitOverride();
69
+ try {
70
+ program.parse();
71
+ }
72
+ catch (err) {
73
+ // Handle help and version commands gracefully
74
+ if (err && typeof err === 'object' && 'code' in err) {
75
+ const code = err.code;
76
+ if (code === 'commander.help' ||
77
+ code === 'commander.version' ||
78
+ code === '(outputHelp)' ||
79
+ code === 'commander.helpDisplayed') {
80
+ process.exit(0);
81
+ }
82
+ }
83
+ // Handle other errors
84
+ const errorMessage = err instanceof Error ? err.message : String(err);
85
+ console.error(chalk.red('Error:'), errorMessage);
86
+ process.exit(1);
87
+ }
88
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/uigen/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,175 @@
1
+ // Export utility functions
2
+ export const version = '1.0.0';
3
+ import ora from 'ora';
4
+ import fs from 'fs-extra';
5
+ import path from 'path';
6
+ import { fileURLToPath } from 'url';
7
+ import { execSync } from 'child_process';
8
+ import { simpleGit } from 'simple-git';
9
+ import { flushAllAndLoad } from 'agentlang/src/runtime/loader';
10
+ import { fetchModule, getUserModuleNames } from 'agentlang/src/runtime/module';
11
+ import { buildGraph } from 'agentlang/src/runtime/relgraph';
12
+ import { loadUISchema } from '@agentlang/utils';
13
+ import os from 'os';
14
+ const __filename = fileURLToPath(import.meta.url);
15
+ const __dirname = path.dirname(__filename);
16
+ export class AgentLangBuilder {
17
+ constructor() {
18
+ this.spinner = ora();
19
+ }
20
+ validateOptions(options) {
21
+ if (!options.repo) {
22
+ throw new Error('Repository is required. Use --repo <owner/repo>');
23
+ }
24
+ if (!options.output) {
25
+ throw new Error('Output directory is required. Use --output <path>');
26
+ }
27
+ if (!options.org) {
28
+ throw new Error('GitHub organization is required. Use --org <org>');
29
+ }
30
+ if (!options.username) {
31
+ throw new Error('GitHub username is required. Use --username <username>');
32
+ }
33
+ if (!options.token) {
34
+ throw new Error('GitHub token is required. Use --token <token>');
35
+ }
36
+ if (!options.apiUrl) {
37
+ throw new Error('API URL is required. Use --api-url <url>');
38
+ }
39
+ // Check if output directory exists and is empty
40
+ if (fs.existsSync(options.output)) {
41
+ const contents = fs.readdirSync(options.output);
42
+ if (contents.length > 0) {
43
+ throw new Error(`Output directory ${options.output} is not empty. Please use an empty directory.`);
44
+ }
45
+ }
46
+ // Create output directory if it doesn't exist
47
+ fs.ensureDirSync(options.output);
48
+ }
49
+ async generateSchema(options) {
50
+ this.spinner.start('Generating AgentLang schema...');
51
+ const tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'agentlang-build-'));
52
+ try {
53
+ this.spinner.start('Cloning repository...');
54
+ const git = simpleGit();
55
+ let repoPath = options.repo;
56
+ if (!repoPath.includes('/')) {
57
+ if (!options.org) {
58
+ throw new Error('When repo name is not in `owner/repo` format, --org is required.');
59
+ }
60
+ repoPath = `${options.org}/${options.repo}`;
61
+ }
62
+ const repoUrl = `https://${options.username}:${options.token}@github.com/${repoPath}.git`;
63
+ await git.clone(repoUrl, tempDir, [`--branch=${options.branch || 'main'}`, '--depth=1', '--single-branch']);
64
+ this.spinner.succeed('Repository cloned successfully');
65
+ const packageJsonPath = path.join(tempDir, 'package.json');
66
+ if (fs.existsSync(packageJsonPath)) {
67
+ this.spinner.start('Installing repository dependencies...');
68
+ try {
69
+ execSync('npm install', {
70
+ cwd: tempDir,
71
+ stdio: 'pipe',
72
+ });
73
+ this.spinner.succeed('Dependencies installed successfully');
74
+ }
75
+ catch (error) {
76
+ this.spinner.fail('Failed to install dependencies');
77
+ const errorMessage = error instanceof Error ? error.message : String(error);
78
+ throw new Error(`Failed to install repository dependencies: ${errorMessage}`);
79
+ }
80
+ }
81
+ this.spinner.start('Initializing AgentLang and loading project...');
82
+ await flushAllAndLoad(tempDir);
83
+ this.spinner.succeed('Project loaded successfully');
84
+ this.spinner.start('Generating UI schema...');
85
+ const modules = getUserModuleNames();
86
+ const entities = modules.flatMap((module) => fetchModule(module)
87
+ .getEntityNames()
88
+ .map((entity) => `${module}/${entity}`));
89
+ const rootEntities = modules.flatMap((module) => {
90
+ const graph = buildGraph(module);
91
+ return graph
92
+ .getRoots()
93
+ .map((root) => `${root.entity.getModuleName()}/${root.entity.getEntryName()}`);
94
+ });
95
+ const publicAgents = modules.flatMap(moduleName => {
96
+ const module = fetchModule(moduleName);
97
+ if (!module) {
98
+ return [];
99
+ }
100
+ return module
101
+ .getAgentNames()
102
+ .filter(agentName => {
103
+ var _a;
104
+ const agent = module.getAgent(agentName);
105
+ return (_a = agent === null || agent === void 0 ? void 0 : agent.isPublic()) !== null && _a !== void 0 ? _a : false;
106
+ })
107
+ .map(agentName => `${moduleName}/${agentName}`);
108
+ });
109
+ const appName = options.repo;
110
+ const packageJson = await fs.readFile(path.join(tempDir, 'package.json'), 'utf8');
111
+ const packageJsonObject = JSON.parse(packageJson);
112
+ const team = {
113
+ Name: options.repo,
114
+ Description: packageJsonObject.description || 'An application generated from ' + options.repo,
115
+ };
116
+ const schema = await loadUISchema(appName, tempDir, entities, rootEntities, publicAgents, team);
117
+ schema.appInfo.apiUrl = options.apiUrl;
118
+ const uiSchemaPath = path.join(__dirname, '../ui-schema.ts');
119
+ const schemaContent = `export default ${JSON.stringify(schema, null, 4)};`;
120
+ await fs.writeFile(uiSchemaPath, schemaContent);
121
+ this.spinner.succeed('Schema generated successfully');
122
+ }
123
+ catch (error) {
124
+ this.spinner.fail('Schema generation failed');
125
+ const errorMessage = error instanceof Error ? error.message : String(error);
126
+ throw new Error(`Failed to generate schema: ${errorMessage}`);
127
+ }
128
+ finally {
129
+ await fs.remove(tempDir);
130
+ }
131
+ }
132
+ buildReactApp() {
133
+ this.spinner.start('Building React application...');
134
+ try {
135
+ // Check if ui-schema.ts was generated
136
+ const uiSchemaPath = path.join(__dirname, '../ui-schema.ts');
137
+ if (!fs.existsSync(uiSchemaPath)) {
138
+ throw new Error('UI schema file not found. Schema generation may have failed.');
139
+ }
140
+ // Run Vite build
141
+ execSync('npm run build-app', {
142
+ cwd: path.dirname(__dirname),
143
+ stdio: 'pipe',
144
+ });
145
+ this.spinner.succeed('React app built successfully');
146
+ }
147
+ catch (error) {
148
+ this.spinner.fail('React app build failed');
149
+ const errorMessage = error instanceof Error ? error.message : String(error);
150
+ throw new Error(`Failed to build React app: ${errorMessage}`);
151
+ }
152
+ }
153
+ async copyBuildFiles(options) {
154
+ this.spinner.start('Copying build files to output directory...');
155
+ try {
156
+ const distPath = path.join(__dirname, '../dist');
157
+ if (!fs.existsSync(distPath)) {
158
+ throw new Error('Build directory not found. React app build may have failed.');
159
+ }
160
+ // Copy all files from dist to output
161
+ await fs.copy(distPath, options.output);
162
+ this.spinner.succeed('Build files copied successfully');
163
+ }
164
+ catch (error) {
165
+ this.spinner.fail('Failed to copy build files');
166
+ const errorMessage = error instanceof Error ? error.message : String(error);
167
+ throw new Error(`Failed to copy build files: ${errorMessage}`);
168
+ }
169
+ }
170
+ }
171
+ export default {
172
+ version,
173
+ AgentLangBuilder,
174
+ };
175
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/uigen/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ import http from 'isomorphic-git/http/web';
2
+ import { createFS } from '@agentlang/fs-git-interop/fs';
3
+ import { createGit } from '@agentlang/fs-git-interop/git';
4
+ import { Buffer } from 'buffer';
5
+ // Ensure Buffer is available globally
6
+ if (typeof window !== 'undefined') {
7
+ window.Buffer = Buffer;
8
+ }
9
+ export const createGitUtils = async (options = {}) => {
10
+ const fsName = options.fsName || 'studio';
11
+ const fs = await createFS({ name: fsName });
12
+ const git = createGit(fs);
13
+ return { fs, git };
14
+ };
15
+ export const cloneRepository = async (url, dir, branch = 'main') => {
16
+ const { git } = await createGitUtils();
17
+ await git.clone(url, dir, {
18
+ http,
19
+ branch: branch,
20
+ singleBranch: true,
21
+ depth: 1,
22
+ corsProxy: 'https://cors-proxy-1.fractl.io',
23
+ });
24
+ return dir;
25
+ };
26
+ /**
27
+ * Read a file from a Git repository
28
+ * @param repoPath - Path to the repository
29
+ * @param filePath - Path to the file within the repository
30
+ * @returns Promise resolving to the file content as string
31
+ */
32
+ export const readRepoFile = async (repoPath, filePath) => {
33
+ const { fs } = await createGitUtils();
34
+ const fullPath = `${repoPath}/${filePath}`;
35
+ const content = await fs.readFile(fullPath);
36
+ return content.toString();
37
+ };
38
+ export function generateGitHubUrl(org, repo, githubUsername, githubToken) {
39
+ if (githubUsername && githubToken) {
40
+ return `https://${githubUsername}:${githubToken}@github.com/${org}/${repo}.git`;
41
+ }
42
+ return `https://github.com/${org}/${repo}.git`;
43
+ }
44
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/uigen/utils.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,yBAAyB,CAAC;AAC3C,OAAO,EAAE,QAAQ,EAAsB,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,SAAS,EAAc,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,sCAAsC;AACtC,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;IACjC,MAAqC,CAAC,MAAM,GAAG,MAAM,CAAC;AACzD,CAAC;AAOD,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,EAAE,UAA+B,EAAE,EAAqB,EAAE;IAC3F,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,QAAQ,CAAC;IAC1C,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IAE1B,OAAO,EAAE,EAAE,EAAE,GAAG,EAAE,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,KAAK,EAAE,GAAW,EAAE,GAAW,EAAE,SAAiB,MAAM,EAAmB,EAAE;IAC1G,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;IAEvC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;QACxB,IAAI;QACJ,MAAM,EAAE,MAAM;QACd,YAAY,EAAE,IAAI;QAClB,KAAK,EAAE,CAAC;QACR,SAAS,EAAE,gCAAgC;KAC5C,CAAC,CAAC;IAEH,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,YAAY,GAAG,KAAK,EAAE,QAAgB,EAAE,QAAgB,EAAmB,EAAE;IACxF,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,cAAc,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;IAC3C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC5C,OAAO,OAAO,CAAC,QAAQ,EAAE,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,UAAU,iBAAiB,CAAC,GAAW,EAAE,IAAY,EAAE,cAAuB,EAAE,WAAoB;IACxG,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;QAClC,OAAO,WAAW,cAAc,IAAI,WAAW,eAAe,GAAG,IAAI,IAAI,MAAM,CAAC;IAClF,CAAC;IACD,OAAO,sBAAsB,GAAG,IAAI,IAAI,MAAM,CAAC;AACjD,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agentlang/cli",
3
- "version": "0.7.9",
3
+ "version": "0.8.1",
4
4
  "description": "A command-line interface tool for Agentlang",
5
5
  "main": "out/main.js",
6
6
  "type": "module",
@@ -55,7 +55,7 @@
55
55
  "@anthropic-ai/sdk": "^0.65.0",
56
56
  "@asteasolutions/zod-to-openapi": "7.3.4",
57
57
  "@redocly/cli": "^2.0.2",
58
- "agentlang": "^0.7.2",
58
+ "agentlang": "^0.7.6",
59
59
  "better-sqlite3": "^12.4.1",
60
60
  "chalk": "^5.4.1",
61
61
  "chokidar": "^4.0.3",