@output.ai/cli 0.0.9 → 0.2.3

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.
Files changed (65) hide show
  1. package/README.md +48 -0
  2. package/bin/copyassets.sh +8 -0
  3. package/bin/run.js +4 -0
  4. package/dist/api/generated/api.d.ts +31 -13
  5. package/dist/api/http_client.d.ts +8 -2
  6. package/dist/api/http_client.js +14 -6
  7. package/dist/api/orval_post_process.d.ts +2 -1
  8. package/dist/api/orval_post_process.js +18 -5
  9. package/dist/assets/docker/docker-compose-dev.yml +130 -0
  10. package/dist/commands/agents/init.js +4 -2
  11. package/dist/commands/dev/eject.d.ts +11 -0
  12. package/dist/commands/dev/eject.js +58 -0
  13. package/dist/commands/dev/eject.spec.d.ts +1 -0
  14. package/dist/commands/dev/eject.spec.js +109 -0
  15. package/dist/commands/dev/index.d.ts +11 -0
  16. package/dist/commands/dev/index.js +54 -0
  17. package/dist/commands/dev/index.spec.d.ts +1 -0
  18. package/dist/commands/dev/index.spec.js +150 -0
  19. package/dist/commands/init.d.ts +10 -0
  20. package/dist/commands/init.js +30 -0
  21. package/dist/commands/init.spec.d.ts +1 -0
  22. package/dist/commands/init.spec.js +109 -0
  23. package/dist/commands/workflow/run.js +5 -0
  24. package/dist/services/claude_client.js +15 -2
  25. package/dist/services/claude_client.spec.js +5 -1
  26. package/dist/services/coding_agents.js +13 -4
  27. package/dist/services/coding_agents.spec.js +2 -1
  28. package/dist/services/docker.d.ts +12 -0
  29. package/dist/services/docker.js +79 -0
  30. package/dist/services/env_configurator.d.ts +11 -0
  31. package/dist/services/env_configurator.js +158 -0
  32. package/dist/services/env_configurator.spec.d.ts +1 -0
  33. package/dist/services/env_configurator.spec.js +123 -0
  34. package/dist/services/messages.d.ts +5 -0
  35. package/dist/services/messages.js +233 -0
  36. package/dist/services/project_scaffold.d.ts +6 -0
  37. package/dist/services/project_scaffold.js +140 -0
  38. package/dist/services/project_scaffold.spec.d.ts +1 -0
  39. package/dist/services/project_scaffold.spec.js +43 -0
  40. package/dist/services/template_processor.d.ts +1 -1
  41. package/dist/services/template_processor.js +26 -11
  42. package/dist/services/workflow_builder.js +2 -1
  43. package/dist/templates/project/.env.template +9 -0
  44. package/dist/templates/project/.gitignore.template +33 -0
  45. package/dist/templates/project/README.md.template +60 -0
  46. package/dist/templates/project/package.json.template +26 -0
  47. package/dist/templates/project/src/simple/prompts/answer_question@v1.prompt.template +13 -0
  48. package/dist/templates/project/src/simple/steps.ts.template +16 -0
  49. package/dist/templates/project/src/simple/workflow.ts.template +22 -0
  50. package/dist/templates/project/tsconfig.json.template +20 -0
  51. package/dist/types/errors.d.ts +32 -0
  52. package/dist/types/errors.js +48 -0
  53. package/dist/utils/env_loader.d.ts +6 -0
  54. package/dist/utils/env_loader.js +43 -0
  55. package/dist/utils/error_utils.d.ts +24 -0
  56. package/dist/utils/error_utils.js +87 -0
  57. package/dist/utils/file_system.d.ts +3 -0
  58. package/dist/utils/file_system.js +33 -0
  59. package/dist/utils/process.d.ts +4 -0
  60. package/dist/utils/process.js +48 -0
  61. package/dist/utils/sdk_versions.d.ts +7 -0
  62. package/dist/utils/sdk_versions.js +28 -0
  63. package/dist/utils/sdk_versions.spec.d.ts +1 -0
  64. package/dist/utils/sdk_versions.spec.js +19 -0
  65. package/package.json +4 -2
