@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
@@ -81,33 +81,36 @@ export default async function captureLibraryFunctionDirect(
81
81
  },
82
82
  );
83
83
 
84
- // Mark scenario as complete
85
- await updateFreshAnalysisStatus(analysis.id, (freshStatus, inAnalysis) => {
86
- freshStatus.scenarios ||= [];
87
- const scenarioStatus = freshStatus.scenarios.find(
88
- (s) => s.name === scenario.name,
89
- );
90
- if (scenarioStatus) {
91
- scenarioStatus.finishedAt = new Date().toISOString();
92
- } else {
93
- freshStatus.scenarios.push({
94
- name: scenario.name,
95
- startedAt: new Date().toISOString(),
96
- finishedAt: new Date().toISOString(),
97
- });
98
- }
84
+ // Mark scenario as complete (use WithScenarios variant to get actual scenario count)
85
+ await updateFreshAnalysisStatusWithScenarios(
86
+ analysis.id,
87
+ (freshStatus, dbScenarios, _inAnalysis) => {
88
+ freshStatus.scenarios ||= [];
89
+ const scenarioStatus = freshStatus.scenarios.find(
90
+ (s) => s.name === scenario.name,
91
+ );
92
+ if (scenarioStatus) {
93
+ scenarioStatus.finishedAt = new Date().toISOString();
94
+ } else {
95
+ freshStatus.scenarios.push({
96
+ name: scenario.name,
97
+ startedAt: new Date().toISOString(),
98
+ finishedAt: new Date().toISOString(),
99
+ });
100
+ }
99
101
 
100
- // Check if all scenarios are done
101
- const allScenariosAvailable =
102
- freshStatus.scenarios.length >= inAnalysis.scenarios?.length;
103
- if (
104
- allScenariosAvailable &&
105
- freshStatus.scenarios.every((s) => !!s.finishedAt)
106
- ) {
107
- freshStatus.finishedAt = new Date().toISOString();
108
- freshStatus.readyToBeCaptured = false;
109
- }
110
- });
102
+ // Check if all scenarios are done
103
+ const allScenariosAvailable =
104
+ freshStatus.scenarios.length >= dbScenarios.length;
105
+ if (
106
+ allScenariosAvailable &&
107
+ freshStatus.scenarios.every((s) => !!s.finishedAt)
108
+ ) {
109
+ freshStatus.finishedAt = new Date().toISOString();
110
+ freshStatus.readyToBeCaptured = false;
111
+ }
112
+ },
113
+ );
111
114
 
