@auto-engineer/app-assembler 1.112.2 → 1.113.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.
Files changed (36) hide show
  1. package/dist/src/agents/assembler-agent.d.ts +4 -0
  2. package/dist/src/agents/assembler-agent.d.ts.map +1 -0
  3. package/dist/src/agents/assembler-agent.js +11 -0
  4. package/dist/src/agents/assembler-agent.js.map +1 -0
  5. package/dist/src/agents/pipeline-agent.d.ts +27 -0
  6. package/dist/src/agents/pipeline-agent.d.ts.map +1 -0
  7. package/dist/src/agents/pipeline-agent.js +91 -0
  8. package/dist/src/agents/pipeline-agent.js.map +1 -0
  9. package/dist/src/agents/refinement-agent.d.ts +4 -0
  10. package/dist/src/agents/refinement-agent.d.ts.map +1 -0
  11. package/dist/src/agents/refinement-agent.js +11 -0
  12. package/dist/src/agents/refinement-agent.js.map +1 -0
  13. package/dist/src/assemble.d.ts +4 -4
  14. package/dist/src/assemble.d.ts.map +1 -1
  15. package/dist/src/assemble.js +16 -59
  16. package/dist/src/assemble.js.map +1 -1
  17. package/dist/src/commands/assemble-app.d.ts +1 -2
  18. package/dist/src/commands/assemble-app.d.ts.map +1 -1
  19. package/dist/src/commands/assemble-app.js +3 -25
  20. package/dist/src/commands/assemble-app.js.map +1 -1
  21. package/dist/src/index.d.ts +3 -1
  22. package/dist/src/index.d.ts.map +1 -1
  23. package/dist/src/index.js +1 -0
  24. package/dist/src/index.js.map +1 -1
  25. package/dist/src/model/create-model.d.ts +2 -0
  26. package/dist/src/model/create-model.d.ts.map +1 -0
  27. package/dist/src/model/create-model.js +8 -0
  28. package/dist/src/model/create-model.js.map +1 -0
  29. package/dist/src/prompt.d.ts +2 -2
  30. package/dist/src/prompt.d.ts.map +1 -1
  31. package/dist/src/prompt.js +8 -9
  32. package/dist/src/prompt.js.map +1 -1
  33. package/dist/src/types.d.ts +9 -13
  34. package/dist/src/types.d.ts.map +1 -1
  35. package/dist/tsconfig.tsbuildinfo +1 -1
  36. package/package.json +5 -4
