@codeyam/codeyam-cli 0.1.0-staging.d0ad4ae → 0.1.0-staging.d3e886e

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 (798) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +10 -10
  4. package/analyzer-template/packages/ai/index.ts +21 -5
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  7. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  8. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +183 -10
  10. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  12. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  16. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1215 -29
  17. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  18. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  19. package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1750 -318
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +205 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +129 -20
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  34. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  35. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  36. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  37. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +4 -3
  38. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -149
  39. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  40. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1382 -65
  41. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  42. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +710 -0
  43. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  44. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  45. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  46. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  47. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  48. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  49. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  50. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  51. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  52. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  53. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +28 -170
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  61. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  62. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  63. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  64. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  65. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  66. package/analyzer-template/packages/analyze/index.ts +2 -0
  67. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  68. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  69. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  70. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  71. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  72. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  73. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  74. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  75. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  76. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +447 -255
  77. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +31 -4
  78. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  79. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  80. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  81. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +14 -14
  82. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +4 -4
  83. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  84. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  85. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  86. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  87. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  88. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +193 -76
  89. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +203 -41
  90. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -188
  91. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +272 -23
  92. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
  93. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +1 -0
  94. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +825 -71
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  98. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  99. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  100. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  101. package/analyzer-template/packages/aws/package.json +3 -3
  102. package/analyzer-template/packages/database/package.json +1 -1
  103. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  104. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  105. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  106. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  107. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  108. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  109. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  110. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  111. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  112. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  113. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  114. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  115. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  116. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  117. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  118. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  119. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  120. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  121. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  122. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  123. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  124. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  125. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  126. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  127. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  128. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  129. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  130. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  131. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  132. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  133. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  134. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  135. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  136. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  137. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  138. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  139. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  142. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  143. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  145. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  146. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  147. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  148. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  149. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  150. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  151. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  152. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  153. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  154. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  155. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -6
  156. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  157. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  158. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  159. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  160. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  163. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  166. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  167. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  168. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  169. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  170. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  171. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  172. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  173. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  175. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  176. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  177. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  178. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  179. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  181. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  182. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  184. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  186. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  187. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  188. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  189. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  190. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  192. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  193. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  194. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  195. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  196. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  197. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  198. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  199. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  200. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  201. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  202. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  203. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +3 -54
  204. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  205. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  206. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  207. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  208. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  209. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  210. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  211. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  212. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  213. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  214. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  215. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  216. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  217. package/analyzer-template/packages/github/package.json +1 -1
  218. package/analyzer-template/packages/types/index.ts +3 -6
  219. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  220. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  221. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  222. package/analyzer-template/packages/types/src/types/Scenario.ts +3 -77
  223. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  224. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  225. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  226. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  227. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  228. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  229. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  230. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  231. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  232. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  233. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  234. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  235. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  236. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +3 -54
  237. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  238. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  239. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  240. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  241. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  242. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  243. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  244. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  245. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  246. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  247. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  248. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  249. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  250. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  251. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  252. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  253. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  254. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  255. package/analyzer-template/playwright/capture.ts +20 -8
  256. package/analyzer-template/playwright/captureStatic.ts +1 -1
  257. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  258. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  259. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  260. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  261. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  262. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  263. package/analyzer-template/project/constructMockCode.ts +425 -43
  264. package/analyzer-template/project/controller/startController.ts +16 -1
  265. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  266. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  267. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  268. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  269. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  270. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  271. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  272. package/analyzer-template/project/orchestrateCapture.ts +71 -6
  273. package/analyzer-template/project/reconcileMockDataKeys.ts +214 -0
  274. package/analyzer-template/project/runAnalysis.ts +6 -0
  275. package/analyzer-template/project/start.ts +46 -12
  276. package/analyzer-template/project/writeMockDataTsx.ts +295 -10
  277. package/analyzer-template/project/writeScenarioComponents.ts +218 -26
  278. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  279. package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
  280. package/analyzer-template/tsconfig.json +2 -1
  281. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  282. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  283. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  284. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  285. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  286. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  287. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  288. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  289. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  290. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  291. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  292. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  293. package/background/src/lib/virtualized/project/constructMockCode.js +350 -13
  294. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  295. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  296. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  297. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  298. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  299. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  300. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  301. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  302. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  303. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  304. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  305. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  306. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  307. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  308. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  309. package/background/src/lib/virtualized/project/orchestrateCapture.js +58 -6
  310. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  311. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +177 -0
  312. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  313. package/background/src/lib/virtualized/project/runAnalysis.js +5 -0
  314. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  315. package/background/src/lib/virtualized/project/start.js +42 -12
  316. package/background/src/lib/virtualized/project/start.js.map +1 -1
  317. package/background/src/lib/virtualized/project/writeMockDataTsx.js +251 -6
  318. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  319. package/background/src/lib/virtualized/project/writeScenarioComponents.js +164 -29
  320. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  321. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  322. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  323. package/codeyam-cli/scripts/apply-setup.js +180 -0
  324. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  325. package/codeyam-cli/src/cli.js +4 -0
  326. package/codeyam-cli/src/cli.js.map +1 -1
  327. package/codeyam-cli/src/codeyam-cli.js +18 -2
  328. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  329. package/codeyam-cli/src/commands/analyze.js +4 -2
  330. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  331. package/codeyam-cli/src/commands/baseline.js +10 -11
  332. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  333. package/codeyam-cli/src/commands/debug.js +37 -23
  334. package/codeyam-cli/src/commands/debug.js.map +1 -1
  335. package/codeyam-cli/src/commands/default.js +30 -34
  336. package/codeyam-cli/src/commands/default.js.map +1 -1
  337. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  338. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  339. package/codeyam-cli/src/commands/init.js +49 -257
  340. package/codeyam-cli/src/commands/init.js.map +1 -1
  341. package/codeyam-cli/src/commands/memory.js +264 -0
  342. package/codeyam-cli/src/commands/memory.js.map +1 -0
  343. package/codeyam-cli/src/commands/recapture.js +31 -18
  344. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  345. package/codeyam-cli/src/commands/report.js +46 -1
  346. package/codeyam-cli/src/commands/report.js.map +1 -1
  347. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  348. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  349. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  350. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  351. package/codeyam-cli/src/commands/start.js +8 -12
  352. package/codeyam-cli/src/commands/start.js.map +1 -1
  353. package/codeyam-cli/src/commands/test-startup.js +2 -0
  354. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  355. package/codeyam-cli/src/commands/verify.js +14 -2
  356. package/codeyam-cli/src/commands/verify.js.map +1 -1
  357. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  358. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  359. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  360. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  361. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  362. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  363. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  364. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  365. package/codeyam-cli/src/utils/analyzer.js +7 -0
  366. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  367. package/codeyam-cli/src/utils/backgroundServer.js +102 -21
  368. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  369. package/codeyam-cli/src/utils/generateReport.js +4 -3
  370. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  371. package/codeyam-cli/src/utils/install-skills.js +76 -37
  372. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  373. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  374. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  375. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  376. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  377. package/codeyam-cli/src/utils/progress.js +7 -0
  378. package/codeyam-cli/src/utils/progress.js.map +1 -1
  379. package/codeyam-cli/src/utils/queue/job.js +5 -0
  380. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  381. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  382. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  383. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  384. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  385. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  386. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  387. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  388. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  389. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  390. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  391. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  392. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  393. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  394. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  395. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  396. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  397. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
  398. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  399. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +378 -0
  400. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  401. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +115 -0
  402. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  403. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  404. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  405. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  406. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  407. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  408. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  409. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  410. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  411. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  412. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  413. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  414. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  415. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  416. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  417. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  418. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  419. package/codeyam-cli/src/utils/rules/index.js +6 -0
  420. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  421. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  422. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  423. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  424. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  425. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  426. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  427. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  428. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  429. package/codeyam-cli/src/utils/serverState.js +37 -10
  430. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  431. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  432. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  433. package/codeyam-cli/src/utils/versionInfo.js +25 -19
  434. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  435. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  436. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  437. package/codeyam-cli/src/webserver/app/lib/database.js +22 -6
  438. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  439. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  440. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  441. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  442. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  443. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  444. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  445. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
  446. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  447. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BH0XDim7.js +41 -0
  448. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +34 -0
  449. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +25 -0
  450. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  451. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-BvMu2i-g.js} +1 -1
  452. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-kgBTLoJD.js} +1 -1
  453. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
  454. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  455. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BX2Ny2Qj.js +10 -0
  456. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  457. package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
  458. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
  459. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  460. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  461. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  462. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  463. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  464. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-CG65viiV.js} +1 -1
  465. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-DB3aFuEO.js} +12 -12
  466. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-igfMr5DY.js} +1 -1
  467. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  468. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-D1zB-pYc.js} +1 -1
  469. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  470. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  471. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
  472. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-D0-YwkBh.js → entity._sha._-B0h9AqE6.js} +12 -12
  473. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +6 -0
  474. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +6 -0
  475. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-C1H_a_Y3.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  476. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-I-Wo99C_.js} +1 -1
  477. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  478. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  479. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
  480. package/codeyam-cli/src/webserver/build/client/assets/{git-CZu4fif0.js → git-BdHOxVfg.js} +8 -8
  481. package/codeyam-cli/src/webserver/build/client/assets/globals-CCgBKWy4.css +1 -0
  482. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-CUM5iXwc.js} +1 -1
  483. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-_417gcQW.js} +1 -1
  484. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
  485. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-TzRHMVog.js} +1 -1
  486. package/codeyam-cli/src/webserver/build/client/assets/manifest-390cb8fa.js +1 -0
  487. package/codeyam-cli/src/webserver/build/client/assets/memory-CzZySbBE.js +78 -0
  488. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  489. package/codeyam-cli/src/webserver/build/client/assets/root-DnbDhvTU.js +62 -0
  490. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-DcAwD_Ln.js} +1 -1
  491. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  492. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +1 -0
  493. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  494. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-CAD5b1o_.js} +1 -1
  495. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +1 -0
  496. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-aSv48UbS.js → useLastLogLine-DAFqfEDH.js} +1 -1
  497. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +1 -0
  498. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-ihdMtlf6.js} +1 -1
  499. package/codeyam-cli/src/webserver/build/server/assets/index-CxaRxKVt.js +1 -0
  500. package/codeyam-cli/src/webserver/build/server/assets/server-build-D4DT0nM_.js +259 -0
  501. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  502. package/codeyam-cli/src/webserver/build-info.json +5 -5
  503. package/codeyam-cli/src/webserver/server.js +35 -25
  504. package/codeyam-cli/src/webserver/server.js.map +1 -1
  505. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam-debug.md} +48 -4
  506. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  507. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  508. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  509. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  510. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam-setup.md} +13 -1
  511. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam-sim.md} +1 -1
  512. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam-test.md} +1 -1
  513. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam-verify.md} +1 -1
  514. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  515. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  516. package/codeyam-cli/templates/rules-instructions.md +132 -0
  517. package/package.json +15 -12
  518. package/packages/ai/index.js +8 -6
  519. package/packages/ai/index.js.map +1 -1
  520. package/packages/ai/src/lib/analyzeScope.js +179 -13
  521. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  522. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  523. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  524. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +138 -9
  525. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  526. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  527. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  528. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  529. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  530. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  531. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  532. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  533. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  534. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  535. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  536. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  537. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  538. package/packages/ai/src/lib/astScopes/processExpression.js +931 -29
  539. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  540. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  541. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  542. package/packages/ai/src/lib/completionCall.js +178 -31
  543. package/packages/ai/src/lib/completionCall.js.map +1 -1
  544. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1367 -187
  545. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  546. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  547. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  548. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +179 -0
  549. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  550. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  551. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  552. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  553. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  554. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  555. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  556. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  557. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  558. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +111 -14
  559. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  560. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  561. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  562. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  563. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  564. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  565. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  566. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  567. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  568. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  569. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  570. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  571. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  572. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  573. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  574. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  575. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  576. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  577. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  578. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +4 -3
  579. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  580. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  581. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  582. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  583. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  584. package/packages/ai/src/lib/generateEntityScenarioData.js +1098 -60
  585. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  586. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  587. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  588. package/packages/ai/src/lib/generateExecutionFlows.js +495 -0
  589. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  590. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  591. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  592. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  593. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  594. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  595. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  596. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  597. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  598. package/packages/ai/src/lib/isolateScopes.js +270 -7
  599. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  600. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  601. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  602. package/packages/ai/src/lib/mergeStatements.js +88 -46
  603. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  604. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  605. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  606. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  607. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  608. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  609. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  610. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -119
  611. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  612. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  613. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  614. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  615. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  616. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  617. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  618. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  619. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  620. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  621. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  622. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  623. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  624. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  625. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  626. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  627. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  628. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  629. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  630. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  631. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  632. package/packages/analyze/index.js +1 -0
  633. package/packages/analyze/index.js.map +1 -1
  634. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  635. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  636. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  637. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  638. package/packages/analyze/src/lib/analysisContext.js +30 -5
  639. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  640. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  641. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  642. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  643. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  644. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  645. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  646. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  647. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  648. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  649. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  650. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  651. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  652. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +189 -41
  653. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  654. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +21 -4
  655. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  656. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  657. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  658. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  659. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  660. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  661. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  662. package/packages/analyze/src/lib/files/analyzeChange.js +10 -10
  663. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  664. package/packages/analyze/src/lib/files/analyzeEntity.js +4 -4
  665. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  666. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  667. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  668. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  669. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  670. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  671. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  672. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  673. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  674. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  675. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  676. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +164 -68
  677. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  678. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +178 -31
  679. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  680. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -129
  681. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  682. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +187 -21
  683. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  684. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
  685. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  686. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +1 -0
  687. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  688. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  689. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  690. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +670 -53
  691. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  692. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  693. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  694. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  695. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  696. package/packages/analyze/src/lib/index.js +1 -0
  697. package/packages/analyze/src/lib/index.js.map +1 -1
  698. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  699. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  700. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  701. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  702. package/packages/database/src/lib/analysisToDb.js +1 -1
  703. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  704. package/packages/database/src/lib/branchToDb.js +1 -1
  705. package/packages/database/src/lib/branchToDb.js.map +1 -1
  706. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  707. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  708. package/packages/database/src/lib/commitToDb.js +1 -1
  709. package/packages/database/src/lib/commitToDb.js.map +1 -1
  710. package/packages/database/src/lib/fileToDb.js +1 -1
  711. package/packages/database/src/lib/fileToDb.js.map +1 -1
  712. package/packages/database/src/lib/kysely/db.js +11 -1
  713. package/packages/database/src/lib/kysely/db.js.map +1 -1
  714. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  715. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  716. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  717. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  718. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  719. package/packages/database/src/lib/loadAnalyses.js +45 -2
  720. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  721. package/packages/database/src/lib/loadAnalysis.js +8 -0
  722. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  723. package/packages/database/src/lib/loadBranch.js +11 -1
  724. package/packages/database/src/lib/loadBranch.js.map +1 -1
  725. package/packages/database/src/lib/loadCommit.js +7 -0
  726. package/packages/database/src/lib/loadCommit.js.map +1 -1
  727. package/packages/database/src/lib/loadCommits.js +22 -1
  728. package/packages/database/src/lib/loadCommits.js.map +1 -1
  729. package/packages/database/src/lib/loadEntities.js +23 -4
  730. package/packages/database/src/lib/loadEntities.js.map +1 -1
  731. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  732. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  733. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  734. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  735. package/packages/database/src/lib/projectToDb.js +1 -1
  736. package/packages/database/src/lib/projectToDb.js.map +1 -1
  737. package/packages/database/src/lib/saveFiles.js +1 -1
  738. package/packages/database/src/lib/saveFiles.js.map +1 -1
  739. package/packages/database/src/lib/scenarioToDb.js +1 -1
  740. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  741. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  742. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  743. package/packages/types/index.js +0 -1
  744. package/packages/types/index.js.map +1 -1
  745. package/packages/types/src/types/Scenario.js +1 -21
  746. package/packages/types/src/types/Scenario.js.map +1 -1
  747. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  748. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  749. package/packages/utils/src/lib/safeFileName.js +29 -3
  750. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  751. package/scripts/finalize-analyzer.cjs +8 -76
  752. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -109
  753. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -584
  754. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -341
  755. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  756. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  757. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  758. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-Cmysw5OP.js +0 -1
  759. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CAneekK2.js +0 -41
  760. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Cu16OUmx.js +0 -25
  761. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DcAUIpD_.js +0 -11
  762. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BMKg0SAF.js +0 -15
  763. package/codeyam-cli/src/webserver/build/client/assets/_index-DSmTpjmK.js +0 -11
  764. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BF_aK4y6.js +0 -32
  765. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  766. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-RJCf3Tvw.js +0 -1
  767. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-EylcgScH.js +0 -1
  768. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DMe7kvgo.js +0 -1
  769. package/codeyam-cli/src/webserver/build/client/assets/files-BW7Cyeyi.js +0 -1
  770. package/codeyam-cli/src/webserver/build/client/assets/globals-wHVy_II5.css +0 -1
  771. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  772. package/codeyam-cli/src/webserver/build/client/assets/manifest-2d191949.js +0 -1
  773. package/codeyam-cli/src/webserver/build/client/assets/root-FHgpM6gc.js +0 -56
  774. package/codeyam-cli/src/webserver/build/client/assets/settings-6D8k8Jp5.js +0 -1
  775. package/codeyam-cli/src/webserver/build/client/assets/simulations-CDJZnWhN.js +0 -1
  776. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dv18q8LD.js +0 -1
  777. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-0ToGk4K3.js +0 -1
  778. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-1BX144Eg.js +0 -1
  779. package/codeyam-cli/src/webserver/build/server/assets/index-pU0o5t1o.js +0 -1
  780. package/codeyam-cli/src/webserver/build/server/assets/server-build-YzfkRwdn.js +0 -178
  781. package/codeyam-cli/templates/debug-codeyam.md +0 -625
  782. package/packages/ai/src/lib/findMatchingAttribute.js +0 -81
  783. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  784. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -425
  785. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  786. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -267
  787. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  788. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  789. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  790. package/packages/ai/src/lib/isFrontend.js +0 -5
  791. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  792. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  793. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  794. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  795. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  796. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  797. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
  798. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.labs-unlock-l0sNRNKZ.js} +0 -0
