create-auto-app 0.2.2 → 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.
- package/package.json +1 -1
- package/templates/shopping-app/auto.config.ts +129 -4
- package/templates/shopping-app/client/package.json +1 -1
- package/templates/shopping-app/example-integrations/ai-chat-completion/package.json +1 -1
- package/templates/shopping-app/example-integrations/cart/package.json +1 -1
- package/templates/shopping-app/example-integrations/product-catalogue/package.json +1 -1
- package/templates/shopping-app/package.json +3 -3
- package/templates/shopping-app/server/package.json +1 -1
package/package.json
CHANGED
|
@@ -1,6 +1,14 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
import { on, dispatch, fold } from '@auto-engineer/cli';
|
|
2
|
+
import type { Command, Event } from '@auto-engineer/message-bus';
|
|
3
|
+
import { type ExportSchemaCommand, type SchemaExportedEvent, type SchemaExportFailedEvent } from '@auto-engineer/flow';
|
|
4
|
+
import { type GenerateServerCommand, type ServerGeneratedEvent, type ServerGenerationFailedEvent } from '@auto-engineer/server-generator-apollo-emmett';
|
|
5
|
+
import { type ImplementServerCommand, type ServerImplementedEvent, type ServerImplementationFailedEvent } from '@auto-engineer/server-implementer';
|
|
6
|
+
import { type CheckTypesCommand, type TypeCheckPassedEvent, type TypeCheckFailedEvent, CheckTestsCommand, CheckLintCommand } from '@auto-engineer/server-checks';
|
|
7
|
+
import { CheckClientCommand } from '@auto-engineer/frontend-checks';
|
|
8
|
+
import { type GenerateIACommand, type IAGeneratedEvent, type IAGenerationFailedEvent } from '@auto-engineer/information-architect';
|
|
9
|
+
import { type ImplementClientCommand, type ClientImplementedEvent, type ClientImplementationFailedEvent } from '@auto-engineer/frontend-implementer';
|
|
3
10
|
|
|
11
|
+
// Plugin configuration
|
|
4
12
|
export default {
|
|
5
13
|
plugins: [
|
|
6
14
|
'@auto-engineer/server-checks',
|
|
@@ -15,7 +23,124 @@ export default {
|
|
|
15
23
|
],
|
|
16
24
|
|
|
17
25
|
aliases: {
|
|
18
|
-
//
|
|
19
|
-
// 'test:types': checkTypesCommandHandler,
|
|
26
|
+
// Resolve command name conflicts between packages
|
|
27
|
+
// 'test:types': checkTypesCommandHandler,
|
|
20
28
|
},
|
|
21
29
|
};
|
|
30
|
+
|
|
31
|
+
// ===== Pipeline Orchestration with DSL =====
|
|
32
|
+
|
|
33
|
+
// State management: Track pipeline status
|
|
34
|
+
const pipelineStatus = fold<string, Event>(
|
|
35
|
+
'*', // Listen to all events
|
|
36
|
+
(state = 'idle', event) => {
|
|
37
|
+
switch (event.type) {
|
|
38
|
+
case 'SchemaExported':
|
|
39
|
+
return 'schema-exported';
|
|
40
|
+
case 'ServerGenerated':
|
|
41
|
+
return 'server-generated';
|
|
42
|
+
case 'ServerImplemented':
|
|
43
|
+
return 'server-implemented';
|
|
44
|
+
case 'TypeCheckPassed':
|
|
45
|
+
return 'checks-passed';
|
|
46
|
+
case 'TypeCheckFailed':
|
|
47
|
+
return 'checks-failed';
|
|
48
|
+
case 'IAGenerated':
|
|
49
|
+
return 'ia-generated';
|
|
50
|
+
case 'ClientImplemented':
|
|
51
|
+
return 'client-implemented';
|
|
52
|
+
default:
|
|
53
|
+
return state;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
);
|
|
57
|
+
|
|
58
|
+
// State: Track last error
|
|
59
|
+
const lastError = fold<any, Event>(
|
|
60
|
+
'*',
|
|
61
|
+
(state = null, event) => {
|
|
62
|
+
if (event.type.endsWith('Failed') || event.type.endsWith('Error')) {
|
|
63
|
+
return {
|
|
64
|
+
type: event.type,
|
|
65
|
+
data: event.data,
|
|
66
|
+
timestamp: new Date().toISOString(),
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
return state;
|
|
70
|
+
}
|
|
71
|
+
);
|
|
72
|
+
|
|
73
|
+
// State: Track completed operations
|
|
74
|
+
const completedOperations = fold<string[], Event>(
|
|
75
|
+
'*',
|
|
76
|
+
(state = [], event) => {
|
|
77
|
+
if (event.type.endsWith('Passed') || event.type.endsWith('Generated') || event.type.endsWith('Implemented')) {
|
|
78
|
+
return [...state, event.type];
|
|
79
|
+
}
|
|
80
|
+
return state;
|
|
81
|
+
}
|
|
82
|
+
);
|
|
83
|
+
|
|
84
|
+
on<SchemaExportedEvent>('SchemaExported', (event) => dispatch<GenerateServerCommand>(
|
|
85
|
+
{ type: 'GenerateServer', data: { schemaPath: event.data.outputPath, destination: event.data.outputPath.replace('/schema.json', '/server') } }
|
|
86
|
+
));
|
|
87
|
+
|
|
88
|
+
on<ServerGeneratedEvent>('ServerGenerated', (event) => dispatch.parallel<ImplementServerCommand | GenerateIACommand>([
|
|
89
|
+
{ type: 'ImplementServer', data: { serverDirectory: event.data.serverDir } },
|
|
90
|
+
{ type: 'GenerateIA', data: { outputDir: event.data.destination + '/.context', flowFiles: [event.data.schemaPath] } },
|
|
91
|
+
]));
|
|
92
|
+
|
|
93
|
+
on<ServerImplementedEvent>('ServerImplemented', (event) => dispatch.parallel<CheckTypesCommand | CheckTestsCommand | CheckLintCommand>([
|
|
94
|
+
{ type: 'CheckTypes', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
|
|
95
|
+
{ type: 'CheckTests', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } },
|
|
96
|
+
{ type: 'CheckLint', data: { targetDirectory: event.data.serverDirectory, scope: 'project' } }
|
|
97
|
+
]));
|
|
98
|
+
|
|
99
|
+
on<IAGeneratedEvent>('IAGenerated', (event) => dispatch<ImplementClientCommand>(
|
|
100
|
+
{ type: 'ImplementClient', data: { projectDir: event.data.outputDir.replace('/.context', '/client'), iaSchemeDir: event.data.outputDir, designSystemPath: './.context/design-system.md' } }
|
|
101
|
+
));
|
|
102
|
+
|
|
103
|
+
on<ClientImplementedEvent>('ClientImplemented', (event) => dispatch<CheckClientCommand>(
|
|
104
|
+
{ type: 'CheckClient', data: { clientDirectory: './client', skipBrowserChecks: true } }
|
|
105
|
+
));
|
|
106
|
+
|
|
107
|
+
// on<ClientImplementationFailedEvent>('ClientImplementationFailed', (event) =>
|
|
108
|
+
// dispatch<ImplementClientCommand>({
|
|
109
|
+
// type: 'ImplementClient',
|
|
110
|
+
// data: {
|
|
111
|
+
// projectDir: event.data.projectDir || './client',
|
|
112
|
+
// iaSchemeDir: './.context',
|
|
113
|
+
// designSystemPath: './.context/design-system.md',
|
|
114
|
+
// },
|
|
115
|
+
// })
|
|
116
|
+
// );
|
|
117
|
+
|
|
118
|
+
// on<TypeCheckFailedEvent>('TypeCheckFailed', (event) =>
|
|
119
|
+
// dispatch<ImplementServerCommand>({
|
|
120
|
+
// type: 'ImplementServer',
|
|
121
|
+
// data: {
|
|
122
|
+
// serverDirectory: event.data.targetDirectory,
|
|
123
|
+
// },
|
|
124
|
+
// })
|
|
125
|
+
// );
|
|
126
|
+
|
|
127
|
+
// let retryCount = 0;
|
|
128
|
+
// on<TypeCheckFailedEvent>('TypeCheckFailed', (event) => {
|
|
129
|
+
// retryCount++;
|
|
130
|
+
// if (retryCount > 3) {
|
|
131
|
+
// retryCount = 0;
|
|
132
|
+
// // Regenerate server from scratch
|
|
133
|
+
// return dispatch<GenerateServerCommand>({
|
|
134
|
+
// type: 'GenerateServer',
|
|
135
|
+
// data: {
|
|
136
|
+
// schemaPath: event.data.targetDirectory.replace('/server', '') + '/schema.json',
|
|
137
|
+
// destination: event.data.targetDirectory.replace('/server', ''),
|
|
138
|
+
// },
|
|
139
|
+
// });
|
|
140
|
+
// }
|
|
141
|
+
// });
|
|
142
|
+
|
|
143
|
+
// // Reset retry count on success
|
|
144
|
+
// on<TypeCheckPassedEvent>('TypeCheckPassed', () => {
|
|
145
|
+
// retryCount = 0;
|
|
146
|
+
// });
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
"dependencies": {
|
|
22
22
|
"@apollo/client": "^3.13.8",
|
|
23
23
|
"@auto-engineer/ai-gateway": "^0.4.2",
|
|
24
|
-
"@auto-engineer/frontend-generator-react-graphql": "^0.3
|
|
24
|
+
"@auto-engineer/frontend-generator-react-graphql": "^0.1.3",
|
|
25
25
|
"@hookform/resolvers": "^3.10.0",
|
|
26
26
|
"@radix-ui/react-accordion": "^1.2.11",
|
|
27
27
|
"@radix-ui/react-alert-dialog": "^1.1.14",
|
|
@@ -11,14 +11,14 @@
|
|
|
11
11
|
},
|
|
12
12
|
"dependencies": {
|
|
13
13
|
"@auto-engineer/message-bus": "latest",
|
|
14
|
-
"@auto-engineer/server-checks": "latest",
|
|
15
14
|
"@auto-engineer/design-system-importer": "latest",
|
|
16
|
-
"@auto-engineer/server-generator-apollo-emmett": "latest",
|
|
17
15
|
"@auto-engineer/flow": "latest",
|
|
18
16
|
"@auto-engineer/frontend-checks": "latest",
|
|
19
17
|
"@auto-engineer/frontend-implementer": "latest",
|
|
20
|
-
"@auto-engineer/information-architect": "latest",
|
|
21
18
|
"@auto-engineer/frontend-generator-react-graphql": "latest",
|
|
19
|
+
"@auto-engineer/information-architect": "latest",
|
|
20
|
+
"@auto-engineer/server-checks": "latest",
|
|
21
|
+
"@auto-engineer/server-generator-apollo-emmett": "latest",
|
|
22
22
|
"@auto-engineer/server-implementer": "latest"
|
|
23
23
|
},
|
|
24
24
|
"devDependencies": {
|