@codeyam/codeyam-cli 0.1.0-staging.15d0f46 → 0.1.0-staging.1669d45

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 (625) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +9 -5
  5. package/analyzer-template/packages/ai/index.ts +5 -3
  6. package/analyzer-template/packages/ai/package.json +1 -1
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +152 -6
  9. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +107 -1
  10. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +42 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +38 -1
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +301 -1
  15. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +972 -106
  16. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +232 -0
  17. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  18. package/analyzer-template/packages/ai/src/lib/completionCall.ts +18 -2
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1409 -138
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +771 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +233 -75
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +39 -4
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +42 -2
  28. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  29. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
  30. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +89 -112
  31. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +6 -0
  32. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +486 -86
  33. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +182 -104
  34. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +201 -0
  35. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  36. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1019 -0
  37. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  38. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  39. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +276 -3
  40. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +33 -3
  41. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
  42. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  43. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -102
  44. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +71 -4
  45. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -53
  46. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  47. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  48. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +690 -0
  49. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  50. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  51. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +102 -0
  52. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
  53. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
  54. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  55. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  56. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +458 -267
  57. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +18 -0
  58. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  59. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  60. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  61. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  62. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  63. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +196 -0
  64. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  65. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +588 -52
  66. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  67. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  68. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +299 -133
  69. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +156 -0
  70. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +78 -83
  71. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +4 -8
  72. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +384 -94
  73. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  74. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  75. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  76. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  77. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  78. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  79. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  80. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  81. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  82. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  83. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  84. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  85. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  86. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  87. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  88. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  89. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  90. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  91. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  92. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  93. package/analyzer-template/packages/aws/package.json +2 -2
  94. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  95. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  96. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  97. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  98. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  99. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  100. package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
  101. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  102. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +36 -9
  103. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  104. package/analyzer-template/packages/generate/index.ts +3 -0
  105. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  106. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  107. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  108. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
  109. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  110. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  111. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
  112. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
  113. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  114. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -11
  115. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  116. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +30 -7
  117. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  118. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  119. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  120. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  121. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  122. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
  123. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  124. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  126. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  127. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  128. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  129. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  130. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  131. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  132. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  133. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  134. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  135. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  136. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  137. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  138. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  139. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  140. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  141. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  142. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  143. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  144. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  145. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  146. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  147. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  148. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  149. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  150. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  151. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  152. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  153. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  154. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  155. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  156. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  157. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  158. package/analyzer-template/packages/github/dist/types/index.d.ts +2 -2
  159. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  161. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +63 -13
  162. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  163. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  164. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  165. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +11 -6
  166. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  167. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +146 -0
  168. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  169. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  170. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  171. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  172. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  173. package/analyzer-template/packages/process/index.ts +2 -0
  174. package/analyzer-template/packages/process/package.json +12 -0
  175. package/analyzer-template/packages/process/tsconfig.json +8 -0
  176. package/analyzer-template/packages/types/index.ts +4 -0
  177. package/analyzer-template/packages/types/src/types/Analysis.ts +79 -13
  178. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  179. package/analyzer-template/packages/types/src/types/Scenario.ts +11 -10
  180. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +161 -0
  181. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  182. package/analyzer-template/packages/utils/dist/types/index.d.ts +2 -2
  183. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  184. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  185. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +63 -13
  186. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  187. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  188. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  189. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +11 -6
  190. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  191. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +146 -0
  192. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  193. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  194. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  195. package/analyzer-template/playwright/capture.ts +37 -18
  196. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  197. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  198. package/analyzer-template/playwright/waitForServer.ts +21 -6
  199. package/analyzer-template/project/analyzeBaselineCommit.ts +4 -0
  200. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  201. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  202. package/analyzer-template/project/analyzeRegularCommit.ts +4 -0
  203. package/analyzer-template/project/constructMockCode.ts +868 -132
  204. package/analyzer-template/project/controller/startController.ts +16 -1
  205. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  206. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  207. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  208. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +49 -33
  209. package/analyzer-template/project/orchestrateCapture.ts +10 -3
  210. package/analyzer-template/project/reconcileMockDataKeys.ts +102 -2
  211. package/analyzer-template/project/runAnalysis.ts +7 -0
  212. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  213. package/analyzer-template/project/start.ts +26 -4
  214. package/analyzer-template/project/startScenarioCapture.ts +72 -40
  215. package/analyzer-template/project/writeMockDataTsx.ts +118 -55
  216. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  217. package/analyzer-template/project/writeScenarioComponents.ts +263 -92
  218. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  219. package/analyzer-template/project/writeSimpleRoot.ts +13 -15
  220. package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
  221. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  222. package/analyzer-template/tsconfig.json +2 -1
  223. package/background/src/lib/local/createLocalAnalyzer.js +1 -29
  224. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  225. package/background/src/lib/local/execAsync.js +1 -1
  226. package/background/src/lib/local/execAsync.js.map +1 -1
  227. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  228. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  229. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +2 -1
  230. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  231. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  232. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  233. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  234. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  235. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +2 -1
  236. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  237. package/background/src/lib/virtualized/project/constructMockCode.js +799 -121
  238. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  239. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  240. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  241. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  242. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  243. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  244. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  245. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  246. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  247. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +42 -28
  248. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  249. package/background/src/lib/virtualized/project/orchestrateCapture.js +7 -4
  250. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  251. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +87 -2
  252. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  253. package/background/src/lib/virtualized/project/runAnalysis.js +6 -0
  254. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  255. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  256. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  257. package/background/src/lib/virtualized/project/start.js +21 -4
  258. package/background/src/lib/virtualized/project/start.js.map +1 -1
  259. package/background/src/lib/virtualized/project/startScenarioCapture.js +56 -30
  260. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  261. package/background/src/lib/virtualized/project/writeMockDataTsx.js +110 -48
  262. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  263. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  264. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  265. package/background/src/lib/virtualized/project/writeScenarioComponents.js +211 -75
  266. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  267. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  268. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  269. package/background/src/lib/virtualized/project/writeSimpleRoot.js +13 -13
  270. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  271. package/codeyam-cli/src/cli.js +5 -1
  272. package/codeyam-cli/src/cli.js.map +1 -1
  273. package/codeyam-cli/src/commands/analyze.js +1 -1
  274. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  275. package/codeyam-cli/src/commands/baseline.js +174 -0
  276. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  277. package/codeyam-cli/src/commands/debug.js +28 -18
  278. package/codeyam-cli/src/commands/debug.js.map +1 -1
  279. package/codeyam-cli/src/commands/default.js +0 -15
  280. package/codeyam-cli/src/commands/default.js.map +1 -1
  281. package/codeyam-cli/src/commands/recapture.js +44 -23
  282. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  283. package/codeyam-cli/src/commands/report.js +72 -24
  284. package/codeyam-cli/src/commands/report.js.map +1 -1
  285. package/codeyam-cli/src/commands/start.js +8 -12
  286. package/codeyam-cli/src/commands/start.js.map +1 -1
  287. package/codeyam-cli/src/commands/status.js +23 -1
  288. package/codeyam-cli/src/commands/status.js.map +1 -1
  289. package/codeyam-cli/src/commands/test-startup.js +1 -1
  290. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  291. package/codeyam-cli/src/commands/wipe.js +108 -0
  292. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  293. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  294. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  295. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +27 -27
  296. package/codeyam-cli/src/utils/analysisRunner.js +8 -13
  297. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  298. package/codeyam-cli/src/utils/backgroundServer.js +12 -2
  299. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  300. package/codeyam-cli/src/utils/database.js +91 -5
  301. package/codeyam-cli/src/utils/database.js.map +1 -1
  302. package/codeyam-cli/src/utils/generateReport.js +253 -106
  303. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  304. package/codeyam-cli/src/utils/git.js +79 -0
  305. package/codeyam-cli/src/utils/git.js.map +1 -0
  306. package/codeyam-cli/src/utils/install-skills.js +11 -11
  307. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  308. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
  309. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  310. package/codeyam-cli/src/utils/queue/job.js +239 -16
  311. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  312. package/codeyam-cli/src/utils/queue/manager.js +19 -7
  313. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  314. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  315. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  316. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +5 -5
  317. package/codeyam-cli/src/utils/versionInfo.js +25 -19
  318. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  319. package/codeyam-cli/src/utils/wipe.js +128 -0
  320. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  321. package/codeyam-cli/src/webserver/app/lib/database.js +96 -0
  322. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  323. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  324. package/codeyam-cli/src/webserver/backgroundServer.js +2 -5
  325. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  326. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-vauWK972.js +1 -0
  327. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DKdsUF7Y.js → EntityTypeBadge-COi5OvsN.js} +1 -1
  328. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BwdQv49w.js +41 -0
  329. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CEleMv_j.js +34 -0
  330. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D68KarMg.js +25 -0
  331. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-L75Wvqgw.js +3 -0
  332. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-C53WM8qn.js +6 -0
  333. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-CrNkmy4i.js +3 -0
  334. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DzJRkCkr.js +11 -0
  335. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CQifa1n-.js +1 -0
  336. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CyaBFX7l.js +20 -0
  337. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CWjSsLqY.js → TruncatedFilePath-D36O1rzU.js} +1 -1
  338. package/codeyam-cli/src/webserver/build/client/assets/_index-Be83mo_j.js +11 -0
  339. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BN6wu6Y-.js +37 -0
  340. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-DgTPh8H-.js +6 -0
  341. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-DdQKK6on.js +51 -0
  342. package/codeyam-cli/src/webserver/build/client/assets/circle-check-Dmr2bb1R.js +6 -0
  343. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-Do4ZLUYa.js +21 -0
  344. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  345. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  346. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Bn6aCAy_.js +1 -0
  347. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CbdFyxZh.js +23 -0
  348. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js +6 -0
  349. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-wDWZZO1W.js +6 -0
  350. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BMbl7MeQ.js +5 -0
  351. package/codeyam-cli/src/webserver/build/client/assets/entry.client-5wRKRIH9.js +29 -0
  352. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  353. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DD3SDH7t.js +1 -0
  354. package/codeyam-cli/src/webserver/build/client/assets/files-DKyMFI90.js +1 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/git-zXjT7J0G.js +15 -0
  356. package/codeyam-cli/src/webserver/build/client/assets/globals-DTTQ3gY7.css +1 -0
  357. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  358. package/codeyam-cli/src/webserver/build/client/assets/index-DLbXwndH.js +9 -0
  359. package/codeyam-cli/src/webserver/build/client/assets/index-gPZ-lad1.js +3 -0
  360. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-BsPXJ81F.js +6 -0
  361. package/codeyam-cli/src/webserver/build/client/assets/manifest-22590fcf.js +1 -0
  362. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/root-BsAarjAM.js +57 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  365. package/codeyam-cli/src/webserver/build/client/assets/search-P2FKIUql.js +6 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/settings-B2eDuBj8.js +1 -0
  367. package/codeyam-cli/src/webserver/build/client/assets/simulations-L18M6-kN.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BDz7kbVA.js +6 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-29dDmbH8.js +1 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-CmrTPlIB.js → useLastLogLine-BUm0UVJm.js} +1 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CkIOKTrZ.js +1 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/{useToast-C1ig_BmP.js → useToast-KKw5kTn-.js} +1 -1
  373. package/codeyam-cli/src/webserver/build/server/assets/index-BND5I5fv.js +1 -0
  374. package/codeyam-cli/src/webserver/build/server/assets/server-build-CFXnd7MG.js +228 -0
  375. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  376. package/codeyam-cli/src/webserver/build-info.json +5 -5
  377. package/codeyam-cli/src/webserver/devServer.js +1 -3
  378. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  379. package/codeyam-cli/src/webserver/server.js +35 -25
  380. package/codeyam-cli/src/webserver/server.js.map +1 -1
  381. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam:debug.md} +1 -1
  382. package/codeyam-cli/templates/codeyam:diagnose.md +625 -0
  383. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam:setup.md} +139 -4
  384. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam:sim.md} +1 -1
  385. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam:test.md} +1 -1
  386. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam:verify.md} +1 -1
  387. package/package.json +8 -8
  388. package/packages/ai/index.js +2 -4
  389. package/packages/ai/index.js.map +1 -1
  390. package/packages/ai/src/lib/analyzeScope.js +107 -0
  391. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  392. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +76 -1
  393. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  394. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  395. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  396. package/packages/ai/src/lib/astScopes/methodSemantics.js +29 -0
  397. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  398. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  399. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  400. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +23 -0
  401. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  402. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +239 -1
  403. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  404. package/packages/ai/src/lib/astScopes/processExpression.js +728 -87
  405. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  406. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  407. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  408. package/packages/ai/src/lib/completionCall.js +17 -1
  409. package/packages/ai/src/lib/completionCall.js.map +1 -1
  410. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1126 -82
  411. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  412. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
  413. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  414. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +482 -0
  415. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  416. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +173 -55
  417. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  418. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
  419. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  420. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +35 -2
  421. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  422. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
  423. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  424. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  425. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  426. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +34 -3
  427. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  428. package/packages/ai/src/lib/deepEqual.js +32 -0
  429. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  430. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
  431. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  432. package/packages/ai/src/lib/generateChangesEntityScenarios.js +81 -90
  433. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  434. package/packages/ai/src/lib/generateEntityDataStructure.js +5 -0
  435. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  436. package/packages/ai/src/lib/generateEntityScenarioData.js +398 -81
  437. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  438. package/packages/ai/src/lib/generateEntityScenarios.js +168 -82
  439. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  440. package/packages/ai/src/lib/generateExecutionFlows.js +123 -0
  441. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  442. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  443. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  444. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +742 -0
  445. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  446. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  447. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  448. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  449. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  450. package/packages/ai/src/lib/isolateScopes.js +231 -4
  451. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  452. package/packages/ai/src/lib/mergeStatements.js +26 -3
  453. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  454. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
  455. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  456. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  457. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  458. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -64
  459. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  460. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +58 -4
  461. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  462. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -34
  463. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  464. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  465. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  466. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  467. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  468. package/packages/ai/src/lib/resolvePathToControllable.js +563 -0
  469. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  470. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  471. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  472. package/packages/ai/src/lib/worker/SerializableDataStructure.js +22 -0
  473. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  474. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
  475. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  476. package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
  477. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  478. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  479. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  480. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  481. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  482. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +214 -50
  483. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  484. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +10 -0
  485. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  486. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  487. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  488. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  489. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  490. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  491. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  492. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  493. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  494. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  495. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  496. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +159 -0
  497. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  498. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  499. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  500. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +458 -48
  501. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  502. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  503. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  504. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  505. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  506. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +235 -81
  507. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  508. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +96 -0
  509. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  510. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +56 -69
  511. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  512. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +4 -8
  513. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  514. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +307 -89
  515. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  516. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  517. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  518. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  519. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  520. package/packages/database/src/lib/kysely/db.js +2 -2
  521. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  522. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  523. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  524. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  525. package/packages/generate/index.js +3 -0
  526. package/packages/generate/index.js.map +1 -1
  527. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  528. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  529. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  530. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  531. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  532. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  533. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  534. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  535. package/packages/generate/src/lib/deepMerge.js +27 -1
  536. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  537. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  538. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  539. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  540. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  541. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  542. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  543. package/packages/process/index.js +3 -0
  544. package/packages/process/index.js.map +1 -0
  545. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  546. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  547. package/packages/process/src/ProcessManager.js.map +1 -0
  548. package/packages/process/src/index.js.map +1 -0
  549. package/packages/process/src/managedExecAsync.js.map +1 -0
  550. package/packages/types/index.js.map +1 -1
  551. package/scripts/finalize-analyzer.cjs +3 -1
  552. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  553. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -197
  554. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -271
  555. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -294
  556. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  557. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -115
  558. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  559. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  560. package/analyzer-template/process/README.md +0 -507
  561. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  562. package/background/src/lib/process/ProcessManager.js.map +0 -1
  563. package/background/src/lib/process/index.js.map +0 -1
  564. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  565. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  566. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  567. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-D0VW1-W7.js +0 -1
  568. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BAk4S4pI.js +0 -1
  569. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Y756iZxZ.js +0 -25
  570. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-zzrrjW1p.js +0 -3
  571. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-QMn7bJg6.js +0 -3
  572. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DmP5mRxX.js +0 -1
  573. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BXwvsbLw.js +0 -1
  574. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DAmUX_1y.js +0 -5
  575. package/codeyam-cli/src/webserver/build/client/assets/_index-Df-nk4J5.js +0 -1
  576. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-_ZUyFdie.js +0 -7
  577. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-Eoh0PhcW.js +0 -1
  578. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CZgPLy5i.js +0 -26
  579. package/codeyam-cli/src/webserver/build/client/assets/circle-check-DI-p9ZLZ.js +0 -1
  580. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DvyV2x6y.js +0 -1
  581. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DURu2qlF.js +0 -1
  582. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-DDobn9Xh.js +0 -16
  583. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CGdWnLD_.js +0 -1
  584. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-DgMmzrKs.js +0 -5
  585. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DEVXuhkn.js +0 -13
  586. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-WPRQyc68.js +0 -1
  587. package/codeyam-cli/src/webserver/build/client/assets/files-B9u3lJer.js +0 -1
  588. package/codeyam-cli/src/webserver/build/client/assets/git-YGnKIuHU.js +0 -11
  589. package/codeyam-cli/src/webserver/build/client/assets/globals-28lrWTTo.css +0 -1
  590. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  591. package/codeyam-cli/src/webserver/build/client/assets/index-CJ0uPJjV.js +0 -1
  592. package/codeyam-cli/src/webserver/build/client/assets/index-CfqeA2XG.js +0 -3
  593. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DIjSvh6B.js +0 -1
  594. package/codeyam-cli/src/webserver/build/client/assets/manifest-8125c15c.js +0 -1
  595. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-BXl3LOEh.js +0 -1
  596. package/codeyam-cli/src/webserver/build/client/assets/root-C-g286WP.js +0 -16
  597. package/codeyam-cli/src/webserver/build/client/assets/search-xBKWfOxd.js +0 -1
  598. package/codeyam-cli/src/webserver/build/client/assets/settings-DVY_wGOx.js +0 -1
  599. package/codeyam-cli/src/webserver/build/client/assets/simulations-Be1pJo5A.js +0 -1
  600. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CR-FkSvx.js +0 -1
  601. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DABetnSj.js +0 -1
  602. package/codeyam-cli/src/webserver/build/server/assets/index-DcR7DH9q.js +0 -1
  603. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDBrfp7e.js +0 -175
  604. package/codeyam-cli/templates/debug-codeyam.md +0 -527
  605. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  606. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  607. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -136
  608. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  609. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -220
  610. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  611. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -241
  612. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  613. package/packages/ai/src/lib/isFrontend.js +0 -5
  614. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  615. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  616. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  617. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -72
  618. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  619. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  620. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  621. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  622. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  623. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  624. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  625. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -0,0 +1,771 @@
