@auto-engineer/cli 0.5.18 → 0.5.20
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/CHANGELOG.md +8 -0
- package/dist/src/commands/check-lint.d.ts +5 -0
- package/dist/src/commands/check-lint.d.ts.map +1 -0
- package/dist/src/commands/check-lint.js +96 -0
- package/dist/src/commands/check-lint.js.map +1 -0
- package/dist/src/commands/check-tests.d.ts +5 -0
- package/dist/src/commands/check-tests.d.ts.map +1 -0
- package/dist/src/commands/check-tests.js +87 -0
- package/dist/src/commands/check-tests.js.map +1 -0
- package/dist/src/commands/check-types.d.ts +5 -0
- package/dist/src/commands/check-types.d.ts.map +1 -0
- package/dist/src/commands/check-types.js +83 -0
- package/dist/src/commands/check-types.js.map +1 -0
- package/dist/src/commands/copy-example.d.ts +5 -0
- package/dist/src/commands/copy-example.d.ts.map +1 -0
- package/dist/src/commands/copy-example.js +54 -0
- package/dist/src/commands/copy-example.js.map +1 -0
- package/dist/src/commands/create-example.js +1 -1
- package/dist/src/commands/create-example.js.map +1 -1
- package/dist/src/index.js +70 -15
- package/dist/src/index.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { Analytics } from '../utils/analytics';
|
|
3
|
+
import { Config } from '../utils/config';
|
|
4
|
+
export declare const createCheckLintCommand: (config: Config, analytics: Analytics) => Command;
|
|
5
|
+
//# sourceMappingURL=check-lint.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-lint.d.ts","sourceRoot":"","sources":["../../../src/commands/check-lint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAkEzC,eAAO,MAAM,sBAAsB,WAAY,MAAM,aAAa,SAAS,KAAG,OA6C7E,CAAC"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { createOutput } from '../utils/terminal.js';
|
|
4
|
+
import { handleError } from '../utils/errors.js';
|
|
5
|
+
const determineTargetDirectory = (directoryArg, options) => {
|
|
6
|
+
let targetDirectory = './server';
|
|
7
|
+
if (directoryArg !== undefined && directoryArg !== null && directoryArg.trim() !== '') {
|
|
8
|
+
targetDirectory = directoryArg;
|
|
9
|
+
}
|
|
10
|
+
else if (options?.directory !== undefined && options.directory !== null && options.directory.trim() !== '') {
|
|
11
|
+
targetDirectory = options.directory;
|
|
12
|
+
}
|
|
13
|
+
return path.resolve(targetDirectory);
|
|
14
|
+
};
|
|
15
|
+
const handleLintCheck = async (resolvedDirectory, scope, fix, output, analytics) => {
|
|
16
|
+
output.info(`🎨 Running ESLint on: ${resolvedDirectory}`);
|
|
17
|
+
output.info(` Scope: ${scope}`);
|
|
18
|
+
if (fix) {
|
|
19
|
+
output.info(` Auto-fix: enabled`);
|
|
20
|
+
}
|
|
21
|
+
// Dynamic import to avoid circular dependency issues
|
|
22
|
+
const { handleCheckLintCommand } = await import('@auto-engineer/backend-checks');
|
|
23
|
+
const checkCommand = {
|
|
24
|
+
type: 'CheckLint',
|
|
25
|
+
data: {
|
|
26
|
+
targetDirectory: resolvedDirectory,
|
|
27
|
+
scope,
|
|
28
|
+
fix,
|
|
29
|
+
},
|
|
30
|
+
timestamp: new Date(),
|
|
31
|
+
requestId: `check-lint-${Date.now()}`,
|
|
32
|
+
correlationId: `check-lint-${Date.now()}`,
|
|
33
|
+
};
|
|
34
|
+
const result = await handleCheckLintCommand(checkCommand);
|
|
35
|
+
if (result.type === 'LintCheckPassed') {
|
|
36
|
+
output.success('✅ Lint check passed');
|
|
37
|
+
output.info(` Files checked: ${result.data.filesChecked}`);
|
|
38
|
+
if (result.data.filesFixed !== undefined) {
|
|
39
|
+
output.info(` Files fixed: ${result.data.filesFixed}`);
|
|
40
|
+
}
|
|
41
|
+
await analytics.track({ command: 'check:lint:complete', success: true });
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
output.error(`❌ Lint check failed`);
|
|
45
|
+
output.error(` Errors: ${result.data.errorCount}`);
|
|
46
|
+
output.error(` Warnings: ${result.data.warningCount}`);
|
|
47
|
+
if (result.data.filesWithIssues.length > 0) {
|
|
48
|
+
output.error(` Files with issues: ${result.data.filesWithIssues.join(', ')}`);
|
|
49
|
+
}
|
|
50
|
+
if (result.data.errors) {
|
|
51
|
+
output.error(` Details:\n${result.data.errors.substring(0, 500)}`);
|
|
52
|
+
}
|
|
53
|
+
await analytics.track({ command: 'check:lint:failed', success: false });
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
};
|
|
57
|
+
export const createCheckLintCommand = (config, analytics) => {
|
|
58
|
+
const output = createOutput(config);
|
|
59
|
+
const command = new Command('check:lint');
|
|
60
|
+
command
|
|
61
|
+
.description('Run ESLint checks on backend TypeScript code')
|
|
62
|
+
.argument('[directory]', 'Path to the directory to lint (defaults to ./server)')
|
|
63
|
+
.option('-d, --directory <path>', 'Target directory path (alternative to argument)')
|
|
64
|
+
.option('-s, --scope <scope>', 'Lint scope: "slice" (target dir only) or "project" (entire project)', 'slice')
|
|
65
|
+
.option('-f, --fix', 'Automatically fix problems where possible')
|
|
66
|
+
.action(async (directoryArg, options) => {
|
|
67
|
+
try {
|
|
68
|
+
await analytics.track({ command: 'check:lint:start', success: true });
|
|
69
|
+
const resolvedDirectory = determineTargetDirectory(directoryArg, options);
|
|
70
|
+
const scope = options?.scope === 'project' ? 'project' : 'slice';
|
|
71
|
+
const fix = Boolean(options?.fix);
|
|
72
|
+
await handleLintCheck(resolvedDirectory, scope, fix, output, analytics);
|
|
73
|
+
}
|
|
74
|
+
catch (error) {
|
|
75
|
+
await analytics.track({ command: 'check:lint:error', success: false });
|
|
76
|
+
handleError(error);
|
|
77
|
+
process.exit(1);
|
|
78
|
+
}
|
|
79
|
+
});
|
|
80
|
+
command.addHelpText('after', `
|
|
81
|
+
Examples:
|
|
82
|
+
$ auto check:lint
|
|
83
|
+
$ auto check:lint ./server
|
|
84
|
+
$ auto check:lint --directory ./backend
|
|
85
|
+
$ auto check:lint ./server --fix
|
|
86
|
+
$ auto check:lint ./server --scope project --fix
|
|
87
|
+
|
|
88
|
+
Notes:
|
|
89
|
+
- By default lints only the specified directory (slice scope)
|
|
90
|
+
- Use --scope project to lint the entire project
|
|
91
|
+
- Use --fix to automatically fix problems where possible
|
|
92
|
+
- Exit code 0 on success, 1 on failure
|
|
93
|
+
`);
|
|
94
|
+
return command;
|
|
95
|
+
};
|
|
96
|
+
//# sourceMappingURL=check-lint.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-lint.js","sourceRoot":"","sources":["../../../src/commands/check-lint.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { Analytics } from '../utils/analytics';
|
|
3
|
+
import { Config } from '../utils/config';
|
|
4
|
+
export declare const createCheckTestsCommand: (config: Config, analytics: Analytics) => Command;
|
|
5
|
+
//# sourceMappingURL=check-tests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-tests.d.ts","sourceRoot":"","sources":["../../../src/commands/check-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AA2DzC,eAAO,MAAM,uBAAuB,WAAY,MAAM,aAAa,SAAS,KAAG,OA0C9E,CAAC"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { createOutput } from '../utils/terminal.js';
|
|
4
|
+
import { handleError } from '../utils/errors.js';
|
|
5
|
+
const determineTargetDirectory = (directoryArg, options) => {
|
|
6
|
+
let targetDirectory = './server';
|
|
7
|
+
if (directoryArg !== undefined && directoryArg !== null && directoryArg.trim() !== '') {
|
|
8
|
+
targetDirectory = directoryArg;
|
|
9
|
+
}
|
|
10
|
+
else if (options?.directory !== undefined && options.directory !== null && options.directory.trim() !== '') {
|
|
11
|
+
targetDirectory = options.directory;
|
|
12
|
+
}
|
|
13
|
+
return path.resolve(targetDirectory);
|
|
14
|
+
};
|
|
15
|
+
const handleTestsCheck = async (resolvedDirectory, scope, output, analytics) => {
|
|
16
|
+
output.info(`🧪 Running tests on: ${resolvedDirectory}`);
|
|
17
|
+
output.info(` Scope: ${scope}`);
|
|
18
|
+
// Dynamic import to avoid circular dependency issues
|
|
19
|
+
const { handleCheckTestsCommand } = await import('@auto-engineer/backend-checks');
|
|
20
|
+
const checkCommand = {
|
|
21
|
+
type: 'CheckTests',
|
|
22
|
+
data: {
|
|
23
|
+
targetDirectory: resolvedDirectory,
|
|
24
|
+
scope,
|
|
25
|
+
},
|
|
26
|
+
timestamp: new Date(),
|
|
27
|
+
requestId: `check-tests-${Date.now()}`,
|
|
28
|
+
correlationId: `check-tests-${Date.now()}`,
|
|
29
|
+
};
|
|
30
|
+
const result = await handleCheckTestsCommand(checkCommand);
|
|
31
|
+
if (result.type === 'TestsCheckPassed') {
|
|
32
|
+
output.success('✅ All tests passed');
|
|
33
|
+
output.info(` Tests run: ${result.data.testsRun}`);
|
|
34
|
+
output.info(` Tests passed: ${result.data.testsPassed}`);
|
|
35
|
+
await analytics.track({ command: 'check:tests:complete', success: true });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
output.error(`❌ Tests failed`);
|
|
39
|
+
output.error(` Tests run: ${result.data.testsRun}`);
|
|
40
|
+
output.error(` Tests failed: ${result.data.testsFailed}`);
|
|
41
|
+
if (result.data.failedTests.length > 0) {
|
|
42
|
+
output.error(` Failed files: ${result.data.failedTests.join(', ')}`);
|
|
43
|
+
}
|
|
44
|
+
if (result.data.errors) {
|
|
45
|
+
output.error(` Errors:\n${result.data.errors.substring(0, 500)}`);
|
|
46
|
+
}
|
|
47
|
+
await analytics.track({ command: 'check:tests:failed', success: false });
|
|
48
|
+
process.exit(1);
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
export const createCheckTestsCommand = (config, analytics) => {
|
|
52
|
+
const output = createOutput(config);
|
|
53
|
+
const command = new Command('check:tests');
|
|
54
|
+
command
|
|
55
|
+
.description('Run tests on backend code using Vitest')
|
|
56
|
+
.argument('[directory]', 'Path to the directory to test (defaults to ./server)')
|
|
57
|
+
.option('-d, --directory <path>', 'Target directory path (alternative to argument)')
|
|
58
|
+
.option('-s, --scope <scope>', 'Test scope: "slice" (target dir only) or "project" (entire project)', 'slice')
|
|
59
|
+
.action(async (directoryArg, options) => {
|
|
60
|
+
try {
|
|
61
|
+
await analytics.track({ command: 'check:tests:start', success: true });
|
|
62
|
+
const resolvedDirectory = determineTargetDirectory(directoryArg, options);
|
|
63
|
+
const scope = options?.scope === 'project' ? 'project' : 'slice';
|
|
64
|
+
await handleTestsCheck(resolvedDirectory, scope, output, analytics);
|
|
65
|
+
}
|
|
66
|
+
catch (error) {
|
|
67
|
+
await analytics.track({ command: 'check:tests:error', success: false });
|
|
68
|
+
handleError(error);
|
|
69
|
+
process.exit(1);
|
|
70
|
+
}
|
|
71
|
+
});
|
|
72
|
+
command.addHelpText('after', `
|
|
73
|
+
Examples:
|
|
74
|
+
$ auto check:tests
|
|
75
|
+
$ auto check:tests ./server
|
|
76
|
+
$ auto check:tests --directory ./backend
|
|
77
|
+
$ auto check:tests ./server --scope project
|
|
78
|
+
|
|
79
|
+
Notes:
|
|
80
|
+
- By default runs tests only in the specified directory (slice scope)
|
|
81
|
+
- Use --scope project to run all project tests
|
|
82
|
+
- Uses Vitest as the test runner
|
|
83
|
+
- Exit code 0 on success, 1 on failure
|
|
84
|
+
`);
|
|
85
|
+
return command;
|
|
86
|
+
};
|
|
87
|
+
//# sourceMappingURL=check-tests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-tests.js","sourceRoot":"","sources":["../../../src/commands/check-tests.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,wBAAwB,GAAG,CAAC,YAAqB,EAAE,OAAgD,EAAU,EAAE;IACnH,IAAI,eAAe,GAAG,UAAU,CAAC;IACjC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtF,eAAe,GAAG,YAAY,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7G,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAC5B,iBAAyB,EACzB,KAA0B,EAC1B,MAAuC,EACvC,SAAoB,EACL,EAAE;IACjB,MAAM,CAAC,IAAI,CAAC,wBAAwB,iBAAiB,EAAE,CAAC,CAAC;IACzD,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;IAElC,qDAAqD;IACrD,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAElF,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,YAAqB;QAC3B,IAAI,EAAE;YACJ,eAAe,EAAE,iBAAiB;YAClC,KAAK;SACN;QACD,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE;QACtC,aAAa,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE;KAC3C,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAE3D,IAAI,MAAM,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;QACvC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC;QACrC,MAAM,CAAC,IAAI,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAC/B,MAAM,CAAC,KAAK,CAAC,iBAAiB,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtD,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAC5D,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,SAAoB,EAAW,EAAE;IACvF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAE3C,OAAO;SACJ,WAAW,CAAC,wCAAwC,CAAC;SACrD,QAAQ,CAAC,aAAa,EAAE,sDAAsD,CAAC;SAC/E,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,qEAAqE,EAAE,OAAO,CAAC;SAC7G,MAAM,CAAC,KAAK,EAAE,YAAqB,EAAE,OAAgD,EAAE,EAAE;QACxF,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAEjE,MAAM,gBAAgB,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACtE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,WAAW,CAAC,KAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;;;;KAYC,CACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import type { Analytics } from '../utils/analytics';
|
|
3
|
+
import { Config } from '../utils/config';
|
|
4
|
+
export declare const createCheckTypesCommand: (config: Config, analytics: Analytics) => Command;
|
|
5
|
+
//# sourceMappingURL=check-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-types.d.ts","sourceRoot":"","sources":["../../../src/commands/check-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAwDzC,eAAO,MAAM,uBAAuB,WAAY,MAAM,aAAa,SAAS,KAAG,OAyC9E,CAAC"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import path from 'path';
|
|
3
|
+
import { createOutput } from '../utils/terminal.js';
|
|
4
|
+
import { handleError } from '../utils/errors.js';
|
|
5
|
+
const determineTargetDirectory = (directoryArg, options) => {
|
|
6
|
+
let targetDirectory = './server';
|
|
7
|
+
if (directoryArg !== undefined && directoryArg !== null && directoryArg.trim() !== '') {
|
|
8
|
+
targetDirectory = directoryArg;
|
|
9
|
+
}
|
|
10
|
+
else if (options?.directory !== undefined && options.directory !== null && options.directory.trim() !== '') {
|
|
11
|
+
targetDirectory = options.directory;
|
|
12
|
+
}
|
|
13
|
+
return path.resolve(targetDirectory);
|
|
14
|
+
};
|
|
15
|
+
const handleTypeCheck = async (resolvedDirectory, scope, output, analytics) => {
|
|
16
|
+
output.info(`🔍 Running TypeScript type check on: ${resolvedDirectory}`);
|
|
17
|
+
output.info(` Scope: ${scope}`);
|
|
18
|
+
// Dynamic import to avoid circular dependency issues
|
|
19
|
+
const { handleCheckTypesCommand } = await import('@auto-engineer/backend-checks');
|
|
20
|
+
const checkCommand = {
|
|
21
|
+
type: 'CheckTypes',
|
|
22
|
+
data: {
|
|
23
|
+
targetDirectory: resolvedDirectory,
|
|
24
|
+
scope,
|
|
25
|
+
},
|
|
26
|
+
timestamp: new Date(),
|
|
27
|
+
requestId: `check-types-${Date.now()}`,
|
|
28
|
+
correlationId: `check-types-${Date.now()}`,
|
|
29
|
+
};
|
|
30
|
+
const result = await handleCheckTypesCommand(checkCommand);
|
|
31
|
+
if (result.type === 'TypeCheckPassed') {
|
|
32
|
+
output.success('✅ Type check passed');
|
|
33
|
+
output.info(` Checked ${result.data.checkedFiles} files`);
|
|
34
|
+
await analytics.track({ command: 'check:types:complete', success: true });
|
|
35
|
+
}
|
|
36
|
+
else {
|
|
37
|
+
output.error(`❌ Type check failed`);
|
|
38
|
+
if (result.data.failedFiles.length > 0) {
|
|
39
|
+
output.error(` Failed files: ${result.data.failedFiles.join(', ')}`);
|
|
40
|
+
}
|
|
41
|
+
if (result.data.errors) {
|
|
42
|
+
output.error(` Errors:\n${result.data.errors.substring(0, 500)}`);
|
|
43
|
+
}
|
|
44
|
+
await analytics.track({ command: 'check:types:failed', success: false });
|
|
45
|
+
process.exit(1);
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export const createCheckTypesCommand = (config, analytics) => {
|
|
49
|
+
const output = createOutput(config);
|
|
50
|
+
const command = new Command('check:types');
|
|
51
|
+
command
|
|
52
|
+
.description('Run TypeScript type checking on backend code')
|
|
53
|
+
.argument('[directory]', 'Path to the directory to check (defaults to ./server)')
|
|
54
|
+
.option('-d, --directory <path>', 'Target directory path (alternative to argument)')
|
|
55
|
+
.option('-s, --scope <scope>', 'Check scope: "slice" (target dir only) or "project" (entire project)', 'slice')
|
|
56
|
+
.action(async (directoryArg, options) => {
|
|
57
|
+
try {
|
|
58
|
+
await analytics.track({ command: 'check:types:start', success: true });
|
|
59
|
+
const resolvedDirectory = determineTargetDirectory(directoryArg, options);
|
|
60
|
+
const scope = options?.scope === 'project' ? 'project' : 'slice';
|
|
61
|
+
await handleTypeCheck(resolvedDirectory, scope, output, analytics);
|
|
62
|
+
}
|
|
63
|
+
catch (error) {
|
|
64
|
+
await analytics.track({ command: 'check:types:error', success: false });
|
|
65
|
+
handleError(error);
|
|
66
|
+
process.exit(1);
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
command.addHelpText('after', `
|
|
70
|
+
Examples:
|
|
71
|
+
$ auto check:types
|
|
72
|
+
$ auto check:types ./server
|
|
73
|
+
$ auto check:types --directory ./backend
|
|
74
|
+
$ auto check:types ./server --scope project
|
|
75
|
+
|
|
76
|
+
Notes:
|
|
77
|
+
- By default checks only the specified directory (slice scope)
|
|
78
|
+
- Use --scope project to check the entire project
|
|
79
|
+
- Exit code 0 on success, 1 on failure
|
|
80
|
+
`);
|
|
81
|
+
return command;
|
|
82
|
+
};
|
|
83
|
+
//# sourceMappingURL=check-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-types.js","sourceRoot":"","sources":["../../../src/commands/check-types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,MAAM,wBAAwB,GAAG,CAAC,YAAqB,EAAE,OAAgD,EAAU,EAAE;IACnH,IAAI,eAAe,GAAG,UAAU,CAAC;IACjC,IAAI,YAAY,KAAK,SAAS,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACtF,eAAe,GAAG,YAAY,CAAC;IACjC,CAAC;SAAM,IAAI,OAAO,EAAE,SAAS,KAAK,SAAS,IAAI,OAAO,CAAC,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC7G,eAAe,GAAG,OAAO,CAAC,SAAS,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;AACvC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,KAAK,EAC3B,iBAAyB,EACzB,KAA0B,EAC1B,MAAuC,EACvC,SAAoB,EACL,EAAE;IACjB,MAAM,CAAC,IAAI,CAAC,wCAAwC,iBAAiB,EAAE,CAAC,CAAC;IACzE,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,EAAE,CAAC,CAAC;IAElC,qDAAqD;IACrD,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;IAElF,MAAM,YAAY,GAAG;QACnB,IAAI,EAAE,YAAqB;QAC3B,IAAI,EAAE;YACJ,eAAe,EAAE,iBAAiB;YAClC,KAAK;SACN;QACD,SAAS,EAAE,IAAI,IAAI,EAAE;QACrB,SAAS,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE;QACtC,aAAa,EAAE,eAAe,IAAI,CAAC,GAAG,EAAE,EAAE;KAC3C,CAAC;IAEF,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,YAAY,CAAC,CAAC;IAE3D,IAAI,MAAM,CAAC,IAAI,KAAK,iBAAiB,EAAE,CAAC;QACtC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QACtC,MAAM,CAAC,IAAI,CAAC,cAAc,MAAM,CAAC,IAAI,CAAC,YAAY,QAAQ,CAAC,CAAC;QAC5D,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACpC,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvC,MAAM,CAAC,KAAK,CAAC,oBAAoB,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzE,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACvB,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,MAAc,EAAE,SAAoB,EAAW,EAAE;IACvF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,aAAa,CAAC,CAAC;IAE3C,OAAO;SACJ,WAAW,CAAC,8CAA8C,CAAC;SAC3D,QAAQ,CAAC,aAAa,EAAE,uDAAuD,CAAC;SAChF,MAAM,CAAC,wBAAwB,EAAE,iDAAiD,CAAC;SACnF,MAAM,CAAC,qBAAqB,EAAE,sEAAsE,EAAE,OAAO,CAAC;SAC9G,MAAM,CAAC,KAAK,EAAE,YAAqB,EAAE,OAAgD,EAAE,EAAE;QACxF,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAEvE,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;YAC1E,MAAM,KAAK,GAAG,OAAO,EAAE,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;YAEjE,MAAM,eAAe,CAAC,iBAAiB,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACxE,WAAW,CAAC,KAAc,CAAC,CAAC;YAC5B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,CAAC,WAAW,CACjB,OAAO,EACP;;;;;;;;;;;KAWC,CACF,CAAC;IAEF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { Config } from '../utils/config';
|
|
3
|
+
import { Analytics } from '../utils/analytics';
|
|
4
|
+
export declare const createCopyExampleCommand: (config: Config, analytics: Analytics) => Command;
|
|
5
|
+
//# sourceMappingURL=copy-example.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-example.d.ts","sourceRoot":"","sources":["../../../src/commands/copy-example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,eAAO,MAAM,wBAAwB,WAAY,MAAM,aAAa,SAAS,KAAG,OAyD/E,CAAC"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { createOutput } from '../utils/terminal.js';
|
|
3
|
+
import { handleError } from '../utils/errors.js';
|
|
4
|
+
export const createCopyExampleCommand = (config, analytics) => {
|
|
5
|
+
const output = createOutput(config);
|
|
6
|
+
const command = new Command('copy:example');
|
|
7
|
+
command
|
|
8
|
+
.description('Copy a starter template to the current directory')
|
|
9
|
+
.argument('<starter-name>', 'Name of the starter to copy (shadcn-starter or mui-starter)')
|
|
10
|
+
.option('--directory <path>', 'Target directory (defaults to current directory)')
|
|
11
|
+
.action(async (starterName, options) => {
|
|
12
|
+
try {
|
|
13
|
+
await analytics.track({ command: 'copy:example:start', success: true });
|
|
14
|
+
const targetDirectory = options.directory ?? process.cwd();
|
|
15
|
+
output.info(`Copying starter "${starterName}" to ${targetDirectory}/.auto/${starterName}...`);
|
|
16
|
+
// Import the handler
|
|
17
|
+
const { handleCopyExampleCommand } = await import('@auto-engineer/react-graphql-generator');
|
|
18
|
+
const copyCommand = {
|
|
19
|
+
type: 'CopyExample',
|
|
20
|
+
data: {
|
|
21
|
+
starterName,
|
|
22
|
+
targetDir: targetDirectory,
|
|
23
|
+
},
|
|
24
|
+
timestamp: new Date(),
|
|
25
|
+
requestId: `copy-example-${Date.now()}`,
|
|
26
|
+
};
|
|
27
|
+
const result = await handleCopyExampleCommand(copyCommand);
|
|
28
|
+
if (result.type === 'ExampleCopied') {
|
|
29
|
+
output.success(`✅ Starter "${starterName}" copied successfully to ${result.data.targetDir}`);
|
|
30
|
+
output.info('');
|
|
31
|
+
output.info('Next steps:');
|
|
32
|
+
output.info(`1. Navigate to the starter: cd ${result.data.targetDir}`);
|
|
33
|
+
output.info('2. Install dependencies: npm install');
|
|
34
|
+
output.info('3. Start development: npm run dev');
|
|
35
|
+
await analytics.track({ command: 'copy:example', success: true });
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
output.error(`❌ Failed to copy starter: ${result.data.error}`);
|
|
39
|
+
await analytics.track({ command: 'copy:example', success: false, errorCode: result.data.error });
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
await analytics.track({
|
|
45
|
+
command: 'copy:example',
|
|
46
|
+
success: false,
|
|
47
|
+
errorCode: error instanceof Error ? error.message : String(error),
|
|
48
|
+
});
|
|
49
|
+
handleError(error instanceof Error ? error : new Error(String(error)));
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
return command;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=copy-example.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"copy-example.js","sourceRoot":"","sources":["../../../src/commands/copy-example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,MAAc,EAAE,SAAoB,EAAW,EAAE;IACxF,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC;IAE5C,OAAO;SACJ,WAAW,CAAC,kDAAkD,CAAC;SAC/D,QAAQ,CAAC,gBAAgB,EAAE,6DAA6D,CAAC;SACzF,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,CAAC;SAChF,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAA+B,EAAE,EAAE;QACrE,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAExE,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAE3D,MAAM,CAAC,IAAI,CAAC,oBAAoB,WAAW,QAAQ,eAAe,UAAU,WAAW,KAAK,CAAC,CAAC;YAE9F,qBAAqB;YACrB,MAAM,EAAE,wBAAwB,EAAE,GAAG,MAAM,MAAM,CAAC,wCAAwC,CAAC,CAAC;YAE5F,MAAM,WAAW,GAAG;gBAClB,IAAI,EAAE,aAAsB;gBAC5B,IAAI,EAAE;oBACJ,WAAW;oBACX,SAAS,EAAE,eAAe;iBAC3B;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,gBAAgB,IAAI,CAAC,GAAG,EAAE,EAAE;aACxC,CAAC;YAEF,MAAM,MAAM,GAAG,MAAM,wBAAwB,CAAC,WAAW,CAAC,CAAC;YAE3D,IAAI,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBACpC,MAAM,CAAC,OAAO,CAAC,cAAc,WAAW,4BAA4B,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBAC7F,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAChB,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC3B,MAAM,CAAC,IAAI,CAAC,kCAAkC,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;gBACvE,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;gBACpD,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;gBAEjD,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,6BAA6B,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC/D,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,SAAS,CAAC,KAAK,CAAC;gBACpB,OAAO,EAAE,cAAc;gBACvB,OAAO,EAAE,KAAK;gBACd,SAAS,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAClE,CAAC,CAAC;YACH,WAAW,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACzE,CAAC;IACH,CAAC,CAAC,CAAC;IAEL,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
|
|
@@ -14,7 +14,7 @@ export const createCreateExampleCommand = (config, analytics) => {
|
|
|
14
14
|
const targetDirectory = options.directory ?? process.cwd();
|
|
15
15
|
output.info(`Creating example "${exampleName}" in ${targetDirectory}...`);
|
|
16
16
|
// Import the handler
|
|
17
|
-
const { handleCreateExampleCommand } = await import('@auto-engineer/flowlang
|
|
17
|
+
const { handleCreateExampleCommand } = await import('@auto-engineer/flowlang');
|
|
18
18
|
const createCommand = {
|
|
19
19
|
type: 'CreateExample',
|
|
20
20
|
data: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-example.js","sourceRoot":"","sources":["../../../src/commands/create-example.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAG9C,MAAM,CAAC,MAAM,0BAA0B,GAAG,CAAC,MAAc,EAAE,SAAoB,EAAW,EAAE;IAC1F,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC;IAEpC,MAAM,OAAO,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAE9C,OAAO;SACJ,WAAW,CAAC,2BAA2B,CAAC;SACxC,QAAQ,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;SAC3D,MAAM,CAAC,oBAAoB,EAAE,kDAAkD,CAAC;SAChF,MAAM,CAAC,KAAK,EAAE,WAAmB,EAAE,OAA+B,EAAE,EAAE;QACrE,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,sBAAsB,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAE1E,MAAM,eAAe,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAE3D,MAAM,CAAC,IAAI,CAAC,qBAAqB,WAAW,QAAQ,eAAe,KAAK,CAAC,CAAC;YAE1E,qBAAqB;YACrB,MAAM,EAAE,0BAA0B,EAAE,GAAG,MAAM,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"create-example.js","sourceRoot":"","sources":["../../../src/commands/create-example.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.js
CHANGED
|
@@ -11,6 +11,7 @@ import { handleError } from './utils/errors.js';
|
|
|
11
11
|
import { createOutput, supportsColor } from './utils/terminal.js';
|
|
12
12
|
import { Analytics } from './utils/analytics.js';
|
|
13
13
|
import { createCreateExampleCommand } from './commands/create-example.js';
|
|
14
|
+
import { createCopyExampleCommand } from './commands/copy-example.js';
|
|
14
15
|
import { createExportSchemaCommand } from './commands/export-schema.js';
|
|
15
16
|
import { createGenerateServerCommand } from './commands/generate-server.js';
|
|
16
17
|
import { createGenerateGQLSchemaCommand } from './commands/generate-gql-schema.js';
|
|
@@ -20,6 +21,9 @@ import { createGenerateIACommand } from './commands/generate-ia.js';
|
|
|
20
21
|
import { createGenerateClientCommand } from './commands/generate-client.js';
|
|
21
22
|
import { createImplementClientCommand } from './commands/implement-client.js';
|
|
22
23
|
import { createCheckClientCommand } from './commands/check-client.js';
|
|
24
|
+
import { createCheckTypesCommand } from './commands/check-types.js';
|
|
25
|
+
import { createCheckTestsCommand } from './commands/check-tests.js';
|
|
26
|
+
import { createCheckLintCommand } from './commands/check-lint.js';
|
|
23
27
|
const VERSION = process.env.npm_package_version ?? '0.1.2';
|
|
24
28
|
const checkNodeVersion = () => {
|
|
25
29
|
const nodeVersion = process.version;
|
|
@@ -79,6 +83,7 @@ const setupProgram = (config) => {
|
|
|
79
83
|
const program = createCLI();
|
|
80
84
|
const analytics = new Analytics(config);
|
|
81
85
|
program.addCommand(createCreateExampleCommand(config, analytics));
|
|
86
|
+
program.addCommand(createCopyExampleCommand(config, analytics));
|
|
82
87
|
program.addCommand(createExportSchemaCommand(config, analytics));
|
|
83
88
|
program.addCommand(createGenerateServerCommand(config, analytics));
|
|
84
89
|
program.addCommand(createGenerateGQLSchemaCommand(config, analytics));
|
|
@@ -88,27 +93,77 @@ const setupProgram = (config) => {
|
|
|
88
93
|
program.addCommand(createGenerateClientCommand(config, analytics));
|
|
89
94
|
program.addCommand(createImplementClientCommand(config, analytics));
|
|
90
95
|
program.addCommand(createCheckClientCommand(config, analytics));
|
|
96
|
+
program.addCommand(createCheckTypesCommand(config, analytics));
|
|
97
|
+
program.addCommand(createCheckTestsCommand(config, analytics));
|
|
98
|
+
program.addCommand(createCheckLintCommand(config, analytics));
|
|
91
99
|
program.addHelpText('after', `
|
|
100
|
+
Commands:
|
|
101
|
+
|
|
102
|
+
${chalk.cyan('🎯 Flow Development')}
|
|
103
|
+
create:example <name> Current options: ['shopping-assistant']
|
|
104
|
+
export:schema <context> <flows> Export flow schemas to context directory
|
|
105
|
+
|
|
106
|
+
${chalk.cyan('⚙️ Backend Generation')}
|
|
107
|
+
generate:server <schema> <dest> Generate server from schema.json
|
|
108
|
+
implement:server <server-dir> AI implements server TODOs and tests
|
|
109
|
+
|
|
110
|
+
${chalk.cyan('🎨 Design System & Frontend')}
|
|
111
|
+
import:design-system <src> <mode> [filter] Import Figma design system
|
|
112
|
+
generate:ia <context> <flows...> Generate Information Architecture
|
|
113
|
+
generate:client <starter> <client> <ia> <gql> [vars] Generate React client app
|
|
114
|
+
implement:client <client> <context> <principles> <design> AI implements client
|
|
115
|
+
|
|
116
|
+
${chalk.cyan('✅ Validation & Testing')}
|
|
117
|
+
check:types <directory> TypeScript type checking
|
|
118
|
+
check:tests <directory> Run Vitest test suites
|
|
119
|
+
check:lint <directory> [--fix] ESLint with optional auto-fix
|
|
120
|
+
check:client <client-dir> Full frontend validation suite
|
|
121
|
+
|
|
92
122
|
Examples:
|
|
93
123
|
|
|
94
|
-
$
|
|
95
|
-
$
|
|
96
|
-
$ auto
|
|
97
|
-
$
|
|
98
|
-
$ auto
|
|
99
|
-
|
|
100
|
-
$
|
|
101
|
-
$ auto
|
|
102
|
-
$ auto
|
|
124
|
+
${chalk.gray('# Complete flow from scratch')}
|
|
125
|
+
$ mkdir shopping-assistant && cd shopping-assistant
|
|
126
|
+
$ auto create:example shopping-assistant
|
|
127
|
+
$ cd shopping-assistant && pnpm install
|
|
128
|
+
$ auto export:schema ./.context ./flows
|
|
129
|
+
|
|
130
|
+
${chalk.gray('# Generate and implement backend')}
|
|
131
|
+
$ auto generate:server .context/schema.json .
|
|
132
|
+
$ auto implement:server ./server
|
|
133
|
+
$ auto check:types ./server
|
|
134
|
+
$ auto check:tests ./server
|
|
135
|
+
|
|
136
|
+
${chalk.gray('# Import design system and generate frontend (Shadcn)')}
|
|
137
|
+
$ auto import:design-system ./.context WITH_COMPONENT_SETS ./shadcn-filter.ts
|
|
138
|
+
$ auto generate:ia ./.context ./flows/*.flow.ts
|
|
139
|
+
$ auto generate:client ./shadcn-starter ./client ./auto-ia.json ./schema.graphql ./figma-vars.json
|
|
140
|
+
$ auto implement:client ./client ./.context ./design-principles.md ./design-system.md
|
|
141
|
+
|
|
142
|
+
${chalk.gray('# Run validation checks')}
|
|
143
|
+
$ auto check:types ./server --scope project
|
|
144
|
+
$ auto check:tests ./server
|
|
145
|
+
$ auto check:lint ./server --fix
|
|
146
|
+
$ auto check:client ./client
|
|
103
147
|
|
|
104
148
|
Environment Variables:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
149
|
+
${chalk.gray('AI Providers (need at least one):')}
|
|
150
|
+
ANTHROPIC_API_KEY Anthropic Claude API key
|
|
151
|
+
OPENAI_API_KEY OpenAI API key
|
|
152
|
+
GEMINI_API_KEY Google Gemini API key
|
|
153
|
+
XAI_API_KEY X.AI Grok API key
|
|
154
|
+
|
|
155
|
+
${chalk.gray('Debugging & Configuration:')}
|
|
156
|
+
DEBUG=* Enable all debug output
|
|
157
|
+
DEBUG=auto-engineer:* Enable auto-engineer debug only
|
|
158
|
+
NO_COLOR=1 Disable colored output
|
|
159
|
+
AUTO_ENGINEER_ANALYTICS=false Disable usage analytics
|
|
160
|
+
|
|
161
|
+
Tips:
|
|
162
|
+
• Use DEBUG=* to troubleshoot command issues, then narrow the debug scope down to specific command(s)
|
|
163
|
+
• Run 'pnpm install' after create:example
|
|
164
|
+
• Ensure servers are running before check:client
|
|
110
165
|
|
|
111
|
-
For
|
|
166
|
+
For docs & support: https://github.com/SamHatoum/auto-engineer
|
|
112
167
|
`);
|
|
113
168
|
return program;
|
|
114
169
|
};
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,QAAQ,MAAM,iBAAiB,CAAC;AACvC,OAAO,MAAM,MAAM,QAAQ,CAAC;AAC5B,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AAEzB,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|