@auto-engineer/app-assembler 1.116.0 → 1.117.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/pipeline-agent.d.ts +1 -0
- package/dist/src/agents/pipeline-agent.d.ts.map +1 -1
- package/dist/src/agents/pipeline-agent.js +59 -21
- package/dist/src/agents/pipeline-agent.js.map +1 -1
- package/dist/src/assemble.d.ts.map +1 -1
- package/dist/src/assemble.js +3 -1
- package/dist/src/assemble.js.map +1 -1
- package/dist/src/file-parser.d.ts +0 -3
- package/dist/src/file-parser.d.ts.map +1 -1
- package/dist/src/file-parser.js +37 -4
- package/dist/src/file-parser.js.map +1 -1
- package/dist/src/model/create-model.js +1 -1
- package/dist/src/model/create-model.js.map +1 -1
- package/dist/src/prompt.d.ts +1 -0
- package/dist/src/prompt.d.ts.map +1 -1
- package/dist/src/prompt.js +25 -6
- package/dist/src/prompt.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
|
@@ -23,5 +23,6 @@ export declare class AppAssemblerPipelineAgent extends BaseAgent {
|
|
|
23
23
|
get result(): AppAssemblerPipelineResult;
|
|
24
24
|
protected runAsyncImpl(ctx: InvocationContext): AsyncGenerator<Event, void, void>;
|
|
25
25
|
protected runLiveImpl(_ctx: InvocationContext): AsyncGenerator<Event, void, void>;
|
|
26
|
+
private runAgentAndCapture;
|
|
26
27
|
}
|
|
27
28
|
//# sourceMappingURL=pipeline-agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/pipeline-agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAe,KAAK,KAAK,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yBAA0B,SAAQ,SAAS;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,OAAO,CAA0E;gBAE7E,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB;IAc5D,IAAI,MAAM,IAAI,0BAA0B,CAEvC;cAEgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"pipeline-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/pipeline-agent.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAe,KAAK,KAAK,EAAE,KAAK,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACzF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAI9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAItD,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,0BAA0B;IACzC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,yBAA0B,SAAQ,SAAS;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC;IAChC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC;IACjC,OAAO,CAAC,OAAO,CAA0E;gBAE7E,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,yBAAyB;IAc5D,IAAI,MAAM,IAAI,0BAA0B,CAEvC;cAEgB,YAAY,CAAC,GAAG,EAAE,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;cA2FvE,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;YAIzE,kBAAkB;CAuClC"}
|
|
@@ -2,7 +2,7 @@ import { mkdirSync, writeFileSync } from 'node:fs';
|
|
|
2
2
|
import { dirname, resolve } from 'node:path';
|
|
3
3
|
import { BaseAgent, createEvent } from '@google/adk';
|
|
4
4
|
import { parseFiles } from '../file-parser.js';
|
|
5
|
-
import { buildRefinementPrompt,
|
|
5
|
+
import { buildRefinementPrompt, buildReformatPrompt } from '../prompt.js';
|
|
6
6
|
import { runTypeCheck } from '../type-checker.js';
|
|
7
7
|
import { createAssemblerAgent } from './assembler-agent.js';
|
|
8
8
|
import { createRefinementAgent } from './refinement-agent.js';
|
|
@@ -23,24 +23,35 @@ export class AppAssemblerPipelineAgent extends BaseAgent {
|
|
|
23
23
|
return this._result;
|
|
24
24
|
}
|
|
25
25
|
async *runAsyncImpl(ctx) {
|
|
26
|
-
const {
|
|
27
|
-
|
|
28
|
-
const userPrompt = buildUserPrompt(payload);
|
|
29
|
-
const userEvent = createEvent({
|
|
30
|
-
author: 'user',
|
|
31
|
-
invocationId: ctx.invocationId,
|
|
32
|
-
content: { role: 'user', parts: [{ text: userPrompt }] },
|
|
33
|
-
});
|
|
34
|
-
ctx.session.events.push(userEvent);
|
|
35
|
-
for await (const event of this.assemblerAgent.runAsync(ctx)) {
|
|
36
|
-
yield event;
|
|
37
|
-
}
|
|
26
|
+
const { targetDir, maxRefinements } = this.input;
|
|
27
|
+
let lastOutput = yield* this.runAgentAndCapture(ctx, this.assemblerAgent, 'assembler_output');
|
|
38
28
|
this._result.llmCalls++;
|
|
39
|
-
|
|
40
|
-
|
|
29
|
+
console.log(`[app-assembler] raw output length: ${lastOutput.length}`);
|
|
30
|
+
console.log(`[app-assembler] raw output preview: ${lastOutput.slice(0, 500)}`);
|
|
31
|
+
let files = parseFiles(lastOutput);
|
|
32
|
+
const maxFormatRetries = 5;
|
|
33
|
+
for (let attempt = 0; attempt < maxFormatRetries && files.length === 0; attempt++) {
|
|
34
|
+
console.warn(`[app-assembler] format retry ${attempt + 1}/${maxFormatRetries} — 0 files parsed, asking LLM to reformat`);
|
|
35
|
+
const reformatEvent = createEvent({
|
|
36
|
+
author: 'user',
|
|
37
|
+
invocationId: ctx.invocationId,
|
|
38
|
+
content: { role: 'user', parts: [{ text: buildReformatPrompt(lastOutput) }] },
|
|
39
|
+
});
|
|
40
|
+
ctx.session.events.push(reformatEvent);
|
|
41
|
+
lastOutput = yield* this.runAgentAndCapture(ctx, this.refinementAgent, 'refinement_output');
|
|
42
|
+
this._result.llmCalls++;
|
|
43
|
+
console.log(`[app-assembler] reformat output length: ${lastOutput.length}`);
|
|
44
|
+
console.log(`[app-assembler] reformat output preview: ${lastOutput.slice(0, 500)}`);
|
|
45
|
+
files = parseFiles(lastOutput);
|
|
46
|
+
}
|
|
47
|
+
if (files.length === 0) {
|
|
48
|
+
console.error('[app-assembler] ERROR: LLM returned 0 parseable files after all retries. Last output:');
|
|
49
|
+
console.error(lastOutput.slice(0, 2000));
|
|
50
|
+
throw new Error(`App assembler LLM returned no parseable files after ${maxFormatRetries} format retries.`);
|
|
51
|
+
}
|
|
52
|
+
console.log(`[app-assembler] parsed ${files.length} files: ${files.map((f) => f.path).join(', ')}`);
|
|
41
53
|
writeFiles(targetDir, files);
|
|
42
54
|
this._result.files = files;
|
|
43
|
-
// Type-check refinement loop
|
|
44
55
|
for (let i = 0; i < maxRefinements; i++) {
|
|
45
56
|
const generatedPaths = files.map((f) => f.path);
|
|
46
57
|
const result = runTypeCheck(targetDir, generatedPaths);
|
|
@@ -60,11 +71,8 @@ export class AppAssemblerPipelineAgent extends BaseAgent {
|
|
|
60
71
|
content: { role: 'user', parts: [{ text: refinementPrompt }] },
|
|
61
72
|
});
|
|
62
73
|
ctx.session.events.push(refinementEvent);
|
|
63
|
-
|
|
64
|
-
yield event;
|
|
65
|
-
}
|
|
74
|
+
const refinementOutput = yield* this.runAgentAndCapture(ctx, this.refinementAgent, 'refinement_output');
|
|
66
75
|
this._result.llmCalls++;
|
|
67
|
-
const refinementOutput = String(ctx.session.state.refinement_output ?? '');
|
|
68
76
|
const previousFiles = files.map((f) => f.path).join(', ');
|
|
69
77
|
files = parseFiles(refinementOutput);
|
|
70
78
|
console.log(`[app-assembler] refinement ${this._result.refinements} — files before: [${previousFiles}], files after: [${files.map((f) => f.path).join(', ')}]`);
|
|
@@ -76,10 +84,40 @@ export class AppAssemblerPipelineAgent extends BaseAgent {
|
|
|
76
84
|
console.warn(`[app-assembler] WARNING: type-check still failing after ${maxRefinements} refinements. Remaining errors:\n${lastCheck.errors.join('\n')}`);
|
|
77
85
|
}
|
|
78
86
|
}
|
|
87
|
+
// biome-ignore lint/correctness/useYield: required by BaseAgent interface
|
|
79
88
|
async *runLiveImpl(_ctx) {
|
|
80
|
-
yield* [];
|
|
81
89
|
throw new Error('Live mode not supported');
|
|
82
90
|
}
|
|
91
|
+
async *runAgentAndCapture(ctx, agent, stateKey) {
|
|
92
|
+
let eventText = '';
|
|
93
|
+
let lastError;
|
|
94
|
+
for await (const event of agent.runAsync(ctx)) {
|
|
95
|
+
const anyEvent = event;
|
|
96
|
+
if (anyEvent.errorCode) {
|
|
97
|
+
const errorMsg = String(anyEvent.errorMessage ?? anyEvent.errorCode);
|
|
98
|
+
console.error(`[app-assembler] LLM error in '${stateKey}': [${anyEvent.errorCode}] ${errorMsg}`);
|
|
99
|
+
lastError = errorMsg;
|
|
100
|
+
}
|
|
101
|
+
for (const part of event.content?.parts ?? []) {
|
|
102
|
+
if ('text' in part && part.text) {
|
|
103
|
+
eventText += part.text;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
yield event;
|
|
107
|
+
}
|
|
108
|
+
const stateOutput = String(ctx.session.state[stateKey] ?? '');
|
|
109
|
+
if (stateOutput)
|
|
110
|
+
return stateOutput;
|
|
111
|
+
if (eventText) {
|
|
112
|
+
console.log(`[app-assembler] outputKey '${stateKey}' was empty, using event text (${eventText.length} chars)`);
|
|
113
|
+
return eventText;
|
|
114
|
+
}
|
|
115
|
+
if (lastError) {
|
|
116
|
+
throw new Error(`LLM call failed for '${stateKey}': ${lastError}`);
|
|
117
|
+
}
|
|
118
|
+
console.warn(`[app-assembler] WARNING: both outputKey '${stateKey}' and event text are empty`);
|
|
119
|
+
return '';
|
|
120
|
+
}
|
|
83
121
|
}
|
|
84
122
|
function writeFiles(targetDir, files) {
|
|
85
123
|
for (const file of files) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pipeline-agent.js","sourceRoot":"","sources":["../../../src/agents/pipeline-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,SAAS,EAAE,WAAW,EAAsC,MAAM,aAAa,CAAC;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"pipeline-agent.js","sourceRoot":"","sources":["../../../src/agents/pipeline-agent.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExE,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,OAAO,EAAE;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GACtE,OAAO,CAAC,iBAAiB,CAAC,CA4B5B"}
|
package/dist/src/assemble.js
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { InMemorySessionService, Runner } from '@google/adk';
|
|
2
2
|
import { AppAssemblerPipelineAgent } from './agents/pipeline-agent.js';
|
|
3
|
+
import { buildUserPrompt } from './prompt.js';
|
|
3
4
|
export async function assembleApp(payload, options) {
|
|
4
5
|
const { model, targetDir, maxRefinements = 3 } = options;
|
|
6
|
+
const userPrompt = buildUserPrompt(payload);
|
|
5
7
|
const pipelineAgent = new AppAssemblerPipelineAgent(model, {
|
|
6
8
|
payload,
|
|
7
9
|
targetDir,
|
|
@@ -11,7 +13,7 @@ export async function assembleApp(payload, options) {
|
|
|
11
13
|
const runner = new Runner({ appName: 'app-assembler', agent: pipelineAgent, sessionService });
|
|
12
14
|
for await (const _event of runner.runEphemeral({
|
|
13
15
|
userId: 'pipeline',
|
|
14
|
-
newMessage: { role: 'user', parts: [{ text:
|
|
16
|
+
newMessage: { role: 'user', parts: [{ text: userPrompt }] },
|
|
15
17
|
})) {
|
|
16
18
|
// consume events
|
|
17
19
|
}
|
package/dist/src/assemble.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE7D,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAA2B,EAC3B,OAAuE;IAEvE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEzD,MAAM,UAAU,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IAE5C,MAAM,aAAa,GAAG,IAAI,yBAAyB,CAAC,KAAK,EAAE;QACzD,OAAO;QACP,SAAS;QACT,cAAc;KACf,CAAC,CAAC;IAEH,MAAM,cAAc,GAAG,IAAI,sBAAsB,EAAE,CAAC;IACpD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,OAAO,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC,CAAC;IAE9F,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC;QAC7C,MAAM,EAAE,UAAU;QAClB,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;KAC5D,CAAC,EAAE,CAAC;QACH,iBAAiB;IACnB,CAAC;IAED,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,EAAE,GAAG,aAAa,CAAC,MAAM,CAAC;IAE9D,OAAO;QACL,KAAK;QACL,QAAQ;QACR,WAAW;KACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-parser.d.ts","sourceRoot":"","sources":["../../src/file-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file-parser.d.ts","sourceRoot":"","sources":["../../src/file-parser.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,CAK9E"}
|
package/dist/src/file-parser.js
CHANGED
|
@@ -1,7 +1,41 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Parse LLM output that uses <!-- file: path --> delimiters into individual files.
|
|
3
|
-
*/
|
|
4
1
|
export function parseFiles(output) {
|
|
2
|
+
const fromCodeFences = parseCodeFences(output);
|
|
3
|
+
if (fromCodeFences.length > 0)
|
|
4
|
+
return fromCodeFences;
|
|
5
|
+
return parseHtmlMarkers(output);
|
|
6
|
+
}
|
|
7
|
+
function normalizePath(raw) {
|
|
8
|
+
let p = raw.trim();
|
|
9
|
+
p = p.replace(/\.tsx?$/, '');
|
|
10
|
+
p = p + '.tsx';
|
|
11
|
+
if (!p.startsWith('src/')) {
|
|
12
|
+
p = `src/${p}`;
|
|
13
|
+
}
|
|
14
|
+
return p;
|
|
15
|
+
}
|
|
16
|
+
function parseCodeFences(output) {
|
|
17
|
+
const files = [];
|
|
18
|
+
const fencePattern = /```(?:tsx?|jsx?|typescript|javascript)?\s*\n\/\/\s*([^\n]+)\n/g;
|
|
19
|
+
let match;
|
|
20
|
+
while ((match = fencePattern.exec(output)) !== null) {
|
|
21
|
+
const rawPath = match[1].trim();
|
|
22
|
+
if (!looksLikeFilePath(rawPath))
|
|
23
|
+
continue;
|
|
24
|
+
const contentStart = match.index + match[0].length;
|
|
25
|
+
const closingIdx = output.indexOf('\n```', contentStart);
|
|
26
|
+
const end = closingIdx === -1 ? output.length : closingIdx;
|
|
27
|
+
const content = output.slice(contentStart, end).trim();
|
|
28
|
+
const filePath = normalizePath(rawPath);
|
|
29
|
+
if (content && filePath) {
|
|
30
|
+
files.push({ path: filePath, content });
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return files;
|
|
34
|
+
}
|
|
35
|
+
function looksLikeFilePath(s) {
|
|
36
|
+
return /\.\w+$/.test(s) || s.includes('/');
|
|
37
|
+
}
|
|
38
|
+
function parseHtmlMarkers(output) {
|
|
5
39
|
const files = [];
|
|
6
40
|
const marker = /<!--\s*file:\s*(.+?)\s*-->/g;
|
|
7
41
|
const matches = [];
|
|
@@ -13,7 +47,6 @@ export function parseFiles(output) {
|
|
|
13
47
|
const start = matches[i].index;
|
|
14
48
|
const end = i + 1 < matches.length ? output.lastIndexOf('<!--', matches[i + 1].index) : output.length;
|
|
15
49
|
let content = output.slice(start, end).trim();
|
|
16
|
-
// Strip wrapping code fences if present
|
|
17
50
|
content = content.replace(/^```(?:tsx?|jsx?|typescript|javascript)?\s*\n?/, '');
|
|
18
51
|
content = content.replace(/\n?```\s*$/, '');
|
|
19
52
|
content = content.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-parser.js","sourceRoot":"","sources":["../../src/file-parser.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"file-parser.js","sourceRoot":"","sources":["../../src/file-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { Custom } from 'adk-llm-bridge';
|
|
2
2
|
export function createModelFromEnv() {
|
|
3
|
-
return Custom(
|
|
3
|
+
return Custom('claude-sonnet-4-6', {
|
|
4
4
|
baseURL: process.env.CUSTOM_PROVIDER_BASE_URL,
|
|
5
5
|
apiKey: process.env.CUSTOM_PROVIDER_API_KEY,
|
|
6
6
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/model/create-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"create-model.js","sourceRoot":"","sources":["../../../src/model/create-model.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAExC,MAAM,UAAU,kBAAkB;IAChC,OAAO,MAAM,CAAC,mBAAmB,EAAE;QACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAyB;QAC9C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAwB;KAC7C,CAAC,CAAC;AACL,CAAC"}
|
package/dist/src/prompt.d.ts
CHANGED
package/dist/src/prompt.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,iBAAiB,IAAI,MAAM,
|
|
1
|
+
{"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD,wBAAgB,iBAAiB,IAAI,MAAM,CAsC1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,GAAG,MAAM,CA4BnE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE,YAAY,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAAE,GAAG,MAAM,CAYjH;AAED,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAgB7D"}
|
package/dist/src/prompt.js
CHANGED
|
@@ -20,13 +20,15 @@ export function buildSystemPrompt() {
|
|
|
20
20
|
- All page components are in \`src/components/\` — use the exact file paths provided in the route definitions
|
|
21
21
|
|
|
22
22
|
## Output format
|
|
23
|
-
For each file
|
|
23
|
+
For each file, output a fenced code block with \`// src/path.tsx\` as the very first line:
|
|
24
24
|
|
|
25
|
-
\`\`\`
|
|
26
|
-
|
|
25
|
+
\`\`\`tsx
|
|
26
|
+
// src/App.tsx
|
|
27
|
+
import '@/index.css';
|
|
28
|
+
...
|
|
27
29
|
\`\`\`
|
|
28
30
|
|
|
29
|
-
|
|
31
|
+
The first line comment identifies the file path. Repeat for each file.
|
|
30
32
|
|
|
31
33
|
## Scope of generated files
|
|
32
34
|
You may ONLY generate these files:
|
|
@@ -72,8 +74,25 @@ ${errors.join('\n')}
|
|
|
72
74
|
\`\`\`
|
|
73
75
|
|
|
74
76
|
## Current Files
|
|
75
|
-
${currentFiles.map((f) =>
|
|
77
|
+
${currentFiles.map((f) => `\`\`\`tsx\n// ${f.path}\n${f.content}\n\`\`\``).join('\n\n')}
|
|
78
|
+
|
|
79
|
+
Output the corrected files using the same format (code block with \`// src/path.tsx\` as first line). Include ALL files, not just changed ones.`;
|
|
80
|
+
}
|
|
81
|
+
export function buildReformatPrompt(rawOutput) {
|
|
82
|
+
return `Your previous output could not be parsed into files. I need you to reformat it.
|
|
83
|
+
|
|
84
|
+
REQUIRED FORMAT: Each file must be a fenced code block with \`// src/path.tsx\` as the very first line inside the block:
|
|
85
|
+
|
|
86
|
+
\`\`\`tsx
|
|
87
|
+
// src/App.tsx
|
|
88
|
+
import '@/index.css';
|
|
89
|
+
...actual code...
|
|
90
|
+
\`\`\`
|
|
91
|
+
|
|
92
|
+
Your previous output was:
|
|
93
|
+
|
|
94
|
+
${rawOutput}
|
|
76
95
|
|
|
77
|
-
|
|
96
|
+
Reformat the above code into the required format. Keep the code exactly the same — only change the formatting so each file is in its own fenced code block with the file path comment as the first line.`;
|
|
78
97
|
}
|
|
79
98
|
//# sourceMappingURL=prompt.js.map
|
package/dist/src/prompt.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB;IAC/B,OAAO
|
|
1
|
+
{"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAoC8C,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA2B;IACzD,MAAM,eAAe,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC/C,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;QACtF,OAAO,KAAK,CAAC,CAAC,aAAa,mBAAmB,UAAU,aAAa,CAAC,CAAC,IAAI,GAAG,CAAC;IACjF,CAAC,CAAC,CAAC;IAEH,OAAO,WAAW,OAAO,CAAC,OAAO;;;EAGjC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;;EAGvC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC;;;EAGhD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC;;;EAGlD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;;;yCAGA,OAAO,CAAC,UAAU;;;;EAIzD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC;;kCAEM,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAAgB,EAAE,YAAiD;IACvG,OAAO;;;;EAIP,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;;;;EAIjB,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;gJAEyD,CAAC;AACjJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO;;;;;;;;;;;;EAYP,SAAS;;yMAE8L,CAAC;AAC1M,CAAC"}
|