@@ -0,0 +1,4 @@
1
+ import { LlmAgent } from '@google/adk';
2
+ import type { BaseLlm } from 'adk-llm-bridge';
3
+ export declare function createAssemblerAgent(model: BaseLlm): LlmAgent;
4
+ //# sourceMappingURL=assembler-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assembler-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/assembler-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAO7D"}
@@ -0,0 +1,11 @@
1
+ import { LlmAgent } from '@google/adk';
2
+ import { buildSystemPrompt } from '../prompt.js';
3
+ export function createAssemblerAgent(model) {
4
+ return new LlmAgent({
5
+ name: 'app_assembler_agent',
6
+ model,
7
+ instruction: buildSystemPrompt(),
8
+ outputKey: 'assembler_output',
9
+ });
10
+ }
11
+ //# sourceMappingURL=assembler-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"assembler-agent.js","sourceRoot":"","sources":["../../../src/agents/assembler-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,oBAAoB,CAAC,KAAc;IACjD,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI,EAAE,qBAAqB;QAC3B,KAAK;QACL,WAAW,EAAE,iBAAiB,EAAE;QAChC,SAAS,EAAE,kBAAkB;KAC9B,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { BaseAgent, type Event, type InvocationContext } from '@google/adk';
2
+ import type { BaseLlm } from 'adk-llm-bridge';
3
+ import type { AssembleAppPayload } from '../types.js';
4
+ export interface AppAssemblerPipelineInput {
5
+ payload: AssembleAppPayload;
6
+ targetDir: string;
7
+ maxRefinements: number;
8
+ }
9
+ export interface AppAssemblerPipelineResult {
10
+ files: {
11
+ path: string;
12
+ content: string;
13
+ }[];
14
+ refinements: number;
15
+ llmCalls: number;
16
+ }
17
+ export declare class AppAssemblerPipelineAgent extends BaseAgent {
18
+ private readonly input;
19
+ private readonly assemblerAgent;
20
+ private readonly refinementAgent;
21
+ private _result;
22
+ constructor(model: BaseLlm, input: AppAssemblerPipelineInput);
23
+ get result(): AppAssemblerPipelineResult;
24
+ protected runAsyncImpl(ctx: InvocationContext): AsyncGenerator<Event, void, void>;
25
+ protected runLiveImpl(_ctx: InvocationContext): AsyncGenerator<Event, void, void>;
26
+ }
27
+ //# sourceMappingURL=pipeline-agent.d.ts.map
@@ -0,0 +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;cA4EvE,WAAW,CAAC,IAAI,EAAE,iBAAiB,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;CAIzF"}
@@ -0,0 +1,91 @@
1
+ import { mkdirSync, writeFileSync } from 'node:fs';
2
+ import { dirname, resolve } from 'node:path';
3
+ import { BaseAgent, createEvent } from '@google/adk';
4
+ import { parseFiles } from '../file-parser.js';
5
+ import { buildRefinementPrompt, buildUserPrompt } from '../prompt.js';
6
+ import { runTypeCheck } from '../type-checker.js';
7
+ import { createAssemblerAgent } from './assembler-agent.js';
8
+ import { createRefinementAgent } from './refinement-agent.js';
9
+ export class AppAssemblerPipelineAgent extends BaseAgent {
10
+ constructor(model, input) {
11
+ const assemblerAgent = createAssemblerAgent(model);
12
+ const refinementAgent = createRefinementAgent(model);
13
+ super({
14
+ name: 'app_assembler_pipeline',
15
+ subAgents: [assemblerAgent, refinementAgent],
16
+ });
17
+ this._result = { files: [], refinements: 0, llmCalls: 0 };
18
+ this.input = input;
19
+ this.assemblerAgent = assemblerAgent;
20
+ this.refinementAgent = refinementAgent;
21
+ }
22
+ get result() {
23
+ return this._result;
24
+ }
25
+ async *runAsyncImpl(ctx) {
26
+ const { payload, targetDir, maxRefinements } = this.input;
27
+ // Initial generation
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
+ }
38
+ this._result.llmCalls++;
39
+ const assemblerOutput = String(ctx.session.state.assembler_output ?? '');
40
+ let files = parseFiles(assemblerOutput);
41
+ writeFiles(targetDir, files);
42
+ this._result.files = files;
43
+ // Type-check refinement loop
44
+ for (let i = 0; i < maxRefinements; i++) {
45
+ const generatedPaths = files.map((f) => f.path);
46
+ const result = runTypeCheck(targetDir, generatedPaths);
47
+ console.log(`[app-assembler] type-check iteration ${i + 1}/${maxRefinements} — passed=${result.passed}, errors=${result.errors.length}`);
48
+ if (result.errors.length > 0) {
49
+ console.log(`[app-assembler] errors:\n${result.errors.join('\n')}`);
50
+ }
51
+ console.log(`[app-assembler] generated files: ${generatedPaths.join(', ')}`);
52
+ if (result.passed)
53
+ break;
54
+ this._result.refinements++;
55
+ console.log(` refinement ${this._result.refinements}/${maxRefinements} — ${result.errors.length} errors`);
56
+ const refinementPrompt = buildRefinementPrompt(result.errors, files);
57
+ const refinementEvent = createEvent({
58
+ author: 'user',
59
+ invocationId: ctx.invocationId,
60
+ content: { role: 'user', parts: [{ text: refinementPrompt }] },
61
+ });
62
+ ctx.session.events.push(refinementEvent);
63
+ for await (const event of this.refinementAgent.runAsync(ctx)) {
64
+ yield event;
65
+ }
66
+ this._result.llmCalls++;
67
+ const refinementOutput = String(ctx.session.state.refinement_output ?? '');
68
+ const previousFiles = files.map((f) => f.path).join(', ');
69
+ files = parseFiles(refinementOutput);
70
+ console.log(`[app-assembler] refinement ${this._result.refinements} — files before: [${previousFiles}], files after: [${files.map((f) => f.path).join(', ')}]`);
71
+ writeFiles(targetDir, files);
72
+ this._result.files = files;
73
+ }
74
+ const lastCheck = runTypeCheck(targetDir, files.map((f) => f.path));
75
+ if (!lastCheck.passed) {
76
+ console.warn(`[app-assembler] WARNING: type-check still failing after ${maxRefinements} refinements. Remaining errors:\n${lastCheck.errors.join('\n')}`);
77
+ }
78
+ }
79
+ async *runLiveImpl(_ctx) {
80
+ yield* [];
81
+ throw new Error('Live mode not supported');
82
+ }
83
+ }
84
+ function writeFiles(targetDir, files) {
85
+ for (const file of files) {
86
+ const fullPath = resolve(targetDir, file.path);
87
+ mkdirSync(dirname(fullPath), { recursive: true });
88
+ writeFileSync(fullPath, file.content, 'utf-8');
89
+ }
90
+ }
91
+ //# sourceMappingURL=pipeline-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-agent.js","sourceRoot":"","sources":["../../../src/agents/pipeline-agent.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { LlmAgent } from '@google/adk';
2
+ import type { BaseLlm } from 'adk-llm-bridge';
3
+ export declare function createRefinementAgent(model: BaseLlm): LlmAgent;
4
+ //# sourceMappingURL=refinement-agent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refinement-agent.d.ts","sourceRoot":"","sources":["../../../src/agents/refinement-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAG9C,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,QAAQ,CAO9D"}
@@ -0,0 +1,11 @@
1
+ import { LlmAgent } from '@google/adk';
2
+ import { buildSystemPrompt } from '../prompt.js';
3
+ export function createRefinementAgent(model) {
4
+ return new LlmAgent({
5
+ name: 'app_refinement_agent',
6
+ model,
7
+ instruction: buildSystemPrompt(),
8
+ outputKey: 'refinement_output',
9
+ });
10
+ }
11
+ //# sourceMappingURL=refinement-agent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"refinement-agent.js","sourceRoot":"","sources":["../../../src/agents/refinement-agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,IAAI,QAAQ,CAAC;QAClB,IAAI,EAAE,sBAAsB;QAC5B,KAAK;QACL,WAAW,EAAE,iBAAiB,EAAE;QAChC,SAAS,EAAE,mBAAmB;KAC/B,CAAC,CAAC;AACL,CAAC"}
@@ -1,7 +1,7 @@
1
- import { type LanguageModel } from 'ai';
2
- import type { AssembleAppPayload, AssembleAppResult, ImplementedComponent } from './types.js';
3
- export declare function assembleApp(payload: AssembleAppPayload, implementedComponents: ImplementedComponent[], options: {
4
- model: LanguageModel;
1
+ import type { BaseLlm } from 'adk-llm-bridge';
2
+ import type { AssembleAppPayload, AssembleAppResult } from './types.js';
3
+ export declare function assembleApp(payload: AssembleAppPayload, options: {
4
+ model: BaseLlm;
5
5
  targetDir: string;
6
6
  maxRefinements?: number;
7
7
  }): Promise<AssembleAppResult>;
@@ -1 +1 @@
1
- {"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"AAEA,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,IAAI,CAAC;AAItD,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE9F,wBAAsB,WAAW,CAC/B,OAAO,EAAE,kBAAkB,EAC3B,qBAAqB,EAAE,oBAAoB,EAAE,EAC7C,OAAO,EAAE;IAAE,KAAK,EAAE,aAAa,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E,OAAO,CAAC,iBAAiB,CAAC,CAwE5B"}
1
+ {"version":3,"file":"assemble.d.ts","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAE9C,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,CA0B5B"}
@@ -1,68 +1,25 @@
1
- import { mkdirSync, writeFileSync } from 'node:fs';
2
- import { dirname, resolve } from 'node:path';
3
- import { generateText } from 'ai';
4
- import { parseFiles } from './file-parser.js';
5
- import { buildRefinementPrompt, buildSystemPrompt, buildUserPrompt } from './prompt.js';
6
- import { runTypeCheck } from './type-checker.js';
7
- export async function assembleApp(payload, implementedComponents, options) {
1
+ import { InMemorySessionService, Runner } from '@google/adk';
2
+ import { AppAssemblerPipelineAgent } from './agents/pipeline-agent.js';
3
+ export async function assembleApp(payload, options) {
8
4
  const { model, targetDir, maxRefinements = 3 } = options;
9
- let totalInputTokens = 0;
10
- let totalOutputTokens = 0;
11
- // Initial generation
12
- const systemPrompt = buildSystemPrompt();
13
- const userPrompt = buildUserPrompt(payload, implementedComponents);
14
- const initial = await generateText({
15
- model,
16
- system: systemPrompt,
17
- prompt: userPrompt,
5
+ const pipelineAgent = new AppAssemblerPipelineAgent(model, {
6
+ payload,
7
+ targetDir,
8
+ maxRefinements,
18
9
  });
19
- totalInputTokens += initial.usage.inputTokens ?? 0;
20
- totalOutputTokens += initial.usage.outputTokens ?? 0;
21
- let files = parseFiles(initial.text);
22
- writeFiles(targetDir, files);
23
- // Type-check refinement loop
24
- let refinements = 0;
25
- let lastTypeCheckResult;
26
- for (let i = 0; i < maxRefinements; i++) {
27
- const generatedPaths = files.map((f) => f.path);
28
- const result = runTypeCheck(targetDir, generatedPaths);
29
- lastTypeCheckResult = result;
30
- console.log(`[app-assembler] type-check iteration ${i + 1}/${maxRefinements} — passed=${result.passed}, errors=${result.errors.length}`);
31
- if (result.errors.length > 0) {
32
- console.log(`[app-assembler] errors:\n${result.errors.join('\n')}`);
33
- }
34
- console.log(`[app-assembler] generated files: ${generatedPaths.join(', ')}`);
35
- if (result.passed)
36
- break;
37
- refinements++;
38
- console.log(` refinement ${refinements}/${maxRefinements} — ${result.errors.length} errors`);
39
- const refinementPrompt = buildRefinementPrompt(result.errors, files);
40
- const refined = await generateText({
41
- model,
42
- system: systemPrompt,
43
- prompt: refinementPrompt,
44
- });
45
- totalInputTokens += refined.usage.inputTokens ?? 0;
46
- totalOutputTokens += refined.usage.outputTokens ?? 0;
47
- const previousFiles = files.map((f) => f.path).join(', ');
48
- files = parseFiles(refined.text);
49
- console.log(`[app-assembler] refinement ${refinements} — files before: [${previousFiles}], files after: [${files.map((f) => f.path).join(', ')}]`);
50
- writeFiles(targetDir, files);
51
- }
52
- if (lastTypeCheckResult && !lastTypeCheckResult.passed) {
53
- console.warn(`[app-assembler] WARNING: type-check still failing after ${maxRefinements} refinements. Remaining errors:\n${lastTypeCheckResult.errors.join('\n')}`);
10
+ const sessionService = new InMemorySessionService();
11
+ const runner = new Runner({ appName: 'app-assembler', agent: pipelineAgent, sessionService });
12
+ for await (const _event of runner.runEphemeral({
13
+ userId: 'pipeline',
14
+ newMessage: { role: 'user', parts: [{ text: `Assemble app ${payload.appName}` }] },
15
+ })) {
16
+ // consume events
54
17
  }
18
+ const { files, refinements, llmCalls } = pipelineAgent.result;
55
19
  return {
56
20
  files,
57
- usage: { inputTokens: totalInputTokens, outputTokens: totalOutputTokens },
21
+ llmCalls,
58
22
  refinements,
59
23
  };
60
24
  }
61
- function writeFiles(targetDir, files) {
62
- for (const file of files) {
63
- const fullPath = resolve(targetDir, file.path);
64
- mkdirSync(dirname(fullPath), { recursive: true });
65
- writeFileSync(fullPath, file.content, 'utf-8');
66
- }
67
- }
68
25
  //# sourceMappingURL=assemble.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"assemble.js","sourceRoot":"","sources":["../../src/assemble.ts"],"names":[],"mappings":"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"}
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;AAGvE,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,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,gBAAgB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,EAAE;KACnF,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"}
@@ -6,8 +6,7 @@ export type AssembleAppCommand = Command<'AssembleApp', {
6
6
  export type AppAssembledEvent = Event<'AppAssembled', {
7
7
  filesWritten: string[];
8
8
  refinements: number;
9
- inputTokens: number;
10
- outputTokens: number;
9
+ llmCalls: number;
11
10
  }>;
12
11
  export type AppAssemblyFailedEvent = Event<'AppAssemblyFailed', {
13
12
  error: string;
@@ -1 +1 @@
1
- {"version":3,"file":"assemble-app.d.ts","sourceRoot":"","sources":["../../../src/commands/assemble-app.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAI5F,OAAO,KAAK,EAAE,cAAc,EAA4C,MAAM,aAAa,CAAC;AAI5F,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,aAAa,EACb;IACE,GAAG,EAAE,cAAc,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,KAAK,CACnC,cAAc,EACd;IACE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;CACtB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AAyB3E,eAAO,MAAM,cAAc;;;aA9ClB,cAAc;;;;;GAqHrB,CAAC;AAEH,eAAe,cAAc,CAAC"}
1
+ {"version":3,"file":"assemble-app.d.ts","sourceRoot":"","sources":["../../../src/commands/assemble-app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,OAAO,EAAwB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAI5F,OAAO,KAAK,EAAE,cAAc,EAAsB,MAAM,aAAa,CAAC;AAItE,MAAM,MAAM,kBAAkB,GAAG,OAAO,CACtC,aAAa,EACb;IACE,GAAG,EAAE,cAAc,CAAC;CACrB,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,KAAK,CACnC,cAAc,EACd;IACE,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;CAClB,CACF,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG,KAAK,CACxC,mBAAmB,EACnB;IACE,KAAK,EAAE,MAAM,CAAC;CACf,CACF,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AAE3E,eAAO,MAAM,cAAc;;;aAtBlB,cAAc;;;;;GAyFrB,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -1,28 +1,9 @@
1
- import { readFile } from 'node:fs/promises';
2
1
  import path from 'node:path';
3
2
  import { defineCommandHandler } from '@auto-engineer/message-bus';
4
- import { createModelFromEnv } from '@auto-engineer/model-factory';
5
3
  import createDebug from 'debug';
6
4
  import { assembleApp } from '../assemble.js';
5
+ import { createModelFromEnv } from '../model/create-model.js';
7
6
  const debug = createDebug('auto:app-assembler:command');
8
- async function readComponentsDb(clientDir) {
9
- try {
10
- const raw = await readFile(path.join(clientDir, '.context', 'components-db.json'), 'utf-8');
11
- const entries = JSON.parse(raw);
12
- return entries
13
- .filter((e) => !!e.componentPath && !!e.name)
14
- .map((e) => ({
15
- componentId: e.id ?? e.name,
16
- componentName: e.name,
17
- filePath: e.componentPath,
18
- atomicType: e.atomicType ?? 'molecule',
19
- }));
20
- }
21
- catch {
22
- debug('No components-db.json found, proceeding with empty components list');
23
- return [];
24
- }
25
- }
26
7
  export const commandHandler = defineCommandHandler({
27
8
  name: 'AssembleApp',
28
9
  displayName: 'Assemble App',
@@ -50,10 +31,8 @@ export const commandHandler = defineCommandHandler({
50
31
  try {
51
32
  const clientDir = path.resolve('client');
52
33
  debug('Client directory: %s', clientDir);
53
- const implementedComponents = await readComponentsDb(clientDir);
54
- debug('Found %d implemented components', implementedComponents.length);
55
34
  const model = createModelFromEnv();
56
- const result = await assembleApp(payload, implementedComponents, {
35
+ const result = await assembleApp(payload, {
57
36
  model,
58
37
  targetDir: clientDir,
59
38
  });
@@ -64,8 +43,7 @@ export const commandHandler = defineCommandHandler({
64
43
  data: {
65
44
  filesWritten,
66
45
  refinements: result.refinements,
67
- inputTokens: result.usage.inputTokens,
68
- outputTokens: result.usage.outputTokens,
46
+ llmCalls: result.llmCalls,
69
47
  },
70
48
  timestamp: new Date(),
71
49
  requestId: command.requestId,
@@ -1 +1 @@
1
- {"version":3,"file":"assemble-app.js","sourceRoot":"","sources":["../../../src/commands/assemble-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"assemble-app.js","sourceRoot":"","sources":["../../../src/commands/assemble-app.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAgB,oBAAoB,EAAc,MAAM,4BAA4B,CAAC;AAC5F,OAAO,WAAW,MAAM,OAAO,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,MAAM,KAAK,GAAG,WAAW,CAAC,4BAA4B,CAAC,CAAC;AA2BxD,MAAM,CAAC,MAAM,cAAc,GAAG,oBAAoB,CAGhD;IACA,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,cAAc;IAC3B,KAAK,EAAE,cAAc;IACrB,WAAW,EAAE,wGAAwG;IACrH,QAAQ,EAAE,WAAW;IACrB,IAAI,EAAE,KAAK;IACX,MAAM,EAAE;QACN,GAAG,EAAE;YACH,WAAW,EAAE,qFAAqF;YAClG,QAAQ,EAAE,IAAI;SACf;KACF;IACD,QAAQ,EAAE;QACR,+GAA+G;KAChH;IACD,MAAM,EAAE;QACN,EAAE,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,eAAe,EAAE;QACtD,EAAE,IAAI,EAAE,mBAAmB,EAAE,WAAW,EAAE,qBAAqB,EAAE;KAClE;IACD,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;QACxB,MAAM,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;QAC7B,MAAM,OAAO,GAAuB,GAAG,CAAC,OAAO,CAAC;QAEhD,KAAK,CAAC,uCAAuC,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvF,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;YACzC,KAAK,CAAC,sBAAsB,EAAE,SAAS,CAAC,CAAC;YAEzC,MAAM,KAAK,GAAG,kBAAkB,EAAE,CAAC;YAEnC,MAAM,MAAM,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE;gBACxC,KAAK;gBACL,SAAS,EAAE,SAAS;aACrB,CAAC,CAAC;YAEH,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YACrD,KAAK,CAAC,yCAAyC,EAAE,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC;YAE1F,OAAO;gBACL,IAAI,EAAE,cAAc;gBACpB,IAAI,EAAE;oBACJ,YAAY;oBACZ,WAAW,EAAE,MAAM,CAAC,WAAW;oBAC/B,QAAQ,EAAE,MAAM,CAAC,QAAQ;iBAC1B;gBACD,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAC5E,KAAK,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;YAE3C,OAAO;gBACL,IAAI,EAAE,mBAAmB;gBACzB,IAAI,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE;gBAC7B,SAAS,EAAE,IAAI,IAAI,EAAE;gBACrB,SAAS,EAAE,OAAO,CAAC,SAAS;gBAC5B,aAAa,EAAE,OAAO,CAAC,aAAa;aACrC,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAC,CAAC;AAEH,eAAe,cAAc,CAAC"}
@@ -9,9 +9,11 @@ export declare const COMMANDS: import("@auto-engineer/message-bus").UnifiedComma
9
9
  correlationId?: string;
10
10
  }>>[];
11
11
  export { assembleAppHandler };
12
+ export type { AppAssemblerPipelineInput, AppAssemblerPipelineResult } from './agents/pipeline-agent.js';
13
+ export { AppAssemblerPipelineAgent } from './agents/pipeline-agent.js';
12
14
  export { assembleApp } from './assemble.js';
13
15
  export type { AppAssembledEvent, AppAssemblyFailedEvent, AssembleAppCommand, AssembleAppEvents, } from './commands/assemble-app.js';
14
16
  export { parseFiles } from './file-parser.js';
15
17
  export { runTypeCheck } from './type-checker.js';
16
- export type { AssembleAppJob, AssembleAppPayload, AssembleAppResult, CrossCuttingRule, ImplementedComponent, LayoutInfo, NavigationEdge, RouteDefinition, } from './types.js';
18
+ export type { AssembleAppJob, AssembleAppPayload, AssembleAppResult, CrossCuttingRule, LayoutInfo, NavigationEdge, RouteDefinition, } from './types.js';
17
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAElF,eAAO,MAAM,QAAQ;;;;;;;;KAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAElF,eAAO,MAAM,QAAQ;;;;;;;;KAAuB,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,YAAY,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AACxG,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,YAAY,EACV,iBAAiB,EACjB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,YAAY,EACV,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,cAAc,EACd,eAAe,GAChB,MAAM,YAAY,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { commandHandler as assembleAppHandler } from './commands/assemble-app.js';
2
2
  export const COMMANDS = [assembleAppHandler];
3
3
  export { assembleAppHandler };
4
+ export { AppAssemblerPipelineAgent } from './agents/pipeline-agent.js';
4
5
  export { assembleApp } from './assemble.js';
5
6
  export { parseFiles } from './file-parser.js';
6
7
  export { runTypeCheck } from './type-checker.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAElF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAElF,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,kBAAkB,CAAC,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAE9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAO5C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function createModelFromEnv(): import("adk-llm-bridge").CustomLlm;
2
+ //# sourceMappingURL=create-model.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-model.d.ts","sourceRoot":"","sources":["../../../src/model/create-model.ts"],"names":[],"mappings":"AAEA,wBAAgB,kBAAkB,uCAKjC"}
@@ -0,0 +1,8 @@
1
+ import { Custom } from 'adk-llm-bridge';
2
+ export function createModelFromEnv() {
3
+ return Custom(process.env.CUSTOM_PROVIDER_DEFAULT_MODEL || 'gemini/gemini-3.1-pro-preview', {
4
+ baseURL: process.env.CUSTOM_PROVIDER_BASE_URL,
5
+ apiKey: process.env.CUSTOM_PROVIDER_API_KEY,
6
+ });
7
+ }
8
+ //# sourceMappingURL=create-model.js.map
@@ -0,0 +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,OAAO,CAAC,GAAG,CAAC,6BAA6B,IAAI,+BAA+B,EAAE;QAC1F,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,wBAAyB;QAC9C,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,uBAAwB;KAC7C,CAAC,CAAC;AACL,CAAC"}
@@ -1,6 +1,6 @@
1
- import type { AssembleAppPayload, ImplementedComponent } from './types.js';
1
+ import type { AssembleAppPayload } from './types.js';
2
2
  export declare function buildSystemPrompt(): string;
3
- export declare function buildUserPrompt(payload: AssembleAppPayload, implementedComponents: ImplementedComponent[]): string;
3
+ export declare function buildUserPrompt(payload: AssembleAppPayload): string;
4
4
  export declare function buildRefinementPrompt(errors: string[], currentFiles: {
5
5
  path: string;
6
6
  content: string;
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.d.ts","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAE3E,wBAAgB,iBAAiB,IAAI,MAAM,CAoC1C;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,GAAG,MAAM,CA6BlH;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"}
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,CAoC1C;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"}
@@ -17,7 +17,7 @@ export function buildSystemPrompt() {
17
17
  - Always import the global CSS as the first import in App.tsx: \`import '@/index.css';\`
18
18
  - **Named exports ONLY** — NEVER use \`export default\`. Every export must be a named export (e.g. \`export function App()\`, \`export function MainLayout()\`). Every import must use named imports (e.g. \`import { App } from './App'\`, \`import { LogWorkoutPage } from '@/components/LogWorkoutPage'\`).
19
19
  - \`@/\` import alias maps to \`src/\`
20
- - All page components are in \`src/components/\` — use the exact file paths provided
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
23
  For each file you generate, output:
@@ -35,9 +35,11 @@ You may ONLY generate these files:
35
35
 
36
36
  Never generate or modify files in \`src/components/\`.`;
37
37
  }
38
- export function buildUserPrompt(payload, implementedComponents) {
39
- const pages = implementedComponents.filter((c) => c.atomicType === 'page');
40
- const nonPages = implementedComponents.filter((c) => c.atomicType !== 'page');
38
+ export function buildUserPrompt(payload) {
39
+ const routeComponents = payload.routes.map((r) => {
40
+ const importPath = `@/${r.componentPath.replace(/^src\//, '').replace(/\.tsx$/, '')}`;
41
+ return `- ${r.componentName} → import from "${importPath}" (route: ${r.path})`;
42
+ });
41
43
  return `## App: ${payload.appName}
42
44
 
43
45
  ## Route Definitions
@@ -55,12 +57,9 @@ ${JSON.stringify(payload.layout, null, 2)}
55
57
  ## Entry Route
56
58
  The default route ("/") should render: ${payload.entryRoute}
57
59
 
58
- ## Implemented Page Components
60
+ ## Page Components
59
61
  These are fully built page components. Import and wire them into routes:
60
- ${pages.map((c) => `- ${c.componentName} → import from "@/${c.filePath.replace(/^src\//, '').replace(/\.tsx$/, '')}" (pattern: route match by name)`).join('\n')}
61
-
62
- ## Other Implemented Components (for reference only — do NOT import these in App.tsx)
63
- ${nonPages.length > 0 ? nonPages.map((c) => `- ${c.componentName} (${c.atomicType}) at ${c.filePath}`).join('\n') : 'None'}
62
+ ${routeComponents.join('\n')}
64
63
 
65
64
  Generate the app shell files now.`;
66
65
  }
@@ -1 +1 @@
1
- {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAkC8C,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAA2B,EAAE,qBAA6C;IACxG,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;IAC3E,MAAM,QAAQ,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,CAAC;IAE9E,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,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,qBAAqB,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,kCAAkC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;;;EAG9J,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,aAAa,KAAK,CAAC,CAAC,UAAU,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM;;kCAExF,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,cAAc,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;oHAEiB,CAAC;AACrH,CAAC"}
1
+ {"version":3,"file":"prompt.js","sourceRoot":"","sources":["../../src/prompt.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,iBAAiB;IAC/B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uDAkC8C,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,cAAc,CAAC,CAAC,IAAI,oBAAoB,CAAC,CAAC,OAAO,UAAU,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;;oHAEiB,CAAC;AACrH,CAAC"}
@@ -4,12 +4,17 @@ export type RouteDefinition = {
4
4
  routeType: 'dedicated' | 'nested';
5
5
  deepLinkable: boolean;
6
6
  parentPath?: string;
7
- sceneName: string;
7
+ componentId: string;
8
+ componentName: string;
9
+ componentPath: string;
8
10
  interactionPattern: string;
9
11
  };
10
12
  export type NavigationEdge = {
11
- fromSceneName: string;
12
- toSceneName: string;
13
+ fromComponentId: string;
14
+ fromComponentName: string;
15
+ toComponentId: string;
16
+ toComponentName: string;
17
+ toPath: string;
13
18
  trigger: string;
14
19
  triggerLabel: string;
15
20
  triggerEmphasis?: 'primary' | 'secondary' | 'destructive' | 'ghost';
@@ -41,21 +46,12 @@ export type AssembleAppJob = {
41
46
  target: 'AssembleApp';
42
47
  payload: AssembleAppPayload;
43
48
  };
44
- export type ImplementedComponent = {
45
- componentId: string;
46
- componentName: string;
47
- filePath: string;
48
- atomicType: string;
49
- };
50
49
  export type AssembleAppResult = {
51
50
  files: {
52
51
  path: string;
53
52
  content: string;
54
53
  }[];
55
- usage: {
56
- inputTokens: number;
57
- outputTokens: number;
58
- };
54
+ llmCalls: number;
59
55
  refinements: number;
60
56
  };
61
57
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,WAAW,GAAG,QAAQ,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,kBAAkB,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,KAAK,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC;IACrD,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,eAAe,GAAG;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,SAAS,EAAE,WAAW,GAAG,QAAQ,CAAC;IAClC,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,CAAC,EAAE,SAAS,GAAG,WAAW,GAAG,aAAa,GAAG,OAAO,CAAC;CACrE,CAAC;AAEF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,WAAW,GAAG,MAAM,EAAE,CAAC;IAClC,IAAI,EAAE,MAAM,CAAC;CACd,CAAC;AAEF,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAC/B,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,eAAe,EAAE,cAAc,EAAE,CAAC;IAClC,iBAAiB,EAAE,gBAAgB,EAAE,CAAC;IACtC,MAAM,EAAE,UAAU,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,kBAAkB,CAAC;IACvB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG;IAC9B,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAC"}