1
+ import { ScopeDataStructure, ScopeNode } from '../../ScopeDataStructure';
2
+ import {
3
+ AddEquivalenciesInfo,
4
+ EquivalencyManager,
5
+ } from '../EquivalencyManager';
6
+
7
+ /**
8
+ * Framework manager for MUI (Material UI) components.
9
+ *
10
+ * Handles patterns where MUI component callbacks receive data from array props:
11
+ *
12
+ * 1. DataGrid: `rows` array → `columns[].renderCell` callback receives `params.row`
13
+ * 2. Autocomplete: `options` array → `renderOption`/`getOptionLabel` callbacks receive option
14
+ *
15
+ * Example DataGrid:
16
+ * ```tsx
17
+ * <DataGrid
18
+ * rows={data}
19
+ * columns={[{ renderCell: (params) => <Cell value={params.row.id} /> }]}
20
+ * />
21
+ * ```
22
+ *
23
+ * Example Autocomplete:
24
+ * ```tsx
25
+ * <Autocomplete
26
+ * options={users}
27
+ * getOptionLabel={(option) => option.name}
28
+ * renderOption={(props, option) => <li {...props}>{option.email}</li>}
29
+ * />
30
+ * ```
31
+ */
32
+ export class MuiManager implements EquivalencyManager {
33
+ postProcess(scopeNode: ScopeNode, scopeDataStructure: ScopeDataStructure) {
34
+ // Check this scope for DataGrid patterns when it's post-processed
35
+ this.processDataGridCallbacks(scopeNode, scopeDataStructure);
36
+
37
+ // Check for Autocomplete patterns
38
+ this.processAutocompleteCallbacks(scopeNode, scopeDataStructure);
39
+
40
+ // Also check if this scope is inside a DataGrid callback and propagate row property accesses
41
+ this.propagateFromChildScope(scopeNode, scopeDataStructure);
42
+ }
43
+
44
+ private processDataGridCallbacks(
45
+ scopeNode: ScopeNode,
46
+ scopeDataStructure: ScopeDataStructure,
47
+ ) {
48
+ // Find DataGrid calls and link renderCell callbacks to rows
49
+ for (const [path, equivalencies] of Object.entries(
50
+ scopeNode.equivalencies,
51
+ )) {
52
+ // Case 1: Look for DataGrid().signature[0].columns equivalency pointing to a columns variable
53
+ const dataGridMatch = path.match(
54
+ /^(DataGrid(?:Pro|Premium)?\(\))\.signature\[0\]\.columns$/,
55
+ );
56
+ if (dataGridMatch) {
57
+ const dataGridCall = dataGridMatch[1];
58
+
59
+ // Find what columns is equivalent to (e.g., "columns" variable)
60
+ for (const equiv of equivalencies) {
61
+ const columnsVar = equiv.schemaPath;
62
+
63
+ // Find renderCell callbacks, following equivalency chains if needed
64
+ const callbackScopes = this.findRenderCellCallbacks(
65
+ columnsVar,
66
+ scopeNode,
67
+ new Set(),
68
+ scopeDataStructure,
69
+ );
70
+
71
+ for (const callbackScopeName of callbackScopes) {
72
+ this.addRowEquivalencyToCallback(
73
+ callbackScopeName,
74
+ dataGridCall,
75
+ scopeNode,
76
+ scopeDataStructure,
77
+ );
78
+ }
79
+ }
80
+ continue;
81
+ }
82
+
83
+ // Case 2: Look for inline array props where DataGrid().signature[0].columns[N].renderCell
84
+ // directly points to a callback scope (e.g., DataGrid().signature[0].columns[0].renderCell → cyScope1())
85
+ // Also handles columns[].renderCell for normalized paths
86
+ const inlineRenderCellMatch = path.match(
87
+ /^(DataGrid(?:Pro|Premium)?\(\))\.signature\[0\]\.columns\[(?:\d+|)\]\.renderCell$/,
88
+ );
89
+
90
+ if (inlineRenderCellMatch) {
91
+ const dataGridCall = inlineRenderCellMatch[1];
92
+
93
+ for (const equiv of equivalencies) {
94
+ // Check if the equivalency points to a callback scope (cyScope*)
95
+ // Could be cyScope1() or cyScope1().functionCallReturnValue
96
+ const callbackMatch = equiv.schemaPath.match(
97
+ /^(cyScope[0-9A-Fa-f]+)\(\)(?:\.functionCallReturnValue)?$/,
98
+ );
99
+ if (callbackMatch) {
100
+ // Try both naming conventions:
101
+ // 1. Just the cyScope name (e.g., "cyScope1")
102
+ // 2. Parent____cyScope name (e.g., "CustomersPage____cyScope1")
103
+ const callbackScopeName = callbackMatch[1];
104
+ const prefixedCallbackScopeName = `${scopeNode.name}____${callbackMatch[1]}`;
105
+ // Try unprefixed name first, then prefixed
106
+ this.addRowEquivalencyToCallback(
107
+ callbackScopeName,
108
+ dataGridCall,
109
+ scopeNode,
110
+ scopeDataStructure,
111
+ );
112
+ // Also try prefixed version in case it exists
113
+ this.addRowEquivalencyToCallback(
114
+ prefixedCallbackScopeName,
115
+ dataGridCall,
116
+ scopeNode,
117
+ scopeDataStructure,
118
+ );
119
+ }
120
+ }
121
+ }
122
+ }
123
+ }
124
+
125
+ /**
126
+ * Helper to add the signature[0].row → DataGrid().signature[0].rows[] equivalency
127
+ */
128
+ private addRowEquivalencyToCallback(
129
+ callbackScopeName: string,
130
+ dataGridCall: string,
131
+ scopeNode: ScopeNode,
132
+ scopeDataStructure: ScopeDataStructure,
133
+ ) {
134
+ const callbackScopeNode =
135
+ scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
136
+ if (!callbackScopeNode) {
137
+ return;
138
+ }
139
+
140
+ // Add equivalency: signature[0].row ≡ DataGrid().signature[0].rows[]
141
+ const callbackParamRowPath = 'signature[0].row';
142
+ const rowsArrayElementPath = `${dataGridCall}.signature[0].rows[]`;
143
+
144
+ scopeDataStructure.addEquivalency(
145
+ callbackParamRowPath,
146
+ rowsArrayElementPath,
147
+ scopeNode.name,
148
+ callbackScopeNode as ScopeNode,
149
+ 'MUI DataGrid renderCell params.row equivalency',
150
+ );
151
+ }
152
+
153
+ /**
154
+ * Process Autocomplete callbacks to link option parameters to options array.
155
+ *
156
+ * Autocomplete has two callback props that receive individual options:
157
+ * - getOptionLabel(option) - param 0 is the option
158
+ * - renderOption(props, option, state) - param 1 is the option
159
+ */
160
+ private processAutocompleteCallbacks(
161
+ scopeNode: ScopeNode,
162
+ scopeDataStructure: ScopeDataStructure,
163
+ ) {
164
+ for (const [path, equivalencies] of Object.entries(
165
+ scopeNode.equivalencies,
166
+ )) {
167
+ // Look for Autocomplete().signature[0].options equivalency
168
+ const autocompleteMatch = path.match(
169
+ /^(Autocomplete\(\))\.signature\[0\]\.options$/,
170
+ );
171
+ if (!autocompleteMatch) continue;
172
+
173
+ const autocompleteCall = autocompleteMatch[1];
174
+
175
+ // Find callback props: getOptionLabel, renderOption
176
+ for (const callbackProp of ['getOptionLabel', 'renderOption']) {
177
+ const callbackPath = `${autocompleteCall}.signature[0].${callbackProp}`;
178
+ const callbackEquivs = scopeNode.equivalencies[callbackPath];
179
+
180
+ if (callbackEquivs) {
181
+ for (const callbackEquiv of callbackEquivs) {
182
+ const callbackMatch = callbackEquiv.schemaPath.match(
183
+ /^(cyScope[0-9A-Fa-f]+)\(\)\.functionCallReturnValue$/,
184
+ );
185
+ if (!callbackMatch) continue;
186
+
187
+ const callbackScopeName = callbackMatch[1];
188
+ const callbackScopeNode =
189
+ scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
190
+ if (!callbackScopeNode) continue;
191
+
192
+ // Determine which parameter index receives the option
193
+ // getOptionLabel: (option) => ... → param 0
194
+ // renderOption: (props, option, state) => ... → param 1
195
+ const paramIndex = callbackProp === 'renderOption' ? 1 : 0;
196
+
197
+ const callbackParamPath = `signature[${paramIndex}]`;
198
+ const optionsArrayElementPath = `${autocompleteCall}.signature[0].options[]`;
199
+
200
+ scopeDataStructure.addEquivalency(
201
+ callbackParamPath,
202
+ optionsArrayElementPath,
203
+ scopeNode.name,
204
+ callbackScopeNode as ScopeNode,
205
+ `MUI Autocomplete ${callbackProp} option equivalency`,
206
+ );
207
+ // Note: Property accesses are propagated in finalize() after all scopes are established
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }
213
+
214
+ /**
215
+ * Propagate property accesses from Autocomplete callback scope.
216
+ * When we find usages like `option.email`, create equivalencies to `options[].email`
217
+ * and trace back to the original data source (e.g., `users[].email`).
218
+ */
219
+ private propagateAutocompletePropertyAccesses(
220
+ callbackScope: ScopeNode,
221
+ autocompleteCall: string,
222
+ optionParamIndex: number,
223
+ parentScopeName: string,
224
+ scopeDataStructure: ScopeDataStructure,
225
+ ) {
226
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(
227
+ parentScopeName,
228
+ ) as ScopeNode;
229
+ if (!parentScope) return;
230
+
231
+ // Find what options is equivalent to (e.g., "users")
232
+ const optionsPath = `${autocompleteCall}.signature[0].options`;
233
+ const optionsEquivs = parentScope.equivalencies?.[optionsPath];
234
+ const dataSourcePath = optionsEquivs?.[0]?.schemaPath;
235
+
236
+ // Check for property accesses on the option parameter in the schema
237
+ // The schema contains entries like "signature[1].email" for property accesses
238
+ for (const schemaPath of Object.keys(callbackScope.schema || {})) {
239
+ // Match patterns like signature[0].name, signature[1].email (depending on param index)
240
+ const optionPropertyMatch = schemaPath.match(
241
+ new RegExp(`^signature\\[${optionParamIndex}\\]\\.(\\w+)$`),
242
+ );
243
+
244
+ if (optionPropertyMatch) {
245
+ const propertyName = optionPropertyMatch[1];
246
+
247
+ // Create equivalency: schemaPath → options[].propertyName
248
+ const optionsPropertyPath = `${autocompleteCall}.signature[0].options[].${propertyName}`;
249
+
250
+ scopeDataStructure.addEquivalency(
251
+ schemaPath,
252
+ optionsPropertyPath,
253
+ parentScopeName,
254
+ callbackScope,
255
+ 'MUI Autocomplete option property equivalency',
256
+ );
257
+
258
+ // Also create equivalency to the data source (e.g., users[].email)
259
+ if (dataSourcePath) {
260
+ const dataPropertyPath = `${dataSourcePath}[].${propertyName}`;
261
+
262
+ // Add to parent scope's schema
263
+ if (!parentScope.schema[dataPropertyPath]) {
264
+ parentScope.schema[dataPropertyPath] = 'unknown';
265
+ }
266
+
267
+ // Create bidirectional equivalencies to ensure propagation
268
+ scopeDataStructure.addEquivalency(
269
+ schemaPath,
270
+ dataPropertyPath,
271
+ parentScopeName,
272
+ callbackScope,
273
+ 'MUI Autocomplete option property equivalency',
274
+ );
275
+
276
+ scopeDataStructure.addEquivalency(
277
+ dataPropertyPath,
278
+ schemaPath,
279
+ parentScopeName,
280
+ parentScope,
281
+ 'MUI Autocomplete option property equivalency',
282
+ );
283
+ }
284
+ }
285
+ }
286
+ }
287
+
288
+ /**
289
+ * Find renderCell callbacks for a columns variable, following equivalency chains.
290
+ * For example: tableColumns → allColumns → allColumns[].renderCell → cyScope
291
+ *
292
+ * Also handles useMemo patterns where:
293
+ * - tableColumns → useMemo(cyScope(), [allColumns]).functionCallReturnValue
294
+ * - And allColumns[].renderCell → cyScope()
295
+ */
296
+ private findRenderCellCallbacks(
297
+ columnsVar: string,
298
+ scopeNode: ScopeNode,
299
+ visited: Set<string>,
300
+ scopeDataStructure?: ScopeDataStructure,
301
+ ): string[] {
302
+ if (visited.has(columnsVar)) return [];
303
+ visited.add(columnsVar);
304
+
305
+ const callbackScopes: string[] = [];
306
+
307
+ // Try direct path: columnsVar[].renderCell - check both current scope and parent scopes
308
+ // Also check for indexed paths like columnsVar[3].renderCell (with specific indices)
309
+ const renderCellPath = `${columnsVar}[].renderCell`;
310
+ let renderCellEquivs = scopeNode.equivalencies[renderCellPath];
311
+
312
+ // If not found in current scope, check parent scopes (via scopeNode.tree)
313
+ if (!renderCellEquivs && scopeDataStructure && scopeNode.tree) {
314
+ for (const parentScopeName of scopeNode.tree) {
315
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(
316
+ parentScopeName,
317
+ ) as ScopeNode;
318
+ if (parentScope?.equivalencies?.[renderCellPath]) {
319
+ renderCellEquivs = parentScope.equivalencies[renderCellPath];
320
+ break;
321
+ }
322
+ }
323
+ }
324
+
325
+ // Also look for indexed paths like tableColumns[3].renderCell, tableColumns[5].renderCell, etc.
326
+ // This is needed because column definitions often have specific indices
327
+ const indexedRenderCellPattern = new RegExp(
328
+ `^${columnsVar.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\[\\d+\\]\\.renderCell$`,
329
+ );
330
+ const allScopesToCheck = [scopeNode];
331
+ if (scopeDataStructure && scopeNode.tree) {
332
+ for (const parentScopeName of scopeNode.tree) {
333
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(
334
+ parentScopeName,
335
+ ) as ScopeNode;
336
+ if (parentScope) allScopesToCheck.push(parentScope);
337
+ }
338
+ }
339
+
340
+ for (const scope of allScopesToCheck) {
341
+ for (const [path, equivs] of Object.entries(scope.equivalencies || {})) {
342
+ if (indexedRenderCellPattern.test(path)) {
343
+ for (const equiv of equivs) {
344
+ const callbackMatch = equiv.schemaPath.match(
345
+ /^(cyScope\d+)\(\)\.functionCallReturnValue$/,
346
+ );
347
+ if (callbackMatch && !callbackScopes.includes(callbackMatch[1])) {
348
+ callbackScopes.push(callbackMatch[1]);
349
+ }
350
+ }
351
+ }
352
+ }
353
+ }
354
+
355
+ if (renderCellEquivs) {
356
+ for (const renderCellEquiv of renderCellEquivs) {
357
+ // Check if it points to a callback (cyScope().functionCallReturnValue)
358
+ const callbackMatch = renderCellEquiv.schemaPath.match(
359
+ /^(cyScope\d+)\(\)\.functionCallReturnValue$/,
360
+ );
361
+ if (callbackMatch && !callbackScopes.includes(callbackMatch[1])) {
362
+ callbackScopes.push(callbackMatch[1]);
363
+ }
364
+ }
365
+ }
366
+
367
+ // If no direct callbacks found, follow equivalency chains
368
+ if (callbackScopes.length === 0) {
369
+ // Look for what columnsVar is equivalent to - check current scope and parent scopes
370
+ let varEquivs = scopeNode.equivalencies[columnsVar];
371
+ let equivScopeNode = scopeNode;
372
+
373
+ // If not found or only self-reference, check parent scopes (via scopeNode.tree)
374
+ if (
375
+ (!varEquivs ||
376
+ (varEquivs.length === 1 && varEquivs[0].schemaPath === columnsVar)) &&
377
+ scopeDataStructure &&
378
+ scopeNode.tree
379
+ ) {
380
+ for (const parentScopeName of scopeNode.tree) {
381
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(
382
+ parentScopeName,
383
+ ) as ScopeNode;
384
+ if (parentScope?.equivalencies?.[columnsVar]) {
385
+ const parentEquivs = parentScope.equivalencies[columnsVar];
386
+ // Check if it has non-self-reference equivalencies
387
+ if (
388
+ parentEquivs.some((e) => e.schemaPath !== columnsVar) ||
389
+ parentEquivs.some((e) => e.schemaPath.includes('useMemo'))
390
+ ) {
391
+ varEquivs = parentEquivs;
392
+ equivScopeNode = parentScope;
393
+ break;
394
+ }
395
+ }
396
+ }
397
+ }
398
+
399
+ if (varEquivs) {
400
+ for (const varEquiv of varEquivs) {
401
+ const schemaPath = varEquiv.schemaPath;
402
+
403
+ // Handle useMemo pattern: useMemo(cyScope(), [allColumns]).functionCallReturnValue
404
+ // The second argument [allColumns] tells us what's being passed to useMemo
405
+ const useMemoMatch = schemaPath.match(
406
+ /^useMemo\(cyScope\d+\(\), \[([^\]]+)\]\)\.functionCallReturnValue$/,
407
+ );
408
+ if (useMemoMatch) {
409
+ // The array in the dependency list often contains the actual columns variable
410
+ const depsList = useMemoMatch[1];
411
+ // Parse the deps - could be comma-separated
412
+ const deps = depsList.split(',').map((d) => d.trim());
413
+ for (const dep of deps) {
414
+ const nestedCallbacks = this.findRenderCellCallbacks(
415
+ dep,
416
+ equivScopeNode,
417
+ visited,
418
+ scopeDataStructure,
419
+ );
420
+ callbackScopes.push(...nestedCallbacks);
421
+ }
422
+ continue;
423
+ }
424
+
425
+ // Skip other function calls and internal paths
426
+ if (schemaPath.includes('()') || schemaPath.includes('[')) {
427
+ continue;
428
+ }
429
+
430
+ // Skip self-references
431
+ if (schemaPath === columnsVar) {
432
+ continue;
433
+ }
434
+
435
+ // Recursively search in the equivalent variable
436
+ const nestedCallbacks = this.findRenderCellCallbacks(
437
+ schemaPath,
438
+ equivScopeNode,
439
+ visited,
440
+ scopeDataStructure,
441
+ );
442
+ callbackScopes.push(...nestedCallbacks);
443
+ }
444
+ }
445
+ }
446
+
447
+ return callbackScopes;
448
+ }
449
+
450
+ /**
451
+ * Propagate row property accesses from callback scope and its children.
452
+ * When we find usages like `params.row.id`, create equivalencies to `rows[].id`.
453
+ */
454
+ private propagateRowPropertyAccesses(
455
+ callbackScope: ScopeNode,
456
+ dataGridCall: string,
457
+ parentScopeName: string,
458
+ scopeDataStructure: ScopeDataStructure,
459
+ ) {
460
+ // Check all scopes (callback and its children) for params.row.* accesses
461
+ const scopesToCheck = [callbackScope];
462
+
463
+ // Find child scopes by looking for scopes whose tree includes the callback scope
464
+ const callbackScopeName = callbackScope.name;
465
+ for (const [scopeName, scope] of Object.entries(
466
+ scopeDataStructure.scopeNodes,
467
+ )) {
468
+ if (
469
+ scope.tree &&
470
+ scope.tree.includes(callbackScopeName) &&
471
+ scopeName !== callbackScopeName
472
+ ) {
473
+ scopesToCheck.push(scope);
474
+ }
475
+ }
476
+
477
+ for (const scope of scopesToCheck) {
478
+ // Find equivalencies that reference params.row.* or signature[0].row.*
479
+ for (const [path, equivs] of Object.entries(scope.equivalencies)) {
480
+ for (const equiv of equivs) {
481
+ const schemaPath = equiv.schemaPath;
482
+
483
+ // Match patterns like params.row.id, params.row.flagged, signature[0].row.status
484
+ const rowPropertyMatch = schemaPath.match(
485
+ /^(?:params|signature\[0\])\.row\.(\w+)$/,
486
+ );
487
+
488
+ if (rowPropertyMatch) {
489
+ const propertyName = rowPropertyMatch[1];
490
+
491
+ // Create equivalency: the path accessing params.row.X → rows[].X
492
+ // e.g., updateStatus().signature[0].id → DataGrid().signature[0].rows[].id
493
+ const rowsPropertyPath = `${dataGridCall}.signature[0].rows[].${propertyName}`;
494
+
495
+ scopeDataStructure.addEquivalency(
496
+ path,
497
+ rowsPropertyPath,
498
+ parentScopeName,
499
+ scope,
500
+ 'MUI DataGrid renderCell params.row equivalency',
501
+ );
502
+ }
503
+ }
504
+ }
505
+ }
506
+ }
507
+
508
+ /**
509
+ * Process from child scope perspective: look for params.row.* accesses
510
+ * and trace back to find DataGrid rows equivalency in parent scopes.
511
+ */
512
+ private propagateFromChildScope(
513
+ scopeNode: ScopeNode,
514
+ scopeDataStructure: ScopeDataStructure,
515
+ ) {
516
+ // Look for equivalencies in this scope that reference params.row.*
517
+ for (const [path, equivs] of Object.entries(scopeNode.equivalencies)) {
518
+ for (const equiv of equivs) {
519
+ const schemaPath = equiv.schemaPath;
520
+
521
+ // Match patterns like params.row.id, params.row.status
522
+ const rowPropertyMatch = schemaPath.match(/^params\.row\.(\w+)$/);
523
+
524
+ if (rowPropertyMatch) {
525
+ const propertyName = rowPropertyMatch[1];
526
+
527
+ // Look in parent scopes for DataGrid rows equivalency
528
+ // The pattern we're looking for is: signature[0].row → DataGrid().signature[0].rows[]
529
+ const dataGridCall = this.findDataGridInParentScopes(
530
+ scopeNode,
531
+ scopeDataStructure,
532
+ );
533
+
534
+ if (dataGridCall) {
535
+ // Find the parent scope that has the DataGrid
536
+ const parentScopeName = this.findDataGridScopeName(
537
+ scopeNode,
538
+ scopeDataStructure,
539
+ );
540
+ const parentScope = parentScopeName
541
+ ? (scopeDataStructure.getScopeOrFunctionCallInfo(
542
+ parentScopeName,
543
+ ) as ScopeNode)
544
+ : undefined;
545
+
546
+ // Find what DataGrid().signature[0].rows is equivalent to (e.g., "data.quotes")
547
+ const rowsPath = `${dataGridCall}.signature[0].rows`;
548
+ const rowsEquivs = parentScope?.equivalencies?.[rowsPath];
549
+ const dataSourcePath = rowsEquivs?.[0]?.schemaPath;
550
+
551
+ if (dataSourcePath && parentScope) {
552
+ // Create equivalency: path → dataSource[].propertyName (e.g., data.quotes[].id)
553
+ const dataPropertyPath = `${dataSourcePath}[].${propertyName}`;
554
+
555
+ // Add equivalency in child scope
556
+ scopeDataStructure.addEquivalency(
557
+ path,
558
+ dataPropertyPath,
559
+ parentScopeName || scopeNode.name,
560
+ scopeNode,
561
+ 'MUI DataGrid renderCell params.row equivalency',
562
+ );
563
+
564
+ // Also add the property access to the parent scope's schema
565
+ // This ensures that data.quotes[].id shows up as an accessed property
566
+ if (!parentScope.schema[dataPropertyPath]) {
567
+ parentScope.schema[dataPropertyPath] = 'unknown';
568
+ }
569
+
570
+ // And create an equivalency FROM the data path so it propagates to returnValue
571
+ scopeDataStructure.addEquivalency(
572
+ dataPropertyPath,
573
+ path,
574
+ parentScopeName!,
575
+ parentScope,
576
+ 'MUI DataGrid renderCell params.row equivalency',
577
+ );
578
+ }
579
+ }
580
+ }
581
+ }
582
+ }
583
+ }
584
+
585
+ /**
586
+ * Find the DataGrid call in parent scopes by looking for signature[0].row → DataGrid().signature[0].rows[]
587
+ */
588
+ private findDataGridInParentScopes(
589
+ scopeNode: ScopeNode,
590
+ scopeDataStructure: ScopeDataStructure,
591
+ ): string | undefined {
592
+ // Check the scope tree (parent scopes)
593
+ if (!scopeNode.tree) return undefined;
594
+
595
+ for (const parentScopeName of scopeNode.tree) {
596
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(
597
+ parentScopeName,
598
+ ) as ScopeNode;
599
+ if (!parentScope?.equivalencies) continue;
600
+
601
+ // Look for signature[0].row → DataGrid().signature[0].rows[]
602
+ const rowEquivs = parentScope.equivalencies['signature[0].row'];
603
+ if (rowEquivs) {
604
+ for (const equiv of rowEquivs) {
605
+ const match = equiv.schemaPath.match(
606
+ /^(DataGrid(?:Pro|Premium)?)\(\)\.signature\[0\]\.rows\[\]$/,
607
+ );
608
+ if (match) {
609
+ return `${match[1]}()`;
610
+ }
611
+ }
612
+ }
613
+ }
614
+
615
+ return undefined;
616
+ }
617
+
618
+ /**
619
+ * Find the scope name that contains the DataGrid call
620
+ */
621
+ private findDataGridScopeName(
622
+ scopeNode: ScopeNode,
623
+ scopeDataStructure: ScopeDataStructure,
624
+ ): string | undefined {
625
+ if (!scopeNode.tree) return undefined;
626
+
627
+ for (const parentScopeName of scopeNode.tree) {
628
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(
629
+ parentScopeName,
630
+ ) as ScopeNode;
631
+ if (!parentScope?.equivalencies) continue;
632
+
633
+ // Look for DataGrid().signature[0].columns
634
+ for (const path of Object.keys(parentScope.equivalencies)) {
635
+ if (
636
+ path.match(/^DataGrid(?:Pro|Premium)?\(\)\.signature\[0\]\.columns$/)
637
+ ) {
638
+ return parentScopeName;
639
+ }
640
+ }
641
+ }
642
+
643
+ return undefined;
644
+ }
645
+
646
+ isInterestedInSubpath(
647
+ subPathParts: string[],
648
+ _scopeNode: ScopeNode,
649
+ _scopeDataStructure: ScopeDataStructure,
650
+ ): boolean {
651
+ // We're interested in MUI component paths (DataGrid variants and Autocomplete)
652
+ const hasMuiComponent = subPathParts.some((part) =>
653
+ part.match(/^(DataGrid(Pro|Premium)?|Autocomplete)\(/),
654
+ );
655
+ return hasMuiComponent;
656
+ }
657
+
658
+ addEquivalencies(_addEquivalenciesInfo: AddEquivalenciesInfo): boolean {
659
+ // We handle DataGrid in finalize() instead, since we need to scan
660
+ // for all equivalencies after they've been established
661
+ return false;
662
+ }
663
+
664
+ finalize(_scopeNode: ScopeNode, scopeDataStructure: ScopeDataStructure) {
665
+ // Iterate through all scopes (finalize is only called on root)
666
+ for (const [scopeName, scopeNode] of Object.entries(
667
+ scopeDataStructure.scopeNodes,
668
+ )) {
669
+ this.finalizeScope(scopeNode, scopeDataStructure);
670
+ }
671
+ }
672
+
673
+ private finalizeScope(
674
+ scopeNode: ScopeNode,
675
+ scopeDataStructure: ScopeDataStructure,
676
+ ) {
677
+ // Propagate row property accesses after all scopes are established
678
+ // Find DataGrid calls in this scope and link renderCell params.row.* to rows[].*
679
+ for (const [path, equivalencies] of Object.entries(
680
+ scopeNode.equivalencies,
681
+ )) {
682
+ // Look for DataGrid().signature[0].columns equivalency
683
+ const dataGridMatch = path.match(
684
+ /^(DataGrid(?:Pro|Premium)?\(\))\.signature\[0\]\.columns$/,
685
+ );
686
+ if (dataGridMatch) {
687
+ const dataGridCall = dataGridMatch[1];
688
+
689
+ // Find what columns is equivalent to
690
+ for (const equiv of equivalencies) {
691
+ const columnsVar = equiv.schemaPath;
692
+
693
+ // Find renderCell callbacks
694
+ const callbackScopes = this.findRenderCellCallbacks(
695
+ columnsVar,
696
+ scopeNode,
697
+ new Set(),
698
+ scopeDataStructure,
699
+ );
700
+
701
+ for (const callbackScopeName of callbackScopes) {
702
+ const callbackScopeNode =
703
+ scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
704
+ if (!callbackScopeNode) continue;
705
+
706
+ // Propagate sub-property accesses from params.row.*
707
+ this.propagateRowPropertyAccesses(
708
+ callbackScopeNode as ScopeNode,
709
+ dataGridCall,
710
+ scopeNode.name,
711
+ scopeDataStructure,
712
+ );
713
+ }
714
+ }
715
+ continue;
716
+ }
717
+
718
+ // Look for Autocomplete().signature[0].options equivalency
719
+ const autocompleteMatch = path.match(
720
+ /^(Autocomplete\(\))\.signature\[0\]\.options$/,
721
+ );
722
+ if (autocompleteMatch) {
723
+ const autocompleteCall = autocompleteMatch[1];
724
+
725
+ // Find callback props and propagate property accesses
726
+ for (const callbackProp of ['getOptionLabel', 'renderOption']) {
727
+ const callbackPath = `${autocompleteCall}.signature[0].${callbackProp}`;
728
+ const callbackEquivs = scopeNode.equivalencies[callbackPath];
729
+
730
+ if (callbackEquivs) {
731
+ for (const callbackEquiv of callbackEquivs) {
732
+ const callbackMatch = callbackEquiv.schemaPath.match(
733
+ /^(cyScope[0-9A-Fa-f]+)\(\)\.functionCallReturnValue$/,
734
+ );
735
+ if (!callbackMatch) continue;
736
+
737
+ const callbackScopeName = callbackMatch[1];
738
+ const callbackScopeNode =
739
+ scopeDataStructure.getScopeOrFunctionCallInfo(
740
+ callbackScopeName,
741
+ );
742
+ if (!callbackScopeNode) continue;
743
+
744
+ // Determine which parameter index receives the option
745
+ const paramIndex = callbackProp === 'renderOption' ? 1 : 0;
746
+
747
+ // Propagate property accesses from this callback
748
+ this.propagateAutocompletePropertyAccesses(
749
+ callbackScopeNode as ScopeNode,
750
+ autocompleteCall,
751
+ paramIndex,
752
+ scopeNode.name,
753
+ scopeDataStructure,
754
+ );
755
+ }
756
+ }
757
+ }
758
+ }
759
+ }
760
+ }
761
+
762
+ // NOTE: We intentionally do NOT include DataGrid/Autocomplete in internalFunctions.
763
+ // While they're MUI components (not external data sources), we need them to remain
764
+ // in externalFunctionCalls so that data flow tracing works correctly.
765
+ // For example: DataGrid().signature[0].rows → data.items[] tracing
766
+ internalFunctions: Set<string> = new Set([]);
767
+
768
+ toString() {
769
+ return 'MuiManager';
770
+ }
771
+ }