@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
@@ -0,0 +1,239 @@
1
+ /**
2
+ * Generates execution flows from JSX rendering usages.
3
+ *
4
+ * This module creates variation flows for arrays and strings that are rendered
5
+ * directly in JSX, even without explicit conditionals:
6
+ * - Arrays rendered via .map() → empty, few, many flows
7
+ * - Strings rendered via interpolation → normal, long flows
8
+ *
9
+ * Only controllable paths (from props, hooks, or external data) produce flows.
10
+ */
11
+
12
+ import type { ExecutionFlow } from '~codeyam/types';
13
+ import type { JsxRenderingUsage } from './astScopes/types';
14
+ import resolvePathToControllable from './resolvePathToControllable';
15
+
16
+ export interface GenerateFlowsFromJsxUsagesArgs {
17
+ /** JSX rendering usages extracted from AST analysis */
18
+ jsxRenderingUsages: JsxRenderingUsage[];
19
+ /** Map of controllable paths to their types */
20
+ attributesMap: Record<string, string>;
21
+ /** Map from local variable names to data sources */
22
+ equivalentSignatureVariables: Record<string, string | string[]>;
23
+ /** Map from full paths to short paths */
24
+ fullToShortPathMap: Record<string, string>;
25
+ /** Structure map for type lookup */
26
+ structure: Record<string, string>;
27
+ }
28
+
29
+ /**
30
+ * Generate a slug from a path for use in exclusive groups
31
+ */
32
+ function pathToSlug(path: string): string {
33
+ return path
34
+ .replace(/\[\d+\]/g, '')
35
+ .replace(/\[\]/g, '')
36
+ .replace(/\(\)/g, '')
37
+ .replace(/\.functionCallReturnValue/g, '')
38
+ .replace(/[<>]/g, '')
39
+ .replace(/\./g, '-')
40
+ .toLowerCase();
41
+ }
42
+
43
+ /**
44
+ * Generate a human-readable name from a path.
45
+ */
46
+ function generateNameFromPath(path: string): string {
47
+ const cleanPath = path
48
+ .replace(/\(\)/g, '')
49
+ .replace(/\.functionCallReturnValue/g, '');
50
+ const parts = cleanPath.split('.');
51
+ const lastPart = parts[parts.length - 1];
52
+
53
+ // Convert camelCase to Title Case
54
+ return lastPart
55
+ .replace(/([A-Z])/g, ' $1')
56
+ .replace(/^./, (str) => str.toUpperCase())
57
+ .trim();
58
+ }
59
+
60
+ /**
61
+ * Generate execution flows from JSX rendering usages.
62
+ *
63
+ * For arrays: generates empty (0), few (1-3), many (10+) flows
64
+ * For strings: generates normal and long text flows
65
+ */
66
+ export default function generateExecutionFlowsFromJsxUsages(
67
+ args: GenerateFlowsFromJsxUsagesArgs,
68
+ ): ExecutionFlow[] {
69
+ const {
70
+ jsxRenderingUsages,
71
+ attributesMap,
72
+ equivalentSignatureVariables,
73
+ fullToShortPathMap,
74
+ } = args;
75
+
76
+ const flows: ExecutionFlow[] = [];
77
+ const seenPaths = new Set<string>();
78
+
79
+ for (const usage of jsxRenderingUsages) {
80
+ // Resolve the path to a controllable data source
81
+ const resolution = resolvePathToControllable(
82
+ usage.path,
83
+ attributesMap,
84
+ equivalentSignatureVariables,
85
+ fullToShortPathMap,
86
+ );
87
+
88
+ if (!resolution.isControllable || !resolution.resolvedPath) {
89
+ // Path is not controllable - skip
90
+ continue;
91
+ }
92
+
93
+ const resolvedPath = resolution.resolvedPath;
94
+
95
+ // Deduplicate by resolved path + rendering type
96
+ const dedupeKey = `${resolvedPath}:${usage.renderingType}`;
97
+ if (seenPaths.has(dedupeKey)) {
98
+ continue;
99
+ }
100
+ seenPaths.add(dedupeKey);
101
+
102
+ const baseName = generateNameFromPath(resolvedPath);
103
+ const pathSlug = pathToSlug(resolvedPath);
104
+
105
+ if (usage.renderingType === 'array-map') {
106
+ // Generate 3 mutually exclusive flows for array sizes
107
+ const exclusiveGroup = `array-length-${pathSlug}`;
108
+
109
+ // Empty array flow
110
+ flows.push({
111
+ id: `${pathSlug}-empty-array`,
112
+ name: `${baseName} Empty`,
113
+ description: `When ${baseName.toLowerCase()} array is empty`,
114
+ requiredValues: [
115
+ {
116
+ attributePath: resolvedPath,
117
+ value: '0',
118
+ comparison: 'length<',
119
+ valueType: 'array',
120
+ },
121
+ ],
122
+ impact: 'medium',
123
+ exclusiveGroup,
124
+ sourceLocation: usage.sourceLocation
125
+ ? {
126
+ lineNumber: usage.sourceLocation.lineNumber,
127
+ column: usage.sourceLocation.column,
128
+ }
129
+ : undefined,
130
+ codeSnippet: usage.sourceLocation?.codeSnippet,
131
+ });
132
+
133
+ // Few items flow (1-3)
134
+ flows.push({
135
+ id: `${pathSlug}-few-items`,
136
+ name: `${baseName} Few Items`,
137
+ description: `When ${baseName.toLowerCase()} array has 1-3 items`,
138
+ requiredValues: [
139
+ {
140
+ attributePath: resolvedPath,
141
+ value: '3',
142
+ comparison: 'length<',
143
+ valueType: 'array',
144
+ },
145
+ ],
146
+ impact: 'low', // Baseline case
147
+ exclusiveGroup,
148
+ sourceLocation: usage.sourceLocation
149
+ ? {
150
+ lineNumber: usage.sourceLocation.lineNumber,
151
+ column: usage.sourceLocation.column,
152
+ }
153
+ : undefined,
154
+ codeSnippet: usage.sourceLocation?.codeSnippet,
155
+ });
156
+
157
+ // Many items flow (10+)
158
+ flows.push({
159
+ id: `${pathSlug}-many-items`,
160
+ name: `${baseName} Many Items`,
161
+ description: `When ${baseName.toLowerCase()} array has 10+ items`,
162
+ requiredValues: [
163
+ {
164
+ attributePath: resolvedPath,
165
+ value: '10',
166
+ comparison: 'length>',
167
+ valueType: 'array',
168
+ },
169
+ ],
170
+ impact: 'medium',
171
+ exclusiveGroup,
172
+ sourceLocation: usage.sourceLocation
173
+ ? {
174
+ lineNumber: usage.sourceLocation.lineNumber,
175
+ column: usage.sourceLocation.column,
176
+ }
177
+ : undefined,
178
+ codeSnippet: usage.sourceLocation?.codeSnippet,
179
+ });
180
+ } else if (
181
+ usage.renderingType === 'text-interpolation' &&
182
+ usage.valueType === 'string'
183
+ ) {
184
+ // Only generate text flows for strings (not numbers or other types)
185
+ // Generate 2 mutually exclusive flows for text lengths
186
+ const exclusiveGroup = `text-length-${pathSlug}`;
187
+
188
+ // Normal text flow
189
+ flows.push({
190
+ id: `${pathSlug}-normal-text`,
191
+ name: `${baseName} Normal`,
192
+ description: `When ${baseName.toLowerCase()} has normal length text`,
193
+ requiredValues: [
194
+ {
195
+ attributePath: resolvedPath,
196
+ value: 'normal',
197
+ comparison: 'equals',
198
+ valueType: 'string',
199
+ },
200
+ ],
201
+ impact: 'low',
202
+ exclusiveGroup,
203
+ sourceLocation: usage.sourceLocation
204
+ ? {
205
+ lineNumber: usage.sourceLocation.lineNumber,
206
+ column: usage.sourceLocation.column,
207
+ }
208
+ : undefined,
209
+ codeSnippet: usage.sourceLocation?.codeSnippet,
210
+ });
211
+
212
+ // Long text flow
213
+ flows.push({
214
+ id: `${pathSlug}-long-text`,
215
+ name: `${baseName} Long Text`,
216
+ description: `When ${baseName.toLowerCase()} has long text that might overflow`,
217
+ requiredValues: [
218
+ {
219
+ attributePath: resolvedPath,
220
+ value: 'long',
221
+ comparison: 'equals',
222
+ valueType: 'string',
223
+ },
224
+ ],
225
+ impact: 'low',
226
+ exclusiveGroup,
227
+ sourceLocation: usage.sourceLocation
228
+ ? {
229
+ lineNumber: usage.sourceLocation.lineNumber,
230
+ column: usage.sourceLocation.column,
231
+ }
232
+ : undefined,
233
+ codeSnippet: usage.sourceLocation?.codeSnippet,
234
+ });
235
+ }
236
+ }
237
+
238
+ return flows;
239
+ }
@@ -2,13 +2,13 @@ import { saveLlmCall } from '~codeyam/aws/dynamodb';
2
2
  import { ScenariosDataStructure, Scenario } from '~codeyam/types';