@@ -13,8 +13,8 @@ export enum ControllerPhase {
13
13
  Startup = 'STARTUP',
14
14
  RepoCheckout = 'REPO_CHECKOUT',
15
15
  Analysis = 'ANALYSIS',
16
+ AnalysisProducing = 'ANALYSIS_PRODUCING',
16
17
  Serving = 'SERVING',
17
- Orchestrating = 'ORCHESTRATING',
18
18
  Complete = 'COMPLETE',
19
19
  }
20
20
 
@@ -30,6 +30,7 @@ type ControllerContext =
30
30
  | { phase: ControllerPhase.Startup; info: null }
31
31
  | { phase: ControllerPhase.RepoCheckout; info: null }
32
32
  | { phase: ControllerPhase.Analysis; info: null }
33
+ | { phase: ControllerPhase.AnalysisProducing; info: null }
33
34
  | { phase: ControllerPhase.Serving; info: ServingCodeYamInfo }
34
35
  | { phase: ControllerPhase.Complete; info: null };
35
36
 
@@ -100,6 +101,11 @@ export class Controller extends EventEmitter {
100
101
  this.setPhase({ phase: ControllerPhase.Analysis, info: null });
101
102
  }
102
103
 
104
+ setAnalysisProducingPhase(): void {
105
+ this.setPhase({ phase: ControllerPhase.AnalysisProducing, info: null });
106
+ this.emit('analysisProducing');
107
+ }
108
+
103
109
  setServingPhase(info: ServingCodeYamInfo): void {
104
110
  this.setPhase({ phase: ControllerPhase.Serving, info });
105
111
  }
