tryassay 0.16.0 → 0.18.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fs-helpers.js","sourceRoot":"","sources":["../../src/runtime/fs-helpers.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,12 @@
1
1
  /**
2
2
  * IntegrationVerifier — deterministic wiring checks for generated applications.
3
3
  *
4
- * Catches four classes of integration failure that compile clean but don't work:
4
+ * Catches five classes of integration failure that compile clean but don't work:
5
5
  * 1. Missing Router provider (pages use react-router hooks but no Router wraps them)
6
6
  * 2. Missing IPC handlers (preload invokes channels with no main-process handler)
7
7
  * 3. Stub functions (async functions that return literal objects without doing real work)
8
8
  * 4. Unreachable pages (page files exist but are never imported from the entry point)
9
+ * 5. Response shape mismatch (handler wraps in {success, data} but preload doesn't unwrap)
9
10
  *
10
11
  * Zero LLM calls. Deterministic. Uses only node:fs/promises, node:path, and regex.
11
12
  */
@@ -37,14 +38,13 @@ export declare class IntegrationVerifier {
37
38
  * Report any page file not transitively imported.
38
39
  */
39
40
  checkUnreachablePages(): Promise<IntegrationCheck[]>;
40
- /** Recursively find files matching a pattern. */
41
- private findFiles;
41
+ /**
42
+ * Electron only. Cross-reference preload invoke handling against handler return shapes.
43
+ * Detects the mismatch where a handler wraps its response in { success, data }
44
+ * but the preload passes the raw IPC result through without unwrapping .data.
45
+ * This causes renderer code to access result.rows when actual data is at result.data.rows.
46
+ */
47
+ checkResponseShapeConsistency(): Promise<IntegrationCheck[]>;
42
48
  /** Check if the project has preload files (indicating Electron). */
43
49
  private hasPreloadFiles;
44
- /** Find the matching closing brace for an opening brace at the given index. */
45
- private findMatchingBrace;
46
- /** Trace imports transitively from a file. */
47
- private traceImports;
48
- /** Resolve a relative import path to an actual file. */
49
- private resolveImport;
50
50
  }
@@ -1,16 +1,20 @@
1
1
  /**
2
2
  * IntegrationVerifier — deterministic wiring checks for generated applications.
3
3
  *
4
- * Catches four classes of integration failure that compile clean but don't work:
4
+ * Catches five classes of integration failure that compile clean but don't work:
5
5
  * 1. Missing Router provider (pages use react-router hooks but no Router wraps them)
6
6
  * 2. Missing IPC handlers (preload invokes channels with no main-process handler)
7
7
  * 3. Stub functions (async functions that return literal objects without doing real work)
8
8
  * 4. Unreachable pages (page files exist but are never imported from the entry point)
9
+ * 5. Response shape mismatch (handler wraps in {success, data} but preload doesn't unwrap)
9
10
  *
10
11
  * Zero LLM calls. Deterministic. Uses only node:fs/promises, node:path, and regex.
11
12
  */
