@codeyam/codeyam-cli 0.1.0-staging.25a2014 → 0.1.0-staging.26dc674

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 (154) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +2 -2
  4. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +5 -1
  5. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  6. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  7. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  8. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  9. package/analyzer-template/packages/aws/package.json +1 -1
  10. package/analyzer-template/packages/database/package.json +1 -1
  11. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +19 -15
  12. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  13. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  14. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +1 -1
  15. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  16. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  17. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  18. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  19. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  20. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  21. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  22. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  23. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  24. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  25. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  26. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  27. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  28. package/codeyam-cli/src/cli.js +15 -0
  29. package/codeyam-cli/src/cli.js.map +1 -1
  30. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +9 -9
  31. package/codeyam-cli/src/commands/editor.js +981 -344
  32. package/codeyam-cli/src/commands/editor.js.map +1 -1
  33. package/codeyam-cli/src/commands/init.js +1 -0
  34. package/codeyam-cli/src/commands/init.js.map +1 -1
  35. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +1274 -33
  36. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  37. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  38. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  39. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +66 -0
  40. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -1
  41. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  42. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  43. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +70 -0
  44. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -1
  45. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +71 -1
  46. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  47. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +233 -1
  48. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  49. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  50. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  51. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +16 -1
  52. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -1
  53. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  54. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  55. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +57 -0
  56. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -1
  57. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +41 -0
  58. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
  59. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  60. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  61. package/codeyam-cli/src/utils/analysisRunner.js +8 -6
  62. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  63. package/codeyam-cli/src/utils/analyzer.js +8 -0
  64. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  65. package/codeyam-cli/src/utils/editorAudit.js +277 -37
  66. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  67. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  68. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  69. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  70. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  71. package/codeyam-cli/src/utils/editorScenarioSwitch.js +24 -2
  72. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -1
  73. package/codeyam-cli/src/utils/editorScenarios.js +65 -6
  74. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  75. package/codeyam-cli/src/utils/entityChangeStatus.js +31 -3
  76. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
  77. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  78. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  79. package/codeyam-cli/src/utils/install-skills.js +5 -0
  80. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  81. package/codeyam-cli/src/utils/queue/job.js +6 -3
  82. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  83. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  84. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  85. package/codeyam-cli/src/utils/scenarioCoverage.js +4 -1
  86. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -1
  87. package/codeyam-cli/src/utils/scenariosManifest.js +28 -0
  88. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
  89. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  90. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  91. package/codeyam-cli/src/utils/simulationGateMiddleware.js +9 -0
  92. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  93. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +68 -1
  94. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -1
  95. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +123 -21
  96. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -1
  97. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  98. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  99. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +22 -1
  100. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -1
  101. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  102. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  103. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  104. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-CJzc4vOH.svg} +2 -2
  105. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DODLxLcw.js +1 -0
  106. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-Dx-h1rJK.js +130 -0
  107. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-NTuLi4Xg.js +41 -0
  108. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.dev-CUobbQdQ.js → entity._sha.scenarios._scenarioId.dev-BA5L8bU-.js} +1 -1
  109. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-C6eeL24i.js → entity._sha.scenarios._scenarioId.fullscreen-D4dmRgvO.js} +1 -1
  110. package/codeyam-cli/src/webserver/build/client/assets/globals-BrPXT1iR.css +1 -0
  111. package/codeyam-cli/src/webserver/build/client/assets/manifest-5025e428.js +1 -0
  112. package/codeyam-cli/src/webserver/build/client/assets/{root-DB3O9_9j.js → root-BCx1S8Z3.js} +26 -13
  113. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-C1kjC9UJ.js +13 -0
  114. package/codeyam-cli/src/webserver/build/server/assets/{index-CEaDhUiv.js → index-C91yWWCI.js} +1 -1
  115. package/codeyam-cli/src/webserver/build/server/assets/{init-DA7guOrE.js → init-Dkas-RUS.js} +2 -2
  116. package/codeyam-cli/src/webserver/build/server/assets/server-build-pulXLTrG.js +640 -0
  117. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  118. package/codeyam-cli/src/webserver/build-info.json +5 -5
  119. package/codeyam-cli/src/webserver/idleDetector.js +41 -8
  120. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -1
  121. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +53 -0
  122. package/codeyam-cli/src/webserver/server.js +52 -14
  123. package/codeyam-cli/src/webserver/server.js.map +1 -1
  124. package/codeyam-cli/src/webserver/terminalServer.js +141 -27
  125. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  126. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  127. package/codeyam-cli/templates/codeyam-editor-claude.md +2 -0
  128. package/codeyam-cli/templates/codeyam-editor-reference.md +214 -0
  129. package/codeyam-cli/templates/editor-step-hook.py +93 -46
  130. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +19 -1
  131. package/package.json +1 -1
  132. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +4 -1
  133. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  134. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  135. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  136. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  137. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  138. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  139. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  140. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  141. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  142. package/packages/database/src/lib/loadAnalysis.js +1 -1
  143. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  144. package/packages/database/src/lib/loadEntity.js +5 -5
  145. package/packages/database/src/lib/loadEntity.js.map +1 -1
  146. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  147. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  148. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  149. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-B7xQ9Sjy.js +0 -58
  150. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CxmrE6AF.js +0 -41
  151. package/codeyam-cli/src/webserver/build/client/assets/globals-fAqOD9ex.css +0 -1
  152. package/codeyam-cli/src/webserver/build/client/assets/manifest-5d53342d.js +0 -1
  153. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-DcJSnBCE.js +0 -13
  154. package/codeyam-cli/src/webserver/build/server/assets/server-build-juyiY2m6.js +0 -551