@@ -0,0 +1,48 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { ux } from '@oclif/core';
3
+ import { getErrorMessage } from './error_utils.js';
4
+ export async function executeCommand(command, args, cwd) {
5
+ const stderrLines = [];
6
+ const proc = spawn(command, args, { cwd });
7
+ const handleStdout = (data) => {
8
+ const line = data.toString().trim();
9
+ if (line) {
10
+ ux.stdout(line);
11
+ }
12
+ };
13
+ const handleStderr = (data) => {
14
+ const line = data.toString().trim();
15
+ if (line) {
16
+ stderrLines.push(line);
17
+ ux.stdout(line);
18
+ }
19
+ };
20
+ proc.stdout.on('data', handleStdout);
21
+ proc.stderr.on('data', handleStderr);
22
+ return new Promise((resolve, reject) => {
23
+ proc.on('error', (error) => {
24
+ reject(new Error(`Failed to run ${command}: ${error.message}`));
25
+ });
26
+ proc.on('exit', (code) => {
27
+ if (code !== 0) {
28
+ reject(new Error(`${command} exited with code ${code || 'unknown'}`));
29
+ }
30
+ else {
31
+ resolve({ stderr: stderrLines });
32
+ }
33
+ });
34
+ });
35
+ }
36
+ export async function executeCommandWithMessages(command, startMessage, successMessage) {
37
+ try {
38
+ ux.stdout(startMessage);
39
+ await command();
40
+ ux.stdout(successMessage);
41
+ return true;
42
+ }
43
+ catch (error) {
44
+ const message = getErrorMessage(error);
45
+ ux.warn(`⚠️ ${message}`);
46
+ return false;
47
+ }
48
+ }
@@ -0,0 +1,7 @@
1
+ export interface SDKVersions {
2
+ core: string;
3
+ llm: string;
4
+ http: string;
5
+ cli: string;
6
+ }
7
+ export declare function getSDKVersions(): Promise<SDKVersions>;
@@ -0,0 +1,28 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join, dirname } from 'node:path';
3
+ import { fileURLToPath } from 'node:url';
4
+ const readPackageVersion = async (sdkRoot, packagePath) => {
5
+ const pkg = await (async () => {
6
+ try {
7
+ const content = await readFile(join(sdkRoot, packagePath), 'utf-8');
8
+ return JSON.parse(content);
9
+ }
10
+ catch (error) {
11
+ throw new Error(`Failed to read version from ${packagePath}: ${error}`);
12
+ }
13
+ })();
14
+ if (typeof pkg.version !== 'string') {
15
+ throw new Error(`Version is not a string in ${packagePath}`);
16
+ }
17
+ return pkg.version;
18
+ };
19
+ export async function getSDKVersions() {
20
+ const sdkRoot = join(dirname(fileURLToPath(import.meta.url)), '..', '..', '..');
21
+ const [core, llm, http, cli] = await Promise.all([
22
+ readPackageVersion(sdkRoot, 'core/package.json'),
23
+ readPackageVersion(sdkRoot, 'llm/package.json'),
24
+ readPackageVersion(sdkRoot, 'http/package.json'),
25
+ readPackageVersion(sdkRoot, 'cli/package.json')
26
+ ]);
27
+ return { core, llm, http, cli };
28
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,19 @@
1
+ import { describe, it, expect } from 'vitest';
2
+ import { getSDKVersions } from './sdk_versions.js';
3
+ describe('getSDKVersions', () => {
4
+ it('should read all SDK package versions', async () => {
5
+ const versions = await getSDKVersions();
6
+ expect(versions).toHaveProperty('core');
7
+ expect(versions).toHaveProperty('llm');
8
+ expect(versions).toHaveProperty('http');
9
+ expect(versions).toHaveProperty('cli');
10
+ });
11
+ it('should return versions in semver format', async () => {
12
+ const versions = await getSDKVersions();
13
+ const semverPattern = /^\d+\.\d+\.\d+$/;
14
+ expect(versions.core).toMatch(semverPattern);
15
+ expect(versions.llm).toMatch(semverPattern);
16
+ expect(versions.http).toMatch(semverPattern);
17
+ expect(versions.cli).toMatch(semverPattern);
18
+ });
19
+ });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@output.ai/cli",
3
- "version": "0.0.9",
3
+ "version": "0.2.3",
4
4
  "description": "CLI for Output.ai workflow generation",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -14,7 +14,8 @@
14
14
  "output": "./bin/run.js"
15
15
  },
16
16
  "scripts": {
17
- "build": "rm -rf ./dist && tsc && copyfiles -u 1 './src/templates/**/*.template' './src/templates/**/.env.template' './src/templates/**/*.prompt.template' './src/**/*.prompt' dist",
17
+ "build": "rm -rf ./dist && tsc && npm run copy-assets",
18
+ "copy-assets": "./bin/copyassets.sh",
18
19
  "test": "vitest run",
19
20
  "generate:api": "orval --config ./orval.config.ts",
20
21
  "prebuild": "npm run generate:api"
@@ -29,6 +30,7 @@
29
30
  "change-case": "5.4.4",
30
31
  "cli-progress": "3.12.0",
31
32
  "cli-table3": "0.6.5",
33
+ "dotenv": "16.4.7",
32
34
  "handlebars": "4.7.8",
33
35
  "json-schema-library": "10.3.0",
34
36
  "ky": "1.12.0",