@ariaflowagents/builder 0.1.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,7 @@
1
+ import { BuilderOptions, BuilderResult } from './types.js';
2
+ export declare function buildPack(options: BuilderOptions): Promise<BuilderResult>;
3
+ export declare function validateInput(input: string): {
4
+ valid: boolean;
5
+ error?: string;
6
+ };
7
+ //# sourceMappingURL=builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAK1E,wBAAsB,SAAS,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,CAyJ/E;AAoBD,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAiB/E"}
@@ -0,0 +1,174 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { fileURLToPath } from 'url';
4
+ import { loadPackStructure } from './loader.js';
5
+ import { convertConfigToTypeScript, convertConfigToRuntime, convertPromptsToTypeScript } from './converters/index.js';
6
+ import { generateHonoServer, generateCFWorker, generateWranglerToml, generateDockerfile, generateTsConfig, generateEnvExample } from './generators/entry-points.js';
7
+ import { generatePackageJson } from './generators/package.js';
8
+ const __filename = fileURLToPath(import.meta.url);
9
+ const __dirname = path.dirname(__filename);
10
+ export async function buildPack(options) {
11
+ const filesGenerated = [];
12
+ const warnings = [];
13
+ const errors = [];
14
+ const inputDir = path.resolve(options.input);
15
+ const outputDir = path.resolve(options.output);
16
+ if (!fs.existsSync(inputDir)) {
17
+ return {
18
+ success: false,
19
+ outputPath: outputDir,
20
+ filesGenerated: [],
21
+ warnings: [],
22
+ errors: [`Input directory not found: ${inputDir}`],
23
+ };
24
+ }
25
+ let packStructure;
26
+ try {
27
+ packStructure = await loadPackStructure(inputDir);
28
+ }
29
+ catch (err) {
30
+ return {
31
+ success: false,
32
+ outputPath: outputDir,
33
+ filesGenerated: [],
34
+ warnings: [],
35
+ errors: [`Failed to load pack structure: ${err instanceof Error ? err.message : String(err)}`],
36
+ };
37
+ }
38
+ fs.mkdirSync(outputDir, { recursive: true });
39
+ fs.mkdirSync(path.join(outputDir, 'src', 'runtime'), { recursive: true });
40
+ if (options.copySource !== false) {
41
+ const ariaflowDest = path.join(outputDir, '.ariaflow');
42
+ fs.mkdirSync(ariaflowDest, { recursive: true });
43
+ fs.copyFileSync(path.join(inputDir, 'ariaflow.jsonc'), path.join(ariaflowDest, 'ariaflow.jsonc'));
44
+ const ariaflowSrc = path.join(inputDir, '.ariaflow');
45
+ if (fs.existsSync(ariaflowSrc)) {
46
+ for (const entry of fs.readdirSync(ariaflowSrc, { withFileTypes: true })) {
47
+ if (entry.name === '.ariaflow')
48
+ continue;
49
+ const srcPath = path.join(ariaflowSrc, entry.name);
50
+ const destPath = path.join(ariaflowDest, entry.name);
51
+ if (entry.isDirectory()) {
52
+ fs.mkdirSync(destPath, { recursive: true });
53
+ for (const subEntry of fs.readdirSync(srcPath, { withFileTypes: true })) {
54
+ const subSrc = path.join(srcPath, subEntry.name);
55
+ const subDest = path.join(destPath, subEntry.name);
56
+ if (subEntry.isDirectory()) {
57
+ fs.mkdirSync(subDest, { recursive: true });
58
+ for (const file of fs.readdirSync(subSrc)) {
59
+ fs.copyFileSync(path.join(subSrc, file), path.join(subDest, file));
60
+ }
61
+ }
62
+ else {
63
+ fs.copyFileSync(subSrc, subDest);
64
+ }
65
+ }
66
+ }
67
+ else {
68
+ fs.copyFileSync(srcPath, destPath);
69
+ }
70
+ }
71
+ }
72
+ filesGenerated.push('.ariaflow/');
73
+ }
74
+ const configTs = convertConfigToTypeScript(packStructure.config);
75
+ fs.writeFileSync(path.join(outputDir, 'src', 'runtime', 'config.ts'), configTs);
76
+ filesGenerated.push('src/runtime/config.ts');
77
+ const promptsTs = convertPromptsToTypeScript(packStructure.prompts);
78
+ fs.writeFileSync(path.join(outputDir, 'src', 'runtime', 'prompts.ts'), promptsTs);
79
+ filesGenerated.push('src/runtime/prompts.ts');
80
+ const runtimeTs = convertConfigToRuntime();
81
+ fs.writeFileSync(path.join(outputDir, 'src', 'runtime', 'index.ts'), runtimeTs);
82
+ filesGenerated.push('src/runtime/index.ts');
83
+ const name = options.name || packStructure.config.name || 'ariaflow-agent';
84
+ if (options.runtime === 'hono' || options.runtime === 'docker') {
85
+ const serverTs = generateHonoServer(name);
86
+ fs.writeFileSync(path.join(outputDir, 'server.ts'), serverTs);
87
+ filesGenerated.push('server.ts');
88
+ }
89
+ if (options.runtime === 'cf') {
90
+ const workerTs = generateCFWorker(name);
91
+ fs.writeFileSync(path.join(outputDir, 'worker.ts'), workerTs);
92
+ filesGenerated.push('worker.ts');
93
+ const wranglerToml = generateWranglerToml(name);
94
+ fs.writeFileSync(path.join(outputDir, 'wrangler.toml'), wranglerToml);
95
+ filesGenerated.push('wrangler.toml');
96
+ }
97
+ if (options.runtime === 'docker') {
98
+ const dockerfile = generateDockerfile();
99
+ fs.writeFileSync(path.join(outputDir, 'Dockerfile'), dockerfile);
100
+ filesGenerated.push('Dockerfile');
101
+ }
102
+ const packageJson = generatePackageJson(name, options.runtime, packStructure.packageJson);
103
+ fs.writeFileSync(path.join(outputDir, 'package.json'), packageJson);
104
+ filesGenerated.push('package.json');
105
+ const tsConfig = generateTsConfig();
106
+ fs.writeFileSync(path.join(outputDir, 'tsconfig.json'), tsConfig);
107
+ filesGenerated.push('tsconfig.json');
108
+ const envExample = generateEnvExample();
109
+ fs.writeFileSync(path.join(outputDir, '.env.example'), envExample);
110
+ filesGenerated.push('.env.example');
111
+ const ariaflowRoot = path.resolve(__dirname, '../../..');
112
+ const rootEnvPath = path.join(ariaflowRoot, '.env');
113
+ const inputEnvPath = path.join(inputDir, '.env');
114
+ let envCopied = false;
115
+ if (fs.existsSync(rootEnvPath)) {
116
+ fs.copyFileSync(rootEnvPath, path.join(outputDir, '.env'));
117
+ filesGenerated.push('.env (from project root)');
118
+ envCopied = true;
119
+ }
120
+ else if (fs.existsSync(inputEnvPath)) {
121
+ fs.copyFileSync(inputEnvPath, path.join(outputDir, '.env'));
122
+ filesGenerated.push('.env (from input)');
123
+ envCopied = true;
124
+ }
125
+ if (!envCopied) {
126
+ warnings.push('No .env file found. Copy .env.example to .env and add your API keys.');
127
+ }
128
+ if (packStructure.config.providers && Object.keys(packStructure.config.providers).length > 0) {
129
+ const providerNames = Object.keys(packStructure.config.providers);
130
+ warnings.push(`Found providers: ${providerNames.join(', ')}. Make sure to set API keys in environment variables.`);
131
+ }
132
+ if (packStructure.tools.size > 0) {
133
+ const toolNames = Array.from(packStructure.tools.keys());
134
+ warnings.push(`Found ${toolNames.length} tools: ${toolNames.join(', ')}. Dependencies will be installed from .ariaflow/package.json if present.`);
135
+ }
136
+ return {
137
+ success: true,
138
+ outputPath: outputDir,
139
+ filesGenerated,
140
+ warnings,
141
+ errors,
142
+ };
143
+ }
144
+ function copyDirectory(src, dest) {
145
+ if (!fs.existsSync(src))
146
+ return;
147
+ const entries = fs.readdirSync(src, { withFileTypes: true });
148
+ for (const entry of entries) {
149
+ const srcPath = path.join(src, entry.name);
150
+ const destPath = path.join(dest, entry.name);
151
+ if (entry.isDirectory()) {
152
+ fs.mkdirSync(destPath, { recursive: true });
153
+ copyDirectory(srcPath, destPath);
154
+ }
155
+ else {
156
+ fs.copyFileSync(srcPath, destPath);
157
+ }
158
+ }
159
+ }
160
+ export function validateInput(input) {
161
+ const inputPath = path.resolve(input);
162
+ if (!fs.existsSync(inputPath)) {
163
+ return { valid: false, error: `Input path does not exist: ${inputPath}` };
164
+ }
165
+ if (!fs.statSync(inputPath).isDirectory()) {
166
+ return { valid: false, error: `Input path is not a directory: ${inputPath}` };
167
+ }
168
+ const configPath = path.join(inputPath, 'ariaflow.jsonc');
169
+ if (!fs.existsSync(configPath)) {
170
+ return { valid: false, error: `Config file not found: ${configPath}` };
171
+ }
172
+ return { valid: true };
173
+ }
174
+ //# sourceMappingURL=builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../src/builder.ts"],"names":[],"mappings":"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"}
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,67 @@
1
+ #!/usr/bin/env node
2
+ import { Command } from 'commander';
3
+ import { buildPack, validateInput } from './builder.js';
4
+ const program = new Command();
5
+ program
6
+ .name('ariaflow')
7
+ .description('AriaFlow Pack Builder CLI')
8
+ .version('0.1.0');
9
+ program
10
+ .command('build-pack')
11
+ .description('Convert .ariaflow/ folder to deployable project')
12
+ .argument('<input>', 'Input directory containing .ariaflow/ folder')
13
+ .argument('[output]', 'Output directory (default: ./deploy)')
14
+ .option('-r, --runtime <type>', 'Runtime target: hono, cf, or docker', 'hono')
15
+ .option('-n, --name <name>', 'Project name')
16
+ .option('--no-copy-source', 'Skip copying .ariaflow/ to output')
17
+ .action(async (input, output, options) => {
18
+ const validation = validateInput(input);
19
+ if (!validation.valid) {
20
+ console.error(`Error: ${validation.error}`);
21
+ process.exit(1);
22
+ }
23
+ const buildOptions = {
24
+ input,
25
+ output: output || './deploy',
26
+ runtime: options.runtime || 'hono',
27
+ name: options.name,
28
+ copySource: options.copySource !== false,
29
+ };
30
+ console.log(`Building AriaFlow pack...`);
31
+ console.log(` Input: ${buildOptions.input}`);
32
+ console.log(` Output: ${buildOptions.output}`);
33
+ console.log(` Runtime: ${buildOptions.runtime}`);
34
+ console.log('');
35
+ const result = await buildPack(buildOptions);
36
+ if (result.success) {
37
+ console.log('Generated files:');
38
+ for (const file of result.filesGenerated) {
39
+ console.log(` - ${file}`);
40
+ }
41
+ if (result.warnings.length > 0) {
42
+ console.log('\nWarnings:');
43
+ for (const warning of result.warnings) {
44
+ console.log(` - ${warning}`);
45
+ }
46
+ }
47
+ console.log(`\nSuccess! Project ready at: ${result.outputPath}`);
48
+ console.log('\nNext steps:');
49
+ console.log(` cd ${result.outputPath}`);
50
+ console.log(' npm install');
51
+ if (buildOptions.runtime === 'hono' || buildOptions.runtime === 'docker') {
52
+ console.log(' npm run dev');
53
+ }
54
+ else if (buildOptions.runtime === 'cf') {
55
+ console.log(' npm run deploy');
56
+ }
57
+ }
58
+ else {
59
+ console.error('Build failed:');
60
+ for (const error of result.errors) {
61
+ console.error(` - ${error}`);
62
+ }
63
+ process.exit(1);
64
+ }
65
+ });
66
+ program.parse();
67
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { AriaflowConfig } from '../types.js';
2
+ export declare function convertConfigToTypeScript(config: AriaflowConfig): string;
3
+ export declare function convertConfigToRuntime(): string;
4
+ export declare function sanitizeForTemplateLiteral(str: string): string;
5
+ export declare function convertPromptsToTypeScript(prompts: Map<string, string>): string;
6
+ export declare function convertToolsToTypeScript(tools: Map<string, {
7
+ definition: {
8
+ name: string;
9
+ description: string;
10
+ parameters: Record<string, unknown>;
11
+ };
12
+ source: string;
13
+ }>): string;
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/converters/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,MAAM,CAOxE;AAED,wBAAgB,sBAAsB,IAAI,MAAM,CAM/C;AAED,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK9D;AAED,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM,CAe/E;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;IAAE,UAAU,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,GAC7H,MAAM,CAkBR"}
@@ -0,0 +1,52 @@
1
+ export function convertConfigToTypeScript(config) {
2
+ const configJson = JSON.stringify(config, null, 2);
3
+ return `import { AriaFlowConfig } from '@ariaflowagents/config';
4
+
5
+ export const ariaConfig: AriaFlowConfig = ${configJson} as AriaFlowConfig;
6
+ `;
7
+ }
8
+ export function convertConfigToRuntime() {
9
+ return `import { loadAriaflowConfig, createRuntimeFromConfig } from '@ariaflowagents/config';
10
+ import { ariaConfig } from './config.js';
11
+
12
+ export const chatRuntime = createRuntimeFromConfig(ariaConfig);
13
+ `;
14
+ }
15
+ export function sanitizeForTemplateLiteral(str) {
16
+ return str
17
+ .replace(/\\/g, '\\\\')
18
+ .replace(/`/g, '\\`')
19
+ .replace(/\$\{/g, '\\${');
20
+ }
21
+ export function convertPromptsToTypeScript(prompts) {
22
+ const promptEntries = Array.from(prompts.entries())
23
+ .map(([name, content]) => {
24
+ const constName = name.replace(/[^a-zA-Z0-9_]/g, '_').replace(/^(\d)/, '_$1');
25
+ const sanitized = sanitizeForTemplateLiteral(content);
26
+ return ` ${constName}: \`${sanitized}\``;
27
+ })
28
+ .join(',\n');
29
+ return `export const prompts = {
30
+ ${promptEntries}
31
+ } as const;
32
+
33
+ export type PromptName = keyof typeof prompts;
34
+ `;
35
+ }
36
+ export function convertToolsToTypeScript(tools) {
37
+ const toolExports = [];
38
+ for (const [toolName, tool] of tools) {
39
+ const def = tool.definition;
40
+ const paramsJson = JSON.stringify(def.parameters, null, 6);
41
+ toolExports.push(`export const ${toolName}Tool = {
42
+ name: '${def.name}',
43
+ description: \`${def.description}\`,
44
+ parameters: ${paramsJson},
45
+ handler: async (input: unknown) => {
46
+ ${tool.source.split('\n').map(l => ' ' + l).join('\n')}
47
+ }
48
+ };`);
49
+ }
50
+ return toolExports.join('\n\n');
51
+ }
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/converters/index.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,yBAAyB,CAAC,MAAsB;IAC9D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEnD,OAAO;;4CAEmC,UAAU;CACrD,CAAC;AACF,CAAC;AAED,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;CAIR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,OAAO,GAAG;SACP,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;SACpB,OAAO,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,OAA4B;IACrE,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;SAChD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,CAAC,EAAE,EAAE;QACvB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC9E,MAAM,SAAS,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACtD,OAAO,KAAK,SAAS,OAAO,SAAS,IAAI,CAAC;IAC5C,CAAC,CAAC;SACD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,OAAO;EACP,aAAa;;;;CAId,CAAC;AACF,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,KAA8H;IAE9H,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;QAE3D,WAAW,CAAC,IAAI,CAAC,gBAAgB,QAAQ;WAClC,GAAG,CAAC,IAAI;mBACA,GAAG,CAAC,WAAW;gBAClB,UAAU;;EAExB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;GAEtD,CAAC,CAAC;IACH,CAAC;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,7 @@
1
+ export declare function generateHonoServer(name: string): string;
2
+ export declare function generateCFWorker(name: string): string;
3
+ export declare function generateWranglerToml(name: string): string;
4
+ export declare function generateDockerfile(): string;
5
+ export declare function generateTsConfig(): string;
6
+ export declare function generateEnvExample(): string;
7
+ //# sourceMappingURL=entry-points.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-points.d.ts","sourceRoot":"","sources":["../../src/generators/entry-points.ts"],"names":[],"mappings":"AAAA,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA+DvD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA2BrD;AAED,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAazD;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAgB3C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAmBzC;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CAgB3C"}
@@ -0,0 +1,161 @@
1
+ export function generateHonoServer(name) {
2
+ return `import dotenv from 'dotenv';
3
+ import { fileURLToPath } from 'url';
4
+ import { dirname, join, resolve } from 'path';
5
+ import { Hono } from 'hono';
6
+ import { cors } from 'hono/cors';
7
+ import { serve } from '@hono/node-server';
8
+ import { createNodeWebSocket } from '@hono/node-ws';
9
+ import { loadAriaflowConfigWithResult, createRuntimeFromConfig } from '@ariaflowagents/config';
10
+ import { createAriaChatRouter } from '@ariaflowagents/hono-server';
11
+ import { openai } from '@ai-sdk/openai';
12
+
13
+ dotenv.config();
14
+
15
+ const dir = resolve(dirname(fileURLToPath(import.meta.url)));
16
+ const configPath = join(dir, '.ariaflow', 'ariaflow.jsonc');
17
+
18
+ const model = openai(process.env.OPENAI_MODEL ?? 'gpt-4o-mini') as any;
19
+
20
+ console.log('Loading config from:', configPath);
21
+
22
+ const { config, summary, warnings } = await loadAriaflowConfigWithResult({
23
+ configPath,
24
+ modelRegistry: {
25
+ default: model,
26
+ 'openai:gpt-4o-mini': model,
27
+ },
28
+ });
29
+
30
+ if (warnings.length > 0) {
31
+ console.log('\\nConfig warnings:');
32
+ for (const warning of warnings) {
33
+ console.log(\` [\${warning.type}] \${warning.message}\`);
34
+ if (warning.file) console.log(\` File: \${warning.file}\`);
35
+ }
36
+ }
37
+
38
+ console.log('\\nConfig loaded successfully:');
39
+ console.log(\` • \${summary.agents} agent(s)\`);
40
+ console.log(\` • \${summary.flows} flow(s)\`);
41
+ console.log(\` • \${summary.tools} tool(s)\`);
42
+ console.log(\` • \${summary.skills} skill(s)\`);
43
+
44
+ const runtime = createRuntimeFromConfig(config);
45
+
46
+ const app = new Hono();
47
+ app.use('/*', cors({
48
+ origin: '*',
49
+ allowMethods: ['GET', 'POST', 'OPTIONS'],
50
+ allowHeaders: ['Content-Type', 'Authorization'],
51
+ }));
52
+
53
+ const { upgradeWebSocket, injectWebSocket } = createNodeWebSocket({ app });
54
+
55
+ app.route('/', createAriaChatRouter({ runtime, upgradeWebSocket }));
56
+
57
+ const port = Number(process.env.PORT ?? 3000);
58
+ const server = serve({ fetch: app.fetch, port });
59
+
60
+ injectWebSocket(server);
61
+
62
+ console.log(\`\\n🚀 \${${JSON.stringify(name)}} running at http://localhost:\${port}\\n\`);
63
+ `;
64
+ }
65
+ export function generateCFWorker(name) {
66
+ return `import { ariaConfig } from './src/runtime';
67
+ import { routeAgentRequest } from 'agents';
68
+ import { AriaFlowChatAgent } from '@ariaflowagents/cf-agent';
69
+
70
+ const CORS_HEADERS = {
71
+ 'Access-Control-Allow-Origin': '*',
72
+ 'Access-Control-Allow-Methods': 'GET, POST, OPTIONS',
73
+ 'Access-Control-Allow-Headers': 'Content-Type',
74
+ };
75
+
76
+ export class Chat extends AriaFlowChatAgent<Env> {
77
+ async createRuntimeConfig() {
78
+ return ariaConfig;
79
+ }
80
+ }
81
+
82
+ export default {
83
+ async fetch(request: Request, env: Env, ctx: ExecutionContext) {
84
+ if (request.method === 'OPTIONS') {
85
+ return new Response(null, { headers: CORS_HEADERS });
86
+ }
87
+ return routeAgentRequest(request, env, { cors: true }) ||
88
+ new Response('Not found', { status: 404 });
89
+ }
90
+ } satisfies ExportedHandler<Env>;
91
+ `;
92
+ }
93
+ export function generateWranglerToml(name) {
94
+ return `name = "${name}"
95
+ compatibility_date = "2025-01-17"
96
+
97
+ [assets]
98
+ directory = ".ariaflow"
99
+ binding = "ASSETS"
100
+
101
+ [[d1_databases]]
102
+ binding = "DB"
103
+ database_name = "${name}"
104
+ database_id = "\${env.DATABASE_ID}"
105
+ `;
106
+ }
107
+ export function generateDockerfile() {
108
+ return `FROM node:20-alpine AS builder
109
+ WORKDIR /app
110
+ COPY package*.json ./
111
+ RUN npm ci
112
+ COPY . .
113
+ RUN npm run build
114
+
115
+ FROM node:20-alpine
116
+ WORKDIR /app
117
+ COPY --from=builder /app/dist ./dist
118
+ COPY --from=builder /app/node_modules ./node_modules
119
+ COPY .ariaflow ./.ariaflow
120
+ EXPOSE 3000
121
+ CMD ["node", "dist/server.js"]
122
+ `;
123
+ }
124
+ export function generateTsConfig() {
125
+ return `{
126
+ "compilerOptions": {
127
+ "target": "ES2022",
128
+ "module": "NodeNext",
129
+ "moduleResolution": "NodeNext",
130
+ "lib": ["ES2022"],
131
+ "outDir": "./dist",
132
+ "strict": true,
133
+ "esModuleInterop": true,
134
+ "skipLibCheck": true,
135
+ "forceConsistentCasingInFileNames": true,
136
+ "declaration": true,
137
+ "sourceMap": true
138
+ },
139
+ "include": ["src/**/*", "server.ts", "worker.ts"],
140
+ "exclude": ["node_modules", "dist"]
141
+ }
142
+ `;
143
+ }
144
+ export function generateEnvExample() {
145
+ return `# AriaFlow Environment Variables
146
+ # Copy this file to .env and fill in the values
147
+
148
+ # OpenAI (default provider)
149
+ OPENAI_API_KEY=sk-...
150
+
151
+ # Anthropic (if using)
152
+ ANTHROPIC_API_KEY=sk-...
153
+
154
+ # Database (if using D1/Postgres)
155
+ DATABASE_ID=your-database-id
156
+
157
+ # Session Store (if using Redis)
158
+ REDIS_URL=redis://localhost:6379
159
+ `;
160
+ }
161
+ //# sourceMappingURL=entry-points.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-points.js","sourceRoot":"","sources":["../../src/generators/entry-points.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA4DgB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;CAC5C,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;CAyBR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,WAAW,IAAI;;;;;;;;;mBASL,IAAI;;CAEtB,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,OAAO;;;;;;;;;;;;;;CAcR,CAAC;AACF,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './entry-points.js';
2
+ export * from './package.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './entry-points.js';
2
+ export * from './package.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/generators/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,cAAc,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function generatePackageJson(name: string, runtime: 'hono' | 'cf' | 'docker', toolDependencies?: Record<string, unknown>): string;
2
+ //# sourceMappingURL=package.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.d.ts","sourceRoot":"","sources":["../../src/generators/package.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,EACjC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACzC,MAAM,CAoFR"}
@@ -0,0 +1,75 @@
1
+ export function generatePackageJson(name, runtime, toolDependencies) {
2
+ const baseDependencies = {
3
+ '@ariaflowagents/core': '^0.4.0',
4
+ '@ariaflowagents/config': '^0.4.0',
5
+ '@ariaflowagents/hono-server': '^0.4.0',
6
+ '@ariaflowagents/cf-agent': '^0.4.0',
7
+ 'ai': '^6.0.0',
8
+ 'zod': '^3.23.0',
9
+ };
10
+ const honoDependencies = {
11
+ 'hono': '^4.0.0',
12
+ '@hono/node-server': '^1.0.0',
13
+ '@hono/node-ws': '^1.0.0',
14
+ '@ai-sdk/openai': '^3.0.0',
15
+ 'dotenv': '^16.4.0',
16
+ };
17
+ const cfDependencies = {
18
+ 'wrangler': '^3.0.0',
19
+ };
20
+ const dockerDependencies = {
21
+ ...honoDependencies,
22
+ };
23
+ const allDependencies = { ...baseDependencies };
24
+ if (runtime === 'hono' || runtime === 'docker') {
25
+ Object.assign(allDependencies, honoDependencies);
26
+ }
27
+ if (runtime === 'cf') {
28
+ Object.assign(allDependencies, cfDependencies);
29
+ }
30
+ if (runtime === 'docker') {
31
+ Object.assign(allDependencies, dockerDependencies);
32
+ }
33
+ if (toolDependencies && toolDependencies.dependencies) {
34
+ const toolDeps = toolDependencies.dependencies;
35
+ Object.assign(allDependencies, toolDeps);
36
+ }
37
+ const depsJson = Object.entries(allDependencies)
38
+ .map(([pkg, version]) => ` "${pkg}": "${version}"`)
39
+ .join(',\n');
40
+ const scripts = {
41
+ 'build': 'tsc',
42
+ 'type-check': 'tsc --noEmit',
43
+ };
44
+ if (runtime === 'hono') {
45
+ scripts['dev'] = 'tsx server.ts';
46
+ scripts['start'] = 'node dist/server.js';
47
+ }
48
+ if (runtime === 'cf') {
49
+ scripts['dev'] = 'wrangler dev';
50
+ scripts['deploy'] = 'wrangler deploy';
51
+ }
52
+ if (runtime === 'docker') {
53
+ scripts['dev'] = 'tsx server.ts';
54
+ scripts['start'] = 'node dist/server.js';
55
+ scripts['docker:build'] = 'docker build -t ${name} .';
56
+ scripts['docker:run'] = 'docker run -p 3000:3000 ${name}';
57
+ }
58
+ const scriptsJson = Object.entries(scripts)
59
+ .map(([script, cmd]) => ` "${script}": "${cmd}"`)
60
+ .join(',\n');
61
+ return `{
62
+ "name": "${name}",
63
+ "version": "0.1.0",
64
+ "type": "module",
65
+ "main": "dist/server.js",
66
+ "scripts": {
67
+ ${scriptsJson}
68
+ },
69
+ "dependencies": {
70
+ ${depsJson}
71
+ }
72
+ }
73
+ `;
74
+ }
75
+ //# sourceMappingURL=package.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"package.js","sourceRoot":"","sources":["../../src/generators/package.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,mBAAmB,CACjC,IAAY,EACZ,OAAiC,EACjC,gBAA0C;IAE1C,MAAM,gBAAgB,GAA2B;QAC/C,sBAAsB,EAAE,QAAQ;QAChC,wBAAwB,EAAE,QAAQ;QAClC,6BAA6B,EAAE,QAAQ;QACvC,0BAA0B,EAAE,QAAQ;QACpC,IAAI,EAAE,QAAQ;QACd,KAAK,EAAE,SAAS;KACjB,CAAC;IAEF,MAAM,gBAAgB,GAA2B;QAC/C,MAAM,EAAE,QAAQ;QAChB,mBAAmB,EAAE,QAAQ;QAC7B,eAAe,EAAE,QAAQ;QACzB,gBAAgB,EAAE,QAAQ;QAC1B,QAAQ,EAAE,SAAS;KACpB,CAAC;IAEF,MAAM,cAAc,GAA2B;QAC7C,UAAU,EAAE,QAAQ;KACrB,CAAC;IAEF,MAAM,kBAAkB,GAA2B;QACjD,GAAG,gBAAgB;KACpB,CAAC;IAEF,MAAM,eAAe,GAA2B,EAAE,GAAG,gBAAgB,EAAE,CAAC;IAExE,IAAI,OAAO,KAAK,MAAM,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QAC/C,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,gBAAgB,CAAC,CAAC;IACnD,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,YAAY,EAAE,CAAC;QACtD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,YAAsC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC;SAC7C,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,QAAQ,GAAG,OAAO,OAAO,GAAG,CAAC;SACrD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,MAAM,OAAO,GAA2B;QACtC,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,cAAc;KAC7B,CAAC;IAEF,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC;QAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,iBAAiB,CAAC;IACxC,CAAC;IACD,IAAI,OAAO,KAAK,QAAQ,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,GAAG,eAAe,CAAC;QACjC,OAAO,CAAC,OAAO,CAAC,GAAG,qBAAqB,CAAC;QACzC,OAAO,CAAC,cAAc,CAAC,GAAG,2BAA2B,CAAC;QACtD,OAAO,CAAC,YAAY,CAAC,GAAG,iCAAiC,CAAC;IAC5D,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;SACxC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC,QAAQ,MAAM,OAAO,GAAG,GAAG,CAAC;SACnD,IAAI,CAAC,KAAK,CAAC,CAAC;IAEf,OAAO;aACI,IAAI;;;;;EAKf,WAAW;;;EAGX,QAAQ;;;CAGT,CAAC;AACF,CAAC"}
@@ -0,0 +1,6 @@
1
+ export { buildPack, validateInput } from './builder.js';
2
+ export * from './types.js';
3
+ export * from './loader.js';
4
+ export * from './converters/index.js';
5
+ export * from './generators/index.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { buildPack, validateInput } from './builder.js';
2
+ export * from './types.js';
3
+ export * from './loader.js';
4
+ export * from './converters/index.js';
5
+ export * from './generators/index.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACxD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,uBAAuB,CAAC;AACtC,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { AriaflowConfig, PackStructure } from './types.js';
2
+ export declare function loadAriaflowConfig(inputDir: string): Promise<AriaflowConfig>;
3
+ export declare function loadPackStructure(inputDir: string): Promise<PackStructure>;
4
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3D,wBAAsB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAWlF;AAED,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAkDhF"}
package/dist/loader.js ADDED
@@ -0,0 +1,57 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import { parse } from 'jsonc-parser';
4
+ export async function loadAriaflowConfig(inputDir) {
5
+ const configPath = path.join(inputDir, 'ariaflow.jsonc');
6
+ if (!fs.existsSync(configPath)) {
7
+ throw new Error(`Config file not found: ${configPath}`);
8
+ }
9
+ const content = fs.readFileSync(configPath, 'utf-8');
10
+ const config = parse(content);
11
+ return config;
12
+ }
13
+ export async function loadPackStructure(inputDir) {
14
+ const structure = {
15
+ config: await loadAriaflowConfig(inputDir),
16
+ prompts: new Map(),
17
+ tools: new Map(),
18
+ };
19
+ const promptsDir = path.join(inputDir, 'prompts');
20
+ if (fs.existsSync(promptsDir) && fs.statSync(promptsDir).isDirectory()) {
21
+ for (const file of fs.readdirSync(promptsDir)) {
22
+ if (file.endsWith('.md')) {
23
+ const filePath = path.join(promptsDir, file);
24
+ const content = fs.readFileSync(filePath, 'utf-8');
25
+ const name = file.replace('.md', '');
26
+ structure.prompts.set(name, content);
27
+ }
28
+ }
29
+ }
30
+ const toolsDir = path.join(inputDir, 'tools');
31
+ if (fs.existsSync(toolsDir) && fs.statSync(toolsDir).isDirectory()) {
32
+ for (const toolDir of fs.readdirSync(toolsDir)) {
33
+ const toolPath = path.join(toolsDir, toolDir);
34
+ if (!fs.statSync(toolPath).isDirectory())
35
+ continue;
36
+ const definitionPath = path.join(toolPath, 'tool.json');
37
+ const indexPath = path.join(toolPath, 'index.ts');
38
+ let definition = { name: toolDir, description: '', parameters: {} };
39
+ if (fs.existsSync(definitionPath)) {
40
+ const defContent = fs.readFileSync(definitionPath, 'utf-8');
41
+ definition = JSON.parse(defContent);
42
+ }
43
+ let source = '';
44
+ if (fs.existsSync(indexPath)) {
45
+ source = fs.readFileSync(indexPath, 'utf-8');
46
+ }
47
+ structure.tools.set(toolDir, { definition, source });
48
+ }
49
+ }
50
+ const packageJsonPath = path.join(inputDir, 'package.json');
51
+ if (fs.existsSync(packageJsonPath)) {
52
+ const pkgContent = fs.readFileSync(packageJsonPath, 'utf-8');
53
+ structure.packageJson = JSON.parse(pkgContent);
54
+ }
55
+ return structure;
56
+ }
57
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../src/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,48 @@
1
+ export interface BuilderOptions {
2
+ input: string;
3
+ output: string;
4
+ runtime: 'hono' | 'cf' | 'docker';
5
+ name?: string;
6
+ providers?: string[];
7
+ copySource?: boolean;
8
+ }
9
+ export interface BuilderResult {
10
+ success: boolean;
11
+ outputPath: string;
12
+ filesGenerated: string[];
13
+ warnings: string[];
14
+ errors: string[];
15
+ }
16
+ export interface AriaflowConfig {
17
+ name: string;
18
+ version: string;
19
+ agents?: Record<string, {
20
+ model: string;
21
+ provider?: string;
22
+ system?: string;
23
+ instructions?: string;
24
+ tools?: string[];
25
+ }>;
26
+ defaultAgent?: string;
27
+ providers?: Record<string, {
28
+ apiKey: string;
29
+ baseUrl?: string;
30
+ id: string;
31
+ }>;
32
+ }
33
+ export interface ToolDefinition {
34
+ name: string;
35
+ description: string;
36
+ parameters: Record<string, unknown>;
37
+ requireUserConfirmation?: boolean;
38
+ }
39
+ export interface PackStructure {
40
+ config: AriaflowConfig;
41
+ prompts: Map<string, string>;
42
+ tools: Map<string, {
43
+ definition: ToolDefinition;
44
+ source: string;
45
+ }>;
46
+ packageJson?: Record<string, unknown>;
47
+ }
48
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,QAAQ,CAAC;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;KAClB,CAAC,CAAC;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;QACzB,MAAM,EAAE,MAAM,CAAC;QACf,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,EAAE,EAAE,MAAM,CAAC;KACZ,CAAC,CAAC;CACJ;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACpC,uBAAuB,CAAC,EAAE,OAAO,CAAC;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE;QAAE,UAAU,EAAE,cAAc,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACnE,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@ariaflowagents/builder",
3
+ "version": "0.1.1",
4
+ "description": "CLI tool to convert .ariaflow/ configurations into deployable projects",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "files": [
9
+ "dist",
10
+ "README.md"
11
+ ],
12
+ "type": "module",
13
+ "main": "dist/index.js",
14
+ "types": "dist/index.d.ts",
15
+ "exports": {
16
+ ".": {
17
+ "types": "./dist/index.d.ts",
18
+ "default": "./dist/index.js"
19
+ },
20
+ "./converters": {
21
+ "types": "./dist/converters/index.d.ts",
22
+ "default": "./dist/converters/index.js"
23
+ },
24
+ "./generators": {
25
+ "types": "./dist/generators/index.d.ts",
26
+ "default": "./dist/generators/index.js"
27
+ }
28
+ },
29
+ "bin": {
30
+ "ariaflow": "./dist/cli.js"
31
+ },
32
+ "devDependencies": {
33
+ "@types/node": "^20.11.0",
34
+ "typescript": "^5.3.0"
35
+ },
36
+ "dependencies": {
37
+ "commander": "^12.0.0",
38
+ "esbuild": "^0.20.0",
39
+ "jsonc-parser": "^3.2.0",
40
+ "picomatch": "^2.3.1",
41
+ "zod": "^3.23.0"
42
+ },
43
+ "scripts": {
44
+ "build": "tsc -p tsconfig.json",
45
+ "clean": "rm -rf dist",
46
+ "prepublishOnly": "npm run clean && npm run build",
47
+ "dev": "tsx src/cli.ts --help"
48
+ }
49
+ }