tryassay 0.20.3 → 0.21.1

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 (31) hide show
  1. package/dist/api/server.d.ts +4 -0
  2. package/dist/api/server.js +247 -5
  3. package/dist/api/server.js.map +1 -1
  4. package/dist/cli.js +3 -1
  5. package/dist/cli.js.map +1 -1
  6. package/dist/commands/create.d.ts +2 -0
  7. package/dist/commands/create.js +74 -0
  8. package/dist/commands/create.js.map +1 -1
  9. package/dist/runtime/__tests__/check-loop.test.js +2 -2
  10. package/dist/runtime/__tests__/cross-verification-checks.test.d.ts +8 -0
  11. package/dist/runtime/__tests__/cross-verification-checks.test.js +365 -0
  12. package/dist/runtime/__tests__/cross-verification-checks.test.js.map +1 -0
  13. package/dist/runtime/agents/planner-agent.d.ts +18 -1
  14. package/dist/runtime/agents/planner-agent.js +162 -0
  15. package/dist/runtime/agents/planner-agent.js.map +1 -1
  16. package/dist/runtime/app-create-orchestrator.d.ts +46 -1
  17. package/dist/runtime/app-create-orchestrator.js +691 -7
  18. package/dist/runtime/app-create-orchestrator.js.map +1 -1
  19. package/dist/runtime/check-catalog.js +53 -0
  20. package/dist/runtime/check-catalog.js.map +1 -1
  21. package/dist/runtime/fs-helpers.d.ts +2 -0
  22. package/dist/runtime/fs-helpers.js +14 -0
  23. package/dist/runtime/fs-helpers.js.map +1 -1
  24. package/dist/runtime/functional-tester.d.ts +47 -0
  25. package/dist/runtime/functional-tester.js +775 -0
  26. package/dist/runtime/functional-tester.js.map +1 -0
  27. package/dist/runtime/plan-refiner.d.ts +14 -0
  28. package/dist/runtime/plan-refiner.js +160 -0
  29. package/dist/runtime/plan-refiner.js.map +1 -0
  30. package/dist/runtime/types.d.ts +126 -1
  31. package/package.json +1 -1
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Tests for 10 new verification checks (6 orchestrator cross-feature + 4 catalog).
3
+ *
4
+ * Tests A1-A6 by testing the helper functions and detection patterns directly
5
+ * (orchestrator methods are private — unit-testing the patterns is more focused).
6
+ * Tests B1-B4 by verifying catalog entry structure and strategy types.
7
+ */
8
+ export {};
@@ -0,0 +1,365 @@
1
+ /**
2
+ * Tests for 10 new verification checks (6 orchestrator cross-feature + 4 catalog).
3
+ *
4
+ * Tests A1-A6 by testing the helper functions and detection patterns directly
5
+ * (orchestrator methods are private — unit-testing the patterns is more focused).
6
+ * Tests B1-B4 by verifying catalog entry structure and strategy types.
7
+ */
8
+ import { describe, it, expect, beforeAll, afterAll } from 'vitest';
9
+ import { mkdir, writeFile, rm } from 'node:fs/promises';
10
+ import { join } from 'node:path';
11
+ import { tmpdir } from 'node:os';
12
+ import { randomUUID } from 'node:crypto';
13
+ import { resolveImport, readTsConfigPaths } from '../fs-helpers.js';
14
+ import { getCatalogChecks, getCatalogStats } from '../check-catalog.js';
15
+ // ── Helpers ──────────────────────────────────────────────────
16
+ const TEST_ROOT = join(tmpdir(), `assay-cross-verify-${randomUUID().slice(0, 8)}`);
17
+ beforeAll(async () => {
18
+ await mkdir(TEST_ROOT, { recursive: true });
19
+ });
20
+ afterAll(async () => {
21
+ await rm(TEST_ROOT, { recursive: true, force: true });
22
+ });
23
+ // ════════════════════════════════════════════════════════════════
24
+ // fs-helpers: readTsConfigPaths
25
+ // ════════════════════════════════════════════════════════════════
26
+ describe('readTsConfigPaths', () => {
27
+ it('reads paths from tsconfig.json', async () => {
28
+ const dir = join(TEST_ROOT, 'tsconfig-test');
29
+ await mkdir(dir, { recursive: true });
30
+ await writeFile(join(dir, 'tsconfig.json'), JSON.stringify({
31
+ compilerOptions: {
32
+ paths: { '@/*': ['./src/*'] },
33
+ },
34
+ }), 'utf-8');
35
+ const paths = await readTsConfigPaths(dir);
36
+ expect(paths).toEqual({ '@/*': ['./src/*'] });
37
+ });
38
+ it('returns empty object for missing tsconfig', async () => {
39
+ const dir = join(TEST_ROOT, 'no-tsconfig');
40
+ await mkdir(dir, { recursive: true });
41
+ const paths = await readTsConfigPaths(dir);
42
+ expect(paths).toEqual({});
43
+ });
44
+ it('handles tsconfig with comments', async () => {
45
+ const dir = join(TEST_ROOT, 'tsconfig-comments');
46
+ await mkdir(dir, { recursive: true });
47
+ await writeFile(join(dir, 'tsconfig.json'), `{
48
+ // This is a comment
49
+ "compilerOptions": {
50
+ "paths": { "@/*": ["./src/*"] }
51
+ }
52
+ }`, 'utf-8');
53
+ const paths = await readTsConfigPaths(dir);
54
+ expect(paths).toEqual({ '@/*': ['./src/*'] });
55
+ });
56
+ });
57
+ // ════════════════════════════════════════════════════════════════
58
+ // CATALOG CHECKS (B1-B4)
59
+ // ════════════════════════════════════════════════════════════════
60
+ describe('Catalog entries B1-B4', () => {
61
+ it('catalog has 43 total checks', () => {
62
+ const stats = getCatalogStats();
63
+ expect(stats.total).toBe(43);
64
+ expect(stats.tier1).toBe(43);
65
+ expect(stats.tier2).toBe(0);
66
+ });
67
+ it('B1: cat_next_005 — Link href to non-existent page', () => {
68
+ const checks = getCatalogChecks({ frameworks: ['nextjs'] });
69
+ const check = checks.find(c => c.id === 'cat_next_005');
70
+ expect(check).toBeDefined();
71
+ expect(check.strategy.type).toBe('cross_reference');
72
+ expect(check.severity).toBe('high');
73
+ expect(check.category).toBe('Next.js Boundary');
74
+ expect(check.tier).toBe(1);
75
+ });
76
+ it('B2: cat_web_005 — Import without package.json entry', () => {
77
+ const checks = getCatalogChecks({ frameworks: ['general'] });
78
+ const check = checks.find(c => c.id === 'cat_web_005');
79
+ expect(check).toBeDefined();
80
+ expect(check.strategy.type).toBe('cross_reference');
81
+ expect(check.severity).toBe('high');
82
+ expect(check.category).toBe('General Web');
83
+ });
84
+ it('B3: cat_next_006 — Missing default export in page file', () => {
85
+ const checks = getCatalogChecks({ frameworks: ['nextjs'] });
86
+ const check = checks.find(c => c.id === 'cat_next_006');
87
+ expect(check).toBeDefined();
88
+ expect(check.strategy.type).toBe('conditional_presence');
89
+ expect(check.severity).toBe('critical');
90
+ });
91
+ it('B4: cat_web_006 — Image without alt text', () => {
92
+ const checks = getCatalogChecks({ frameworks: ['general'] });
93
+ const check = checks.find(c => c.id === 'cat_web_006');
94
+ expect(check).toBeDefined();
95
+ expect(check.strategy.type).toBe('pattern_absence');
96
+ expect(check.severity).toBe('medium');
97
+ });
98
+ it('B1 cross_reference has correct source/target globs', () => {
99
+ const checks = getCatalogChecks({ frameworks: ['nextjs'] });
100
+ const check = checks.find(c => c.id === 'cat_next_005');
101
+ const strategy = check.strategy;
102
+ expect(strategy.sourceGlob).toContain('app');
103
+ expect(strategy.targetGlob).toContain('page');
104
+ });
105
+ it('all 4 new checks are tier 1', () => {
106
+ const all = getCatalogChecks();
107
+ const newIds = ['cat_next_005', 'cat_next_006', 'cat_web_005', 'cat_web_006'];
108
+ for (const id of newIds) {
109
+ const check = all.find(c => c.id === id);
110
+ expect(check, `${id} should exist`).toBeDefined();
111
+ expect(check.tier, `${id} should be tier 1`).toBe(1);
112
+ }
113
+ });
114
+ it('nextjs framework filter includes B1 and B3', () => {
115
+ const checks = getCatalogChecks({ frameworks: ['nextjs'] });
116
+ const ids = checks.map(c => c.id);
117
+ expect(ids).toContain('cat_next_005');
118
+ expect(ids).toContain('cat_next_006');
119
+ });
120
+ it('general framework filter includes B2 and B4', () => {
121
+ const checks = getCatalogChecks({ frameworks: ['general'] });
122
+ const ids = checks.map(c => c.id);
123
+ expect(ids).toContain('cat_web_005');
124
+ expect(ids).toContain('cat_web_006');
125
+ });
126
+ });
127
+ // ════════════════════════════════════════════════════════════════
128
+ // CROSS-FEATURE CHECKS (A1-A6) — Pattern and helper tests
129
+ // ════════════════════════════════════════════════════════════════
130
+ describe('A1: Import resolution (resolveImport)', () => {
131
+ it('resolves relative .ts import', () => {
132
+ const files = ['/project/src/utils.ts', '/project/src/index.ts'];
133
+ const result = resolveImport('/project/src/index.ts', './utils', files);
134
+ expect(result).toBe('/project/src/utils.ts');
135
+ });
136
+ it('resolves relative .tsx import', () => {
137
+ const files = ['/project/src/Button.tsx', '/project/src/App.tsx'];
138
+ const result = resolveImport('/project/src/App.tsx', './Button', files);
139
+ expect(result).toBe('/project/src/Button.tsx');
140
+ });
141
+ it('resolves index imports', () => {
142
+ const files = ['/project/src/lib/index.ts', '/project/src/App.tsx'];
143
+ const result = resolveImport('/project/src/App.tsx', './lib', files);
144
+ expect(result).toBe('/project/src/lib/index.ts');
145
+ });
146
+ it('returns null for broken import', () => {
147
+ const files = ['/project/src/index.ts'];
148
+ const result = resolveImport('/project/src/index.ts', './nonexistent', files);
149
+ expect(result).toBeNull();
150
+ });
151
+ it('resolves .js import', () => {
152
+ const files = ['/project/src/helper.js', '/project/src/main.ts'];
153
+ const result = resolveImport('/project/src/main.ts', './helper', files);
154
+ expect(result).toBe('/project/src/helper.js');
155
+ });
156
+ it('resolves .jsx import', () => {
157
+ const files = ['/project/src/Card.jsx', '/project/src/App.tsx'];
158
+ const result = resolveImport('/project/src/App.tsx', './Card', files);
159
+ expect(result).toBe('/project/src/Card.jsx');
160
+ });
161
+ it('resolves /index.tsx import', () => {
162
+ const files = ['/project/src/components/index.tsx', '/project/src/App.tsx'];
163
+ const result = resolveImport('/project/src/App.tsx', './components', files);
164
+ expect(result).toBe('/project/src/components/index.tsx');
165
+ });
166
+ it('prefers .ts over /index.ts when both exist', () => {
167
+ const files = [
168
+ '/project/src/utils.ts',
169
+ '/project/src/utils/index.ts',
170
+ '/project/src/App.tsx',
171
+ ];
172
+ const result = resolveImport('/project/src/App.tsx', './utils', files);
173
+ // .ts extension is tried before /index.ts in the extension list
174
+ expect(result).toBe('/project/src/utils.ts');
175
+ });
176
+ });
177
+ describe('A2: Package dependency detection patterns', () => {
178
+ const importRegex = () => /(?:import\s+.*?\s+from\s+['"]|import\s+['"]|require\s*\(\s*['"])([^./~][^'"]*)['"]/g;
179
+ it('detects standard import', () => {
180
+ const match = importRegex().exec(`import express from 'express';`);
181
+ expect(match).not.toBeNull();
182
+ expect(match[1]).toBe('express');
183
+ });
184
+ it('detects scoped package import', () => {
185
+ const match = importRegex().exec(`import { createClient } from '@supabase/supabase-js';`);
186
+ expect(match).not.toBeNull();
187
+ const raw = match[1];
188
+ const pkgName = raw.startsWith('@') ? raw.split('/').slice(0, 2).join('/') : raw.split('/')[0];
189
+ expect(pkgName).toBe('@supabase/supabase-js');
190
+ });
191
+ it('detects require() call', () => {
192
+ const match = importRegex().exec(`const fs = require('fs');`);
193
+ expect(match).not.toBeNull();
194
+ expect(match[1]).toBe('fs');
195
+ });
196
+ it('skips relative imports', () => {
197
+ const match = importRegex().exec(`import { foo } from './utils';`);
198
+ expect(match).toBeNull();
199
+ });
200
+ it('detects deep package import', () => {
201
+ const match = importRegex().exec(`import { Button } from 'antd/lib/button';`);
202
+ expect(match).not.toBeNull();
203
+ const raw = match[1];
204
+ const pkgName = raw.split('/')[0];
205
+ expect(pkgName).toBe('antd');
206
+ });
207
+ it('detects side-effect import', () => {
208
+ const match = importRegex().exec(`import 'dotenv/config';`);
209
+ expect(match).not.toBeNull();
210
+ const raw = match[1];
211
+ const pkgName = raw.split('/')[0];
212
+ expect(pkgName).toBe('dotenv');
213
+ });
214
+ it('detects invalid alias in package.json deps', () => {
215
+ const invalidKeys = ['@/lib', './utils', '~/components'];
216
+ for (const key of invalidKeys) {
217
+ const isInvalid = key.startsWith('@/') || key.startsWith('./') || key.startsWith('~/');
218
+ expect(isInvalid, `"${key}" should be detected as invalid`).toBe(true);
219
+ }
220
+ });
221
+ });
222
+ describe('A3: Self-fetch detection patterns', () => {
223
+ const selfFetchPattern = /fetch\s*\(\s*['"`](?:\/api\/|https?:\/\/localhost)/;
224
+ it('detects fetch("/api/...") pattern', () => {
225
+ expect(selfFetchPattern.test(`const data = await fetch('/api/users')`)).toBe(true);
226
+ });
227
+ it('detects fetch("http://localhost...") pattern', () => {
228
+ expect(selfFetchPattern.test(`const data = await fetch('http://localhost:3000/api')`)).toBe(true);
229
+ });
230
+ it('detects fetch("https://localhost...") pattern', () => {
231
+ expect(selfFetchPattern.test(`const data = await fetch('https://localhost:3000/api')`)).toBe(true);
232
+ });
233
+ it('does not match external fetch', () => {
234
+ expect(selfFetchPattern.test(`const data = await fetch('https://api.example.com/data')`)).toBe(false);
235
+ });
236
+ it('does not match fetch with variable', () => {
237
+ expect(selfFetchPattern.test(`const data = await fetch(apiUrl)`)).toBe(false);
238
+ });
239
+ it('skips client components (has "use client")', () => {
240
+ const content = `'use client';\nconst data = await fetch('/api/users');`;
241
+ const isClient = content.includes("'use client'") || content.includes('"use client"');
242
+ expect(isClient).toBe(true);
243
+ // In a client component, self-fetch is fine (runs in browser)
244
+ });
245
+ it('detects server component (no "use client")', () => {
246
+ const content = `import { db } from './db';\nexport default async function Page() {}`;
247
+ const isClient = content.includes("'use client'") || content.includes('"use client"');
248
+ expect(isClient).toBe(false);
249
+ // In a server component, self-fetch is a problem
250
+ });
251
+ });
252
+ describe('A4: TypeScript compilation check patterns', () => {
253
+ it('identifies tsc error lines', () => {
254
+ const output = `src/index.ts(1,1): error TS2304: Cannot find name 'foo'.\nsrc/utils.ts(5,10): error TS7006: Parameter 'x' implicitly has an 'any' type.`;
255
+ const errorLines = output.split('\n').filter(l => l.includes('error TS'));
256
+ expect(errorLines).toHaveLength(2);
257
+ });
258
+ it('extracts error code from tsc output', () => {
259
+ const line = `src/index.ts(1,1): error TS2304: Cannot find name 'foo'.`;
260
+ const match = line.match(/error (TS\d+)/);
261
+ expect(match).not.toBeNull();
262
+ expect(match[1]).toBe('TS2304');
263
+ });
264
+ it('extracts file from tsc error', () => {
265
+ const line = `src/index.ts(1,1): error TS2304: Cannot find name 'foo'.`;
266
+ const match = line.match(/^(.+?)\(\d+,\d+\):/);
267
+ expect(match).not.toBeNull();
268
+ expect(match[1]).toBe('src/index.ts');
269
+ });
270
+ it('handles clean tsc output (no errors)', () => {
271
+ const output = ``;
272
+ const errorLines = output.split('\n').filter(l => l.includes('error TS'));
273
+ expect(errorLines).toHaveLength(0);
274
+ });
275
+ });
276
+ describe('A5: Environment variable detection patterns', () => {
277
+ it('detects process.env.VAR_NAME', () => {
278
+ const regex = /process\.env\.([A-Z_][A-Z0-9_]*)/g;
279
+ const code = `const key = process.env.DATABASE_URL;`;
280
+ const match = regex.exec(code);
281
+ expect(match).not.toBeNull();
282
+ expect(match[1]).toBe('DATABASE_URL');
283
+ });
284
+ it('detects import.meta.env.VITE_VAR', () => {
285
+ const regex = /import\.meta\.env\.([A-Z_][A-Z0-9_]*)/g;
286
+ const code = `const url = import.meta.env.VITE_API_URL;`;
287
+ const match = regex.exec(code);
288
+ expect(match).not.toBeNull();
289
+ expect(match[1]).toBe('VITE_API_URL');
290
+ });
291
+ it('detects multiple env vars in same file', () => {
292
+ const regex = /process\.env\.([A-Z_][A-Z0-9_]*)/g;
293
+ const code = `const db = process.env.DATABASE_URL;\nconst key = process.env.API_KEY;`;
294
+ const vars = [];
295
+ let match;
296
+ while ((match = regex.exec(code)) !== null) {
297
+ vars.push(match[1]);
298
+ }
299
+ expect(vars).toEqual(['DATABASE_URL', 'API_KEY']);
300
+ });
301
+ it('standard vars are excluded from checks', () => {
302
+ const wellKnown = new Set([
303
+ 'NODE_ENV', 'PORT', 'HOME', 'PATH', 'CI', 'VERCEL',
304
+ ]);
305
+ expect(wellKnown.has('NODE_ENV')).toBe(true);
306
+ expect(wellKnown.has('DATABASE_URL')).toBe(false);
307
+ });
308
+ it('parses .env file format', () => {
309
+ const envContent = `DATABASE_URL=postgres://...\n# comment\nAPI_KEY=secret123\n`;
310
+ const varRegex = /^([A-Z_][A-Z0-9_]*)=/gm;
311
+ const vars = [];
312
+ let match;
313
+ while ((match = varRegex.exec(envContent)) !== null) {
314
+ vars.push(match[1]);
315
+ }
316
+ expect(vars).toEqual(['DATABASE_URL', 'API_KEY']);
317
+ });
318
+ it('ignores comments and empty lines in .env', () => {
319
+ const envContent = `# This is a comment\n\nVAR_ONE=value\n# Another comment\nVAR_TWO=value2\n`;
320
+ const varRegex = /^([A-Z_][A-Z0-9_]*)=/gm;
321
+ const vars = [];
322
+ let match;
323
+ while ((match = varRegex.exec(envContent)) !== null) {
324
+ vars.push(match[1]);
325
+ }
326
+ expect(vars).toEqual(['VAR_ONE', 'VAR_TWO']);
327
+ });
328
+ });
329
+ describe('A6: Asset reference detection patterns', () => {
330
+ const assetRefRegex = () => /(?:src|href)=["'](\/((?:assets|images|icons|fonts|media|public)[^"']*))["']/g;
331
+ it('detects src="/assets/..." pattern', () => {
332
+ const match = assetRefRegex().exec(`<img src="/assets/logo.png" />`);
333
+ expect(match).not.toBeNull();
334
+ expect(match[1]).toBe('/assets/logo.png');
335
+ });
336
+ it('detects href="/images/..." pattern', () => {
337
+ const match = assetRefRegex().exec(`<link href="/images/favicon.ico" />`);
338
+ expect(match).not.toBeNull();
339
+ expect(match[1]).toBe('/images/favicon.ico');
340
+ });
341
+ it('detects src="/icons/..." pattern', () => {
342
+ const match = assetRefRegex().exec(`<img src="/icons/menu.svg" />`);
343
+ expect(match).not.toBeNull();
344
+ expect(match[1]).toBe('/icons/menu.svg');
345
+ });
346
+ it('detects href="/fonts/..." pattern', () => {
347
+ const match = assetRefRegex().exec(`<link href="/fonts/inter.woff2" />`);
348
+ expect(match).not.toBeNull();
349
+ expect(match[1]).toBe('/fonts/inter.woff2');
350
+ });
351
+ it('skips external URLs', () => {
352
+ const match = assetRefRegex().exec(`<img src="https://cdn.example.com/logo.png" />`);
353
+ expect(match).toBeNull();
354
+ });
355
+ it('skips relative paths without known prefix', () => {
356
+ const match = assetRefRegex().exec(`<img src="/unknown/logo.png" />`);
357
+ expect(match).toBeNull();
358
+ });
359
+ it('detects nested asset paths', () => {
360
+ const match = assetRefRegex().exec(`<img src="/assets/icons/close.svg" />`);
361
+ expect(match).not.toBeNull();
362
+ expect(match[1]).toBe('/assets/icons/close.svg');
363
+ });
364
+ });
365
+ //# sourceMappingURL=cross-verification-checks.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cross-verification-checks.test.js","sourceRoot":"","sources":["../../../src/runtime/__tests__/cross-verification-checks.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { SpecializedAgent, type TaskAssignmentPayload, type TaskResultPayload } from '../specialized-agent.js';
2
- import type { AgentMessage } from '../types.js';
2
+ import type { AgentMessage, ArchitecturePlan, PlanQuestion, PlanAnswer } from '../types.js';
3
3
  import type { MessageBus } from '../message-bus.js';
4
4
  export declare class PlannerAgent extends SpecializedAgent {
5
5
  constructor(messageBus: MessageBus, opts?: {
@@ -7,6 +7,23 @@ export declare class PlannerAgent extends SpecializedAgent {
7
7
  });
8
8
  protected onMessage(_message: AgentMessage): void;
9
9
  executeTask(task: TaskAssignmentPayload): Promise<TaskResultPayload>;
10
+ /**
11
+ * Analyze the user prompt and current plan to generate structured questions
12
+ * about ambiguities that significantly affect architecture decisions.
13
+ */
14
+ generateQuestions(userPrompt: string, currentPlan?: ArchitecturePlan): Promise<PlanQuestion[]>;
15
+ /**
16
+ * Refine the architecture plan by incorporating user answers to questions.
17
+ * Returns updated plan and a confidence score (0-1).
18
+ */
19
+ refinePlan(currentPlan: ArchitecturePlan, answers: PlanAnswer[], userPrompt: string): Promise<{
20
+ plan: ArchitecturePlan;
21
+ confidence: number;
22
+ }>;
23
+ /**
24
+ * Try to extract a JSON array from LLM response text.
25
+ */
26
+ private extractJsonArray;
10
27
  private parsePlanResponse;
11
28
  /**
12
29
  * Try multiple strategies to extract JSON from LLM response:
@@ -161,6 +161,168 @@ Design the complete architecture now. Remember to state your claims explicitly.`
161
161
  };
162
162
  }
163
163
  }
164
+ /**
165
+ * Analyze the user prompt and current plan to generate structured questions
166
+ * about ambiguities that significantly affect architecture decisions.
167
+ */
168
+ async generateQuestions(userPrompt, currentPlan) {
169
+ const systemPrompt = `You are a Requirements Analyst clarifying what the user wants to build BEFORE architecture planning begins.
170
+
171
+ Given the user's prompt, identify 2-6 questions about decisions that significantly affect what gets built. These questions refine requirements so the architecture plan is accurate on the first pass.
172
+
173
+ Rules:
174
+ 1. Focus on decisions that change scope, features, auth, data model, or user experience — not implementation details.
175
+ 2. Generate options SPECIFIC to this prompt (not generic boilerplate).
176
+ 3. Use multiSelect: true for feature selection questions where multiple options can apply.
177
+ 4. Keep headers under 12 characters.
178
+ 5. Each question should have 2-4 concrete options with short labels and clear descriptions.
179
+ 6. Do NOT ask about things the user already specified clearly in their prompt.
180
+ 7. Prioritize the highest-impact decisions first.
181
+
182
+ Respond with ONLY a JSON array of question objects:
183
+ [
184
+ {
185
+ "id": "unique-id",
186
+ "question": "Full question text?",
187
+ "header": "Short label",
188
+ "options": [
189
+ { "label": "Option A", "description": "What this means for the app" },
190
+ { "label": "Option B", "description": "What this means for the app" }
191
+ ],
192
+ "multiSelect": false
193
+ }
194
+ ]`;
195
+ let userMessage = `USER PROMPT: ${userPrompt}`;
196
+ if (currentPlan) {
197
+ userMessage += `\n\nCURRENT PLAN SUMMARY:
198
+ - Features: ${currentPlan.features.map(f => f.name).join(', ')}
199
+ - Schema entities: ${currentPlan.schema.map(e => e.name).join(', ')}
200
+ - API routes: ${currentPlan.apiRoutes.length}
201
+ - Pages: ${currentPlan.pages.length}
202
+ - Auth: ${currentPlan.authPlan ? `${currentPlan.authPlan.provider} (${currentPlan.authPlan.methods.join(', ')})` : 'None'}`;
203
+ }
204
+ userMessage += `\n\nIdentify what's ambiguous or underspecified and generate structured questions.`;
205
+ try {
206
+ const { content } = await this.callClaude(systemPrompt, userMessage);
207
+ const parsed = this.extractJsonArray(content);
208
+ if (!Array.isArray(parsed))
209
+ return [];
210
+ return parsed
211
+ .filter((q) => q !== null && typeof q === 'object')
212
+ .map((q) => ({
213
+ id: typeof q.id === 'string' ? q.id : `q-${Math.random().toString(36).slice(2, 8)}`,
214
+ question: typeof q.question === 'string' ? q.question : '',
215
+ header: typeof q.header === 'string' ? q.header.slice(0, 12) : '',
216
+ options: Array.isArray(q.options)
217
+ ? q.options
218
+ .filter((o) => o !== null && typeof o === 'object')
219
+ .map((o) => ({
220
+ label: typeof o.label === 'string' ? o.label : '',
221
+ description: typeof o.description === 'string' ? o.description : '',
222
+ }))
223
+ : [],
224
+ multiSelect: typeof q.multiSelect === 'boolean' ? q.multiSelect : false,
225
+ }))
226
+ .filter((q) => q.question && q.options.length >= 2);
227
+ }
228
+ catch {
229
+ return [];
230
+ }
231
+ }
232
+ /**
233
+ * Refine the architecture plan by incorporating user answers to questions.
234
+ * Returns updated plan and a confidence score (0-1).
235
+ */
236
+ async refinePlan(currentPlan, answers, userPrompt) {
237
+ const answersText = answers
238
+ .map((a) => `- ${a.questionId}: ${a.selectedOptions.join(', ')}${a.customText ? ` (note: ${a.customText})` : ''}`)
239
+ .join('\n');
240
+ const systemPrompt = `You are a Planning Agent refining an application architecture based on user feedback.
241
+
242
+ Given the original prompt, the current architecture plan, and the user's answers to clarifying questions, produce an UPDATED architecture plan that incorporates the answers.
243
+
244
+ Also assess your confidence (0.0 to 1.0) that the plan now fully captures the user's intent. A confidence >= 0.95 means no more questions are needed.
245
+
246
+ Respond with JSON:
247
+ {
248
+ "plan": { ... full ArchitecturePlan ... },
249
+ "confidence": 0.85,
250
+ "reasoning": "Why this confidence level"
251
+ }`;
252
+ const userMessage = `ORIGINAL PROMPT: ${userPrompt}
253
+
254
+ USER ANSWERS:
255
+ ${answersText}
256
+
257
+ CURRENT PLAN:
258
+ ${JSON.stringify(currentPlan, null, 2)}
259
+
260
+ Refine the plan incorporating these answers. Return the complete updated plan.`;
261
+ try {
262
+ const { content } = await this.callClaude(systemPrompt, userMessage);
263
+ const parsed = this.extractJson(content);
264
+ if (!parsed || !parsed.plan) {
265
+ return { plan: currentPlan, confidence: 0.5 };
266
+ }
267
+ const rawPlan = parsed.plan;
268
+ const refinedPlan = {
269
+ schema: Array.isArray(rawPlan.schema) ? rawPlan.schema : currentPlan.schema,
270
+ apiRoutes: Array.isArray(rawPlan.apiRoutes) ? rawPlan.apiRoutes : currentPlan.apiRoutes,
271
+ pages: Array.isArray(rawPlan.pages) ? rawPlan.pages : currentPlan.pages,
272
+ features: Array.isArray(rawPlan.features) ? rawPlan.features : currentPlan.features,
273
+ ipcChannels: Array.isArray(rawPlan.ipcChannels) ? rawPlan.ipcChannels : currentPlan.ipcChannels,
274
+ dependencyOrder: Array.isArray(rawPlan.dependencyOrder) ? rawPlan.dependencyOrder : currentPlan.dependencyOrder,
275
+ authPlan: rawPlan.authPlan !== undefined ? rawPlan.authPlan : currentPlan.authPlan,
276
+ deployConfig: rawPlan.deployConfig !== undefined ? rawPlan.deployConfig : currentPlan.deployConfig,
277
+ };
278
+ const confidence = typeof parsed.confidence === 'number'
279
+ ? Math.max(0, Math.min(1, parsed.confidence))
280
+ : 0.5;
281
+ return { plan: refinedPlan, confidence };
282
+ }
283
+ catch {
284
+ return { plan: currentPlan, confidence: 0.5 };
285
+ }
286
+ }
287
+ /**
288
+ * Try to extract a JSON array from LLM response text.
289
+ */
290
+ extractJsonArray(raw) {
291
+ const cleaned = raw.trim();
292
+ // Strategy 1: Direct parse
293
+ try {
294
+ const parsed = JSON.parse(cleaned);
295
+ if (Array.isArray(parsed))
296
+ return parsed;
297
+ }
298
+ catch { /* continue */ }
299
+ // Strategy 2: Strip markdown code fences
300
+ if (cleaned.startsWith('```')) {
301
+ const firstNewline = cleaned.indexOf('\n');
302
+ const lastFence = cleaned.lastIndexOf('```');
303
+ if (firstNewline > 0 && lastFence > firstNewline) {
304
+ const inner = cleaned.slice(firstNewline + 1, lastFence).trim();
305
+ try {
306
+ const parsed = JSON.parse(inner);
307
+ if (Array.isArray(parsed))
308
+ return parsed;
309
+ }
310
+ catch { /* continue */ }
311
+ }
312
+ }
313
+ // Strategy 3: Find first [ to last ]
314
+ const firstBracket = cleaned.indexOf('[');
315
+ const lastBracket = cleaned.lastIndexOf(']');
316
+ if (firstBracket >= 0 && lastBracket > firstBracket) {
317
+ try {
318
+ const parsed = JSON.parse(cleaned.slice(firstBracket, lastBracket + 1));
319
+ if (Array.isArray(parsed))
320
+ return parsed;
321
+ }
322
+ catch { /* continue */ }
323
+ }
324
+ return null;
325
+ }
164
326
  parsePlanResponse(raw) {
165
327
  const parsed = this.extractJson(raw);
166
328
  if (parsed) {
@@ -1 +1 @@
1
- {"version":3,"file":"planner-agent.js","sourceRoot":"","sources":["../../../src/runtime/agents/planner-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"planner-agent.js","sourceRoot":"","sources":["../../../src/runtime/agents/planner-agent.ts"],"names":[],"mappings":"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"}