@@ -116,6 +122,15 @@ export class Controller extends EventEmitter {
116
122
  );
117
123
  }
118
124
 
125
+ hasStartedProducing(): boolean {
126
+ // Analysis is producing once we've moved past the Analysis phase
127
+ return (
128
+ this.context.phase === ControllerPhase.AnalysisProducing ||
129
+ this.context.phase === ControllerPhase.Serving ||
130
+ this.context.phase === ControllerPhase.Complete
131
+ );
132
+ }
133
+
119
134
  async close(): Promise<void> {
120
135
  if (!this.server) return;
121
136
 
@@ -28,6 +28,14 @@ export interface SortedEntitiesAndMap {
28
28
  entityMap: { [key: string]: { [key: string]: EntityWithImportCount } };
29
29
  }
30
30
 
31
+ // Timing stats for debugging
32
+ let findOrCreateEntityTime = 0;
33
+ let gatherEntityMapTime = 0;
34
+ let recursiveCallTime = 0;
35
+ let findOrCreateEntityCalls = 0;
36
+ let gatherEntityMapCalls = 0;
37
+ let recursiveCalls = 0;
38
+
31
39
  async function findAndGatherEntity({
32
40
  project,
33
41
  branch,
@@ -37,6 +45,7 @@ async function findAndGatherEntity({
37
45
  projectAnalyzer,
38
46
  context,
39
47
  fileStore,
48
+ depth = 0,
40
49
  }: {
41
50
  project: Project;
42
51
  branch: Branch;
@@ -46,6 +55,7 @@ async function findAndGatherEntity({
46
55
  projectAnalyzer: ProjectAnalyzer;
47
56
  context: AnalysisContext;
48
57
  fileStore?: LazyFileStore;
58
+ depth?: number;
49
59
  }) {
50
60
  let entityWithImportCount: EntityWithImportCount = context.getEntity(
51
61
  file.path,
@@ -53,6 +63,7 @@ async function findAndGatherEntity({
53
63
  ) as EntityWithImportCount;
54
64
  if (entityWithImportCount?.importCount === undefined) {
55
65
  try {
66
+ const t0 = performance.now();
56
67
  entityWithImportCount = await findOrCreateEntity({
57
68
  file,
58
69
  branchId: branch?.id,
@@ -61,6 +72,8 @@ async function findAndGatherEntity({
61
72
  projectAnalyzer,
62
73
  context,
63
74
  });
75
+ findOrCreateEntityTime += performance.now() - t0;
76
+ findOrCreateEntityCalls++;
64
77
  } catch (e) {
65
78
  console.log(
66
79
  'CodeYam Warning: Entity not found in create and sort entities',
@@ -72,12 +85,15 @@ async function findAndGatherEntity({
72
85
  // Add entity to context
73
86
  context.addEntity(entityWithImportCount);
74
87
 
88
+ const t1 = performance.now();
75
89
  await gatherEntityMap({
76
90
  entity: entityWithImportCount,
77
91
  branchId: branch?.id,
78
92
  context,
79
93
  projectAnalyzer,
80
94
  });
95
+ gatherEntityMapTime += performance.now() - t1;
96
+ gatherEntityMapCalls++;
81
97
 
82
98
  entityWithImportCount.importCount = 0;
83
99
  for (const importedEntity of entityWithImportCount.metadata
@@ -105,6 +121,8 @@ async function findAndGatherEntity({
105
121
  continue;
106
122
  }
107
123
 
124
+ const t2 = performance.now();
125
+ recursiveCalls++;
108
126
  const info = await findAndGatherEntity({
109
127
  project,
110
128
  branch,
@@ -114,7 +132,11 @@ async function findAndGatherEntity({
114
132
  projectAnalyzer,
115
133
  context,
116
134
  fileStore,
135
+ depth: depth + 1,
117
136
  });
137
+ if (depth === 0) {
138
+ recursiveCallTime += performance.now() - t2;
139
+ }
118
140
  entityWithImportCount.importCount +=
119
141
  info.entityWithImportCount.importCount;
120
142
  }
@@ -147,6 +169,14 @@ export default async function createEntitiesAndSortFiles({
147
169
  branchCommit, // just for progress updates
148
170
  fileStore,
149
171
  }: EntitiesAndSortFiles): Promise<SortedEntitiesAndMap> {
172
+ // Reset timing stats
173
+ findOrCreateEntityTime = 0;
174
+ gatherEntityMapTime = 0;
175
+ recursiveCallTime = 0;
176
+ findOrCreateEntityCalls = 0;
177
+ gatherEntityMapCalls = 0;
178
+ recursiveCalls = 0;
179
+
150
180
  const sortedEntities: Entity[] = [];
151
181
 
152
182
  // We slightly abuse the AnalysisContext here, initializing and later throwing it away
@@ -161,6 +191,16 @@ export default async function createEntitiesAndSortFiles({
161
191
  // Enable baseline mode to skip DB reads during entity creation
162
192
  context.setBaselineMode(true);
163
193
  let ii = 0;
194
+ let updateCommitMetadataTime = 0;
195
+ let getFileAnalyzerTime = 0;
196
+ let getAllEntityNodesTime = 0;
197
+ const loopStart = performance.now();
198
+ let lastLogTime = loopStart;
199
+
200
+ console.log(
201
+ `CodeYam: createEntitiesAndSortFiles starting, ${filePaths.length} files to process`,
202
+ );
203
+
164
204
  for (const currentFilePath of filePaths) {
165
205
  if (filePath && currentFilePath !== filePath) {
166
206
  ii++;
@@ -179,16 +219,23 @@ export default async function createEntitiesAndSortFiles({
179
219
  }
180
220
 
181
221
  if (branchCommit) {
222
+ const t0 = performance.now();
182
223
  branchCommit.metadata = await updateCommitMetadata({
183
224
  commitId: branchCommit.id,
184
225
  runStatusUpdate: {
185
226
  filesCompleted: ii + 1,
186
227
  },
187
228
  });
229
+ updateCommitMetadataTime += performance.now() - t0;
188
230
  }
189
231
 
232
+ const t1 = performance.now();
190
233
  const fileAnalyzer = projectAnalyzer.getFileAnalyzer(file);
234
+ getFileAnalyzerTime += performance.now() - t1;
235
+
236
+ const t2 = performance.now();
191
237
  const allEntityNodes = fileAnalyzer.getAllEntityNodesOnlyAliases();
238
+ getAllEntityNodesTime += performance.now() - t2;
192
239
 
193
240
  for (const entityName of Object.keys(allEntityNodes)) {
194
241
  const { entityWithImportCount: entity } = await findAndGatherEntity({
@@ -206,8 +253,44 @@ export default async function createEntitiesAndSortFiles({
206
253
  }
207
254
 
208
255
  ii++;
256
+
257
+ // Log timing stats every 5 seconds
258
+ const now = performance.now();
259
+ if (now - lastLogTime > 5000) {
260
+ lastLogTime = now;
261
+ const elapsed = ((now - loopStart) / 1000).toFixed(1);
262
+ console.log(`CodeYam: createEntitiesAndSortFiles progress`, {
263
+ filesProcessed: ii,
264
+ totalFiles: filePaths.length,
265
+ elapsedSec: elapsed,
266
+ timings: {
267
+ updateCommitMetadata: `${(updateCommitMetadataTime / 1000).toFixed(1)}s`,
268
+ getFileAnalyzer: `${(getFileAnalyzerTime / 1000).toFixed(1)}s`,
269
+ getAllEntityNodes: `${(getAllEntityNodesTime / 1000).toFixed(1)}s`,
270
+ findOrCreateEntity: `${(findOrCreateEntityTime / 1000).toFixed(1)}s (${findOrCreateEntityCalls} calls)`,
271
+ gatherEntityMap: `${(gatherEntityMapTime / 1000).toFixed(1)}s (${gatherEntityMapCalls} calls)`,
272
+ recursiveCalls: `${(recursiveCallTime / 1000).toFixed(1)}s (${recursiveCalls} calls)`,
273
+ },
274
+ });
275
+ }
209
276
  }
210
277
 
278
+ // Final timing log
279
+ const totalElapsed = ((performance.now() - loopStart) / 1000).toFixed(1);
280
+ console.log(`CodeYam: createEntitiesAndSortFiles loop complete`, {
281
+ filesProcessed: ii,
282
+ totalFiles: filePaths.length,
283
+ elapsedSec: totalElapsed,
284
+ timings: {
285
+ updateCommitMetadata: `${(updateCommitMetadataTime / 1000).toFixed(1)}s`,
286
+ getFileAnalyzer: `${(getFileAnalyzerTime / 1000).toFixed(1)}s`,
287
+ getAllEntityNodes: `${(getAllEntityNodesTime / 1000).toFixed(1)}s`,
288
+ findOrCreateEntity: `${(findOrCreateEntityTime / 1000).toFixed(1)}s (${findOrCreateEntityCalls} calls)`,
289
+ gatherEntityMap: `${(gatherEntityMapTime / 1000).toFixed(1)}s (${gatherEntityMapCalls} calls)`,
290
+ recursiveCalls: `${(recursiveCallTime / 1000).toFixed(1)}s (${recursiveCalls} calls)`,
291
+ },
292
+ });
293
+
211
294
  await setImportedExports({
212
295
  entities: Object.values(sortedEntities).flat(),
213
296
  context,
@@ -33,11 +33,15 @@ export default async function executeLibraryFunctionDirect(
33
33
  // Generate the execution script
34
34
  const script = directExecutionScript(file, entity, analysis, scenario);
35
35
 
36
+ // Use .ts extension for TypeScript source files so tsx can resolve TS imports
37
+ const isTypeScript = file.path.endsWith('.ts') || file.path.endsWith('.tsx');
38
+ const scriptExtension = isTypeScript ? '.ts' : '.mjs';
39
+
36
40
  // Write the script to a temporary file
37
41
  const scriptPath = path.join(
38
42
  PROJECT_RELATIVE_PATH,
39
43
  '.codeyam-execution',
40
- `${entity.sha}_${scenario.id}.mjs`,
44
+ `${entity.sha}_${scenario.id}${scriptExtension}`,
41
45
  );
42
46
 
43
47
  await writeFile(scriptPath, script);
@@ -54,10 +58,10 @@ export default async function executeLibraryFunctionDirect(
54
58
  command: 'npx',
55
59
  args: ['tsx', scriptPath],
56
60
  workingDir: PROJECT_RELATIVE_PATH,
57
- onData: async (data) => {
61
+ onData: (data) => {
58
62
  stdout += data;
59
63
  },
60
- onError: async (data) => {
64
+ onError: (data) => {
61
65
  stderr += data;
62
66
  },
63
67
  processName: 'library-function-execution',
@@ -7,6 +7,28 @@ import {
7
7
  import { Analysis, Project } from '~codeyam/types';
8
8
  import { LazyFileStore } from './LazyFileStore';
9
9
 
10
+ const DB_CONCURRENCY = 1;
11
+
12
+ async function mapWithConcurrency<T, R>(
13
+ items: T[],
14
+ fn: (item: T) => Promise<R>,
15
+ concurrency: number,
16
+ ): Promise<R[]> {
17
+ const results: R[] = new Array(items.length);
18
+ let index = 0;
19
+ const workers = Array.from(
20
+ { length: Math.min(concurrency, items.length) },
21
+ async () => {
22
+ while (index < items.length) {
23
+ const i = index++;
24
+ results[i] = await fn(items[i]);
25
+ }
26
+ },
27
+ );
28
+ await Promise.all(workers);
29
+ return results;
30
+ }
31
+
10
32
  interface LoadReadyToBeCapturedArgs {
11
33
  project: Project;
12
34
  branchCommitSha?: string;
@@ -77,8 +99,9 @@ async function gatherAllReferencedEntities(
77
99
  byFilePath.get(filePath)!.push(name);
78
100
  }
79
101
 
80
- // Batch load entities by file path
81
- const loadPromises = Array.from(byFilePath.entries()).map(
102
+ // Batch load entities by file path (concurrency-limited to avoid exhausting DB connections)
103
+ const results = await mapWithConcurrency(
104
+ Array.from(byFilePath.entries()),
82
105
  async ([filePath, names]) => {
83
106
  const entities = await loadEntities({
84
107
  projectId: project.id,
@@ -106,9 +129,8 @@ async function gatherAllReferencedEntities(
106
129
  return false;
107
130
  });
108
131
  },
132
+ DB_CONCURRENCY,
109
133
  );
110
-
111
- const results = await Promise.all(loadPromises);
112
134
  const loadedEntities = results.flat();
113
135
 
114
136
  // Add loaded entities to context
@@ -198,48 +220,50 @@ export default async function loadReadyToBeCaptured({
198
220
  foundNewDependencies = false;
199
221
  const currentBatch = Array.from(stillNeeded);
200
222
 
201
- // Load analyses for current batch
202
- const loadPromises = currentBatch.map(async (keyString) => {
203
- const [filePath, entityName] = keyString.split(':');
204
-
205
- // Find the file ID for this file path - use fileStore for O(1) lookup when available
206
- const file = fileStore
207
- ? fileStore.getByPath(filePath)
208
- : project.files.find((f) => f.path === filePath);
209
- if (!file) {
210
- console.log(
211
- `CodeYam Warning: File not found in project: ${filePath} for key ${keyString}`,
212
- );
213
- return null;
214
- }
215
-
216
- try {
217
- const analysis = await loadAnalysis({
218
- projectId: project.id,
219
- fileId: file.id,
220
- entityName,
221
- includeScenarios: isFirstBatch, // Only include scenarios for the root analyses
222
- });
223
-
224
- if (analysis) {
225
- console.log(`CodeYam: Loaded analysis ${filePath}:${entityName}`);
226
- return { key: keyString, analysis };
227
- } else {
223
+ // Load analyses for current batch (concurrency-limited to avoid exhausting DB connections)
224
+ const results = await mapWithConcurrency(
225
+ currentBatch,
226
+ async (keyString) => {
227
+ const [filePath, entityName] = keyString.split(':');
228
+
229
+ // Find the file ID for this file path - use fileStore for O(1) lookup when available
230
+ const file = fileStore
231
+ ? fileStore.getByPath(filePath)
232
+ : project.files.find((f) => f.path === filePath);
233
+ if (!file) {
228
234
  console.log(
229
- `CodeYam Warning: Analysis not found: ${filePath}:${entityName}`,
235
+ `CodeYam Warning: File not found in project: ${filePath} for key ${keyString}`,
230
236
  );
231
237
  return null;
232
238
  }
233
- } catch (error) {
234
- console.log(
235
- `CodeYam Error loading analysis ${filePath}:${entityName}:`,
236
- error,
237
- );
238
- return null;
239
- }
240
- });
241
239
 
242
- const results = await Promise.all(loadPromises);
240
+ try {
241
+ const analysis = await loadAnalysis({
242
+ projectId: project.id,
243
+ fileId: file.id,
244
+ entityName,
245
+ includeScenarios: isFirstBatch, // Only include scenarios for the root analyses
246
+ });
247
+
248
+ if (analysis) {
249
+ console.log(`CodeYam: Loaded analysis ${filePath}:${entityName}`);
250
+ return { key: keyString, analysis };
251
+ } else {
252
+ console.log(
253
+ `CodeYam Warning: Analysis not found: ${filePath}:${entityName}`,
254
+ );
255
+ return null;
256
+ }
257
+ } catch (error) {
258
+ console.log(
259
+ `CodeYam Error loading analysis ${filePath}:${entityName}:`,
260
+ error,
261
+ );
262
+ return null;
263
+ }
264
+ },
265
+ DB_CONCURRENCY,
266
+ );
243
267
 
244
268
  // Process loaded analyses and find new dependencies
245
269
  for (const result of results) {
@@ -1,3 +1,4 @@
1
+ /* eslint-disable @typescript-eslint/require-await */
1
2
  import {
2
3
  Analysis,
3
4
  AnalysisMap,
@@ -47,7 +48,7 @@ const standaloneComponentAnalysis = {
47
48
  'The counter is initialized at 0, with the ability to increment and decrement the count.',
48
49
  metadata: {
49
50
  dataMapping: {},
50
- keyAttributeInstructions: {},
51
+ coveredFlows: [],
51
52
  data: {
52
53
  argumentsData: [],
53
54
  mockData: {},
@@ -221,7 +222,7 @@ async function analyzeReturnsSimplePropsFile(): Promise<{
221
222
  'A user who is under 18 years old and is currently active.',
222
223
  metadata: {
223
224
  dataMapping: {},
224
- keyAttributeInstructions: {},
225
+ coveredFlows: [],
225
226
  data: {
226
227
  argumentsData: [
227
228
  {
@@ -242,7 +243,7 @@ async function analyzeReturnsSimplePropsFile(): Promise<{
242
243
  'A user who is between 18 and 39 years old and is currently active.',
243
244
  metadata: {
244
245
  dataMapping: {},
245
- keyAttributeInstructions: {},
246
+ coveredFlows: [],
246
247
  data: {
247
248
  argumentsData: [
248
249
  {
@@ -263,7 +264,7 @@ async function analyzeReturnsSimplePropsFile(): Promise<{
263
264
  'A user who is 40 years or older and is currently active.',
264
265
  metadata: {
265
266
  dataMapping: {},
266
- keyAttributeInstructions: {},
267
+ coveredFlows: [],
267
268
  data: {
268
269
  argumentsData: [
269
270
  {
@@ -284,7 +285,7 @@ async function analyzeReturnsSimplePropsFile(): Promise<{
284
285
  'A user who is under 18 years old and is currently inactive.',
285
286
  metadata: {
286
287
  dataMapping: {},
287
- keyAttributeInstructions: {},
288
+ coveredFlows: [],
288
289
  data: {
289
290
  argumentsData: [
290
291
  {
@@ -305,7 +306,7 @@ async function analyzeReturnsSimplePropsFile(): Promise<{
305
306
  'A user who is between 18 and 39 years old and is currently inactive.',
306
307
  metadata: {
307
308
  dataMapping: {},
308
- keyAttributeInstructions: {},
309
+ coveredFlows: [],
309
310
  data: {
310
311
  argumentsData: [
311
312
  {
@@ -378,7 +379,7 @@ async function analyzeReturnsImportedComponentsFile(): Promise<{
378
379
  description: 'Default scenario description',
379
380
  metadata: {
380
381
  dataMapping: {},
381
- keyAttributeInstructions: {},
382
+ coveredFlows: [],
382
383
  data: {
383
384
  argumentsData: [],
384
385
  mockData: {},
@@ -35,7 +35,10 @@ export default class AwsCaptureTaskRunner implements CaptureTaskRunner {
35
35
  private sqs: SQSClient;
36
36
  private queueInfo: QueueInfo;
37
37
  private taskArns: string[];
38
- private batchCompletedCallback?: (analysisIds: string[]) => void;
38
+ private batchCompletedCallback?: (
39
+ analysisIds: string[],
40
+ success: boolean,
41
+ ) => void;
39
42
  private controlPollingInterval?: NodeJS.Timeout;
40
43
  private lastTaskHealthCheck = Date.now();
41
44
  private isCleanedUp = false;
@@ -213,7 +216,9 @@ export default class AwsCaptureTaskRunner implements CaptureTaskRunner {
213
216
  }
214
217
  }
215
218
 
216
- onBatchCompleted(callback: (analysisIds: string[]) => void): void {
219
+ onBatchCompleted(
220
+ callback: (analysisIds: string[], success: boolean) => void,
221
+ ): void {
217
222
  this.batchCompletedCallback = callback;
218
223
  }
219
224
 
@@ -255,9 +260,12 @@ export default class AwsCaptureTaskRunner implements CaptureTaskRunner {
255
260
  body.analysisIds &&
256
261
  Array.isArray(body.analysisIds)
257
262
  ) {
258
- // Notify callback
263
+ // Notify callback with success status (default false for backwards compatibility)
259
264
  if (this.batchCompletedCallback) {
260
- this.batchCompletedCallback(body.analysisIds);
265
+ this.batchCompletedCallback(
266
+ body.analysisIds,
267
+ body.success ?? false,
268
+ );
261
269
  }
262
270
  }
263
271
 
@@ -49,7 +49,10 @@ export interface SequentialCaptureTaskRunnerContext {
49
49
 
50
50
  export default class SequentialCaptureTaskRunner implements CaptureTaskRunner {
51
51
  private queue: string[][] = [];
52
- private batchCompletedCallback?: (analysisIds: string[]) => void;
52
+ private batchCompletedCallback?: (
53
+ analysisIds: string[],
54
+ success: boolean,
55
+ ) => void;
53
56
  private isProcessing = false;
54
57
  private isCleanedUp = false;
55
58
  private processingLoop: Promise<void> | null = null;
@@ -94,7 +97,13 @@ export default class SequentialCaptureTaskRunner implements CaptureTaskRunner {
94
97
 
95
98
  // In CAPTURE_ONLY mode, run directly from the main project folder (skip rsync)
96
99
  // This preserves any manual edits made to generated files
97
- const captureOnly = process.env.CAPTURE_ONLY === 'true';
100
+ const captureOnlyEnvValue = process.env.CAPTURE_ONLY;
101
+ const captureOnly = captureOnlyEnvValue === 'true';
102
+
103
+ console.log(
104
+ `CodeYam: CAPTURE_ONLY env = ${captureOnlyEnvValue === undefined ? 'undefined' : `"${captureOnlyEnvValue}"`}`,
105
+ );
106
+
98
107
  const capturerPath = captureOnly
99
108
  ? parentDir
100
109
  : path.normalize(path.join(parentDir, 'capturer-1'));
@@ -191,15 +200,15 @@ export default class SequentialCaptureTaskRunner implements CaptureTaskRunner {
191
200
  try {
192
201
  await this.processBatch(batch);
193
202
 
194
- // Notify callback of completion
203
+ // Notify callback of successful completion
195
204
  if (this.batchCompletedCallback) {
196
- this.batchCompletedCallback(batch);
205
+ this.batchCompletedCallback(batch, true);
197
206
  }
198
207
  } catch (error) {
199
208
  console.error('CodeYam: Error processing batch:', error);
200
- // Still notify callback so orchestration can track failures
209
+ // Notify callback of failure so orchestration can track retries
201
210
  if (this.batchCompletedCallback) {
202
- this.batchCompletedCallback(batch);
211
+ this.batchCompletedCallback(batch, false);
203
212
  }
204
213
  } finally {
205
214
  this.isProcessing = false;
@@ -393,7 +402,9 @@ export default class SequentialCaptureTaskRunner implements CaptureTaskRunner {
393
402
  console.log('CodeYam: Sequential task runner cleanup complete');
394
403
  }
395
404
 
396
- onBatchCompleted(callback: (analysisIds: string[]) => void): void {
405
+ onBatchCompleted(
406
+ callback: (analysisIds: string[], success: boolean) => void,
407
+ ): void {
397
408
  this.batchCompletedCallback = callback;
398
409
  }
399
410
  }
@@ -115,7 +115,9 @@ export interface CaptureTaskRunner {
115
115
  * Register callback for when workers complete batch processing.
116
116
  *
117
117
  * Critical for retry logic and progress tracking in orchestration.
118
- * Callback receives the analysis IDs that were completed.
118
+ * Callback receives the analysis IDs and whether the batch succeeded.
119
119
  */
120
- onBatchCompleted(callback: (analysisIds: string[]) => void): void;
120
+ onBatchCompleted(
121
+ callback: (analysisIds: string[], success: boolean) => void,
122
+ ): void;
121
123
  }
@@ -99,15 +99,20 @@ export default async function orchestrateCapture({
99
99
  const attemptCount = new Map<string, number>();
100
100
  const maxAttempts = 2;
101
101
 
102
+ // Track which analyses had a worker report success — only these can be "captured"
103
+ const confirmedSuccessAnalyses = new Set<string>();
104
+
102
105
  // Register batch completion callback with task runner
103
- taskRunner.onBatchCompleted((analysisIds: string[]) => {
106
+ taskRunner.onBatchCompleted((analysisIds: string[], success: boolean) => {
104
107
  console.log(
105
- `CodeYam Capture: Received batch completion for ${analysisIds.length} analyses: ${analysisIds.join(', ')}`,
108
+ `CodeYam Capture: Received batch completion (success=${success}) for ${analysisIds.length} analyses: ${analysisIds.join(', ')}`,
106
109
  );
107
- // Remove from inFlight and increment attempt count for each analysis
108
110
  for (const analysisId of analysisIds) {
109
111
  inFlight.delete(analysisId);
110
112
  attemptCount.set(analysisId, (attemptCount.get(analysisId) || 0) + 1);
113
+ if (success) {
114
+ confirmedSuccessAnalyses.add(analysisId);
115
+ }
111
116
  }
112
117
  });
113
118
 
@@ -195,9 +200,13 @@ export default async function orchestrateCapture({
195
200
  knownAnalyses.add(id);
196
201
  }
197
202
 
198
- // an analysis we've seen, but is no longer "ready to be captured", is captured!
203
+ // An analysis is "captured" only if:
204
+ // 1. A worker reported success for its batch (in confirmedSuccessAnalyses)
205
+ // 2. It no longer appears in the ready-to-be-captured list (DB confirms)
206
+ // This prevents transient empty DB results from inflating the captured count.
199
207
  const capturedAnalysisIds = Array.from(knownAnalyses).filter(
200
- (id) => !allReadyAnalysisIds.includes(id),
208
+ (id) =>
209
+ confirmedSuccessAnalyses.has(id) && !allReadyAnalysisIds.includes(id),
201
210
  );
202
211
 
203
212
  // Remove captured analyses from inFlight tracking
@@ -355,6 +364,32 @@ export default async function orchestrateCapture({
355
364
  }
356
365
  }
357
366
 
367
+ // Early exit when all enqueued work is settled (captured or abandoned)
368
+ // This avoids waiting for the 20-minute ANALYSIS_TIMEOUT when capture is complete
369
+ // IMPORTANT: Only check this when isDraining (analysis phase complete) to avoid
370
+ // exiting while slow-running analyses are still in progress
371
+ if (
372
+ isDraining &&
373
+ !firstLoop &&
374
+ enqueuedAnalyses.size > 0 &&
375
+ inFlight.size === 0 &&
376
+ remaining.length === 0 &&
377
+ toRetry.length === 0
378
+ ) {
379
+ const allAnalysesSettled = Array.from(enqueuedAnalyses).every((id) => {
380
+ const captured = !allReadyAnalysisIds.includes(id);
381
+ const abandoned = (attemptCount.get(id) || 0) >= maxAttempts;
382
+ return captured || abandoned;
383
+ });
384
+
385
+ if (allAnalysesSettled) {
386
+ console.log(
387
+ 'CodeYam Capture: All enqueued analyses settled (captured or abandoned), exiting early',
388
+ );
389
+ break;
390
+ }
391
+ }
392
+
358
393
  if (isDraining) {
359
394
  // Exit if analysis complete but no entities ready for capture
360
395
  // Only check this after at least one poll (not firstLoop) to ensure we've
@@ -371,7 +406,9 @@ export default async function orchestrateCapture({
371
406
  // check if all enqueued analyses have been either captured or abandoned
372
407
  const allAnalysesSettled = Array.from(enqueuedAnalyses).every(
373
408
  (id) => {
374
- const captured = !allReadyAnalysisIds.includes(id);
409
+ const captured =
410
+ confirmedSuccessAnalyses.has(id) &&
411
+ !allReadyAnalysisIds.includes(id);
375
412
  const abandoned = (attemptCount.get(id) || 0) >= maxAttempts;
376
413
  return captured || abandoned;
377
414
  },
@@ -411,5 +448,33 @@ export default async function orchestrateCapture({
411
448
  } finally {
412
449
  // Always clean up task runner resources in finally block
413
450
  await taskRunner.cleanup();
451
+
452
+ const trackingCommit = metadataCommit ?? commit;
453
+ if (trackingCommit?.id) {
454
+ const captureCompletedAt = new Date().toISOString();
455
+
456
+ await updateCommitMetadata({
457
+ commitId: trackingCommit.id,
458
+ runStatusUpdate: {
459
+ captureCompletedAt,
460
+ capturePid: undefined,
461
+ },
462
+ // completedAt = max(analysisCompletedAt, captureCompletedAt)
463
+ // Normally capture finishes after analysis, but using max means illogical
464
+ // orderings leave a detectable signal (completedAt !== captureCompletedAt).
465
+ updateCallback(metadata) {
466
+ const run = metadata.currentRun!;
467
+ run.completedAt =
468
+ run.analysisCompletedAt &&
469
+ run.analysisCompletedAt > captureCompletedAt
470
+ ? run.analysisCompletedAt
471
+ : captureCompletedAt;
472
+ },
473
+ }).catch((error) => {
474
+ console.log(
475
+ `Warning: Failed to update capture completion metadata: ${error}`,
476
+ );
477
+ });
478
+ }
414
479
  }
415
480
  }