112
115
  awsLog('CodeYam: Direct library function capture complete', {
113
116
  analysisId: analysis.id,
@@ -294,6 +294,19 @@ function isValidKey(key: string) {
294
294
  return !/\s/.test(keyWithOutArguments);
295
295
  }
296
296
 
297
+ /**
298
+ * Known hooks that return tuples [value, setter] instead of arrays.
299
+ * These should NOT use the .map() pattern even when the schema has generic array access ([]).
300
+ * Instead, they should return [data, () => {}] where data is from scenarios().
301
+ */
302
+ const TUPLE_RETURNING_HOOKS = new Set([
303
+ 'useAtom', // Jotai
304
+ 'useState', // React
305
+ 'useReducer', // React
306
+ 'useRecoilState', // Recoil
307
+ 'useImmerAtom', // Jotai with Immer
308
+ ]);
309
+
297
310
  export default function constructMockCode(
298
311
  mockName: string,
299
312
  dependencySchemas: DeepReadonly<DataStructure['dependencySchemas']>,
@@ -329,7 +342,7 @@ export default function constructMockCode(
329
342
  let foundEntityWithSignature = false;
330
343
  let signatureSchema: DataStructure['signatureSchema'] | undefined;
331
344
 
332
- for (const filePath in dependencySchemas) {
345
+ entitySearch: for (const filePath in dependencySchemas) {
333
346
  for (const entityName in dependencySchemas[filePath]) {
334
347
  // Match entity by base name (without generics/args)
335
348
  const entityBaseName = entityName.split(/[<(]/)[0];
@@ -373,7 +386,7 @@ export default function constructMockCode(
373
386
  // However, we still need to remove duplicate function calls that create invalid syntax
374
387
  removeDuplicateFunctionCalls(relevantReturnValueSchema);
375
388
  dataStructureValue = relevantReturnValueSchema?.[dataStructurePath];
376
- break;
389
+ break entitySearch;
377
390
  }
378
391
  }
379
392
  }
@@ -530,6 +543,99 @@ export default function constructMockCode(
530
543
  dataStructureValue === 'array' &&
531
544
  (dataStructurePath === 'returnValue' || pathDepth <= mockNameParts.length);
532
545
 
546
+ // OPTIMIZATION: Early return for tuple-returning hooks (useAtom, useState, etc.)
547
+ // These hooks have simple [value, setter] return patterns that don't need the full
548
+ // 9216-key schema processing. Check if this is a tuple-returning hook and generate
549
+ // the mock code directly without iterating over all schema keys.
550
+ if (TUPLE_RETURNING_HOOKS.has(baseMockName) && isFunction) {
551
+ // Check if schema has generic array pattern (indicates tuple return like [value, setter])
552
+ const schemaKeys = Object.keys(relevantReturnValueSchema ?? {});
553
+ const hasGenericArrayInSchema = schemaKeys.some(
554
+ (k) =>
555
+ k.includes('.functionCallReturnValue[]') ||
556
+ k === `${dataKey}.functionCallReturnValue[]` ||
557
+ k === 'returnValue[]',
558
+ );
559
+
560
+ // Check for differentiated tuple indices (e.g., functionCallReturnValue[2], [3]) which would NOT be a standard tuple
561
+ // We only check indices immediately after functionCallReturnValue, not nested indices like signature[2]
562
+ const tupleHasDifferentiatedIndices = schemaKeys.some((k) => {
563
+ // Look for .functionCallReturnValue[N] where N >= 2
564
+ const match = k.match(/\.functionCallReturnValue\[(\d+)\]/);
565
+ if (!match) return false;
566
+ const idx = parseInt(match[1], 10);
567
+ return idx >= 2;
568
+ });
569
+
570
+ const isTupleReturningHook =
571
+ hasGenericArrayInSchema && !tupleHasDifferentiatedIndices;
572
+
573
+ if (isTupleReturningHook) {
574
+ // Find all call patterns for this hook (e.g., useAtom(quoteFilterAtom), useAtom(supplierAtom))
575
+ const hookCallPatterns = Object.keys(relevantReturnValueSchema ?? {})
576
+ .filter((k) => {
577
+ const regex = new RegExp(`^${baseMockName}\\([^)]+\\)$`);
578
+ return regex.test(k);
579
+ })
580
+ .map((k) => {
581
+ const match = k.match(/\(([^)]+)\)/);
582
+ return { key: k, arg: match?.[1] ?? '' };
583
+ });
584
+
585
+ let tupleReturnCode: string;
586
+ if (hookCallPatterns.length > 1) {
587
+ // Multiple patterns - generate conditional dispatch
588
+ const conditions = hookCallPatterns
589
+ .map(
590
+ ({ key, arg }) =>
591
+ `if (argLabel === '${arg}' || argStr.includes('${arg}')) {\n return [scenarios().data()?.["${key}"]?.[0] ?? [], () => {}];\n }`,
592
+ )
593
+ .join('\n ');
594
+ const fallbackKey = hookCallPatterns[0]?.key ?? dataKey;
595
+ tupleReturnCode = `(() => {
596
+ // Dynamic dispatch for tuple-returning hook with multiple argument patterns
597
+ const argLabel = args[0]?.debugLabel ?? '';
598
+ const argStr = args[0]?.toString?.() ?? String(args[0] ?? '');
599
+ ${conditions}
600
+ return [scenarios().data()?.["${fallbackKey}"]?.[0] ?? [], () => {}];
601
+ })()`;
602
+ } else {
603
+ // Single or no patterns - use dynamic dispatch
604
+ const fallbackKey = hookCallPatterns[0]?.key ?? `${baseMockName}()`;
605
+ tupleReturnCode = `(() => {
606
+ // Dynamic dispatch for tuple-returning hook
607
+ const argLabel = args[0]?.debugLabel ?? '';
608
+ const argStr = args[0]?.toString?.() ?? '';
609
+ const allData = scenarios().data() ?? {};
610
+ if (argLabel) {
611
+ const labelKey = '${baseMockName}(' + argLabel + ')';
612
+ if (allData[labelKey]) {
613
+ return [allData[labelKey]?.[0] ?? [], () => {}];
614
+ }
615
+ }
616
+ const keys = Object.keys(allData).filter(k => k.startsWith('${baseMockName}('));
617
+ for (const key of keys) {
618
+ const keyArg = key.slice(${baseMockName.length + 1}, -1);
619
+ if (argStr.includes(keyArg)) {
620
+ return [allData[key]?.[0] ?? [], () => {}];
621
+ }
622
+ }
623
+ return [allData[keys[0] ?? '${fallbackKey}']?.[0] ?? [], () => {}];
624
+ })()`;
625
+ }
626
+
627
+ const safeFunctionName = options?.uniqueFunctionSuffix
628
+ ? `${baseMockName}_${options.uniqueFunctionSuffix}`
629
+ : options?.keepOriginalFunctionName
630
+ ? baseMockName
631
+ : mockNameIsCallSignature && derivedFunctionName
632
+ ? derivedFunctionName
633
+ : baseMockName;
634
+
635
+ return `function ${safeFunctionName}(...args) {\n return ${tupleReturnCode};\n}`;
636
+ }
637
+ }
638
+
533
639
  const returnValueParts: ReturnValuePart = {
534
640
  name: dataStructureName,
535
641
  isArray: isRootArray,
@@ -864,7 +970,123 @@ export default function constructMockCode(
864
970
  });
865
971
 
866
972
  let returnValueContents = '';
867
- if (
973
+
974
+ // Check if this is a known tuple-returning hook (useAtom, useState, etc.)
975
+ // These should return [value, setter] tuples, not arrays or data paths
976
+ // Check isGenericArray from current context OR from schema for root level calls
977
+ // (at root level, isGenericArray might not be set yet but the schema contains [] pattern)
978
+ const hasGenericArrayInSchema =
979
+ root &&
980
+ TUPLE_RETURNING_HOOKS.has(baseMockName) &&
981
+ Object.keys(relevantReturnValueSchema ?? {}).some((k) =>
982
+ k.includes('.functionCallReturnValue[]'),
983
+ );
984
+ // Check if there are array indices beyond what a standard 2-element tuple would have
985
+ // For tuple-returning hooks, [0] and [1] are expected (value and setter)
986
+ // Only consider it "differentiated" if there are indices >= 2 (e.g., [2], [3])
987
+ const tupleHasDifferentiatedIndices = nested?.some((n) => {
988
+ const indexMatch = n.name.match(/^\[(\d+)\]$/);
989
+ if (!indexMatch) return false;
990
+ const index = parseInt(indexMatch[1], 10);
991
+ return index >= 2;
992
+ });
993
+ const isTupleReturningHook =
994
+ TUPLE_RETURNING_HOOKS.has(baseMockName) &&
995
+ (isGenericArray || hasGenericArrayInSchema) &&
996
+ !tupleHasDifferentiatedIndices;
997
+
998
+ // Debug logging for tuple-returning hooks
999
+ if (TUPLE_RETURNING_HOOKS.has(baseMockName) && root) {
1000
+ const schemaKeys = Object.keys(relevantReturnValueSchema ?? {});
1001
+ const hasArrayPattern = schemaKeys.some((k) =>
1002
+ k.includes('.functionCallReturnValue[]'),
1003
+ );
1004
+ console.log(
1005
+ `CodeYam: Tuple hook check for ${baseMockName} (root):`,
1006
+ `hasGenericArrayInSchema=${hasGenericArrayInSchema}`,
1007
+ `hasArrayPattern=${hasArrayPattern}`,
1008
+ `tupleHasDifferentiatedIndices=${tupleHasDifferentiatedIndices}`,
1009
+ `isTupleReturningHook=${isTupleReturningHook}`,
1010
+ `schemaKeysSample=${schemaKeys.slice(0, 5).join(', ')}`,
1011
+ );
1012
+ }
1013
+
1014
+ if (isTupleReturningHook) {
1015
+ // Tuple-returning hooks should return [value, setter] tuple
1016
+ // The value is the first element from scenarios data, setter is a no-op
1017
+ // Default to [] when data is undefined to prevent errors like ".includes is not a function"
1018
+
1019
+ // Check if there are multiple call patterns for this hook in the schema
1020
+ // (e.g., useAtom(quoteFilterAtom) and useAtom(supplierAtom))
1021
+ const hookCallPatterns = Object.keys(relevantReturnValueSchema ?? {})
1022
+ .filter((k) => {
1023
+ // Match patterns like "useAtom(someArg)" but not nested paths like "useAtom(x).foo"
1024
+ const regex = new RegExp(`^${baseMockName}\\([^)]+\\)$`);
1025
+ return regex.test(k);
1026
+ })
1027
+ .map((k) => {
1028
+ // Extract the argument from the key like "useAtom(quoteFilterAtom)" -> "quoteFilterAtom"
1029
+ const match = k.match(/\(([^)]+)\)/);
1030
+ return { key: k, arg: match?.[1] ?? '' };
1031
+ });
1032
+
1033
+ if (hookCallPatterns.length > 1) {
1034
+ // Multiple patterns - generate conditional dispatch based on first argument
1035
+ // For Jotai atoms, we use debugLabel; for others, we try to match the argument string
1036
+ const conditions = hookCallPatterns
1037
+ .map(
1038
+ ({ key, arg }) =>
1039
+ `if (argLabel === '${arg}' || argStr.includes('${arg}')) {\n return [scenarios().data()?.["${key}"]?.[0] ?? [], () => {}];\n }`,
1040
+ )
1041
+ .join('\n ');
1042
+
1043
+ // Use the first pattern as fallback
1044
+ const fallbackKey = hookCallPatterns[0]?.key ?? dataKey;
1045
+
1046
+ returnValueContents = `(() => {
1047
+ // Dynamic dispatch for tuple-returning hook with multiple argument patterns
1048
+ const argLabel = args[0]?.debugLabel ?? '';
1049
+ const argStr = args[0]?.toString?.() ?? String(args[0] ?? '');
1050
+ ${conditions}
1051
+ // Fallback to first pattern
1052
+ return [scenarios().data()?.["${fallbackKey}"]?.[0] ?? [], () => {}];
1053
+ })()`;
1054
+ } else {
1055
+ // Single pattern or no patterns - use dynamic dispatch to handle case where
1056
+ // the mock is used with different atoms than what was captured in the schema.
1057
+ // Use the first argument to construct the data key dynamically.
1058
+ const fallbackKey = hookCallPatterns[0]?.key ?? `${baseMockName}()`;
1059
+
1060
+ returnValueContents = `(() => {
1061
+ // Dynamic dispatch for tuple-returning hook
1062
+ // Try to construct key from argument's debugLabel (Jotai atoms) or toString
1063
+ const argLabel = args[0]?.debugLabel ?? '';
1064
+ const argStr = args[0]?.toString?.() ?? '';
1065
+ const allData = scenarios().data() ?? {};
1066
+
1067
+ // Try to find a matching key using debugLabel first
1068
+ if (argLabel) {
1069
+ const labelKey = '${baseMockName}(' + argLabel + ')';
1070
+ if (allData[labelKey]) {
1071
+ return [allData[labelKey]?.[0] ?? [], () => {}];
1072
+ }
1073
+ }
1074
+
1075
+ // Try to find any matching key that contains part of the argument string
1076
+ const keys = Object.keys(allData).filter(k => k.startsWith('${baseMockName}('));
1077
+ for (const key of keys) {
1078
+ const keyArg = key.slice(${baseMockName.length + 1}, -1);
1079
+ if (argStr.includes(keyArg)) {
1080
+ return [allData[key]?.[0] ?? [], () => {}];
1081
+ }
1082
+ }
1083
+
1084
+ // Fallback to first matching key or default
1085
+ const fallback = keys[0] ?? '${fallbackKey}';
1086
+ return [allData[fallback]?.[0] ?? [], () => {}];
1087
+ })()`;
1088
+ }
1089
+ } else if (
868
1090
  !returnsFunctionArgs &&
869
1091
  nestedContent.length === 0 &&
870
1092
  dataPaths.length === 1
@@ -967,11 +1189,20 @@ export default function constructMockCode(
967
1189
  // Valid patterns where arrow function is NOT bare:
968
1190
  // 1. Property value: "key: (arg) => ..." - ends with ':'
969
1191
  // 2. Function argument: ".map((arg) => ..." - ends with '('
1192
+ // 3. Method call: "?.map" followed directly by the arrow function
1193
+ // In this case, the '(' is consumed by the arrow function regex match,
1194
+ // so beforeTrimmed ends with the method name (e.g., 'map'), not '('.
1195
+ // We detect this by checking if beforeTrimmed ends with an identifier
1196
+ // that could be a method name (preceded by '.' or '?.').
970
1197
  // NOTE: We don't include ',' because "{ prop, () => {} }" is invalid
971
1198
  // (can't distinguish function argument from object property context)
972
1199
  const isPropertyValue = beforeTrimmed.endsWith(':');
973
1200
  const isFunctionArg = beforeTrimmed.endsWith('(');
974
- const hasPropertyName = isPropertyValue || isFunctionArg;
1201
+ // Check if before ends with a method call pattern like ".map" or "?.map"
1202
+ // The '(' after the method name is consumed by the arrow function regex
1203
+ const isMethodCallArg = /\??\.\w+$/.test(beforeTrimmed);
1204
+ const hasPropertyName =
1205
+ isPropertyValue || isFunctionArg || isMethodCallArg;
975
1206
 
976
1207
  if (!hasPropertyName) {
977
1208
  // This is a bare arrow function - filter it out
@@ -1182,6 +1413,17 @@ export default function constructMockCode(
1182
1413
  .replace(/,\s*$/, '');
1183
1414
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => (\n${indent(trimmedContent)}\n))`;
1184
1415
  } else {
1416
+ // When generating object-wrapped .map(), ensure original item data is preserved.
1417
+ // If no data spread was included (e.g., because this is a plain array property,
1418
+ // not a function return), add ...__item__ to spread the original item properties.
1419
+ // Without this, the .map() would create new objects with only nested function
1420
+ // properties, losing data like filePath, frontmatter, body, etc.
1421
+ const hasDataSpread =
1422
+ mappedContents.includes('...scenarios()') ||
1423
+ mappedContents.includes('...__item__');
1424
+ if (!hasDataSpread) {
1425
+ mappedContents = `...__item__,\n${mappedContents}`;
1426
+ }
1185
1427
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => ({\n${indent(mappedContents)}\n}))`;
1186
1428
  }
1187
1429
  } // Close the empty content check else block
@@ -1192,12 +1434,14 @@ export default function constructMockCode(
1192
1434
  // Should become: "{ ...spread, props, filter: ..., sort: ... }"
1193
1435
  const trimmed = mappedContents.trim();
1194
1436
 
1195
- // Find first }, that is NOT inside a string literal
1437
+ // Find first }, at depth 0 that is NOT inside a string literal
1196
1438
  // This prevents splitting keys like ?.["useQuery({ id }, { enabled })"]
1439
+ // and also prevents finding }, inside nested arrow functions
1197
1440
  const findBraceCommaOutsideStrings = (
1198
1441
  content: string,
1199
1442
  ): number => {
1200
1443
  let i = 0;
1444
+ let depth = 0; // Track brace depth to find the outer object's },
1201
1445
  while (i < content.length - 1) {
1202
1446
  // Skip over string literals
1203
1447
  const strEnd = skipStringLiteral(content, i);
@@ -1205,9 +1449,24 @@ export default function constructMockCode(
1205
1449
  i = strEnd;
1206
1450
  continue;
1207
1451
  }
1208
- // Check for }, pattern
1209
- if (content[i] === '}' && content[i + 1] === ',') {
1210
- return i;
1452
+ // Track brace depth
1453
+ if (content[i] === '{') {
1454
+ depth++;
1455
+ i++;
1456
+ continue;
1457
+ }
1458
+ // Check for }, pattern at depth 1 (the outer object level)
1459
+ // We're looking for the outer object's closing brace, which is at depth 1
1460
+ // (we started at depth 0, opened { at depth 0 -> 1)
1461
+ if (content[i] === '}') {
1462
+ depth--;
1463
+ if (
1464
+ depth === 0 &&
1465
+ i + 1 < content.length &&
1466
+ content[i + 1] === ','
1467
+ ) {
1468
+ return i;
1469
+ }
1211
1470
  }
1212
1471
  i++;
1213
1472
  }
@@ -1231,13 +1490,55 @@ export default function constructMockCode(
1231
1490
  mappedContents = filterOutArrowFunctions(mappedContents);
1232
1491
  mappedContents = filterOutBareObjects(mappedContents, true);
1233
1492
  mappedContents = cleanupContent(mappedContents);
1493
+ // Same as needsWrapper branch: ensure item data is preserved in .map()
1494
+ const hasDataSpreadInner =
1495
+ mappedContents.includes('...scenarios()') ||
1496
+ mappedContents.includes('...__item__');
1497
+ if (!hasDataSpreadInner && mappedContents.trim().length > 0) {
1498
+ // Insert ...__item__ after the opening brace
1499
+ mappedContents = mappedContents.replace(
1500
+ /^\s*\{/,
1501
+ '{\n...__item__,',
1502
+ );
1503
+ }
1234
1504
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => (\n${indent(mappedContents)}\n))`;
1235
1505
  }
1236
1506
  } else {
1237
1507
  returnValueContents = `[\n${indent(levelContents)}\n]`;
1238
1508
  }
1239
1509
  } else {
1240
- returnValueContents = `{\n${indent(levelContents)}\n}`;
1510
+ // When we have a single data path and nested content that creates an object structure,
1511
+ // and we're NOT at the root level, we need to handle the case where the parent data
1512
+ // value is null or undefined. Without this check, `{ ...null, prop: null?.["prop"] }`
1513
+ // creates `{ prop: undefined }` instead of `null`, causing errors like
1514
+ // "Cannot read properties of undefined (reading 'some')" when code does
1515
+ // data?.prop.some(...) because data is an object with prop: undefined, not null.
1516
+ // We only apply this to non-root cases because root-level mocks are expected to exist.
1517
+ // We also skip structural elements (like [0] inside arrays) because the null check
1518
+ // syntax doesn't work inside .map() callbacks where structural elements are used.
1519
+ // We also skip array index elements ([0], [1], etc.) because they represent tuple/array
1520
+ // elements, not properties that could be null.
1521
+ // We also only apply this when we're inside a function return value context - i.e.,
1522
+ // when the data path contains a function call pattern like ?.["someFunction(...)"].
1523
+ // This prevents adding null checks to intermediate objects in chains like supabase.auth.
1524
+ const hasNestedContent = nestedContent.filter(Boolean).length > 0;
1525
+ const isArrayIndexElement = name.match(/^\[\d*\]$/);
1526
+ // Check if data path contains a function call pattern, indicating we're inside a function return value
1527
+ const isInsideFunctionReturnValue =
1528
+ dataPaths.length === 1 &&
1529
+ dataPaths[0].match(/\?\.\["\w+\([^"]*\)"\]/);
1530
+ if (
1531
+ !root &&
1532
+ !returnValue.isStructural &&
1533
+ !isArrayIndexElement &&
1534
+ isInsideFunctionReturnValue &&
1535
+ hasNestedContent
1536
+ ) {
1537
+ // Wrap with null check: if parent is null/undefined, return it directly; otherwise create object
1538
+ returnValueContents = `${dataPaths[0]} == null ? ${dataPaths[0]} : {\n${indent(levelContents)}\n}`;
1539
+ } else {
1540
+ returnValueContents = `{\n${indent(levelContents)}\n}`;
1541
+ }
1241
1542
  }
1242
1543
  }
1243
1544
 
@@ -1373,34 +1674,91 @@ export default function constructMockCode(
1373
1674
  };
1374
1675
 
1375
1676
  // Create the return value structure
1376
- const sortedKeys = Object.keys(relevantReturnValueSchema ?? {}).sort(
1377
- (a: string, b: string) => {
1378
- const aParts = splitOutsideParenthesesAndArrays(a);
1379
- const bParts = splitOutsideParenthesesAndArrays(b);
1380
-
1381
- const maxLength = Math.max(aParts.length, bParts.length);
1382
- for (let i = 0; i < maxLength; ++i) {
1383
- const aPart = aParts[i];
1384
- const bPart = bParts[i];
1385
-
1386
- if (!aPart) return -1;
1387
- if (!bPart) return 1;
1388
-
1389
- if (aPart === bPart) continue;
1390
-
1391
- const aName = aPart.split('(')[0];
1392
- const bName = bPart.split('(')[0];
1677
+ // OPTIMIZATION: Filter keys to only those starting with baseMockName before sorting.
1678
+ // This dramatically reduces processing time for large schemas (e.g., 9216 keys -> ~100 relevant keys).
1679
+ // Without this filter, the loop would call splitOutsideParenthesesAndArrays on every key
1680
+ // even though most are filtered out later by the baseMockName check.
1681
+ const allSchemaKeys = Object.keys(relevantReturnValueSchema ?? {});
1682
+ const relevantKeys = allSchemaKeys.filter((key) => {
1683
+ // Fast prefix check - key must start with baseMockName followed by ( or < or .
1684
+ // This matches: "useAtom()", "useAtom<T>()", "useAtom.something", but not "useAtomValue()"
1685
+ if (key === baseMockName) return true;
1686
+ if (key.startsWith(baseMockName + '(')) return true;
1687
+ if (key.startsWith(baseMockName + '<')) return true;
1688
+ if (key.startsWith(baseMockName + '.')) return true;
1689
+ // Also include 'returnValue' paths which are normalized later
1690
+ if (
1691
+ key === 'returnValue' ||
1692
+ key.startsWith('returnValue.') ||
1693
+ key.startsWith('returnValue[')
1694
+ )
1695
+ return true;
1696
+ return false;
1697
+ });
1698
+
1699
+ const schemaKeyCount = relevantKeys.length;
1700
+ const sortedKeys = relevantKeys.sort((a: string, b: string) => {
1701
+ const aParts = splitOutsideParenthesesAndArrays(a);
1702
+ const bParts = splitOutsideParenthesesAndArrays(b);
1703
+
1704
+ const maxLength = Math.max(aParts.length, bParts.length);
1705
+ for (let i = 0; i < maxLength; ++i) {
1706
+ const aPart = aParts[i];
1707
+ const bPart = bParts[i];
1708
+
1709
+ if (!aPart) return -1;
1710
+ if (!bPart) return 1;
1711
+
1712
+ if (aPart === bPart) continue;
1713
+
1714
+ const aName = aPart.split('(')[0];
1715
+ const bName = bPart.split('(')[0];
1716
+
1717
+ if (aName !== bName) {
1718
+ return aName.localeCompare(bName);
1719
+ } else {
1720
+ return aPart.localeCompare(bPart);
1721
+ }
1722
+ }
1393
1723
 
1394
- if (aName !== bName) {
1395
- return aName.localeCompare(bName);
1396
- } else {
1397
- return aPart.localeCompare(bPart);
1398
- }
1724
+ return 0;
1725
+ });
1726
+
1727
+ // OPTIMIZATION: Pre-compute prefix indexes for O(1) lookups instead of O(n) scans.
1728
+ // This reduces complexity from O(n²) to O(n) for large schemas (9k+ keys).
1729
+ //
1730
+ // 1. extendedReturnValuePrefixes: Set of all path prefixes that have a .functionCallReturnValue extension
1731
+ // Used by hasExtendedFunctionCallReturnValue check at line ~1754
1732
+ // 2. functionCallsWithReturnValue: Set of function call paths where .functionCallReturnValue IMMEDIATELY follows
1733
+ // Used by hasProperFunctionCallPath check at line ~1787
1734
+ // IMPORTANT: Only includes paths where the function call is directly followed by .functionCallReturnValue
1735
+ // e.g., "a.b().functionCallReturnValue" -> adds "a.b()" but NOT "a" even if "a" ends with ")"
1736
+ const extendedReturnValuePrefixes = new Set<string>();
1737
+ const functionCallsWithReturnValue = new Set<string>();
1738
+
1739
+ for (const k of relevantKeys) {
1740
+ const parts = splitOutsideParenthesesAndArrays(k);
1741
+ const returnValueIndex = parts.findIndex((part) =>
1742
+ part.startsWith(RETURN_VALUE),
1743
+ );
1744
+ if (returnValueIndex !== -1) {
1745
+ // Add all prefixes of k up to (but not including) functionCallReturnValue
1746
+ const prefix = joinParenthesesAndArrays(parts.slice(0, returnValueIndex));
1747
+ extendedReturnValuePrefixes.add(prefix);
1748
+
1749
+ // ONLY add to functionCallsWithReturnValue if functionCallReturnValue IMMEDIATELY follows
1750
+ if (prefix.endsWith(')')) {
1751
+ functionCallsWithReturnValue.add(prefix);
1399
1752
  }
1400
1753
 
1401
- return 0;
1402
- },
1403
- );
1754
+ // Also add intermediate prefixes for nested paths to extendedReturnValuePrefixes
1755
+ // This helps hasExtendedFunctionCallReturnValue which checks key + '.'
1756
+ for (let i = 1; i < returnValueIndex; i++) {
1757
+ const partialPrefix = joinParenthesesAndArrays(parts.slice(0, i));
1758
+ extendedReturnValuePrefixes.add(partialPrefix);
1759
+ }
1760
+ }
1761
+ }
1404
1762
 
1405
1763
  for (const key of sortedKeys) {
1406
1764
  const value = relevantReturnValueSchema[key];
@@ -1458,9 +1816,10 @@ export default function constructMockCode(
1458
1816
  // nested inside (e.g., methods on array elements passed as arguments).
1459
1817
  if (hasSignaturePath) continue;
1460
1818
 
1461
- const hasExtendedFunctionCallReturnValue = Object.keys(
1462
- relevantReturnValueSchema,
1463
- ).some((k) => k.startsWith(key + '.') && k.includes(`.${RETURN_VALUE}`));
1819
+ // OPTIMIZATION: Use pre-computed index instead of O(n) scan
1820
+ // Old code: Object.keys(relevantReturnValueSchema).some((k) => k.startsWith(key + '.') && k.includes('.functionCallReturnValue'))
1821
+ const hasExtendedFunctionCallReturnValue =
1822
+ extendedReturnValuePrefixes.has(key);
1464
1823
 
1465
1824
  // Skip JSX components - they look like function calls (e.g., Context.Provider())
1466
1825
  // but they're React components used in JSX, not functions that need mocking
@@ -1489,11 +1848,10 @@ export default function constructMockCode(
1489
1848
  const functionCallPath = joinParenthesesAndArrays(
1490
1849
  parts.slice(0, i + 1),
1491
1850
  );
1492
- const hasProperFunctionCallPath = Object.keys(
1493
- relevantReturnValueSchema,
1494
- ).some((k) =>
1495
- k.startsWith(functionCallPath + '.functionCallReturnValue'),
1496
- );
1851
+ // OPTIMIZATION: Use pre-computed index instead of O(n) scan
1852
+ // Old code: Object.keys(relevantReturnValueSchema).some((k) => k.startsWith(functionCallPath + '.functionCallReturnValue'))
1853
+ const hasProperFunctionCallPath =
1854
+ functionCallsWithReturnValue.has(functionCallPath);
1497
1855
  if (hasProperFunctionCallPath) {
1498
1856
  // Skip this path - the .functionCallReturnValue path will handle it correctly
1499
1857
  shouldSkipKey = true;
@@ -2081,7 +2439,31 @@ export default function constructMockCode(
2081
2439
 
2082
2440
  // Inline the return value directly in the function to avoid module-level const
2083
2441
  // that would be evaluated before scenario context is ready
2084
- return `${isRootAsyncFunction ? 'async ' : ''}function ${safeFunctionName}(...args) {\n${indent(`return ${returnValue};`)}\n}`;
2442
+ // Add fallback for simple data path returns to prevent undefined errors (e.g., createTheme)
2443
+ // Only add fallback if returnValue is a simple data accessor (starts with scenarios().data())
2444
+ // and doesn't already have nested structure (object literal, array, or method chains like .map())
2445
+ const isSimpleDataPath =
2446
+ returnValue.startsWith('scenarios().data()') &&
2447
+ !returnValue.trim().startsWith('{') &&
2448
+ !returnValue.trim().startsWith('[') &&
2449
+ !returnValue.includes('.map('); // Exclude method chains
2450
+ const safeReturnValue = isSimpleDataPath
2451
+ ? `${returnValue} ?? {}`
2452
+ : returnValue;
2453
+ const refName = `_${safeFunctionName}Ref`;
2454
+ const assignment = `${refName}.current = ${safeReturnValue};`;
2455
+ const ifBlock = `if (!${refName}.current) {\n${indent(assignment)}\n}`;
2456
+ const body = `${ifBlock}\nreturn ${refName}.current;`;
2457
+
2458
+ return [
2459
+ `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)`,
2460
+ `const ${refName} = {`,
2461
+ ` current: null,`,
2462
+ `};`,
2463
+ `${isRootAsyncFunction ? 'async ' : ''}function ${safeFunctionName}(...args) {`,
2464
+ indent(body),
2465
+ `}`,
2466
+ ].join('\n');
2085
2467
  } else {
2086
2468
  // Generate safe const name:
2087
2469
  // 1. For call signatures: use derivedFunctionName