12
- import { readdir, readFile } from 'node:fs/promises';
13
- import { join, relative, basename, extname } from 'node:path';
13
+ import { readFile } from 'node:fs/promises';
14
+ import { relative, basename, extname } from 'node:path';
15
+ import { findFiles, traceImports, findMatchingBrace } from './fs-helpers.js';
16
+ import { CheckExecutor } from './check-definitions.js';
17
+ import { CheckStore } from './check-store.js';
14
18
  export class IntegrationVerifier {
15
19
  projectPath;
16
20
  framework;
@@ -26,8 +30,23 @@ export class IntegrationVerifier {
26
30
  if (this.framework === 'electron' || await this.hasPreloadFiles()) {
27
31
  checks.push(...await this.checkIpcHandlerCoverage());
28
32
  checks.push(...await this.checkStubFunctions());
33
+ checks.push(...await this.checkResponseShapeConsistency());
29
34
  }
30
35
  checks.push(...await this.checkUnreachablePages());
36
+ // Dynamic checks from CheckStore
37
+ try {
38
+ const store = new CheckStore();
39
+ const activeChecks = await store.getActive(this.framework);
40
+ if (activeChecks.length > 0) {
41
+ const executor = new CheckExecutor();
42
+ for (const def of activeChecks) {
43
+ checks.push(...await executor.execute(def, this.projectPath));
44
+ }
45
+ }
46
+ }
47
+ catch {
48
+ // CheckStore unavailable — continue with hardcoded checks only
49
+ }
31
50
  const passedCount = checks.filter(c => c.verdict === 'PASS').length;
32
51
  const failedCount = checks.filter(c => c.verdict === 'FAIL').length;
33
52
  return {
@@ -45,7 +64,7 @@ export class IntegrationVerifier {
45
64
  * If found, verify a Router provider exists in the entry point chain.
46
65
  */
47
66
  async checkRoutingProvider() {
48
- const tsxFiles = await this.findFiles(this.projectPath, /\.(tsx|jsx)$/);
67
+ const tsxFiles = await findFiles(this.projectPath, /\.(tsx|jsx)$/);
49
68
  const routerHookPattern = /\b(useNavigate|useParams|useLocation|useSearchParams|useMatch|useRoutes)\b/;
50
69
  const routerProviderPattern = /\b(BrowserRouter|HashRouter|MemoryRouter|RouterProvider|createBrowserRouter|createHashRouter|createMemoryRouter)\b/;
51
70
  // Find files that use router hooks
@@ -95,7 +114,7 @@ export class IntegrationVerifier {
95
114
  * Report any channel invoked but not handled.
96
115
  */
97
116
  async checkIpcHandlerCoverage() {
98
- const allFiles = await this.findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
117
+ const allFiles = await findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
99
118
  // Find channels invoked in preload (renderer-side)
100
119
  const invokedChannels = new Map(); // channel -> file
101
120
  const invokePattern = /ipcRenderer\.invoke\(\s*['"`]([^'"`]+)['"`]/g;
@@ -184,7 +203,7 @@ export class IntegrationVerifier {
184
203
  * without ipcRenderer.invoke, await, .query(), or fetch().
185
204
  */
186
205
  async checkStubFunctions() {
187
- const allFiles = await this.findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
206
+ const allFiles = await findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
188
207
  const checks = [];
189
208
  for (const file of allFiles) {
190
209
  const relPath = relative(this.projectPath, file);
@@ -199,7 +218,7 @@ export class IntegrationVerifier {
199
218
  let match;
200
219
  while ((match = stubPattern.exec(content)) !== null) {
201
220
  const startIdx = match.index + match[0].length;
202
- const bodyEnd = this.findMatchingBrace(content, startIdx - 1);
221
+ const bodyEnd = findMatchingBrace(content, startIdx - 1);
203
222
  if (bodyEnd === -1)
204
223
  continue;
205
224
  const body = content.slice(startIdx, bodyEnd).trim();
@@ -232,7 +251,7 @@ export class IntegrationVerifier {
232
251
  */
233
252
  async checkUnreachablePages() {
234
253
  // Find page files
235
- const allFiles = await this.findFiles(this.projectPath, /\.(tsx|jsx|ts|js)$/);
254
+ const allFiles = await findFiles(this.projectPath, /\.(tsx|jsx|ts|js)$/);
236
255
  const pageFiles = allFiles.filter(f => {
237
256
  const rel = relative(this.projectPath, f);
238
257
  return rel.includes('pages/') || rel.includes('pages\\');
@@ -254,7 +273,7 @@ export class IntegrationVerifier {
254
273
  }
255
274
  // Build transitive import graph from entry point
256
275
  const reachable = new Set();
257
- await this.traceImports(entryFile, reachable, allFiles);
276
+ await traceImports(entryFile, reachable, allFiles);
258
277
  const checks = [];
259
278
  for (const pageFile of pageFiles) {
260
279
  const relPath = relative(this.projectPath, pageFile);
@@ -280,94 +299,126 @@ export class IntegrationVerifier {
280
299
  }
281
300
  return checks;
282
301
  }
283
- // ── Helpers ────────────────────────────────────────────────
284
- /** Recursively find files matching a pattern. */
285
- async findFiles(dir, pattern) {
286
- const results = [];
287
- try {
288
- const entries = await readdir(dir, { withFileTypes: true });
289
- for (const entry of entries) {
290
- const fullPath = join(dir, entry.name);
291
- if (entry.isDirectory()) {
292
- if (entry.name === 'node_modules' || entry.name === 'dist' || entry.name === '.git' || entry.name === 'out' || entry.name === 'build' || entry.name === '.next')
293
- continue;
294
- results.push(...await this.findFiles(fullPath, pattern));
295
- }
296
- else if (pattern.test(entry.name)) {
297
- results.push(fullPath);
298
- }
302
+ // ── Check 5: Response Shape Consistency ─────────────────────
303
+ /**
304
+ * Electron only. Cross-reference preload invoke handling against handler return shapes.
305
+ * Detects the mismatch where a handler wraps its response in { success, data }
306
+ * but the preload passes the raw IPC result through without unwrapping .data.
307
+ * This causes renderer code to access result.rows when actual data is at result.data.rows.
308
+ */
309
+ async checkResponseShapeConsistency() {
310
+ const allFiles = await findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
311
+ // Build constant→string-value map from IPC_CHANNELS definitions
312
+ const constantMap = new Map();
313
+ for (const file of allFiles) {
314
+ const relPath = relative(this.projectPath, file);
315
+ if (!relPath.includes('shared') && !relPath.includes('types') && !relPath.includes('constants'))
316
+ continue;
317
+ const content = await readFile(file, 'utf-8');
318
+ if (!content.includes('IPC_CHANNELS'))
319
+ continue;
320
+ const constDefRegex = /(\w+)\s*:\s*['"`]([^'"`]+)['"`]/g;
321
+ let m;
322
+ while ((m = constDefRegex.exec(content)) !== null) {
323
+ constantMap.set(`IPC_CHANNELS.${m[1]}`, m[2]);
299
324
  }
300
325
  }
301
- catch {
302
- // Directory doesn't exist or can't be read
303
- }
304
- return results;
305
- }
306
- /** Check if the project has preload files (indicating Electron). */
307
- async hasPreloadFiles() {
308
- const files = await this.findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
309
- return files.some(f => relative(this.projectPath, f).includes('preload'));
310
- }
311
- /** Find the matching closing brace for an opening brace at the given index. */
312
- findMatchingBrace(content, openIdx) {
313
- let depth = 0;
314
- for (let i = openIdx; i < content.length; i++) {
315
- if (content[i] === '{')
316
- depth++;
317
- else if (content[i] === '}') {
318
- depth--;
319
- if (depth === 0)
320
- return i;
326
+ // Classify preload invoke calls
327
+ const invokePattern = /ipcRenderer\.invoke\(\s*['"`]([^'"`]+)['"`]/g;
328
+ const preloadChannels = new Map();
329
+ for (const file of allFiles) {
330
+ const relPath = relative(this.projectPath, file);
331
+ if (!relPath.includes('preload'))
332
+ continue;
333
+ const content = await readFile(file, 'utf-8');
334
+ const lines = content.split('\n');
335
+ let match;
336
+ while ((match = invokePattern.exec(content)) !== null) {
337
+ const channel = match[1];
338
+ const lineIndex = content.slice(0, match.index).split('\n').length - 1;
339
+ // Look at surrounding context (~20 lines after) for .data access
340
+ const surroundingLines = lines.slice(lineIndex, lineIndex + 20).join('\n');
341
+ // Check if the code accesses .data on the result (unwrapping the wrapper)
342
+ const unwraps = /\.(data)\b/.test(surroundingLines);
343
+ preloadChannels.set(channel, { file: relPath, unwraps });
321
344
  }
322
345
  }
323
- return -1;
324
- }
325
- /** Trace imports transitively from a file. */
326
- async traceImports(file, visited, allFiles) {
327
- if (visited.has(file))
328
- return;
329
- visited.add(file);
330
- let content;
331
- try {
332
- content = await readFile(file, 'utf-8');
333
- }
334
- catch {
335
- return;
336
- }
337
- // Match import statements: import ... from './path' or import './path'
338
- const importPattern = /(?:import\s+(?:[\s\S]*?)\s+from\s+|import\s+)['"]([^'"]+)['"]/g;
339
- // Also match dynamic imports: import('./path')
340
- const dynamicImportPattern = /import\(\s*['"]([^'"]+)['"]\s*\)/g;
341
- const importPaths = [];
342
- let match;
343
- while ((match = importPattern.exec(content)) !== null) {
344
- importPaths.push(match[1]);
345
- }
346
- while ((match = dynamicImportPattern.exec(content)) !== null) {
347
- importPaths.push(match[1]);
348
- }
349
- for (const importPath of importPaths) {
350
- if (!importPath.startsWith('.'))
351
- continue; // Skip node_modules imports
352
- const resolved = this.resolveImport(file, importPath, allFiles);
353
- if (resolved) {
354
- await this.traceImports(resolved, visited, allFiles);
346
+ if (preloadChannels.size === 0)
347
+ return [];
348
+ // Classify handler return shapes
349
+ const handlePattern = /ipcMain\.handle\(\s*['"`]([^'"`]+)['"`]/g;
350
+ const constHandlePattern = /ipcMain\.handle\(\s*([\w.]+)\s*,/g;
351
+ const handlerChannels = new Map();
352
+ for (const file of allFiles) {
353
+ const relPath = relative(this.projectPath, file);
354
+ if (!relPath.includes('main') && !relPath.includes('ipc') && !relPath.includes('handler'))
355
+ continue;
356
+ const content = await readFile(file, 'utf-8');
357
+ const lines = content.split('\n');
358
+ // String-literal handle registrations
359
+ let match;
360
+ while ((match = handlePattern.exec(content)) !== null) {
361
+ const channel = match[1];
362
+ const lineIndex = content.slice(0, match.index).split('\n').length - 1;
363
+ const handlerLines = lines.slice(lineIndex, lineIndex + 60).join('\n');
364
+ const wrapped = /return\s*\{\s*success:\s*true,\s*data:/.test(handlerLines);
365
+ handlerChannels.set(channel, { file: relPath, wrapped });
366
+ }
367
+ // Constant-based handle registrations (e.g., ipcMain.handle(IPC_CHANNELS.QUERY_EXECUTE, ...))
368
+ while ((match = constHandlePattern.exec(content)) !== null) {
369
+ const constRef = match[1];
370
+ const resolvedChannel = constantMap.get(constRef);
371
+ if (!resolvedChannel)
372
+ continue;
373
+ if (handlerChannels.has(resolvedChannel))
374
+ continue;
375
+ const lineIndex = content.slice(0, match.index).split('\n').length - 1;
376
+ const handlerLines = lines.slice(lineIndex, lineIndex + 60).join('\n');
377
+ const wrapped = /return\s*\{\s*success:\s*true,\s*data:/.test(handlerLines);
378
+ handlerChannels.set(resolvedChannel, { file: relPath, wrapped });
355
379
  }
356
380
  }
357
- }
358
- /** Resolve a relative import path to an actual file. */
359
- resolveImport(fromFile, importPath, allFiles) {
360
- const dir = join(fromFile, '..');
361
- const base = join(dir, importPath);
362
- // Try exact match, then with extensions
363
- const extensions = ['.ts', '.tsx', '.js', '.jsx', '/index.ts', '/index.tsx', '/index.js', '/index.jsx'];
364
- const candidates = [base, ...extensions.map(ext => base + ext)];
365
- for (const candidate of candidates) {
366
- if (allFiles.includes(candidate)) {
367
- return candidate;
381
+ // Cross-reference
382
+ const checks = [];
383
+ for (const [channel, preload] of preloadChannels) {
384
+ const handler = handlerChannels.get(channel);
385
+ if (!handler)
386
+ continue; // Missing handlers caught by checkIpcHandlerCoverage
387
+ if (handler.wrapped && !preload.unwraps) {
388
+ checks.push({
389
+ type: 'response_shape',
390
+ verdict: 'FAIL',
391
+ evidence: `Channel '${channel}': handler in ${handler.file} wraps response in { success, data } but preload in ${preload.file} passes it through without unwrapping .data. Renderer will see { success, data: {...} } instead of the inner data.`,
392
+ file: preload.file,
393
+ severity: 'critical',
394
+ });
395
+ }
396
+ else if (!handler.wrapped && preload.unwraps) {
397
+ checks.push({
398
+ type: 'response_shape',
399
+ verdict: 'FAIL',
400
+ evidence: `Channel '${channel}': handler in ${handler.file} returns raw data but preload in ${preload.file} tries to unwrap .data. Renderer will get undefined.`,
401
+ file: preload.file,
402
+ severity: 'critical',
403
+ });
404
+ }
405
+ else {
406
+ checks.push({
407
+ type: 'response_shape',
408
+ verdict: 'PASS',
409
+ evidence: `Channel '${channel}': handler (${handler.file}) and preload (${preload.file}) response shapes are consistent.`,
410
+ file: preload.file,
411
+ severity: 'critical',
412
+ });
368
413
  }
369
414
  }
370
- return null;
415
+ return checks;
416
+ }
417
+ // ── Helpers ────────────────────────────────────────────────
418
+ /** Check if the project has preload files (indicating Electron). */
419
+ async hasPreloadFiles() {
420
+ const files = await findFiles(this.projectPath, /\.(ts|tsx|js|jsx)$/);
421
+ return files.some(f => relative(this.projectPath, f).includes('preload'));
371
422
  }
372
423
  }
373
424
  //# sourceMappingURL=integration-verifier.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"integration-verifier.js","sourceRoot":"","sources":["../../src/runtime/integration-verifier.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"integration-verifier.js","sourceRoot":"","sources":["../../src/runtime/integration-verifier.ts"],"names":[],"mappings":"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"}
@@ -1434,7 +1434,7 @@ export interface CrossFeatureCheck {
1434
1434
  readonly verdict: 'PASS' | 'FAIL';
1435
1435
  readonly evidence: string;
1436
1436
  }
1437
- export type IntegrationCheckType = 'routing_provider' | 'ipc_handler_coverage' | 'stub_function' | 'unreachable_page';
1437
+ export type IntegrationCheckType = 'routing_provider' | 'ipc_handler_coverage' | 'stub_function' | 'unreachable_page' | 'response_shape';
1438
1438
  export interface IntegrationCheck {
1439
1439
  readonly type: IntegrationCheckType;
1440
1440
  readonly verdict: 'PASS' | 'FAIL';
@@ -1496,3 +1496,56 @@ export interface AppCreateOptions {
1496
1496
  readonly maxBuildRepairAttempts?: number;
1497
1497
  readonly skipBuildVerification?: boolean;
1498
1498
  }
1499
+ export type CheckStrategyType = 'pattern_presence' | 'pattern_absence' | 'cross_reference' | 'import_reachability' | 'response_shape';
1500
+ export interface PatternPresenceStrategy {
1501
+ readonly type: 'pattern_presence';
1502
+ readonly fileGlob: string;
1503
+ readonly pattern: string;
1504
+ readonly requireIn: 'any' | 'all';
1505
+ readonly contextGlob?: string;
1506
+ readonly contextPattern?: string;
1507
+ }
1508
+ export interface PatternAbsenceStrategy {
1509
+ readonly type: 'pattern_absence';
1510
+ readonly fileGlob: string;
1511
+ readonly pattern: string;
1512
+ readonly allowIn?: readonly string[];
1513
+ }
1514
+ export interface CrossReferenceStrategy {
1515
+ readonly type: 'cross_reference';
1516
+ readonly sourceGlob: string;
1517
+ readonly sourcePattern: string;
1518
+ readonly targetGlob: string;
1519
+ readonly targetPattern: string;
1520
+ }
1521
+ export interface ImportReachabilityStrategy {
1522
+ readonly type: 'import_reachability';
1523
+ readonly pageGlob: string;
1524
+ readonly entryPattern: string;
1525
+ }
1526
+ export interface ResponseShapeStrategy {
1527
+ readonly type: 'response_shape';
1528
+ readonly preloadGlob: string;
1529
+ readonly handlerGlob: string;
1530
+ readonly invokePattern: string;
1531
+ readonly handlePattern: string;
1532
+ readonly wrappedReturnPattern: string;
1533
+ readonly unwrapAccessPattern: string;
1534
+ }
1535
+ export type CheckStrategy = PatternPresenceStrategy | PatternAbsenceStrategy | CrossReferenceStrategy | ImportReachabilityStrategy | ResponseShapeStrategy;
1536
+ export interface IntegrationCheckDefinition {
1537
+ readonly id: string;
1538
+ readonly name: string;
1539
+ readonly type: string;
1540
+ readonly strategy: CheckStrategy;
1541
+ readonly severity: 'critical' | 'high' | 'medium';
1542
+ readonly frameworks: readonly string[];
1543
+ readonly status: 'proposed' | 'shadow' | 'active' | 'deprecated';
1544
+ readonly createdAt: string;
1545
+ readonly evidenceTemplate: string;
1546
+ }
1547
+ export interface CheckLoopResult {
1548
+ readonly proposedChecks: readonly IntegrationCheckDefinition[];
1549
+ readonly duplicatesSkipped: number;
1550
+ readonly classificationErrors: number;
1551
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "tryassay",
3
- "version": "0.16.0",
3
+ "version": "0.18.0",
4
4
  "description": "AI code verification CLI — find bugs that tests miss, linters ignore, and code review overlooks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",