@auto-engineer/react-gen 1.135.0 → 1.137.0
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/dist/src/agents/create-codegen-agent.d.ts +5 -0
- package/dist/src/agents/create-codegen-agent.d.ts.map +1 -0
- package/dist/src/agents/create-codegen-agent.js +30 -0
- package/dist/src/agents/create-codegen-agent.js.map +1 -0
- package/dist/src/agents/create-constants-agent.d.ts.map +1 -1
- package/dist/src/agents/create-constants-agent.js +25 -8
- package/dist/src/agents/create-constants-agent.js.map +1 -1
- package/dist/src/agents/create-landing-page-agent.d.ts.map +1 -1
- package/dist/src/agents/create-landing-page-agent.js +3 -4
- package/dist/src/agents/create-landing-page-agent.js.map +1 -1
- package/dist/src/agents/create-narrative-agent.d.ts.map +1 -1
- package/dist/src/agents/create-narrative-agent.js +4 -5
- package/dist/src/agents/create-narrative-agent.js.map +1 -1
- package/dist/src/agents/create-pipeline.d.ts +1 -0
- package/dist/src/agents/create-pipeline.d.ts.map +1 -1
- package/dist/src/agents/create-pipeline.js +4 -2
- package/dist/src/agents/create-pipeline.js.map +1 -1
- package/dist/src/agents/create-router-agent.d.ts.map +1 -1
- package/dist/src/agents/create-router-agent.js +3 -4
- package/dist/src/agents/create-router-agent.js.map +1 -1
- package/dist/src/agents/create-theme-agent.d.ts.map +1 -1
- package/dist/src/agents/create-theme-agent.js +3 -4
- package/dist/src/agents/create-theme-agent.js.map +1 -1
- package/dist/src/agents/create-validation-agent.d.ts.map +1 -1
- package/dist/src/agents/create-validation-agent.js +3 -4
- package/dist/src/agents/create-validation-agent.js.map +1 -1
- package/dist/src/commands/generate-react-app.d.ts.map +1 -1
- package/dist/src/commands/generate-react-app.js +2 -1
- package/dist/src/commands/generate-react-app.js.map +1 -1
- package/dist/src/prompts/build-narrative-context.d.ts +1 -1
- package/dist/src/prompts/build-narrative-context.d.ts.map +1 -1
- package/dist/src/prompts/build-narrative-context.js +25 -6
- package/dist/src/prompts/build-narrative-context.js.map +1 -1
- package/dist/src/prompts/narrative-system.d.ts +1 -1
- package/dist/src/prompts/narrative-system.d.ts.map +1 -1
- package/dist/src/prompts/narrative-system.js +15 -8
- package/dist/src/prompts/narrative-system.js.map +1 -1
- package/dist/src/prompts/router-system.d.ts +1 -1
- package/dist/src/prompts/router-system.d.ts.map +1 -1
- package/dist/src/prompts/router-system.js +2 -2
- package/dist/src/prompts/validation-system.d.ts +1 -1
- package/dist/src/prompts/validation-system.d.ts.map +1 -1
- package/dist/src/prompts/validation-system.js +5 -2
- package/dist/src/prompts/validation-system.js.map +1 -1
- package/dist/src/tools/check-imports.d.ts.map +1 -1
- package/dist/src/tools/check-imports.js +7 -2
- package/dist/src/tools/check-imports.js.map +1 -1
- package/dist/src/tools/list-files.d.ts.map +1 -1
- package/dist/src/tools/list-files.js +2 -0
- package/dist/src/tools/list-files.js.map +1 -1
- package/dist/src/tools/load-skills.d.ts +8 -0
- package/dist/src/tools/load-skills.d.ts.map +1 -0
- package/dist/src/tools/load-skills.js +28 -0
- package/dist/src/tools/load-skills.js.map +1 -0
- package/dist/src/tools/write-file.d.ts.map +1 -1
- package/dist/src/tools/write-file.js +10 -0
- package/dist/src/tools/write-file.js.map +1 -1
- package/dist/src/types.d.ts +19 -19
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/types.js +4 -4
- package/dist/src/types.js.map +1 -1
- package/dist/starter/codegen.ts +17 -0
- package/dist/starter/package.json +5 -1
- package/dist/starter/pnpm-lock.yaml +2382 -85
- package/dist/starter/src/App.tsx +1 -1
- package/dist/starter/src/gql/execute.ts +9 -0
- package/dist/starter/src/gql/fragment-masking.ts +82 -0
- package/dist/starter/src/gql/gql.ts +6 -0
- package/dist/starter/src/gql/graphql.ts +37 -0
- package/dist/starter/src/gql/index.ts +2 -0
- package/dist/starter/src/main.tsx +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/starter/codegen.ts +17 -0
- package/starter/package.json +5 -1
- package/starter/pnpm-lock.yaml +2382 -85
- package/starter/src/App.tsx +1 -1
- package/starter/src/gql/execute.ts +9 -0
- package/starter/src/gql/fragment-masking.ts +82 -0
- package/starter/src/gql/gql.ts +6 -0
- package/starter/src/gql/graphql.ts +37 -0
- package/starter/src/gql/index.ts +2 -0
- package/starter/src/main.tsx +1 -1
- package/dist/starter/package-lock.json +0 -7590
- package/starter/package-lock.json +0 -7590
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-codegen-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-codegen-agent.ts"],"names":[],"mappings":"AAOA,wBAAsB,UAAU,CAAC,IAAI,EAAE;IAAE,aAAa,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6BpG"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import createDebug from 'debug';
|
|
3
|
+
import { execaCommand } from 'execa';
|
|
4
|
+
import fs from 'fs-extra';
|
|
5
|
+
const debug = createDebug('auto:react-gen:codegen');
|
|
6
|
+
export async function runCodegen(opts) {
|
|
7
|
+
const { graphqlSchema, outputDir } = opts;
|
|
8
|
+
// Write schema to output directory
|
|
9
|
+
const schemaPath = path.join(outputDir, 'schema.graphql');
|
|
10
|
+
await fs.writeFile(schemaPath, graphqlSchema, 'utf-8');
|
|
11
|
+
debug('wrote schema.graphql');
|
|
12
|
+
// Run codegen — hard failure if it fails
|
|
13
|
+
const result = await execaCommand('npx graphql-codegen', {
|
|
14
|
+
cwd: outputDir,
|
|
15
|
+
reject: false,
|
|
16
|
+
});
|
|
17
|
+
if (result.exitCode !== 0) {
|
|
18
|
+
const output = `${result.stdout}\n${result.stderr}`.trim();
|
|
19
|
+
debug('codegen failed: %s', output);
|
|
20
|
+
throw new Error(`GraphQL codegen failed:\n${output}`);
|
|
21
|
+
}
|
|
22
|
+
debug('codegen complete');
|
|
23
|
+
// Verify output was produced
|
|
24
|
+
const gqlOutputPath = path.join(outputDir, 'src', 'gql', 'graphql.ts');
|
|
25
|
+
if (!(await fs.pathExists(gqlOutputPath))) {
|
|
26
|
+
throw new Error('GraphQL codegen did not produce src/gql/graphql.ts');
|
|
27
|
+
}
|
|
28
|
+
return 'GraphQL codegen completed successfully';
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=create-codegen-agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-codegen-agent.js","sourceRoot":"","sources":["../../../src/agents/create-codegen-agent.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,MAAM,KAAK,GAAG,WAAW,CAAC,wBAAwB,CAAC,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,IAAkD;IACjF,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,GAAG,IAAI,CAAC;IAE1C,mCAAmC;IACnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;IACvD,KAAK,CAAC,sBAAsB,CAAC,CAAC;IAE9B,yCAAyC;IACzC,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,qBAAqB,EAAE;QACvD,GAAG,EAAE,SAAS;QACd,MAAM,EAAE,KAAK;KACd,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3D,KAAK,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,4BAA4B,MAAM,EAAE,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAE1B,6BAA6B;IAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,CAAC,CAAC;IACvE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;QAC1C,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,wCAAwC,CAAC;AAClD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-constants-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-constants-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,
|
|
1
|
+
{"version":3,"file":"create-constants-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-constants-agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAS,MAAM,aAAa,CAAC;AAqCtD,wBAAsB,YAAY,CAAC,IAAI,EAAE;IAAE,KAAK,EAAE,WAAW,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BnG"}
|
|
@@ -7,19 +7,27 @@ function toConstName(name) {
|
|
|
7
7
|
.replace(/[^a-zA-Z0-9]+/g, '_')
|
|
8
8
|
.toUpperCase();
|
|
9
9
|
}
|
|
10
|
-
function
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
function isMutation(slice) {
|
|
11
|
+
if (slice.type === 'command')
|
|
12
|
+
return true;
|
|
13
|
+
if (slice.request && slice.request.trimStart().startsWith('mutation'))
|
|
14
|
+
return true;
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
function buildFile(slices, kind) {
|
|
18
|
+
if (slices.length === 0)
|
|
13
19
|
return null;
|
|
14
20
|
const lines = [
|
|
15
|
-
`// Auto-generated GraphQL
|
|
16
|
-
`// DO NOT EDIT — these are
|
|
21
|
+
`// Auto-generated GraphQL ${kind === 'query' ? 'queries' : 'mutations'} from domain model.`,
|
|
22
|
+
`// DO NOT EDIT — these are typed operations generated from the model.`,
|
|
23
|
+
``,
|
|
24
|
+
`import { graphql } from '@/gql';`,
|
|
17
25
|
``,
|
|
18
26
|
];
|
|
19
|
-
for (const slice of
|
|
27
|
+
for (const slice of slices) {
|
|
20
28
|
const constName = toConstName(slice.name);
|
|
21
29
|
lines.push(`/** Slice: "${slice.name}" (${slice.type}) */`);
|
|
22
|
-
lines.push(`export const ${constName} = \`${slice.request}
|
|
30
|
+
lines.push(`export const ${constName} = graphql(\`${slice.request}\`);`);
|
|
23
31
|
lines.push(``);
|
|
24
32
|
}
|
|
25
33
|
return lines.join('\n');
|
|
@@ -30,7 +38,16 @@ export async function runConstants(opts) {
|
|
|
30
38
|
const slug = slugify(narrative.name);
|
|
31
39
|
const dir = path.join(opts.outputDir, 'src', 'features', slug);
|
|
32
40
|
await fs.ensureDir(dir);
|
|
33
|
-
const
|
|
41
|
+
const slicesWithRequests = narrative.slices.filter((s) => s.request && s.type !== 'react');
|
|
42
|
+
const mutations = slicesWithRequests.filter((s) => isMutation(s));
|
|
43
|
+
const queries = slicesWithRequests.filter((s) => !isMutation(s));
|
|
44
|
+
const mutationsContent = buildFile(mutations, 'mutation');
|
|
45
|
+
if (mutationsContent) {
|
|
46
|
+
const fp = path.join(dir, 'mutations.ts');
|
|
47
|
+
await fs.writeFile(fp, mutationsContent, 'utf-8');
|
|
48
|
+
created.push(`src/features/${slug}/mutations.ts`);
|
|
49
|
+
}
|
|
50
|
+
const queriesContent = buildFile(queries, 'query');
|
|
34
51
|
if (queriesContent) {
|
|
35
52
|
const fp = path.join(dir, 'queries.ts');
|
|
36
53
|
await fs.writeFile(fp, queriesContent, 'utf-8');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-constants-agent.js","sourceRoot":"","sources":["../../../src/agents/create-constants-agent.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAM,UAAU,CAAC;AAE1B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI;SACR,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,
|
|
1
|
+
{"version":3,"file":"create-constants-agent.js","sourceRoot":"","sources":["../../../src/agents/create-constants-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-landing-page-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-landing-page-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,aAAa,EAAqB,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-landing-page-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-landing-page-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,aAAa,EAAqB,MAAM,IAAI,CAAC;AAOtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA8B/C,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA4BpH"}
|
|
@@ -4,8 +4,8 @@ import fs from 'fs-extra';
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { LANDING_PAGE_SYSTEM_PROMPT } from '../prompts/landing-page-system.js';
|
|
6
6
|
import { createExitLoopTool } from '../tools/exit-loop.js';
|
|
7
|
+
import { createLoadSkillsTool } from '../tools/load-skills.js';
|
|
7
8
|
import { createReadFileTool } from '../tools/read-file.js';
|
|
8
|
-
import { getSkillToolkit } from '../utils/create-skill-tool.js';
|
|
9
9
|
import { slugify } from '../utils/slugify.js';
|
|
10
10
|
const SKILL_NAMES = [
|
|
11
11
|
'design-taste-frontend',
|
|
@@ -33,7 +33,6 @@ function createWriteLandingPageTool(outputDir) {
|
|
|
33
33
|
});
|
|
34
34
|
}
|
|
35
35
|
export async function runLandingPageAgent(model, llm, outputDir) {
|
|
36
|
-
const { skill } = await getSkillToolkit();
|
|
37
36
|
const narrativeDescriptions = model.narratives
|
|
38
37
|
.map((n) => {
|
|
39
38
|
const slug = slugify(n.name);
|
|
@@ -48,9 +47,9 @@ ${narrativeDescriptions}`;
|
|
|
48
47
|
const { text } = await generateText({
|
|
49
48
|
model: llm,
|
|
50
49
|
system: `${LANDING_PAGE_SYSTEM_PROMPT}\n\n---\n\n${domainContext}`,
|
|
51
|
-
prompt: `
|
|
50
|
+
prompt: `Call load_skills once to load all design rules, then write the landing page component. Call exit_loop when done.`,
|
|
52
51
|
tools: {
|
|
53
|
-
|
|
52
|
+
load_skills: createLoadSkillsTool(SKILL_NAMES),
|
|
54
53
|
write_landing_page: createWriteLandingPageTool(outputDir),
|
|
55
54
|
read_file: createReadFileTool(outputDir),
|
|
56
55
|
exit_loop: createExitLoopTool('Call this after you have written the landing page component.'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-landing-page-agent.js","sourceRoot":"","sources":["../../../src/agents/create-landing-page-agent.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-landing-page-agent.js","sourceRoot":"","sources":["../../../src/agents/create-landing-page-agent.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,0BAA0B,EAAE,MAAM,mCAAmC,CAAC;AAC/E,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,GAAG;IAClB,uBAAuB;IACvB,yBAAyB;IACzB,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,sBAAsB;IACtB,eAAe;IACf,QAAQ;IACR,uBAAuB;CACxB,CAAC;AAEF,SAAS,0BAA0B,CAAC,SAAiB;IACnD,OAAO,IAAI,CAAC;QACV,WAAW,EAAE,qFAAqF;QAClG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kDAAkD,CAAC;SACjF,CAAC;QACF,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;YAC7B,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,YAAY,EAAE,kBAAkB,CAAC,CAAC;YAClF,MAAM,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC3C,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,iCAAiC,EAAE,CAAC;QACpE,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,KAAkB,EAAE,GAAkB,EAAE,SAAiB;IACjG,MAAM,qBAAqB,GAAG,KAAK,CAAC,UAAU;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC,CAAC,IAAI,kBAAkB,IAAI,oBAAoB,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IAC1H,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG;cACV,KAAK,CAAC,OAAO;;;EAGzB,qBAAqB,EAAE,CAAC;IAExB,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC;QAClC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG,0BAA0B,cAAc,aAAa,EAAE;QAClE,MAAM,EAAE,kHAAkH;QAC1H,KAAK,EAAE;YACL,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;YAC9C,kBAAkB,EAAE,0BAA0B,CAAC,SAAS,CAAC;YACzD,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YACxC,SAAS,EAAE,kBAAkB,CAAC,8DAA8D,CAAC;SAC9F;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-narrative-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-narrative-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAe,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-narrative-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-narrative-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAe,MAAM,IAAI,CAAC;AAOhF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAc7C,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBpH"}
|
|
@@ -2,9 +2,9 @@ import { generateText, hasToolCall, stepCountIs } from 'ai';
|
|
|
2
2
|
import { buildNarrativeContext } from '../prompts/build-narrative-context.js';
|
|
3
3
|
import { NARRATIVE_SYSTEM_PROMPT } from '../prompts/narrative-system.js';
|
|
4
4
|
import { createExitLoopTool } from '../tools/exit-loop.js';
|
|
5
|
+
import { createLoadSkillsTool } from '../tools/load-skills.js';
|
|
5
6
|
import { createReadFileTool } from '../tools/read-file.js';
|
|
6
7
|
import { createWriteFileTool } from '../tools/write-file.js';
|
|
7
|
-
import { getSkillToolkit } from '../utils/create-skill-tool.js';
|
|
8
8
|
const SKILL_NAMES = [
|
|
9
9
|
'design-taste-frontend',
|
|
10
10
|
'full-output-enforcement',
|
|
@@ -17,14 +17,13 @@ const SKILL_NAMES = [
|
|
|
17
17
|
'web-design-guidelines',
|
|
18
18
|
];
|
|
19
19
|
export async function runNarrativeAgent(narrative, llm, outputDir) {
|
|
20
|
-
const context = buildNarrativeContext(narrative);
|
|
21
|
-
const { skill } = await getSkillToolkit();
|
|
20
|
+
const context = buildNarrativeContext(narrative, outputDir);
|
|
22
21
|
const { text } = await generateText({
|
|
23
22
|
model: llm,
|
|
24
23
|
system: `${NARRATIVE_SYSTEM_PROMPT}\n\n---\n\n${context}`,
|
|
25
|
-
prompt: `
|
|
24
|
+
prompt: `Call load_skills once to load all design rules, then generate ALL component files for every slice. Call exit_loop when done.`,
|
|
26
25
|
tools: {
|
|
27
|
-
|
|
26
|
+
load_skills: createLoadSkillsTool(SKILL_NAMES),
|
|
28
27
|
write_file: createWriteFileTool(outputDir),
|
|
29
28
|
read_file: createReadFileTool(outputDir),
|
|
30
29
|
exit_loop: createExitLoopTool('Call this after you have written ALL components for the narrative. Do not exit until every slice has a corresponding component file.'),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-narrative-agent.js","sourceRoot":"","sources":["../../../src/agents/create-narrative-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-narrative-agent.js","sourceRoot":"","sources":["../../../src/agents/create-narrative-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAC9E,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,WAAW,GAAG;IAClB,uBAAuB;IACvB,yBAAyB;IACzB,6BAA6B;IAC7B,iBAAiB;IACjB,wBAAwB;IACxB,yBAAyB;IACzB,YAAY;IACZ,cAAc;IACd,uBAAuB;CACxB,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,SAAoB,EAAE,GAAkB,EAAE,SAAiB;IACjG,MAAM,OAAO,GAAG,qBAAqB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE5D,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC;QAClC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG,uBAAuB,cAAc,OAAO,EAAE;QACzD,MAAM,EAAE,8HAA8H;QACtI,KAAK,EAAE;YACL,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;YAC9C,UAAU,EAAE,mBAAmB,CAAC,SAAS,CAAC;YAC1C,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YACxC,SAAS,EAAE,kBAAkB,CAC3B,sIAAsI,CACvI;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../../src/agents/create-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"create-pipeline.d.ts","sourceRoot":"","sources":["../../../src/agents/create-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAY/C,wBAAsB,WAAW,CAAC,IAAI,EAAE;IACtC,KAAK,EAAE,WAAW,CAAC;IACnB,GAAG,EAAE,aAAa,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACvB,GAAG,OAAO,CAAC,IAAI,CAAC,CAwBhB"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import createDebug from 'debug';
|
|
2
|
+
import { runCodegen } from './create-codegen-agent.js';
|
|
2
3
|
import { runConstants } from './create-constants-agent.js';
|
|
3
4
|
import { runLandingPageAgent } from './create-landing-page-agent.js';
|
|
4
5
|
import { runNarrativeAgent } from './create-narrative-agent.js';
|
|
@@ -8,13 +9,14 @@ import { runValidationAgent } from './create-validation-agent.js';
|
|
|
8
9
|
import { runScaffold } from './scaffold-agent.js';
|
|
9
10
|
const debug = createDebug('auto:react-gen:pipeline');
|
|
10
11
|
export async function runPipeline(opts) {
|
|
11
|
-
const { model, llm, starterDir, outputDir } = opts;
|
|
12
|
+
const { model, llm, starterDir, outputDir, graphqlSchema } = opts;
|
|
12
13
|
debug('scaffold');
|
|
13
14
|
await runScaffold({ starterDir, outputDir });
|
|
14
15
|
debug('constants');
|
|
15
16
|
await runConstants({ model, outputDir });
|
|
16
|
-
debug('parallel: landing page + theme + %d narratives', model.narratives.length);
|
|
17
|
+
debug('parallel: codegen + landing page + theme + %d narratives', model.narratives.length);
|
|
17
18
|
await Promise.all([
|
|
19
|
+
runCodegen({ graphqlSchema, outputDir }),
|
|
18
20
|
runLandingPageAgent(model, llm, outputDir),
|
|
19
21
|
runThemeAgent(model, llm, outputDir),
|
|
20
22
|
...model.narratives.map((n) => runNarrativeAgent(n, llm, outputDir)),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-pipeline.js","sourceRoot":"","sources":["../../../src/agents/create-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,KAAK,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"create-pipeline.js","sourceRoot":"","sources":["../../../src/agents/create-pipeline.ts"],"names":[],"mappings":"AACA,OAAO,WAAW,MAAM,OAAO,CAAC;AAEhC,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAElD,MAAM,KAAK,GAAG,WAAW,CAAC,yBAAyB,CAAC,CAAC;AAErD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAMjC;IACC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,UAAU,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAElE,KAAK,CAAC,UAAU,CAAC,CAAC;IAClB,MAAM,WAAW,CAAC,EAAE,UAAU,EAAE,SAAS,EAAE,CAAC,CAAC;IAE7C,KAAK,CAAC,WAAW,CAAC,CAAC;IACnB,MAAM,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEzC,KAAK,CAAC,0DAA0D,EAAE,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;IAC3F,MAAM,OAAO,CAAC,GAAG,CAAC;QAChB,UAAU,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;QACxC,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC;QAC1C,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC;QACpC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;KACrE,CAAC,CAAC;IAEH,KAAK,CAAC,QAAQ,CAAC,CAAC;IAChB,MAAM,cAAc,CAAC,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;IAE5C,KAAK,CAAC,YAAY,CAAC,CAAC;IACpB,MAAM,kBAAkB,CAAC,GAAG,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;IAEhD,KAAK,CAAC,mBAAmB,CAAC,CAAC;AAC7B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-router-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-router-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAe,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-router-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-router-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAe,MAAM,IAAI,CAAC;AAOhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAW/C,wBAAsB,cAAc,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CA+B/G"}
|
|
@@ -2,9 +2,9 @@ import { generateText, hasToolCall, stepCountIs } from 'ai';
|
|
|
2
2
|
import { ROUTER_SYSTEM_PROMPT } from '../prompts/router-system.js';
|
|
3
3
|
import { createExitLoopTool } from '../tools/exit-loop.js';
|
|
4
4
|
import { createListFilesTool } from '../tools/list-files.js';
|
|
5
|
+
import { createLoadSkillsTool } from '../tools/load-skills.js';
|
|
5
6
|
import { createReadFileTool } from '../tools/read-file.js';
|
|
6
7
|
import { createWriteFileTool } from '../tools/write-file.js';
|
|
7
|
-
import { getSkillToolkit } from '../utils/create-skill-tool.js';
|
|
8
8
|
import { slugify } from '../utils/slugify.js';
|
|
9
9
|
const SKILL_NAMES = [
|
|
10
10
|
'design-taste-frontend',
|
|
@@ -14,7 +14,6 @@ const SKILL_NAMES = [
|
|
|
14
14
|
'react-doctor',
|
|
15
15
|
];
|
|
16
16
|
export async function runRouterAgent(model, llm, outputDir) {
|
|
17
|
-
const { skill } = await getSkillToolkit();
|
|
18
17
|
const narrativeDescriptions = model.narratives
|
|
19
18
|
.map((n) => {
|
|
20
19
|
const slug = slugify(n.name);
|
|
@@ -31,9 +30,9 @@ IMPORTANT: Each feature MUST be mapped to the exact route listed above. Do NOT i
|
|
|
31
30
|
const { text } = await generateText({
|
|
32
31
|
model: llm,
|
|
33
32
|
system: `${ROUTER_SYSTEM_PROMPT}\n\n---\n\n${domainContext}`,
|
|
34
|
-
prompt: `
|
|
33
|
+
prompt: `Call load_skills once to load all design rules, then write the router config. Call exit_loop when done.`,
|
|
35
34
|
tools: {
|
|
36
|
-
|
|
35
|
+
load_skills: createLoadSkillsTool(SKILL_NAMES),
|
|
37
36
|
write_file: createWriteFileTool(outputDir, { allowProtected: true }),
|
|
38
37
|
read_file: createReadFileTool(outputDir),
|
|
39
38
|
list_files: createListFilesTool(outputDir),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-router-agent.js","sourceRoot":"","sources":["../../../src/agents/create-router-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-router-agent.js","sourceRoot":"","sources":["../../../src/agents/create-router-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,MAAM,WAAW,GAAG;IAClB,uBAAuB;IACvB,yBAAyB;IACzB,iBAAiB;IACjB,6BAA6B;IAC7B,cAAc;CACf,CAAC;AAEF,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAkB,EAAE,GAAkB,EAAE,SAAiB;IAC5F,MAAM,qBAAqB,GAAG,KAAK,CAAC,UAAU;SAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,OAAO,CAAC,CAAC,IAAI,kBAAkB,IAAI,mCAAmC,IAAI,KAAK,CAAC;IACzF,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,aAAa,GAAG;cACV,KAAK,CAAC,OAAO;;;EAGzB,qBAAqB;;6GAEsF,CAAC;IAE5G,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC;QAClC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,GAAG,oBAAoB,cAAc,aAAa,EAAE;QAC5D,MAAM,EAAE,yGAAyG;QACjH,KAAK,EAAE;YACL,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;YAC9C,UAAU,EAAE,mBAAmB,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YACpE,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YACxC,UAAU,EAAE,mBAAmB,CAAC,SAAS,CAAC;YAC1C,SAAS,EAAE,kBAAkB,CAAC,sEAAsE,CAAC;SACtG;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-theme-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-theme-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,aAAa,EAAqB,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-theme-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-theme-agent.ts"],"names":[],"mappings":"AACA,OAAO,EAA6B,KAAK,aAAa,EAAqB,MAAM,IAAI,CAAC;AAQtF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAkG/C,wBAAsB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAsB9G"}
|
|
@@ -4,9 +4,9 @@ import fs from 'fs-extra';
|
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { THEME_SYSTEM_PROMPT } from '../prompts/theme-system.js';
|
|
6
6
|
import { createExitLoopTool } from '../tools/exit-loop.js';
|
|
7
|
+
import { createLoadSkillsTool } from '../tools/load-skills.js';
|
|
7
8
|
import { createReadFileTool } from '../tools/read-file.js';
|
|
8
9
|
import { createWriteFileTool } from '../tools/write-file.js';
|
|
9
|
-
import { getSkillToolkit } from '../utils/create-skill-tool.js';
|
|
10
10
|
const SKILL_NAMES = ['design-taste-frontend', 'high-end-visual-design', 'design-system', 'design'];
|
|
11
11
|
function createCheckThemeTool(outputDir) {
|
|
12
12
|
return tool({
|
|
@@ -82,7 +82,6 @@ function createCheckThemeTool(outputDir) {
|
|
|
82
82
|
});
|
|
83
83
|
}
|
|
84
84
|
export async function runThemeAgent(model, llm, outputDir) {
|
|
85
|
-
const { skill } = await getSkillToolkit();
|
|
86
85
|
const narrativeDescriptions = model.narratives
|
|
87
86
|
.map((n) => `- ${n.name}: ${n.description || n.slices.map((s) => s.name).join(', ')}`)
|
|
88
87
|
.join('\n');
|
|
@@ -90,9 +89,9 @@ export async function runThemeAgent(model, llm, outputDir) {
|
|
|
90
89
|
const { text } = await generateText({
|
|
91
90
|
model: llm,
|
|
92
91
|
system: `${THEME_SYSTEM_PROMPT}\n\n---\n\n${context}`,
|
|
93
|
-
prompt: `
|
|
92
|
+
prompt: `Call load_skills once to load all design rules, then write index.css and call check_theme to verify it. If check_theme says ok, call exit_loop.`,
|
|
94
93
|
tools: {
|
|
95
|
-
|
|
94
|
+
load_skills: createLoadSkillsTool(SKILL_NAMES),
|
|
96
95
|
write_file: createWriteFileTool(outputDir, { allowProtected: true }),
|
|
97
96
|
read_file: createReadFileTool(outputDir),
|
|
98
97
|
check_theme: createCheckThemeTool(outputDir),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-theme-agent.js","sourceRoot":"","sources":["../../../src/agents/create-theme-agent.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AACtF,OAAO,EAAE,MAAM,UAAU,CAAC;AAC1B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-theme-agent.js","sourceRoot":"","sources":["../../../src/agents/create-theme-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-validation-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-validation-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAe,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"create-validation-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/create-validation-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,aAAa,EAAe,MAAM,IAAI,CAAC;AAUhF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAI/C,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,aAAa,EAClB,WAAW,EAAE,WAAW,EACxB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,CAAC,CA2BjB"}
|
|
@@ -3,14 +3,13 @@ import { VALIDATION_SYSTEM_PROMPT } from '../prompts/validation-system.js';
|
|
|
3
3
|
import { createCheckImportsTool } from '../tools/check-imports.js';
|
|
4
4
|
import { createExitLoopTool } from '../tools/exit-loop.js';
|
|
5
5
|
import { createListFilesTool } from '../tools/list-files.js';
|
|
6
|
+
import { createLoadSkillsTool } from '../tools/load-skills.js';
|
|
6
7
|
import { createReadFileTool } from '../tools/read-file.js';
|
|
7
8
|
import { createRunEslintTool } from '../tools/run-eslint.js';
|
|
8
9
|
import { createRunTscTool } from '../tools/run-tsc.js';
|
|
9
10
|
import { createWriteFileTool } from '../tools/write-file.js';
|
|
10
|
-
import { getSkillToolkit } from '../utils/create-skill-tool.js';
|
|
11
11
|
const SKILL_NAMES = ['redesign-existing-projects', 'react-doctor', 'web-design-guidelines'];
|
|
12
12
|
export async function runValidationAgent(llm, domainModel, outputDir) {
|
|
13
|
-
const { skill } = await getSkillToolkit();
|
|
14
13
|
const narrativeDescriptions = domainModel.narratives
|
|
15
14
|
.map((n) => `- ${n.name}: ${n.description || n.slices.map((s) => s.name).join(', ')}`)
|
|
16
15
|
.join('\n');
|
|
@@ -18,9 +17,9 @@ export async function runValidationAgent(llm, domainModel, outputDir) {
|
|
|
18
17
|
const { text } = await generateText({
|
|
19
18
|
model: llm,
|
|
20
19
|
system: VALIDATION_SYSTEM_PROMPT + domainHint,
|
|
21
|
-
prompt: `
|
|
20
|
+
prompt: `Call load_skills once to load all rules, then run tsc and eslint to check for errors. Fix any issues found. Call exit_loop when both report 0 errors.`,
|
|
22
21
|
tools: {
|
|
23
|
-
|
|
22
|
+
load_skills: createLoadSkillsTool(SKILL_NAMES),
|
|
24
23
|
run_tsc: createRunTscTool(outputDir),
|
|
25
24
|
run_eslint: createRunEslintTool(outputDir),
|
|
26
25
|
check_imports: createCheckImportsTool(outputDir),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-validation-agent.js","sourceRoot":"","sources":["../../../src/agents/create-validation-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"create-validation-agent.js","sourceRoot":"","sources":["../../../src/agents/create-validation-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,WAAW,EAAsB,WAAW,EAAE,MAAM,IAAI,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAG7D,MAAM,WAAW,GAAG,CAAC,4BAA4B,EAAE,cAAc,EAAE,uBAAuB,CAAC,CAAC;AAE5F,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,GAAkB,EAClB,WAAwB,EACxB,SAAiB;IAEjB,MAAM,qBAAqB,GAAG,WAAW,CAAC,UAAU;SACjD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;SACrF,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,MAAM,UAAU,GAAG,qCAAqC,WAAW,CAAC,OAAO,iCAAiC,qBAAqB,gJAAgJ,CAAC;IAElR,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,YAAY,CAAC;QAClC,KAAK,EAAE,GAAG;QACV,MAAM,EAAE,wBAAwB,GAAG,UAAU;QAC7C,MAAM,EAAE,uJAAuJ;QAC/J,KAAK,EAAE;YACL,WAAW,EAAE,oBAAoB,CAAC,WAAW,CAAC;YAC9C,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC;YACpC,UAAU,EAAE,mBAAmB,CAAC,SAAS,CAAC;YAC1C,aAAa,EAAE,sBAAsB,CAAC,SAAS,CAAC;YAChD,UAAU,EAAE,mBAAmB,CAAC,SAAS,EAAE,EAAE,cAAc,EAAE,IAAI,EAAE,CAAC;YACpE,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC;YACxC,UAAU,EAAE,mBAAmB,CAAC,SAAS,CAAC;YAC1C,SAAS,EAAE,kBAAkB,CAC3B,+FAA+F,CAChG;SACF;QACD,QAAQ,EAAE,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;KACtD,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-react-app.d.ts","sourceRoot":"","sources":["../../../src/commands/generate-react-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAI5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAc/C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,kBAAkB,EAClB;IACE,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,KAAK,CAC/C,0BAA0B,EAC1B;IACE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG,6BAA6B,CAAC;AAE5F,eAAO,MAAM,cAAc;;;;;;
|
|
1
|
+
{"version":3,"file":"generate-react-app.d.ts","sourceRoot":"","sources":["../../../src/commands/generate-react-app.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAI5F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAc/C,MAAM,MAAM,uBAAuB,GAAG,OAAO,CAC3C,kBAAkB,EAClB;IACE,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;CACpB,CACF,CAAC;AAEF,MAAM,MAAM,6BAA6B,GAAG,KAAK,CAC/C,0BAA0B,EAC1B;IACE,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,sBAAsB,GAAG,6BAA6B,CAAC;AAE5F,eAAO,MAAM,cAAc;;;;;;GAkFzB,CAAC;AAEH,eAAe,cAAc,CAAC"}
|
|
@@ -45,7 +45,7 @@ export const commandHandler = defineCommandHandler({
|
|
|
45
45
|
{ name: 'ReactAppGenerationFailed', displayName: 'Front End Build Failed' },
|
|
46
46
|
],
|
|
47
47
|
handle: async (command) => {
|
|
48
|
-
const { model: providedModel, modelPath, outputDir } = command.data;
|
|
48
|
+
const { model: providedModel, modelPath, graphqlSchema, outputDir } = command.data;
|
|
49
49
|
if (providedModel === undefined && modelPath === undefined) {
|
|
50
50
|
throw new Error('Either model or modelPath must be provided');
|
|
51
51
|
}
|
|
@@ -65,6 +65,7 @@ export const commandHandler = defineCommandHandler({
|
|
|
65
65
|
llm,
|
|
66
66
|
starterDir,
|
|
67
67
|
outputDir: resolvedOutput,
|
|
68
|
+
graphqlSchema: graphqlSchema,
|
|
68
69
|
});
|
|
69
70
|
debug('Pipeline complete → %s', resolvedOutput);
|
|
70
71
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-react-app.js","sourceRoot":"","sources":["../../../src/commands/generate-react-app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAgB,oBAAoB,EAAc,MAAM,4BAA4B,CAAC;AAC5F,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE3C,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAErD,MAAM,KAAK,GAAG,WAAW,CAAC,gBAAgB,CAAC,CAAC;AAE5C,MAAM,kBAAkB,GAAG,GAAW,EAAE;IACtC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAChE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IACnD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC9D,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAC7C,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AA+BF,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAAC;IACjD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EAAE,iBAAiB;IAC9B,KAAK,EAAE,gBAAgB;IACvB,WAAW,EACT,sKAAsK;IACxK,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,QAAQ;IACd,MAAM,EAAE;QACN,KAAK,EAAE;YACL,WAAW,EAAE,qDAAqD;SACnE;QACD,SAAS,EAAE;YACT,WAAW,EAAE,4DAA4D;SAC1E;QACD,aAAa,EAAE;YACb,WAAW,EAAE,kDAAkD;SAChE;QACD,SAAS,EAAE;YACT,WAAW,EAAE,8CAA8C;YAC3D,QAAQ,EAAE,IAAI;SACf;KACF;IACD,QAAQ,EAAE,CAAC,uEAAuE,CAAC;IACnF,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,iBAAiB,EAAE;QAC7D,EAAE,IAAI,EAAE,0BAA0B,EAAE,WAAW,EAAE,wBAAwB,EAAE;KAC5E;IACD,MAAM,EAAE,KAAK,EAAE,OAAgB,EAAmC,EAAE;QAClE,MAAM,EAAE,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,GAAI,OAAmC,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"generate-react-app.js","sourceRoot":"","sources":["../../../src/commands/generate-react-app.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { Narrative } from '../types.js';
|
|
2
|
-
export declare function buildNarrativeContext(narrative: Narrative): string;
|
|
2
|
+
export declare function buildNarrativeContext(narrative: Narrative, outputDir: string): string;
|
|
3
3
|
//# sourceMappingURL=build-narrative-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-narrative-context.d.ts","sourceRoot":"","sources":["../../../src/prompts/build-narrative-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build-narrative-context.d.ts","sourceRoot":"","sources":["../../../src/prompts/build-narrative-context.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAA+B,SAAS,EAAS,MAAM,aAAa,CAAC;AAmGjF,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAkDrF"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
1
3
|
import { slugify } from '../utils/slugify.js';
|
|
2
4
|
function formatClientSpecs(specs, indent = 0) {
|
|
3
5
|
const pad = ' '.repeat(indent);
|
|
@@ -47,8 +49,11 @@ function buildSliceBlock(slice, narrativeSlug) {
|
|
|
47
49
|
lines.push(`Output file: src/features/${narrativeSlug}/${componentName}.tsx`);
|
|
48
50
|
if (slice.request) {
|
|
49
51
|
const constName = toConstName(slice.name);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
+
const isMut = slice.type === 'command' || slice.request.trimStart().startsWith('mutation');
|
|
53
|
+
const file = isMut ? 'mutations' : 'queries';
|
|
54
|
+
lines.push(`Typed GraphQL operation in ${file}.ts: ${constName}`);
|
|
55
|
+
lines.push(`Import: import { ${constName} } from './${file}.js';`);
|
|
56
|
+
lines.push(`Usage: import { execute } from "@/gql/execute"; execute(${constName}, vars) — types are inferred automatically, do NOT define manual interfaces.`);
|
|
52
57
|
}
|
|
53
58
|
if (slice.client?.specs?.length) {
|
|
54
59
|
lines.push(``);
|
|
@@ -69,7 +74,7 @@ function buildSliceBlock(slice, narrativeSlug) {
|
|
|
69
74
|
}
|
|
70
75
|
return lines.join('\n');
|
|
71
76
|
}
|
|
72
|
-
export function buildNarrativeContext(narrative) {
|
|
77
|
+
export function buildNarrativeContext(narrative, outputDir) {
|
|
73
78
|
const slug = slugify(narrative.name);
|
|
74
79
|
const pageName = `${toPascalCase(narrative.name)}Page`;
|
|
75
80
|
const frontendSlices = narrative.slices.filter((s) => s.type !== 'react');
|
|
@@ -77,14 +82,28 @@ export function buildNarrativeContext(narrative) {
|
|
|
77
82
|
const lines = [
|
|
78
83
|
`# Narrative: "${narrative.name}"`,
|
|
79
84
|
`Feature folder: src/features/${slug}/`,
|
|
80
|
-
`GraphQL constants: src/features/${slug}/queries.ts (already generated — read it first!)`,
|
|
81
85
|
`Page file: src/pages/${pageName}.tsx`,
|
|
82
86
|
``,
|
|
83
|
-
`FIRST STEP: call read_file("src/features/${slug}/queries.ts") to see the available constants.`,
|
|
84
|
-
``,
|
|
85
87
|
`## Slices to implement:`,
|
|
86
88
|
``,
|
|
87
89
|
];
|
|
90
|
+
// Embed pre-generated operations content so LLM doesn't need to read files
|
|
91
|
+
const queriesPath = path.join(outputDir, 'src', 'features', slug, 'queries.ts');
|
|
92
|
+
const mutationsPath = path.join(outputDir, 'src', 'features', slug, 'mutations.ts');
|
|
93
|
+
if (fs.existsSync(queriesPath)) {
|
|
94
|
+
lines.push(`## queries.ts (pre-generated — do NOT recreate or modify):`);
|
|
95
|
+
lines.push('```typescript');
|
|
96
|
+
lines.push(fs.readFileSync(queriesPath, 'utf-8').trim());
|
|
97
|
+
lines.push('```');
|
|
98
|
+
lines.push('');
|
|
99
|
+
}
|
|
100
|
+
if (fs.existsSync(mutationsPath)) {
|
|
101
|
+
lines.push(`## mutations.ts (pre-generated — do NOT recreate or modify):`);
|
|
102
|
+
lines.push('```typescript');
|
|
103
|
+
lines.push(fs.readFileSync(mutationsPath, 'utf-8').trim());
|
|
104
|
+
lines.push('```');
|
|
105
|
+
lines.push('');
|
|
106
|
+
}
|
|
88
107
|
frontendSlices.forEach((slice) => {
|
|
89
108
|
lines.push(buildSliceBlock(slice, slug));
|
|
90
109
|
lines.push(``);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-narrative-context.js","sourceRoot":"","sources":["../../../src/prompts/build-narrative-context.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"build-narrative-context.js","sourceRoot":"","sources":["../../../src/prompts/build-narrative-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,SAAS,iBAAiB,CAAC,KAAuB,EAAE,MAAM,GAAG,CAAC;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC;QAC9D,MAAM,IAAI,GAAG,GAAG,GAAG,GAAG,MAAM,MAAM,IAAI,CAAC,KAAK,GAAG,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC1B,OAAO,GAAG,IAAI,KAAK,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC;QACpE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;SACD,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAoB;IAC9C,OAAO,KAAK;SACT,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,IAAI,CAAC,KAAK;SACP,GAAG,CACF,CAAC,IAAI,EAAE,EAAE,CACP,WAAW,IAAI,CAAC,IAAI,IAAI;QACxB,IAAI,CAAC,QAAQ;aACV,GAAG,CACF,CAAC,EAAE,EAAE,EAAE,CACL,gBAAgB,EAAE,CAAC,IAAI,IAAI,WAAW,IAAI;YAC1C,EAAE,CAAC,KAAK;iBACL,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;gBACT,MAAM,GAAG,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC1E,OAAO,SAAS,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC;YAC9C,CAAC,CAAC;iBACD,IAAI,CAAC,IAAI,CAAC,CAChB;aACA,IAAI,CAAC,IAAI,CAAC,CAChB;SACA,IAAI,CAAC,IAAI,CAAC,CACd;SACA,IAAI,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,OAAO,IAAI;SACR,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,gBAAgB,EAAE,GAAG,CAAC;SAC9B,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC/F,CAAC;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,aAAqB;IAC1D,MAAM,aAAa,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,IAAI,YAAY,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC;IAC/D,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,6BAA6B,aAAa,IAAI,aAAa,MAAM,CAAC,CAAC;IAE9E,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;QAClB,MAAM,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC3F,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC,8BAA8B,IAAI,QAAQ,SAAS,EAAE,CAAC,CAAC;QAClE,KAAK,CAAC,IAAI,CAAC,oBAAoB,SAAS,cAAc,IAAI,IAAI,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CACR,2DAA2D,SAAS,8EAA8E,CACnJ,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,qCAAqC,CAAC,CAAC;QAClD,KAAK,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,4CAA4C,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACxB,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YAC/B,KAAK,CAAC,IAAI,CACR,KAAK,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,CAC/G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,SAAoB,EAAE,SAAiB;IAC3E,MAAM,IAAI,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IACrC,MAAM,QAAQ,GAAG,GAAG,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC;IACvD,MAAM,cAAc,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAC1E,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;IAEvE,MAAM,KAAK,GAAa;QACtB,iBAAiB,SAAS,CAAC,IAAI,GAAG;QAClC,gCAAgC,IAAI,GAAG;QACvC,wBAAwB,QAAQ,MAAM;QACtC,EAAE;QACF,yBAAyB;QACzB,EAAE;KACH,CAAC;IAEF,2EAA2E;IAC3E,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;IAChF,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACpF,IAAI,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC/B,KAAK,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,KAAK,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;QAC3E,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;QAC5B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QAC3D,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;QAC/B,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC,CAAC,CAAC;IAEH,KAAK,CAAC,IAAI,CAAC,sBAAsB,QAAQ,MAAM,CAAC,CAAC;IACjD,KAAK,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IAErF,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,wCAAwC,CAAC,CAAC;QACrD,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YACxB,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const NARRATIVE_SYSTEM_PROMPT = "You are a senior design engineer building a React feature from a domain model narrative. Use write_file to create every file.\n\n## MANDATORY SKILL COMPLIANCE\nYou have ACTIVE SKILLS injected below. They are hard requirements, not suggestions.\nEvery file you generate MUST comply. Violations will be caught by the validator and rejected.\n\nKey rules you MUST follow:\n- NEVER use emojis in code, markup, or text content \u2014 use lucide-react icons.\n- NEVER output partial code \u2014 every file must be complete and runnable with zero placeholders.\n- Do NOT add page-level animations or framer-motion \u2014 keep pages static and fast.\n- shadcn/ui components must be customized \u2014 never use default unstyled state.\n\n## TECHNICAL CONSTRAINTS\n- queries.ts ALREADY
|
|
1
|
+
export declare const NARRATIVE_SYSTEM_PROMPT = "You are a senior design engineer building a React feature from a domain model narrative. Use write_file to create every file.\n\n## MANDATORY SKILL COMPLIANCE\nYou have ACTIVE SKILLS injected below. They are hard requirements, not suggestions.\nEvery file you generate MUST comply. Violations will be caught by the validator and rejected.\n\nKey rules you MUST follow:\n- NEVER use emojis in code, markup, or text content \u2014 use lucide-react icons.\n- NEVER output partial code \u2014 every file must be complete and runnable with zero placeholders.\n- Do NOT add page-level animations or framer-motion \u2014 keep pages static and fast.\n- shadcn/ui components must be customized \u2014 never use default unstyled state.\n\n## TECHNICAL CONSTRAINTS\n- queries.ts and mutations.ts ALREADY exist with typed GraphQL operations \u2014 their content is shown below. Import from \"./queries\" or \"./mutations\".\n- NEVER create new GraphQL operations or query strings. ALL operations you need are already in queries.ts/mutations.ts.\n- NEVER write to queries.ts or mutations.ts \u2014 they are protected and will be rejected.\n- If a slice has no request field, it does not need a GraphQL call \u2014 build it as a static/local component.\n- ALWAYS use execute() from \"@/gql/execute\" with @tanstack/react-query. Types are inferred automatically.\n- NEVER manually define response or variable types for GraphQL operations \u2014 they are inferred from the typed operations.\n- NEVER import { request } from \"graphql-request\" or use graphqlClient.request() directly \u2014 ALWAYS use the typed execute() function.\n CORRECT: import { execute } from \"@/gql/execute\"; import { MY_QUERY } from \"./queries\"; execute(MY_QUERY, { id })\n WRONG: import { graphqlClient } from \"@/lib/graphql-client\"; graphqlClient.request<ManualType>(QUERY, vars)\n WRONG: import { request } from \"graphql-request\"; request(\"/graphql\", QUERY, vars)\n- Use shadcn/ui components from \"@/components/ui/...\" (customized) \u2014 never raw HTML elements.\n- Use react-hook-form + zod when you need forms.\n- Tailwind CSS only \u2014 no .css files.\n- Use lucide-react for icons.\n- Use toast from \"sonner\" for feedback.\n- Skip \"react\" type slices \u2014 they are server-only.\n- Don't write App.tsx, main.tsx, index.css, anything in src/lib/, src/gql/, or src/components/ui/.\n\n## FILE STRUCTURE\n- Feature components: src/features/<narrative-slug>/\n- REQUIRED: src/features/<narrative-slug>/index.ts \u2014 must re-export all components as NAMED exports.\n- NEVER use default exports anywhere. ALL exports must be named exports (export function X, export const X).\n- Example index.ts: export { WorkoutLogForm } from './WorkoutLogForm';\n- Page files: src/pages/<NarrativeName>Page.tsx \u2014 export function <NarrativeName>Page() { ... }\n\n## DESIGN QUALITY \u2014 MANDATORY\nThe output must look like a premium SaaS product. Be creative with layouts \u2014 don't default to the same structure every time.\n\nTypography:\n- Page titles: text-3xl font-bold tracking-tight\n- Section labels: text-xs uppercase tracking-wider text-muted-foreground\n- Numbers/stats: font-mono\n\nSurfaces & Interactions:\n- Cards: rounded-2xl border border-border/60 bg-card \u2014 customize, don't use defaults\n- Inputs: h-11 rounded-xl\n- Primary buttons: h-12 rounded-xl font-semibold\n- Hover states and transitions on interactive elements\n\nStates (ALL REQUIRED for every data-fetching component):\n- Loading: <Skeleton /> components matching the expected layout shape\n- Empty: large muted lucide-react icon (size={48}), heading, description\n- Error: text-destructive with a retry button\n\nRead the narrative context below, decide what components are needed, and generate them all.";
|
|
2
2
|
//# sourceMappingURL=narrative-system.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"narrative-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/narrative-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,
|
|
1
|
+
{"version":3,"file":"narrative-system.d.ts","sourceRoot":"","sources":["../../../src/prompts/narrative-system.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,usHAyDwD,CAAC"}
|