3
3
  import completionCall from './completionCall';
4
4
  import guessNewScenarioDataFromDescriptionGenerator, {
5
- KeyAttributeSelection,
5
+ ExecutionFlowSelection,
6
6
  } from './promptGenerators/guessNewScenarioDataFromDescriptionGenerator';
7
7
  import guessEditScenarioDataFromDescriptionGenerator from './promptGenerators/guessEditScenarioDataFromDescriptionGenerator';
8
8
  import { AI, DEFAULT_LARGER_MODEL } from '~codeyam/ai';
9
9
  import { parseJsonSafe } from './parsers/parseJsonSafe';
10
10
 
11
- export type { KeyAttributeSelection };
11
+ export type { ExecutionFlowSelection };
12
12
 
13
13
  export interface GuessScenarioDataFromDescriptionArgs {
14
14
  description: string;
@@ -16,7 +16,7 @@ export interface GuessScenarioDataFromDescriptionArgs {
16
16
  editingMockData?: { [key: string]: unknown };
17
17
  existingScenarios: Scenario[];
18
18
  scenariosDataStructure: ScenariosDataStructure;
19
- keyAttributeSelections?: KeyAttributeSelection[];
19
+ flowSelections?: ExecutionFlowSelection[];
20
20
  model?: AI.Model;
21
21
  }
22
22
 
@@ -26,7 +26,7 @@ export default async function generateEntityScenarios({
26
26
  editingMockData,
27
27
  existingScenarios,
28
28
  scenariosDataStructure,
29
- keyAttributeSelections,
29
+ flowSelections,
30
30
  model,
31
31
  }: GuessScenarioDataFromDescriptionArgs): Promise<
32
32
  Scenario['metadata']['data'] | null
@@ -43,7 +43,7 @@ export default async function generateEntityScenarios({
43
43
  description,
44
44
  existingScenarios,
45
45
  scenariosDataStructure,
46
- keyAttributeSelections,
46
+ flowSelections,
47
47
  });
48
48
 
49
49
  const response = await completionCall({
@@ -119,6 +119,16 @@ function processScope({
119
119
  }
120
120
  const childScopesRanges: ChildRange[] = [];
121
121
 
122
+ // Extract gating conditions BEFORE any JSX is extracted into child scopes
123
+ // This ensures we capture conditions like {cond && <ChildComponent />}
124
+ // before the JSX is replaced with placeholders.
125
+ // Only extract when maxJSXLimit > 0 (i.e., when JSX will actually be extracted).
126
+ const extractedGatingConditions: ScopeInfo['extractedGatingConditions'] = {};
127
+
128
+ if (maxJSXLimit > 0) {
129
+ extractGatingConditionsFromJsx(node, sourceFile, extractedGatingConditions);
130
+ }
131
+
122
132
  const addChildScopesRange = ({
123
133
  start,
124
134
  end,
@@ -726,9 +736,55 @@ function processScope({
726
736
  text: modifiedText,
727
737
  variables: Array.from(variables),
728
738
  childScopes,
739
+ // Include gating conditions if any were found
740
+ ...(Object.keys(extractedGatingConditions).length > 0 && {
741
+ extractedGatingConditions,
742
+ }),
729
743
  };
730
744
  }
731
745
 
746
+ /**
747
+ * Check if a code string contains only type declarations (type aliases, interfaces, etc.)
748
+ * that don't contribute to runtime behavior. This is used to determine if the root scope
749
+ * should be considered "empty" for scope extraction purposes.
750
+ */
751
+ function containsOnlyTypeDeclarations(code: string): boolean {
752
+ try {
753
+ const sourceFile = ts.createSourceFile(
754
+ 'temp.ts',
755
+ code,
756
+ ts.ScriptTarget.Latest,
757
+ true,
758
+ ts.ScriptKind.TS,
759
+ );
760
+
761
+ // Check each statement - if any is NOT a type-only declaration, return false
762
+ for (const statement of sourceFile.statements) {
763
+ if (
764
+ ts.isTypeAliasDeclaration(statement) ||
765
+ ts.isInterfaceDeclaration(statement) ||
766
+ ts.isEnumDeclaration(statement) ||
767
+ // Import declarations that are type-only
768
+ (ts.isImportDeclaration(statement) &&
769
+ statement.importClause?.isTypeOnly) ||
770
+ // Export declarations that are type-only
771
+ (ts.isExportDeclaration(statement) && statement.isTypeOnly)
772
+ ) {
773
+ // This is a type-only declaration, continue checking
774
+ continue;
775
+ }
776
+ // Found a non-type statement
777
+ return false;
778
+ }
779
+
780
+ // All statements are type-only (or there are no statements)
781
+ return sourceFile.statements.length > 0;
782
+ } catch {
783
+ // If parsing fails, assume it's not type-only
784
+ return false;
785
+ }
786
+ }
787
+
732
788
  /**
733
789
  * Main entry point.
734
790
  *
@@ -772,11 +828,21 @@ export default function isolateScopes(
772
828
  // }
773
829
  // logChildIds(isolatedScopes);
774
830
 
775
- processJSXForScope(isolatedScopes, generateSyntheticName);
776
-
777
- // If the root scope text is empty and there's only one child scope,
778
- // return that child scope as the root scope
779
- if (isolatedScopes.text.trim().length === 0) {
831
+ // Process JSX for the root scope only (not child scopes)
832
+ // Child scopes contain callback functions that should preserve their JSX
833
+ // for analysis - gating conditions are now detected in processScope BEFORE extraction
834
+ const jsxLimit = options?.jsxLimit ?? 10;
835
+ processJSXForScope(isolatedScopes, generateSyntheticName, jsxLimit);
836
+
837
+ // If the root scope text is empty (or only contains type declarations) and there's
838
+ // only one child scope, return that child scope as the root scope.
839
+ // Type declarations (type aliases, interfaces) don't contribute to runtime behavior,
840
+ // so we treat them as "empty" for scope extraction purposes.
841
+ const rootTextIsEffectivelyEmpty =
842
+ isolatedScopes.text.trim().length === 0 ||
843
+ containsOnlyTypeDeclarations(isolatedScopes.text);
844
+
845
+ if (rootTextIsEffectivelyEmpty) {
780
846
  const childScopeArray = Object.values(isolatedScopes.childScopes);
781
847
  if (childScopeArray.length === 1) {
782
848
  return childScopeArray[0];
@@ -800,9 +866,224 @@ export default function isolateScopes(
800
866
  * Any errors during parsing are caught and logged, ensuring robust handling
801
867
  * of invalid or unexpected input.
802
868
  */
869
+ /**
870
+ * Helper to get the component name from a JSX element (returns null for intrinsic elements like 'div')
871
+ */
872
+ function getJsxComponentName(
873
+ node: ts.JsxElement | ts.JsxSelfClosingElement,
874
+ sourceFile: ts.SourceFile,
875
+ ): string | null {
876
+ let tagName: string;
877
+ if (ts.isJsxElement(node)) {
878
+ tagName = node.openingElement.tagName.getText(sourceFile);
879
+ } else {
880
+ tagName = node.tagName.getText(sourceFile);
881
+ }
882
+ // Intrinsic elements start with lowercase
883
+ if (tagName[0] === tagName[0].toLowerCase()) {
884
+ return null;
885
+ }
886
+ return tagName;
887
+ }
888
+
889
+ /**
890
+ * Helper to extract a simple path string from an expression (for gating conditions)
891
+ */
892
+ function getSimplePathFromExpression(
893
+ expr: ts.Expression,
894
+ sourceFile: ts.SourceFile,
895
+ ): string | null {
896
+ // Unwrap parentheses
897
+ while (ts.isParenthesizedExpression(expr)) {
898
+ expr = expr.expression;
899
+ }
900
+
901
+ if (ts.isIdentifier(expr)) {
902
+ return expr.text;
903
+ }
904
+ if (ts.isPropertyAccessExpression(expr)) {
905
+ const base = getSimplePathFromExpression(expr.expression, sourceFile);
906
+ if (base) {
907
+ return `${base}.${expr.name.text}`;
908
+ }
909
+ }
910
+ if (ts.isBinaryExpression(expr)) {
911
+ // For comparisons like `x === 'value'`, return the left side path
912
+ if (
913
+ expr.operatorToken.kind === ts.SyntaxKind.EqualsEqualsEqualsToken ||
914
+ expr.operatorToken.kind === ts.SyntaxKind.ExclamationEqualsEqualsToken
915
+ ) {
916
+ return getSimplePathFromExpression(expr.left, sourceFile);
917
+ }
918
+ // For && chains, try to get a path from either side
919
+ if (expr.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken) {
920
+ return (
921
+ getSimplePathFromExpression(expr.left, sourceFile) ||
922
+ getSimplePathFromExpression(expr.right, sourceFile)
923
+ );
924
+ }
925
+ }
926
+ return null;
927
+ }
928
+
929
+ /**
930
+ * Extracts gating conditions from JSX before it's extracted into child scopes.
931
+ * This detects patterns like:
932
+ * - {condition && <Component />}
933
+ * - {condition ? <ComponentA /> : <ComponentB />}
934
+ * - {a ? <A/> : b ? <B/> : <C/>} (chained ternaries)
935
+ */
936
+ function extractGatingConditionsFromJsx(
937
+ node: ts.Node,
938
+ sourceFile: ts.SourceFile,
939
+ gatingConditions: ScopeInfo['extractedGatingConditions'],
940
+ ): void {
941
+ // Process JSX expression children like {condition && <Component />}
942
+ const processJsxExpression = (expr: ts.Expression): void => {
943
+ // Unwrap parentheses
944
+ while (ts.isParenthesizedExpression(expr)) {
945
+ expr = expr.expression;
946
+ }
947
+
948
+ // Handle && chains: {condition && <Component />}
949
+ if (
950
+ ts.isBinaryExpression(expr) &&
951
+ expr.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken
952
+ ) {
953
+ // The right side might be JSX or another && expression
954
+ let rightExpr = expr.right;
955
+ while (ts.isParenthesizedExpression(rightExpr)) {
956
+ rightExpr = rightExpr.expression;
957
+ }
958
+
959
+ if (ts.isJsxElement(rightExpr) || ts.isJsxSelfClosingElement(rightExpr)) {
960
+ const componentName = getJsxComponentName(rightExpr, sourceFile);
961
+ if (componentName) {
962
+ // Extract all conditions from the && chain
963
+ const extractConditions = (e: ts.Expression): string[] => {
964
+ while (ts.isParenthesizedExpression(e)) {
965
+ e = e.expression;
966
+ }
967
+ if (
968
+ ts.isBinaryExpression(e) &&
969
+ e.operatorToken.kind === ts.SyntaxKind.AmpersandAmpersandToken
970
+ ) {
971
+ // Check if right side is JSX (terminal) or more conditions
972
+ let right = e.right;
973
+ while (ts.isParenthesizedExpression(right)) {
974
+ right = right.expression;
975
+ }
976
+ if (ts.isJsxElement(right) || ts.isJsxSelfClosingElement(right)) {
977
+ // Right is JSX, so left contains all conditions
978
+ return extractConditions(e.left);
979
+ }
980
+ // Both sides are conditions
981
+ return [
982
+ ...extractConditions(e.left),
983
+ ...extractConditions(e.right),
984
+ ];
985
+ }
986
+ const path = getSimplePathFromExpression(e, sourceFile);
987
+ return path ? [path] : [];
988
+ };
989
+
990
+ const conditions = extractConditions(expr.left);
991
+ if (!gatingConditions![componentName]) {
992
+ gatingConditions![componentName] = [];
993
+ }
994
+ for (const path of conditions) {
995
+ gatingConditions![componentName].push({
996
+ path,
997
+ conditionType: 'truthiness',
998
+ location: 'logical-and',
999
+ });
1000
+ }
1001
+ }
1002
+ }
1003
+ }
1004
+
1005
+ // Handle ternaries: {condition ? <A /> : <B />}
1006
+ if (ts.isConditionalExpression(expr)) {
1007
+ processConditionalExpression(expr, sourceFile, gatingConditions, false);
1008
+ }
1009
+ };
1010
+
1011
+ // Recursive function to handle chained ternaries
1012
+ const processConditionalExpression = (
1013
+ expr: ts.ConditionalExpression,
1014
+ sf: ts.SourceFile,
1015
+ gc: ScopeInfo['extractedGatingConditions'],
1016
+ parentConditionNegated: boolean,
1017
+ ): void => {
1018
+ const conditionPath = getSimplePathFromExpression(expr.condition, sf);
1019
+
1020
+ // Process whenTrue branch
1021
+ let whenTrue = expr.whenTrue;
1022
+ while (ts.isParenthesizedExpression(whenTrue)) {
1023
+ whenTrue = whenTrue.expression;
1024
+ }
1025
+ if (ts.isJsxElement(whenTrue) || ts.isJsxSelfClosingElement(whenTrue)) {
1026
+ const componentName = getJsxComponentName(whenTrue, sf);
1027
+ if (componentName && conditionPath) {
1028
+ if (!gc![componentName]) {
1029
+ gc![componentName] = [];
1030
+ }
1031
+ gc![componentName].push({
1032
+ path: conditionPath,
1033
+ conditionType: 'truthiness',
1034
+ location: 'ternary',
1035
+ isNegated: false,
1036
+ });
1037
+ }
1038
+ }
1039
+
1040
+ // Process whenFalse branch
1041
+ let whenFalse = expr.whenFalse;
1042
+ while (ts.isParenthesizedExpression(whenFalse)) {
1043
+ whenFalse = whenFalse.expression;
1044
+ }
1045
+
1046
+ if (ts.isJsxElement(whenFalse) || ts.isJsxSelfClosingElement(whenFalse)) {
1047
+ const componentName = getJsxComponentName(whenFalse, sf);
1048
+ if (componentName && conditionPath) {
1049
+ if (!gc![componentName]) {
1050
+ gc![componentName] = [];
1051
+ }
1052
+ gc![componentName].push({
1053
+ path: conditionPath,
1054
+ conditionType: 'truthiness',
1055
+ location: 'ternary',
1056
+ isNegated: true, // else branch = negated condition
1057
+ });
1058
+ }
1059
+ } else if (ts.isConditionalExpression(whenFalse)) {
1060
+ // Chained ternary: a ? <A/> : b ? <B/> : <C/>
1061
+ // Recursively process the nested ternary
1062
+ processConditionalExpression(whenFalse, sf, gc, true);
1063
+ }
1064
+ };
1065
+
1066
+ // Traverse JSX children to find expressions
1067
+ let jsxExpressionCount = 0;
1068
+ let ternaryCount = 0;
1069
+ const traverseJsx = (n: ts.Node): void => {
1070
+ if (ts.isJsxExpression(n) && n.expression) {
1071
+ jsxExpressionCount++;
1072
+ if (ts.isConditionalExpression(n.expression)) {
1073
+ ternaryCount++;
1074
+ }
1075
+ processJsxExpression(n.expression);
1076
+ }
1077
+ ts.forEachChild(n, traverseJsx);
1078
+ };
1079
+
1080
+ traverseJsx(node);
1081
+ }
1082
+
803
1083
  function processJSXForScope(
804
1084
  scope: ScopeInfo,
805
1085
  generateSyntheticName: () => string,
1086
+ jsxLimit: number = 10,
806
1087
  ) {
807
1088
  // Parse the scope text as a TypeScript AST to find JSX elements
808
1089
  const scopeText = scope.text;
@@ -818,6 +1099,34 @@ function processJSXForScope(
818
1099
  ts.ScriptKind.TSX,
819
1100
  );
820
1101
 
1102
+ // Extract gating conditions BEFORE extraction (while JSX is still complete)
1103
+ const gatingConditions: ScopeInfo['extractedGatingConditions'] = {};
1104
+
1105
+ extractGatingConditionsFromJsx(
1106
+ tempSourceFile,
1107
+ tempSourceFile,
1108
+ gatingConditions,
1109
+ );
1110
+
1111
+ // Merge with any existing gating conditions from processScope
1112
+ // (processScope extracts from original text, this extracts from modified text)
1113
+ if (Object.keys(gatingConditions).length > 0) {
1114
+ if (scope.extractedGatingConditions) {
1115
+ for (const [componentName, conditions] of Object.entries(
1116
+ gatingConditions,
1117
+ )) {
1118
+ if (scope.extractedGatingConditions[componentName]) {
1119
+ // Merge conditions, avoiding duplicates
1120
+ scope.extractedGatingConditions[componentName].push(...conditions);
1121
+ } else {
1122
+ scope.extractedGatingConditions[componentName] = conditions;
1123
+ }
1124
+ }
1125
+ } else {
1126
+ scope.extractedGatingConditions = gatingConditions;
1127
+ }
1128
+ }
1129
+
821
1130
  const nodeMap = new Map<ts.Node, string>();
822
1131
 
823
1132
  // Find all JSX elements in this scope without recursing into child scopes
@@ -841,6 +1150,7 @@ function processJSXForScope(
841
1150
  end: number;
842
1151
  id: string;
843
1152
  code: string;
1153
+ jsxTagName?: string;
844
1154
  }> = [];
845
1155
 
846
1156
  for (const [node, id] of nodeMap.entries()) {
@@ -848,13 +1158,23 @@ function processJSXForScope(
848
1158
  const nodeEnd = node.getEnd();
849
1159
  const code = node.getText(tempSourceFile);
850
1160
 
851
- // Only process reasonably sized JSX elements
852
- if (code.length > 10) {
1161
+ // Extract the JSX tag name
1162
+ let jsxTagName: string | undefined;
1163
+ if (ts.isJsxElement(node)) {
1164
+ const tagNameNode = node.openingElement.tagName;
1165
+ jsxTagName = tagNameNode.getText(tempSourceFile);
1166
+ } else if (ts.isJsxSelfClosingElement(node)) {
1167
+ jsxTagName = node.tagName.getText(tempSourceFile);
1168
+ }
1169
+
1170
+ // Only process JSX elements larger than the limit
1171
+ if (code.length > jsxLimit) {
853
1172
  replacements.push({
854
1173
  start: scopeStart + nodeStart,
855
1174
  end: scopeStart + nodeEnd,
856
1175
  id,
857
1176
  code,
1177
+ jsxTagName,
858
1178
  });
859
1179
  }
860
1180
  }
@@ -876,6 +1196,7 @@ function processJSXForScope(
876
1196
  end: replacement.end,
877
1197
  variables: [],
878
1198
  childScopes: {},
1199
+ jsxTagName: replacement.jsxTagName,
879
1200
  };
880
1201
 
881
1202
  // Replace in text
@@ -11,6 +11,11 @@ export default function mergeJsonTypeDefinitions(
11
11
  if (!typeDef) continue;
12
12
  if (typeof typeDef === 'string') continue;
13
13
  for (const [key, value] of Object.entries(typeDef)) {
14
+ // Preserve _nullable boolean markers set by convertDotNotation
15
+ if (key === '_nullable' && typeof value === 'boolean') {
16
+ mergedDef[key] = value;
17
+ continue;
18
+ }
14
19
  if (typeof value === 'string') {
15
20
  if (!mergedDef[key]) {
16
21
  mergedDef[key] = value;