@@ -1 +1 @@
1
- {"version":3,"file":"analysisRunner.js","sourceRoot":"","sources":["../../../../src/utils/analysisRunner.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analysisRunner.js","sourceRoot":"","sources":["../../../../src/utils/analysisRunner.ts"],"names":[],"mappings":"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"}
@@ -76,6 +76,8 @@ export function analyzerExists(projectSlug) {
76
76
  export async function createAnalyzer(projectSlug) {
77
77
  const templatePath = getAnalyzerTemplatePath();
78
78
  const analyzerPath = getAnalyzerPath(projectSlug);
79
+ const startTime = Date.now();
80
+ const elapsed = () => `${((Date.now() - startTime) / 1000).toFixed(1)}s`;
79
81
  // Verify template exists
80
82
  if (!fsSync.existsSync(templatePath)) {
81
83
  throw new Error(`Analyzer template not found at ${templatePath}. Did the build process complete successfully?`);
@@ -83,19 +85,24 @@ export async function createAnalyzer(projectSlug) {
83
85
  // Create parent directory
84
86
  await fs.mkdir(path.dirname(analyzerPath), { recursive: true });
85
87
  // Copy template to analyzer location using rsync (handles symlinks properly)
88
+ console.log(`[createAnalyzer] Starting rsync: ${templatePath} → ${analyzerPath}`);
86
89
  await rsyncCopy({
87
90
  sourcePath: templatePath,
88
91
  destinationPath: analyzerPath,
89
92
  silent: true,
90
93
  });
94
+ console.log(`[createAnalyzer] rsync completed (${elapsed()})`);
91
95
  // Build the analyzer if dist/ doesn't exist (rsync from template won't include it)
92
96
  if (!fsSync.existsSync(path.join(analyzerPath, 'dist'))) {
97
+ console.log(`[createAnalyzer] dist/ not found, running npm install + build`);
93
98
  execSync('npm install --include=dev && npm run build', {
94
99
  cwd: analyzerPath,
95
100
  stdio: 'pipe',
96
101
  timeout: 300000,
97
102
  });
103
+ console.log(`[createAnalyzer] npm install + build completed (${elapsed()})`);
98
104
  }
105
+ console.log(`[createAnalyzer] Done (${elapsed()})`);
99
106
  }
100
107
  /**
101
108
  * Run the analyzer start process
@@ -235,6 +242,7 @@ export async function ensureFreshAnalyzer(projectSlug, progress) {
235
242
  if (!freshnessCheck.isFresh) {
236
243
  progress.update(`Updating analyzer (${freshnessCheck.reason})...`);
237
244
  await createAnalyzer(projectSlug);
245
+ progress.update('Analyzer updated');
238
246
  }
239
247
  }
240
248
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../../src/utils/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../../src/utils/analyzer.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@
4
4
  * Cross-references glossary entries against registered scenarios (components)
5
5
  * and test files (functions) to detect gaps Claude may have missed.
6
6
  */
7
+ import { isIsolationUrl, } from "./entityChangeStatus.js";
7
8
  // ─── Logic ───────────────────────────────────────────────────────────
8
9
  const COMPONENT_RETURN_PATTERNS = ['JSX', 'React', 'Element', 'ReactNode'];
9
10
  /**
@@ -39,14 +40,25 @@ export function classifyGlossaryEntries(entries) {
39
40
  * @param scenarioCounts - Map of component_name → number of registered scenarios
40
41
  * @param testFileExistence - Map of testFile path → whether the file exists on disk
41
42
  */
42
- export function computeAudit({ components, functions, scenarioCounts, testFileExistence, testResults, clientErrors, }) {
43
+ export function computeAudit({ components, functions, scenarioCounts, testFileExistence, testResults, clientErrors, totalScenarioCounts, entityChangeStatus, }) {
43
44
  const componentResults = components.map((c) => {
44
45
  const count = scenarioCounts[c.name] || 0;
46
+ const totalCount = totalScenarioCounts?.[c.name] || 0;
47
+ const changeStatus = entityChangeStatus?.[c.name];
45
48
  const errors = clientErrors?.[c.name];
46
49
  const hasErrors = count > 0 && errors && errors.length > 0;
47
50
  let status;
48
51
  if (count === 0) {
49
- status = 'missing';
52
+ // Entities with existing scenarios from prior sessions don't need
53
+ // new scenarios — they need recapture. This applies to both "edited"
54
+ // and "impacted" entities: an edited page may not have been re-registered
55
+ // this session, and an impacted page's dependency changed.
56
+ if (changeStatus && totalCount > 0) {
57
+ status = 'needs_recapture';
58
+ }
59
+ else {
60
+ status = 'missing';
61
+ }
50
62
  }
51
63
  else if (hasErrors) {
52
64
  status = 'has_errors';
@@ -54,12 +66,27 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
54
66
  else {
55
67
  status = 'ok';
56
68
  }
69
+ // Generate actionable hint for missing components
70
+ let hint;
71
+ if (status === 'missing') {
72
+ const fileName = c.filePath.split('/').pop() || '';
73
+ if (fileName === 'layout.tsx' || fileName === 'layout.ts') {
74
+ hint = `This is a layout file — register an app-level scenario with pageFilePath instead of componentName: codeyam editor register '{"name":"${c.name} - Default","pageFilePath":"${c.filePath}","url":"/<route>","dimensions":["Desktop"]}'`;
75
+ }
76
+ else if (fileName === 'page.tsx' || fileName === 'page.ts') {
77
+ hint = `This is a page file — register an app-level scenario with pageFilePath: codeyam editor register '{"name":"${c.name} - Default","pageFilePath":"${c.filePath}","url":"/<route>","dimensions":["Desktop"]}'`;
78
+ }
79
+ else {
80
+ hint = `Register a component scenario via an isolation route: codeyam editor isolate ${c.name} then codeyam editor register '{"name":"${c.name} - Default","componentName":"${c.name}","url":"/isolated-components/${c.name}?s=Default","dimensions":["Desktop"]}'`;
81
+ }
82
+ }
57
83
  return {
58
84
  name: c.name,
59
85
  filePath: c.filePath,
60
- scenarioCount: count,
86
+ scenarioCount: status === 'needs_recapture' ? totalCount : count,
61
87
  status,
62
88
  ...(hasErrors ? { clientErrors: errors } : {}),
89
+ ...(hint ? { hint } : {}),
63
90
  };
64
91
  });
65
92
  const functionResults = functions.map((f) => {
@@ -67,12 +94,17 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
67
94
  ? (testFileExistence[f.testFile] ?? false)
68
95
  : false;
69
96
  if (!exists) {
97
+ // Suggest conventional test file path when testFile isn't in the glossary
98
+ const suggestedTestFile = !f.testFile
99
+ ? f.filePath.replace(/\.tsx?$/, '.test.ts')
100
+ : undefined;
70
101
  return {
71
102
  name: f.name,
72
103
  filePath: f.filePath,
73
104
  testFile: f.testFile,
74
105
  testFileExists: false,
75
106
  status: 'missing',
107
+ ...(suggestedTestFile ? { suggestedTestFile } : {}),
76
108
  };
77
109
  }
78
110
  // If we have test results for this file, use them for deeper status
@@ -111,9 +143,10 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
111
143
  ...(tr.errorMessage ? { errorMessage: tr.errorMessage } : {}),
112
144
  };
113
145
  });
114
- const componentsOk = componentResults.filter((c) => c.status === 'ok').length;
146
+ const componentsOk = componentResults.filter((c) => c.status === 'ok' || c.status === 'needs_recapture').length;
115
147
  const componentsWithErrors = componentResults.filter((c) => c.status === 'has_errors').length;
116
148
  const componentsMissing = componentResults.filter((c) => c.status === 'missing').length;
149
+ const componentsNeedingRecapture = componentResults.filter((c) => c.status === 'needs_recapture').length;
117
150
  const functionsOk = functionResults.filter((f) => f.status === 'ok').length;
118
151
  const functionsFailing = functionResults.filter((f) => f.status === 'failing').length;
119
152
  const functionsRunnerError = functionResults.filter((f) => f.status === 'runner_error').length;
@@ -127,6 +160,7 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
127
160
  componentsOk,
128
161
  componentsMissing,
129
162
  componentsWithErrors,
163
+ componentsNeedingRecapture,
130
164
  totalFunctions: functionResults.length,
131
165
  functionsOk,
132
166
  functionsMissing,
@@ -143,21 +177,62 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
143
177
  };
144
178
  }
145
179
  /**
146
- * Returns true when the audit failure can be auto-fixed by running
147
- * analyze-imports: incomplete entities are the only issue AND we haven't
148
- * already tried (to prevent infinite retry loops when analysis has errors).
180
+ * Returns true when the audit failure can be auto-fixed inline.
181
+ *
182
+ * Always returns false full analyze-imports takes minutes on large projects
183
+ * and must never run as part of the audit. The audit only does lightweight
184
+ * entity SHA backfill. Users should run `codeyam editor analyze-imports`
185
+ * separately if incomplete entities persist.
149
186
  */
150
- export function isAutoRemediable(summary, alreadyAttempted) {
151
- if (alreadyAttempted)
152
- return false;
153
- if (!summary.incompleteEntities || summary.incompleteEntities === 0)
154
- return false;
155
- return isOnlyIncompleteEntities(summary);
187
+ export function isAutoRemediable(_summary, _alreadyAttempted) {
188
+ return false;
189
+ }
190
+ /**
191
+ * Generate clear, actionable guidance for an incomplete entity.
192
+ *
193
+ * Tells Claude exactly what's wrong, whether it's pre-existing, and
194
+ * the exact command to fix it — no guessing required.
195
+ */
196
+ export function formatIncompleteEntityGuidance(entity) {
197
+ const parts = [];
198
+ if (entity.preExisting) {
199
+ parts.push(`${entity.name}: ${entity.scenarioCount} scenario(s) without import graph (pre-existing issue, not from this session).`);
200
+ parts.push(`This is non-blocking — the entity had scenarios before this session but analyze-imports was never run for it.`);
201
+ }
202
+ else {
203
+ parts.push(`${entity.name}: ${entity.scenarioCount} scenario(s) without import graph — analyze-imports has not been run for this entity.`);
204
+ parts.push(`The entity has scenarios registered but its import graph is not built, so the editor cannot track its dependencies.`);
205
+ }
206
+ parts.push(`Fix: Run \`codeyam editor analyze-imports\` to build the import graph for all entities.`);
207
+ return parts.join(' ');
208
+ }
209
+ /**
210
+ * Resolve incomplete entity SHAs to their source file paths.
211
+ *
212
+ * Used by the audit to run targeted analysis on just the files that need it,
213
+ * instead of scanning all 117+ project files. Returns deduplicated file paths.
214
+ */
215
+ export async function getIncompleteEntityFilePaths(db, incompleteEntities) {
216
+ if (incompleteEntities.length === 0)
217
+ return [];
218
+ const shas = incompleteEntities.map((e) => e.entitySha);
219
+ const rows = await db
220
+ .selectFrom('entities')
221
+ .select('file_path')
222
+ .where('sha', 'in', shas)
223
+ .execute();
224
+ const paths = new Set();
225
+ for (const row of rows) {
226
+ if (row.file_path)
227
+ paths.add(row.file_path);
228
+ }
229
+ return [...paths];
156
230
  }
157
231
  /**
158
- * Returns true when incompleteEntities is the ONLY audit failure
159
- * all other failure counts are zero. Used to decide whether auto-running
160
- * analyze-imports can fix the audit without manual intervention.
232
+ * Returns true when the only audit failures are auto-fixable entity issues
233
+ * (incompleteEntities and/or unassociatedScenarios) all other failure
234
+ * counts are zero. Used to decide whether auto-running analyze-imports +
235
+ * entity SHA sync can fix the audit without manual intervention.
161
236
  */
162
237
  export function isOnlyIncompleteEntities(summary) {
163
238
  return ((summary.componentsMissing ?? 0) === 0 &&
@@ -169,6 +244,49 @@ export function isOnlyIncompleteEntities(summary) {
169
244
  (summary.miscategorizedScenarios ?? 0) === 0 &&
170
245
  (summary.scenariosNeedingRecapture ?? 0) === 0);
171
246
  }
247
+ /**
248
+ * Returns true when the only audit failures are incomplete entities that ALL
249
+ * existed before the current session. Used by the step gate to avoid blocking
250
+ * progress on pre-existing issues the user didn't cause.
251
+ *
252
+ * Requires both the summary (to confirm no other failure types) and the
253
+ * incompleteEntities array (to verify every entry is pre-existing).
254
+ */
255
+ export function isOnlyPreExistingIncomplete(summary, incompleteEntities) {
256
+ // Must have at least one incomplete entity to be relevant
257
+ if (!incompleteEntities || incompleteEntities.length === 0)
258
+ return false;
259
+ // All other failure types must be zero
260
+ if (!isOnlyIncompleteEntities(summary))
261
+ return false;
262
+ // Every incomplete entity must be pre-existing
263
+ return incompleteEntities.every((e) => e.preExisting);
264
+ }
265
+ /**
266
+ * Filter a list of file paths to only those that need analysis.
267
+ *
268
+ * A file is excluded if ANY entity at that file path has an analysis
269
+ * record (direct or inherited from a sibling version with the same
270
+ * name+filePath). Everything else passes through.
271
+ *
272
+ * Used by handleAnalyzeImports to avoid re-analyzing ~120 files when
273
+ * only a few need it.
274
+ */
275
+ export async function filterToIncompleteFilePaths(db, _projectId, allFilePaths) {
276
+ if (allFilePaths.length === 0)
277
+ return [];
278
+ // Single query: find all file paths that have at least one entity
279
+ // with an analysis record. These are already analyzed and can be skipped.
280
+ const analyzedRows = await db
281
+ .selectFrom('entities')
282
+ .innerJoin('analyses', 'analyses.entity_sha', 'entities.sha')
283
+ .select('entities.file_path')
284
+ .where('entities.file_path', 'in', allFilePaths)
285
+ .groupBy('entities.file_path')
286
+ .execute();
287
+ const analyzedFilePaths = new Set(analyzedRows.map((r) => r.file_path));
288
+ return allFilePaths.filter((fp) => !analyzedFilePaths.has(fp));
289
+ }
172
290
  /**
173
291
  * Ensures the two audit filters — glossary scoping and scenario-count scoping —
174
292
  * are consistent. When entityChangeStatus is empty/undefined (meaning the glossary
@@ -215,22 +333,15 @@ export function filterGlossaryByChangeStatus(entries, entityChangeStatus) {
215
333
  */
216
334
  export async function queryIncompleteEntities(db, projectId, featureStartedAt) {
217
335
  // Step 1: Get distinct entity SHAs from scenarios (with counts)
218
- let scenarioQuery = db
336
+ // No time filter — we check ALL scenarios to catch entities whose
337
+ // scenario SHAs were updated mid-session without touching updated_at.
338
+ const scenarioQuery = db
219
339
  .selectFrom('editor_scenarios')
220
340
  .select(['entity_sha'])
221
341
  .select(db.fn.count('id').as('count'))
222
342
  .where('project_id', '=', projectId)
223
343
  .where('entity_sha', 'is not', null)
224
344
  .groupBy('entity_sha');
225
- if (featureStartedAt) {
226
- const sqliteTimestamp = featureStartedAt
227
- .replace('T', ' ')
228
- .replace(/\.\d{3}Z$/, '');
229
- scenarioQuery = scenarioQuery.where((eb) => eb.or([
230
- eb('created_at', '>=', sqliteTimestamp),
231
- eb('updated_at', '>=', sqliteTimestamp),
232
- ]));
233
- }
234
345
  const scenarioRows = await scenarioQuery.execute();
235
346
  if (scenarioRows.length === 0)
236
347
  return [];
@@ -259,24 +370,41 @@ export async function queryIncompleteEntities(db, projectId, featureStartedAt) {
259
370
  // A new entity version (created by the file watcher) may not have direct
260
371
  // analyses, but an older version (same name+filePath) might. This matches
261
372
  // getAllEntities() behavior which inherits analyses across versions.
262
- const entityNames = [
263
- ...new Set(entityRows.map((r) => r.name).filter(Boolean)),
373
+ // IMPORTANT: Must match by name+filePath, not name alone. When a component
374
+ // is extracted to a new file, the old version (different filePath) may have
375
+ // analyses but getAllEntities() won't inherit across different file paths.
376
+ const entityFilePathMap = new Map(entityRows.map((r) => [r.sha, r.file_path]));
377
+ const entityKeys = [
378
+ ...new Set(entityRows
379
+ .map((r) => `${r.name}::${r.file_path}`)
380
+ .filter((k) => !k.startsWith('::') && !k.endsWith('::'))),
264
381
  ];
265
- let namesWithInheritedAnalyses = new Set();
266
- if (entityNames.length > 0) {
382
+ let keysWithInheritedAnalyses = new Set();
383
+ if (entityKeys.length > 0) {
384
+ // We need to find entities that share name+filePath AND have analyses.
385
+ // Since Kysely doesn't support WHERE (name || '::' || file_path) IN (...),
386
+ // query by the entity names and filter by filePath in JS.
387
+ const entityNames = [
388
+ ...new Set(entityRows.map((r) => r.name).filter(Boolean)),
389
+ ];
267
390
  const siblingRows = await db
268
391
  .selectFrom('entities')
269
392
  .innerJoin('analyses', 'analyses.entity_sha', 'entities.sha')
270
- .select('entities.name')
393
+ .select(['entities.name', 'entities.file_path'])
271
394
  .where('entities.name', 'in', entityNames)
272
- .groupBy('entities.name')
395
+ .groupBy(['entities.name', 'entities.file_path'])
273
396
  .execute();
274
- namesWithInheritedAnalyses = new Set(siblingRows.map((r) => r.name));
397
+ keysWithInheritedAnalyses = new Set(siblingRows.map((r) => `${r.name}::${r.file_path}`));
275
398
  }
276
- // Filter out entities that have inherited analyses
399
+ // Filter out entities that have inherited analyses (same name+filePath)
277
400
  const trulyIncompleteShas = incompleteShas.filter((r) => {
278
- const name = entityNameMap.get(r.entity_sha);
279
- return !name || !namesWithInheritedAnalyses.has(name);
401
+ const sha = r.entity_sha;
402
+ const name = entityNameMap.get(sha);
403
+ const filePath = entityFilePathMap.get(sha);
404
+ if (!name)
405
+ return false; // No entity record (phantom SHA) — skip, not fixable by analysis
406
+ const key = `${name}::${filePath}`;
407
+ return !keysWithInheritedAnalyses.has(key);
280
408
  });
281
409
  if (trulyIncompleteShas.length === 0)
282
410
  return [];
@@ -294,12 +422,34 @@ export async function queryIncompleteEntities(db, projectId, featureStartedAt) {
294
422
  r.entity_sha,
295
423
  r.component_name,
296
424
  ]));
425
+ // Step 6: Determine preExisting flag — if featureStartedAt is provided,
426
+ // check which entity SHAs have at least one scenario created/updated
427
+ // during the session. Those without any are pre-existing issues.
428
+ let sessionShas = new Set();
429
+ if (featureStartedAt) {
430
+ const sqliteTimestamp = featureStartedAt
431
+ .replace('T', ' ')
432
+ .replace(/\.\d{3}Z$/, '');
433
+ const sessionRows = await db
434
+ .selectFrom('editor_scenarios')
435
+ .select('entity_sha')
436
+ .where('project_id', '=', projectId)
437
+ .where('entity_sha', 'in', trulyIncompleteShalist)
438
+ .where((eb) => eb.or([
439
+ eb('created_at', '>=', sqliteTimestamp),
440
+ eb('updated_at', '>=', sqliteTimestamp),
441
+ ]))
442
+ .groupBy('entity_sha')
443
+ .execute();
444
+ sessionShas = new Set(sessionRows.map((r) => r.entity_sha));
445
+ }
297
446
  return trulyIncompleteShas.map((r) => {
298
447
  const sha = r.entity_sha;
299
448
  return {
300
449
  entitySha: sha,
301
450
  name: entityNameMap.get(sha) || scenarioNameMap.get(sha) || 'Unknown',
302
451
  scenarioCount: Number(r.count),
452
+ preExisting: featureStartedAt ? !sessionShas.has(sha) : false,
303
453
  };
304
454
  });
305
455
  }
@@ -331,7 +481,7 @@ export async function queryMiscategorizedScenarios(db, projectId, featureStarted
331
481
  }
332
482
  const rows = await query.execute();
333
483
  // Filter to only rows where URL is NOT an isolation route
334
- const miscategorized = rows.filter((r) => r.url && !r.url.includes('/isolated-components'));
484
+ const miscategorized = rows.filter((r) => r.url && !isIsolationUrl(r.url));
335
485
  if (miscategorized.length === 0)
336
486
  return [];
337
487
  // Group by (component_name, url)
@@ -420,6 +570,96 @@ export async function queryPageScenarioCounts(db, projectId, featureStartedAt) {
420
570
  }
421
571
  return counts;
422
572
  }
573
+ // ─── Unassociated Scenarios ───────────────────────────────────────────
574
+ /**
575
+ * Find scenarios with NULL entity_sha that have a file path
576
+ * (component_path or page_file_path). These scenarios were registered
577
+ * before entity records existed in the DB — typically because a subagent
578
+ * registered scenarios without running analyze-imports first.
579
+ *
580
+ * Fix: run `codeyam editor analyze-imports` to create entity records,
581
+ * then entity_sha backfill will associate them automatically.
582
+ *
583
+ * Optionally scoped to the current feature session via featureStartedAt.
584
+ */
585
+ export async function queryUnassociatedScenarios(db, projectId, featureStartedAt) {
586
+ let query = db
587
+ .selectFrom('editor_scenarios')
588
+ .select(['component_name', 'component_path', 'page_file_path', 'name'])
589
+ .where('project_id', '=', projectId)
590
+ .where('entity_sha', 'is', null)
591
+ .where((eb) => eb.or([
592
+ eb('component_path', 'is not', null),
593
+ eb('page_file_path', 'is not', null),
594
+ ]));
595
+ if (featureStartedAt) {
596
+ const sqliteTimestamp = featureStartedAt
597
+ .replace('T', ' ')
598
+ .replace(/\.\d{3}Z$/, '');
599
+ query = query.where((eb) => eb.or([
600
+ eb('created_at', '>=', sqliteTimestamp),
601
+ eb('updated_at', '>=', sqliteTimestamp),
602
+ ]));
603
+ }
604
+ const rows = await query.execute();
605
+ if (rows.length === 0)
606
+ return [];
607
+ // Group by file path (component_path or page_file_path)
608
+ const groups = new Map();
609
+ for (const row of rows) {
610
+ const r = row;
611
+ const filePath = r.component_path || r.page_file_path;
612
+ const existing = groups.get(filePath);
613
+ if (existing) {
614
+ existing.scenarioNames.push(r.name);
615
+ }
616
+ else {
617
+ // Derive a display name: use component_name if available,
618
+ // otherwise extract from file path (e.g., "src/lib/LibraryApp.tsx" → "LibraryApp")
619
+ const displayName = r.component_name ||
620
+ filePath
621
+ .split('/')
622
+ .pop()
623
+ ?.replace(/\.\w+$/, '') ||
624
+ filePath;
625
+ groups.set(filePath, {
626
+ name: displayName,
627
+ filePath,
628
+ scenarioNames: [r.name],
629
+ });
630
+ }
631
+ }
632
+ return [...groups.values()].map((g) => ({
633
+ name: g.name,
634
+ filePath: g.filePath,
635
+ scenarioCount: g.scenarioNames.length,
636
+ scenarioNames: g.scenarioNames,
637
+ }));
638
+ }
639
+ // ─── Duplicate Name Detection ─────────────────────────────────────────
640
+ /**
641
+ * Detect glossary entries that share the same `name`.
642
+ *
643
+ * Returns a Map of name → entries[] for names that appear more than once.
644
+ * Single-occurrence names are excluded. Used to warn Claude that ambiguous
645
+ * names will make audit output confusing (e.g., three entries all named "Page").
646
+ */
647
+ export function detectDuplicateNames(entries) {
648
+ const groups = new Map();
649
+ for (const entry of entries) {
650
+ const existing = groups.get(entry.name);
651
+ if (existing)
652
+ existing.push(entry);
653
+ else
654
+ groups.set(entry.name, [entry]);
655
+ }
656
+ // Only return groups with duplicates
657
+ for (const [name, group] of groups) {
658
+ if (group.length <= 1)
659
+ groups.delete(name);
660
+ }
661
+ return groups;
662
+ }
423
663
  /**
424
664
  * Identify scenarios that need recapture because their entity (or an entity
425
665
  * in their dependency tree) has changed.