@codeyam/codeyam-cli 0.1.0-staging.8e7b1bd → 0.1.0-staging.b8a55ba

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 (385) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +7 -6
  4. package/analyzer-template/packages/ai/package.json +1 -1
  5. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +2 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +22 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +23 -1
  8. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +401 -106
  9. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +60 -0
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +661 -50
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +14 -2
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +715 -0
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +123 -1
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +23 -1
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +34 -1
  18. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +236 -24
  19. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +18 -1
  20. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +37 -4
  21. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +5 -0
  22. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +213 -12
  23. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +11 -15
  24. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +114 -11
  25. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  26. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  27. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
  28. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +42 -2
  29. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +38 -2
  30. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  31. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +5 -0
  32. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
  33. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +339 -145
  34. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +20 -0
  35. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +8 -1
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +158 -0
  37. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +107 -18
  38. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  39. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +223 -103
  40. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +10 -5
  41. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +172 -83
  42. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -5
  43. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +97 -27
  44. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  45. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  46. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  47. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  48. package/analyzer-template/packages/aws/package.json +1 -1
  49. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  50. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  51. package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
  52. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  53. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +20 -9
  54. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +3 -2
  55. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
  56. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  57. package/analyzer-template/packages/generate/src/lib/getComponentScenarioPath.ts +8 -3
  58. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
  59. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
  60. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  61. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +8 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +14 -7
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  70. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
  71. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  73. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  74. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  77. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js +7 -3
  80. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/types/index.d.ts +4 -3
  82. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/types/index.js +1 -0
  84. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +31 -1
  86. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  87. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +51 -1
  88. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +21 -1
  90. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  91. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  92. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  93. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  95. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  97. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  98. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  99. package/analyzer-template/packages/types/index.ts +8 -0
  100. package/analyzer-template/packages/types/src/types/Analysis.ts +32 -1
  101. package/analyzer-template/packages/types/src/types/Scenario.ts +75 -6
  102. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +49 -0
  103. package/analyzer-template/packages/ui-components/package.json +4 -4
  104. package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
  105. package/analyzer-template/packages/utils/dist/types/index.d.ts +4 -3
  106. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  107. package/analyzer-template/packages/utils/dist/types/index.js +1 -0
  108. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  109. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +31 -1
  110. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  111. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +51 -1
  112. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  113. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +21 -1
  114. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  115. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  116. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  122. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  123. package/analyzer-template/packages/utils/src/lib/applyUniversalMocks.ts +28 -2
  124. package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
  125. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  126. package/analyzer-template/playwright/takeScreenshot.ts +9 -7
  127. package/analyzer-template/project/TESTING.md +83 -0
  128. package/analyzer-template/project/constructMockCode.ts +151 -30
  129. package/analyzer-template/project/loadReadyToBeCaptured.ts +17 -1
  130. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +16 -9
  131. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +77 -37
  132. package/analyzer-template/project/reconcileMockDataKeys.ts +104 -3
  133. package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
  134. package/analyzer-template/project/serverOnlyModules.ts +288 -0
  135. package/analyzer-template/project/start.ts +10 -0
  136. package/analyzer-template/project/startScenarioCapture.ts +73 -41
  137. package/analyzer-template/project/writeMockDataTsx.ts +103 -40
  138. package/analyzer-template/project/writeScenarioComponents.ts +1162 -203
  139. package/analyzer-template/project/writeSimpleRoot.ts +26 -4
  140. package/analyzer-template/project/writeUniversalMocks.ts +32 -11
  141. package/background/src/lib/virtualized/project/constructMockCode.js +132 -25
  142. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  143. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +15 -1
  144. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  145. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +11 -6
  146. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  147. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +67 -32
  148. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  149. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +65 -4
  150. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  151. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
  152. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  153. package/background/src/lib/virtualized/project/serverOnlyModules.js +235 -0
  154. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -0
  155. package/background/src/lib/virtualized/project/start.js +6 -0
  156. package/background/src/lib/virtualized/project/start.js.map +1 -1
  157. package/background/src/lib/virtualized/project/startScenarioCapture.js +54 -31
  158. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  159. package/background/src/lib/virtualized/project/writeMockDataTsx.js +87 -34
  160. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  161. package/background/src/lib/virtualized/project/writeScenarioComponents.js +852 -133
  162. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  163. package/background/src/lib/virtualized/project/writeSimpleRoot.js +25 -2
  164. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  165. package/background/src/lib/virtualized/project/writeUniversalMocks.js +27 -12
  166. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  167. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +7 -0
  168. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +1 -0
  169. package/codeyam-cli/src/cli.js +2 -0
  170. package/codeyam-cli/src/cli.js.map +1 -1
  171. package/codeyam-cli/src/commands/debug.js +14 -2
  172. package/codeyam-cli/src/commands/debug.js.map +1 -1
  173. package/codeyam-cli/src/commands/recapture.js +215 -0
  174. package/codeyam-cli/src/commands/recapture.js.map +1 -0
  175. package/codeyam-cli/src/commands/report.js +26 -23
  176. package/codeyam-cli/src/commands/report.js.map +1 -1
  177. package/codeyam-cli/src/utils/backgroundServer.js +2 -2
  178. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  179. package/codeyam-cli/src/utils/generateReport.js +252 -106
  180. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  181. package/codeyam-cli/src/utils/install-skills.js +2 -7
  182. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  183. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
  184. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  185. package/codeyam-cli/src/utils/queue/job.js +140 -16
  186. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  187. package/codeyam-cli/src/utils/queue/manager.js +19 -7
  188. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  189. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  190. package/codeyam-cli/src/webserver/app/lib/database.js +47 -0
  191. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  192. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  193. package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
  194. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  195. package/codeyam-cli/src/webserver/bootstrap.js +9 -0
  196. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DQeyk25_.js → EntityTypeBadge-CzGX-miz.js} +1 -1
  199. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +41 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +25 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CBQPrpT0.js +3 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-D1CdlbrV.js +6 -0
  203. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-wDPcZNKx.js +3 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +11 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BfmDgXxG.js +1 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +15 -0
  207. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-ayCJdUAc.js → TruncatedFilePath-6J7zDUD5.js} +1 -1
  208. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +11 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +32 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/api.link-scenario-value-l0sNRNKZ.js +1 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/api.update-key-attributes-l0sNRNKZ.js +1 -0
  212. package/codeyam-cli/src/webserver/build/client/assets/api.update-valid-values-l0sNRNKZ.js +1 -0
  213. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BYimnrHg.js +6 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +51 -0
  215. package/codeyam-cli/src/webserver/build/client/assets/circle-check-CaVsIRxt.js +6 -0
  216. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgUsG7ib.js +21 -0
  217. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +1 -0
  218. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-FHOVOgFN.js → entity._sha._-zUEpfPsu.js} +22 -15
  220. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +1 -0
  221. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +1 -0
  222. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-CfLCUi9S.js +5 -0
  223. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DKJyZfAY.js +29 -0
  224. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DAtOlaWE.js +1 -0
  225. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +1 -0
  226. package/codeyam-cli/src/webserver/build/client/assets/git-D62Lxxmv.js +15 -0
  227. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +1 -0
  228. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  229. package/codeyam-cli/src/webserver/build/client/assets/index-BosqDOlH.js +3 -0
  230. package/codeyam-cli/src/webserver/build/client/assets/index-CzNNiTkw.js +9 -0
  231. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +1 -0
  232. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-CNp9QFCX.js +6 -0
  233. package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +1 -0
  234. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  235. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +56 -0
  236. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  237. package/codeyam-cli/src/webserver/build/client/assets/search-DDGjYAMJ.js +6 -0
  238. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +1 -0
  239. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +1 -0
  240. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CBc5dE1s.js +6 -0
  241. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +1 -0
  242. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +1 -0
  243. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-DOGXmJcI.js → useLastLogLine-BqPPNjAl.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{useToast-C07gRg7Z.js → useToast-DWHcCcl1.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +1 -0
  247. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +175 -0
  248. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  249. package/codeyam-cli/src/webserver/build-info.json +5 -5
  250. package/codeyam-cli/src/webserver/devServer.js +1 -3
  251. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  252. package/codeyam-cli/templates/debug-codeyam.md +620 -0
  253. package/package.json +14 -14
  254. package/packages/ai/src/lib/analyzeScope.js +2 -0
  255. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  256. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +16 -0
  257. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  258. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +16 -0
  259. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  260. package/packages/ai/src/lib/astScopes/processExpression.js +305 -88
  261. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  262. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +523 -42
  263. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  264. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +12 -2
  265. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  266. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +454 -0
  267. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  268. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +103 -1
  269. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  270. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
  271. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  272. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +19 -1
  273. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  274. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
  275. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  276. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +28 -2
  277. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  278. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +179 -17
  279. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  280. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +6 -0
  281. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  282. package/packages/ai/src/lib/generateChangesEntityScenarios.js +37 -4
  283. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  284. package/packages/ai/src/lib/generateEntityDataStructure.js +4 -0
  285. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  286. package/packages/ai/src/lib/generateEntityKeyAttributes.js +176 -9
  287. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  288. package/packages/ai/src/lib/generateEntityScenarioData.js +11 -15
  289. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  290. package/packages/ai/src/lib/generateEntityScenarios.js +105 -9
  291. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  292. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  293. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  294. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  295. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  296. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
  297. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  298. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +38 -2
  299. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  300. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +38 -2
  301. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  302. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  303. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  304. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  305. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
  306. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  307. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +258 -110
  308. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  309. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +18 -0
  310. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  311. package/packages/analyze/src/lib/files/getImportedExports.js +6 -1
  312. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  313. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +125 -0
  314. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  315. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +74 -19
  316. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  317. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  318. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  319. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +175 -58
  320. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  321. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +10 -5
  322. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  323. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +127 -69
  324. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  325. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -5
  326. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  327. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +74 -23
  328. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  329. package/packages/database/src/lib/kysely/db.js +2 -2
  330. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  331. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  332. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
  333. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  334. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  335. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  336. package/packages/generate/src/lib/deepMerge.js +27 -1
  337. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  338. package/packages/generate/src/lib/getComponentScenarioPath.js +7 -3
  339. package/packages/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  340. package/packages/types/index.js +1 -0
  341. package/packages/types/index.js.map +1 -1
  342. package/packages/types/src/types/Scenario.js +21 -1
  343. package/packages/types/src/types/Scenario.js.map +1 -1
  344. package/packages/utils/src/lib/applyUniversalMocks.js +26 -2
  345. package/packages/utils/src/lib/applyUniversalMocks.js.map +1 -1
  346. package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
  347. package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  348. package/scripts/finalize-analyzer.cjs +3 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-CWKV2GEz.js +0 -1
  350. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-D2hFeDeg.js +0 -1
  351. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-C8K-4kKP.js +0 -26
  352. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DgXLv61M.js +0 -3
  353. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-DFdLQbPS.js +0 -3
  354. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DlRDjT4h.js +0 -1
  355. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-7UkVL-UI.js +0 -1
  356. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-XjtsGuPo.js +0 -5
  357. package/codeyam-cli/src/webserver/build/client/assets/_index-D2eJjWLf.js +0 -1
  358. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-w6sbwlOd.js +0 -7
  359. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BBNQ8hup.js +0 -1
  360. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-Bex4RrGs.js +0 -26
  361. package/codeyam-cli/src/webserver/build/client/assets/circle-check-cdhjVtom.js +0 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DkgmwwRC.js +0 -1
  363. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CwLmCS0J.js +0 -1
  364. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-YZ-kM3ZG.js +0 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BeQlz94_.js +0 -5
  366. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DN2XXM7Z.js +0 -5
  367. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-CUeAIQNI.js +0 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/files-ccMQfhGf.js +0 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/git-JmESAHx5.js +0 -12
  370. package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  372. package/codeyam-cli/src/webserver/build/client/assets/index-DsL9BiOc.js +0 -8
  373. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-COYCR2oZ.js +0 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/manifest-90adba57.js +0 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/root-DfbVEEjF.js +0 -16
  376. package/codeyam-cli/src/webserver/build/client/assets/search-DvK9iMBu.js +0 -1
  377. package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/settings-9LTbit4Z.js +0 -1
  379. package/codeyam-cli/src/webserver/build/client/assets/simulations-BrxN5ZtV.js +0 -1
  380. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-Iv0p8T-1.js +0 -1
  381. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BWmSRPH6.js +0 -1
  382. package/codeyam-cli/src/webserver/build/server/assets/index-CE_1qXCG.js +0 -1
  383. package/codeyam-cli/src/webserver/build/server/assets/server-build-BY_VDhiD.js +0 -166
  384. package/codeyam-cli/templates/debug-command.md +0 -141
  385. /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
@@ -0,0 +1,454 @@
1
+ /**
2
+ * Framework manager for MUI (Material UI) components.
3
+ *
4
+ * Handles patterns where MUI component callbacks receive data from array props:
5
+ *
6
+ * 1. DataGrid: `rows` array → `columns[].renderCell` callback receives `params.row`
7
+ * 2. Autocomplete: `options` array → `renderOption`/`getOptionLabel` callbacks receive option
8
+ *
9
+ * Example DataGrid:
10
+ * ```tsx
11
+ * <DataGrid
12
+ * rows={data}
13
+ * columns={[{ renderCell: (params) => <Cell value={params.row.id} /> }]}
14
+ * />
15
+ * ```
16
+ *
17
+ * Example Autocomplete:
18
+ * ```tsx
19
+ * <Autocomplete
20
+ * options={users}
21
+ * getOptionLabel={(option) => option.name}
22
+ * renderOption={(props, option) => <li {...props}>{option.email}</li>}
23
+ * />
24
+ * ```
25
+ */
26
+ export class MuiManager {
27
+ constructor() {
28
+ this.internalFunctions = new Set([
29
+ 'DataGrid',
30
+ 'DataGridPro',
31
+ 'DataGridPremium',
32
+ 'Autocomplete',
33
+ ]);
34
+ }
35
+ postProcess(scopeNode, scopeDataStructure) {
36
+ // Check this scope for DataGrid patterns when it's post-processed
37
+ this.processDataGridCallbacks(scopeNode, scopeDataStructure);
38
+ // Check for Autocomplete patterns
39
+ this.processAutocompleteCallbacks(scopeNode, scopeDataStructure);
40
+ // Also check if this scope is inside a DataGrid callback and propagate row property accesses
41
+ this.propagateFromChildScope(scopeNode, scopeDataStructure);
42
+ }
43
+ processDataGridCallbacks(scopeNode, scopeDataStructure) {
44
+ // Find DataGrid calls and link renderCell callbacks to rows
45
+ for (const [path, equivalencies] of Object.entries(scopeNode.equivalencies)) {
46
+ // Look for DataGrid().signature[0].columns equivalency (DataGrid, DataGridPro, DataGridPremium)
47
+ const dataGridMatch = path.match(/^(DataGrid(?:Pro|Premium)?\(\))\.signature\[0\]\.columns$/);
48
+ if (!dataGridMatch)
49
+ continue;
50
+ const dataGridCall = dataGridMatch[1];
51
+ // Find what columns is equivalent to (e.g., "columns" variable)
52
+ for (const equiv of equivalencies) {
53
+ const columnsVar = equiv.schemaPath;
54
+ // Find renderCell callbacks, following equivalency chains if needed
55
+ const callbackScopes = this.findRenderCellCallbacks(columnsVar, scopeNode, new Set(), scopeDataStructure);
56
+ for (const callbackScopeName of callbackScopes) {
57
+ // Get the callback scope node
58
+ const callbackScopeNode = scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
59
+ if (!callbackScopeNode) {
60
+ continue;
61
+ }
62
+ // Add equivalency: signature[0].row ≡ DataGrid().signature[0].rows[]
63
+ const callbackParamRowPath = 'signature[0].row';
64
+ const rowsArrayElementPath = `${dataGridCall}.signature[0].rows[]`;
65
+ scopeDataStructure.addEquivalency(callbackParamRowPath, rowsArrayElementPath, scopeNode.name, callbackScopeNode, 'MUI DataGrid renderCell params.row equivalency');
66
+ }
67
+ }
68
+ }
69
+ }
70
+ /**
71
+ * Process Autocomplete callbacks to link option parameters to options array.
72
+ *
73
+ * Autocomplete has two callback props that receive individual options:
74
+ * - getOptionLabel(option) - param 0 is the option
75
+ * - renderOption(props, option, state) - param 1 is the option
76
+ */
77
+ processAutocompleteCallbacks(scopeNode, scopeDataStructure) {
78
+ for (const [path, equivalencies] of Object.entries(scopeNode.equivalencies)) {
79
+ // Look for Autocomplete().signature[0].options equivalency
80
+ const autocompleteMatch = path.match(/^(Autocomplete\(\))\.signature\[0\]\.options$/);
81
+ if (!autocompleteMatch)
82
+ continue;
83
+ const autocompleteCall = autocompleteMatch[1];
84
+ // Find callback props: getOptionLabel, renderOption
85
+ for (const callbackProp of ['getOptionLabel', 'renderOption']) {
86
+ const callbackPath = `${autocompleteCall}.signature[0].${callbackProp}`;
87
+ const callbackEquivs = scopeNode.equivalencies[callbackPath];
88
+ if (callbackEquivs) {
89
+ for (const callbackEquiv of callbackEquivs) {
90
+ const callbackMatch = callbackEquiv.schemaPath.match(/^(cyScope[0-9A-Fa-f]+)\(\)\.functionCallReturnValue$/);
91
+ if (!callbackMatch)
92
+ continue;
93
+ const callbackScopeName = callbackMatch[1];
94
+ const callbackScopeNode = scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
95
+ if (!callbackScopeNode)
96
+ continue;
97
+ // Determine which parameter index receives the option
98
+ // getOptionLabel: (option) => ... → param 0
99
+ // renderOption: (props, option, state) => ... → param 1
100
+ const paramIndex = callbackProp === 'renderOption' ? 1 : 0;
101
+ const callbackParamPath = `signature[${paramIndex}]`;
102
+ const optionsArrayElementPath = `${autocompleteCall}.signature[0].options[]`;
103
+ scopeDataStructure.addEquivalency(callbackParamPath, optionsArrayElementPath, scopeNode.name, callbackScopeNode, `MUI Autocomplete ${callbackProp} option equivalency`);
104
+ // Note: Property accesses are propagated in finalize() after all scopes are established
105
+ }
106
+ }
107
+ }
108
+ }
109
+ }
110
+ /**
111
+ * Propagate property accesses from Autocomplete callback scope.
112
+ * When we find usages like `option.email`, create equivalencies to `options[].email`
113
+ * and trace back to the original data source (e.g., `users[].email`).
114
+ */
115
+ propagateAutocompletePropertyAccesses(callbackScope, autocompleteCall, optionParamIndex, parentScopeName, scopeDataStructure) {
116
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
117
+ if (!parentScope)
118
+ return;
119
+ // Find what options is equivalent to (e.g., "users")
120
+ const optionsPath = `${autocompleteCall}.signature[0].options`;
121
+ const optionsEquivs = parentScope.equivalencies?.[optionsPath];
122
+ const dataSourcePath = optionsEquivs?.[0]?.schemaPath;
123
+ // Check for property accesses on the option parameter in the schema
124
+ // The schema contains entries like "signature[1].email" for property accesses
125
+ for (const schemaPath of Object.keys(callbackScope.schema || {})) {
126
+ // Match patterns like signature[0].name, signature[1].email (depending on param index)
127
+ const optionPropertyMatch = schemaPath.match(new RegExp(`^signature\\[${optionParamIndex}\\]\\.(\\w+)$`));
128
+ if (optionPropertyMatch) {
129
+ const propertyName = optionPropertyMatch[1];
130
+ // Create equivalency: schemaPath → options[].propertyName
131
+ const optionsPropertyPath = `${autocompleteCall}.signature[0].options[].${propertyName}`;
132
+ scopeDataStructure.addEquivalency(schemaPath, optionsPropertyPath, parentScopeName, callbackScope, 'MUI Autocomplete option property equivalency');
133
+ // Also create equivalency to the data source (e.g., users[].email)
134
+ if (dataSourcePath) {
135
+ const dataPropertyPath = `${dataSourcePath}[].${propertyName}`;
136
+ // Add to parent scope's schema
137
+ if (!parentScope.schema[dataPropertyPath]) {
138
+ parentScope.schema[dataPropertyPath] = 'unknown';
139
+ }
140
+ // Create bidirectional equivalencies to ensure propagation
141
+ scopeDataStructure.addEquivalency(schemaPath, dataPropertyPath, parentScopeName, callbackScope, 'MUI Autocomplete option property equivalency');
142
+ scopeDataStructure.addEquivalency(dataPropertyPath, schemaPath, parentScopeName, parentScope, 'MUI Autocomplete option property equivalency');
143
+ }
144
+ }
145
+ }
146
+ }
147
+ /**
148
+ * Find renderCell callbacks for a columns variable, following equivalency chains.
149
+ * For example: tableColumns → allColumns → allColumns[].renderCell → cyScope
150
+ *
151
+ * Also handles useMemo patterns where:
152
+ * - tableColumns → useMemo(cyScope(), [allColumns]).functionCallReturnValue
153
+ * - And allColumns[].renderCell → cyScope()
154
+ */
155
+ findRenderCellCallbacks(columnsVar, scopeNode, visited, scopeDataStructure) {
156
+ if (visited.has(columnsVar))
157
+ return [];
158
+ visited.add(columnsVar);
159
+ const callbackScopes = [];
160
+ // Try direct path: columnsVar[].renderCell - check both current scope and parent scopes
161
+ // Also check for indexed paths like columnsVar[3].renderCell (with specific indices)
162
+ const renderCellPath = `${columnsVar}[].renderCell`;
163
+ let renderCellEquivs = scopeNode.equivalencies[renderCellPath];
164
+ // If not found in current scope, check parent scopes (via scopeNode.tree)
165
+ if (!renderCellEquivs && scopeDataStructure && scopeNode.tree) {
166
+ for (const parentScopeName of scopeNode.tree) {
167
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
168
+ if (parentScope?.equivalencies?.[renderCellPath]) {
169
+ renderCellEquivs = parentScope.equivalencies[renderCellPath];
170
+ break;
171
+ }
172
+ }
173
+ }
174
+ // Also look for indexed paths like tableColumns[3].renderCell, tableColumns[5].renderCell, etc.
175
+ // This is needed because column definitions often have specific indices
176
+ const indexedRenderCellPattern = new RegExp(`^${columnsVar.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}\\[\\d+\\]\\.renderCell$`);
177
+ const allScopesToCheck = [scopeNode];
178
+ if (scopeDataStructure && scopeNode.tree) {
179
+ for (const parentScopeName of scopeNode.tree) {
180
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
181
+ if (parentScope)
182
+ allScopesToCheck.push(parentScope);
183
+ }
184
+ }
185
+ for (const scope of allScopesToCheck) {
186
+ for (const [path, equivs] of Object.entries(scope.equivalencies || {})) {
187
+ if (indexedRenderCellPattern.test(path)) {
188
+ for (const equiv of equivs) {
189
+ const callbackMatch = equiv.schemaPath.match(/^(cyScope\d+)\(\)\.functionCallReturnValue$/);
190
+ if (callbackMatch && !callbackScopes.includes(callbackMatch[1])) {
191
+ callbackScopes.push(callbackMatch[1]);
192
+ }
193
+ }
194
+ }
195
+ }
196
+ }
197
+ if (renderCellEquivs) {
198
+ for (const renderCellEquiv of renderCellEquivs) {
199
+ // Check if it points to a callback (cyScope().functionCallReturnValue)
200
+ const callbackMatch = renderCellEquiv.schemaPath.match(/^(cyScope\d+)\(\)\.functionCallReturnValue$/);
201
+ if (callbackMatch && !callbackScopes.includes(callbackMatch[1])) {
202
+ callbackScopes.push(callbackMatch[1]);
203
+ }
204
+ }
205
+ }
206
+ // If no direct callbacks found, follow equivalency chains
207
+ if (callbackScopes.length === 0) {
208
+ // Look for what columnsVar is equivalent to - check current scope and parent scopes
209
+ let varEquivs = scopeNode.equivalencies[columnsVar];
210
+ let equivScopeNode = scopeNode;
211
+ // If not found or only self-reference, check parent scopes (via scopeNode.tree)
212
+ if ((!varEquivs ||
213
+ (varEquivs.length === 1 && varEquivs[0].schemaPath === columnsVar)) &&
214
+ scopeDataStructure &&
215
+ scopeNode.tree) {
216
+ for (const parentScopeName of scopeNode.tree) {
217
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
218
+ if (parentScope?.equivalencies?.[columnsVar]) {
219
+ const parentEquivs = parentScope.equivalencies[columnsVar];
220
+ // Check if it has non-self-reference equivalencies
221
+ if (parentEquivs.some((e) => e.schemaPath !== columnsVar) ||
222
+ parentEquivs.some((e) => e.schemaPath.includes('useMemo'))) {
223
+ varEquivs = parentEquivs;
224
+ equivScopeNode = parentScope;
225
+ break;
226
+ }
227
+ }
228
+ }
229
+ }
230
+ if (varEquivs) {
231
+ for (const varEquiv of varEquivs) {
232
+ const schemaPath = varEquiv.schemaPath;
233
+ // Handle useMemo pattern: useMemo(cyScope(), [allColumns]).functionCallReturnValue
234
+ // The second argument [allColumns] tells us what's being passed to useMemo
235
+ const useMemoMatch = schemaPath.match(/^useMemo\(cyScope\d+\(\), \[([^\]]+)\]\)\.functionCallReturnValue$/);
236
+ if (useMemoMatch) {
237
+ // The array in the dependency list often contains the actual columns variable
238
+ const depsList = useMemoMatch[1];
239
+ // Parse the deps - could be comma-separated
240
+ const deps = depsList.split(',').map((d) => d.trim());
241
+ for (const dep of deps) {
242
+ const nestedCallbacks = this.findRenderCellCallbacks(dep, equivScopeNode, visited, scopeDataStructure);
243
+ callbackScopes.push(...nestedCallbacks);
244
+ }
245
+ continue;
246
+ }
247
+ // Skip other function calls and internal paths
248
+ if (schemaPath.includes('()') || schemaPath.includes('[')) {
249
+ continue;
250
+ }
251
+ // Skip self-references
252
+ if (schemaPath === columnsVar) {
253
+ continue;
254
+ }
255
+ // Recursively search in the equivalent variable
256
+ const nestedCallbacks = this.findRenderCellCallbacks(schemaPath, equivScopeNode, visited, scopeDataStructure);
257
+ callbackScopes.push(...nestedCallbacks);
258
+ }
259
+ }
260
+ }
261
+ return callbackScopes;
262
+ }
263
+ /**
264
+ * Propagate row property accesses from callback scope and its children.
265
+ * When we find usages like `params.row.id`, create equivalencies to `rows[].id`.
266
+ */
267
+ propagateRowPropertyAccesses(callbackScope, dataGridCall, parentScopeName, scopeDataStructure) {
268
+ // Check all scopes (callback and its children) for params.row.* accesses
269
+ const scopesToCheck = [callbackScope];
270
+ // Find child scopes by looking for scopes whose tree includes the callback scope
271
+ const callbackScopeName = callbackScope.name;
272
+ for (const [scopeName, scope] of Object.entries(scopeDataStructure.scopeNodes)) {
273
+ if (scope.tree &&
274
+ scope.tree.includes(callbackScopeName) &&
275
+ scopeName !== callbackScopeName) {
276
+ scopesToCheck.push(scope);
277
+ }
278
+ }
279
+ for (const scope of scopesToCheck) {
280
+ // Find equivalencies that reference params.row.* or signature[0].row.*
281
+ for (const [path, equivs] of Object.entries(scope.equivalencies)) {
282
+ for (const equiv of equivs) {
283
+ const schemaPath = equiv.schemaPath;
284
+ // Match patterns like params.row.id, params.row.flagged, signature[0].row.status
285
+ const rowPropertyMatch = schemaPath.match(/^(?:params|signature\[0\])\.row\.(\w+)$/);
286
+ if (rowPropertyMatch) {
287
+ const propertyName = rowPropertyMatch[1];
288
+ // Create equivalency: the path accessing params.row.X → rows[].X
289
+ // e.g., updateStatus().signature[0].id → DataGrid().signature[0].rows[].id
290
+ const rowsPropertyPath = `${dataGridCall}.signature[0].rows[].${propertyName}`;
291
+ scopeDataStructure.addEquivalency(path, rowsPropertyPath, parentScopeName, scope, 'MUI DataGrid renderCell params.row equivalency');
292
+ }
293
+ }
294
+ }
295
+ }
296
+ }
297
+ /**
298
+ * Process from child scope perspective: look for params.row.* accesses
299
+ * and trace back to find DataGrid rows equivalency in parent scopes.
300
+ */
301
+ propagateFromChildScope(scopeNode, scopeDataStructure) {
302
+ // Look for equivalencies in this scope that reference params.row.*
303
+ for (const [path, equivs] of Object.entries(scopeNode.equivalencies)) {
304
+ for (const equiv of equivs) {
305
+ const schemaPath = equiv.schemaPath;
306
+ // Match patterns like params.row.id, params.row.status
307
+ const rowPropertyMatch = schemaPath.match(/^params\.row\.(\w+)$/);
308
+ if (rowPropertyMatch) {
309
+ const propertyName = rowPropertyMatch[1];
310
+ // Look in parent scopes for DataGrid rows equivalency
311
+ // The pattern we're looking for is: signature[0].row → DataGrid().signature[0].rows[]
312
+ const dataGridCall = this.findDataGridInParentScopes(scopeNode, scopeDataStructure);
313
+ if (dataGridCall) {
314
+ // Find the parent scope that has the DataGrid
315
+ const parentScopeName = this.findDataGridScopeName(scopeNode, scopeDataStructure);
316
+ const parentScope = parentScopeName
317
+ ? scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName)
318
+ : undefined;
319
+ // Find what DataGrid().signature[0].rows is equivalent to (e.g., "data.quotes")
320
+ const rowsPath = `${dataGridCall}.signature[0].rows`;
321
+ const rowsEquivs = parentScope?.equivalencies?.[rowsPath];
322
+ const dataSourcePath = rowsEquivs?.[0]?.schemaPath;
323
+ if (dataSourcePath && parentScope) {
324
+ // Create equivalency: path → dataSource[].propertyName (e.g., data.quotes[].id)
325
+ const dataPropertyPath = `${dataSourcePath}[].${propertyName}`;
326
+ // Add equivalency in child scope
327
+ scopeDataStructure.addEquivalency(path, dataPropertyPath, parentScopeName || scopeNode.name, scopeNode, 'MUI DataGrid renderCell params.row equivalency');
328
+ // Also add the property access to the parent scope's schema
329
+ // This ensures that data.quotes[].id shows up as an accessed property
330
+ if (!parentScope.schema[dataPropertyPath]) {
331
+ parentScope.schema[dataPropertyPath] = 'unknown';
332
+ }
333
+ // And create an equivalency FROM the data path so it propagates to returnValue
334
+ scopeDataStructure.addEquivalency(dataPropertyPath, path, parentScopeName, parentScope, 'MUI DataGrid renderCell params.row equivalency');
335
+ }
336
+ }
337
+ }
338
+ }
339
+ }
340
+ }
341
+ /**
342
+ * Find the DataGrid call in parent scopes by looking for signature[0].row → DataGrid().signature[0].rows[]
343
+ */
344
+ findDataGridInParentScopes(scopeNode, scopeDataStructure) {
345
+ // Check the scope tree (parent scopes)
346
+ if (!scopeNode.tree)
347
+ return undefined;
348
+ for (const parentScopeName of scopeNode.tree) {
349
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
350
+ if (!parentScope?.equivalencies)
351
+ continue;
352
+ // Look for signature[0].row → DataGrid().signature[0].rows[]
353
+ const rowEquivs = parentScope.equivalencies['signature[0].row'];
354
+ if (rowEquivs) {
355
+ for (const equiv of rowEquivs) {
356
+ const match = equiv.schemaPath.match(/^(DataGrid(?:Pro|Premium)?)\(\)\.signature\[0\]\.rows\[\]$/);
357
+ if (match) {
358
+ return `${match[1]}()`;
359
+ }
360
+ }
361
+ }
362
+ }
363
+ return undefined;
364
+ }
365
+ /**
366
+ * Find the scope name that contains the DataGrid call
367
+ */
368
+ findDataGridScopeName(scopeNode, scopeDataStructure) {
369
+ if (!scopeNode.tree)
370
+ return undefined;
371
+ for (const parentScopeName of scopeNode.tree) {
372
+ const parentScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
373
+ if (!parentScope?.equivalencies)
374
+ continue;
375
+ // Look for DataGrid().signature[0].columns
376
+ for (const path of Object.keys(parentScope.equivalencies)) {
377
+ if (path.match(/^DataGrid(?:Pro|Premium)?\(\)\.signature\[0\]\.columns$/)) {
378
+ return parentScopeName;
379
+ }
380
+ }
381
+ }
382
+ return undefined;
383
+ }
384
+ isInterestedInSubpath(subPathParts, _scopeNode, _scopeDataStructure) {
385
+ // We're interested in MUI component paths (DataGrid variants and Autocomplete)
386
+ const hasMuiComponent = subPathParts.some((part) => part.match(/^(DataGrid(Pro|Premium)?|Autocomplete)\(/));
387
+ return hasMuiComponent;
388
+ }
389
+ addEquivalencies(_addEquivalenciesInfo) {
390
+ // We handle DataGrid in finalize() instead, since we need to scan
391
+ // for all equivalencies after they've been established
392
+ return false;
393
+ }
394
+ finalize(_scopeNode, scopeDataStructure) {
395
+ // Iterate through all scopes (finalize is only called on root)
396
+ for (const [scopeName, scopeNode] of Object.entries(scopeDataStructure.scopeNodes)) {
397
+ this.finalizeScope(scopeNode, scopeDataStructure);
398
+ }
399
+ }
400
+ finalizeScope(scopeNode, scopeDataStructure) {
401
+ // Propagate row property accesses after all scopes are established
402
+ // Find DataGrid calls in this scope and link renderCell params.row.* to rows[].*
403
+ for (const [path, equivalencies] of Object.entries(scopeNode.equivalencies)) {
404
+ // Look for DataGrid().signature[0].columns equivalency
405
+ const dataGridMatch = path.match(/^(DataGrid(?:Pro|Premium)?\(\))\.signature\[0\]\.columns$/);
406
+ if (dataGridMatch) {
407
+ const dataGridCall = dataGridMatch[1];
408
+ // Find what columns is equivalent to
409
+ for (const equiv of equivalencies) {
410
+ const columnsVar = equiv.schemaPath;
411
+ // Find renderCell callbacks
412
+ const callbackScopes = this.findRenderCellCallbacks(columnsVar, scopeNode, new Set(), scopeDataStructure);
413
+ for (const callbackScopeName of callbackScopes) {
414
+ const callbackScopeNode = scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
415
+ if (!callbackScopeNode)
416
+ continue;
417
+ // Propagate sub-property accesses from params.row.*
418
+ this.propagateRowPropertyAccesses(callbackScopeNode, dataGridCall, scopeNode.name, scopeDataStructure);
419
+ }
420
+ }
421
+ continue;
422
+ }
423
+ // Look for Autocomplete().signature[0].options equivalency
424
+ const autocompleteMatch = path.match(/^(Autocomplete\(\))\.signature\[0\]\.options$/);
425
+ if (autocompleteMatch) {
426
+ const autocompleteCall = autocompleteMatch[1];
427
+ // Find callback props and propagate property accesses
428
+ for (const callbackProp of ['getOptionLabel', 'renderOption']) {
429
+ const callbackPath = `${autocompleteCall}.signature[0].${callbackProp}`;
430
+ const callbackEquivs = scopeNode.equivalencies[callbackPath];
431
+ if (callbackEquivs) {
432
+ for (const callbackEquiv of callbackEquivs) {
433
+ const callbackMatch = callbackEquiv.schemaPath.match(/^(cyScope[0-9A-Fa-f]+)\(\)\.functionCallReturnValue$/);
434
+ if (!callbackMatch)
435
+ continue;
436
+ const callbackScopeName = callbackMatch[1];
437
+ const callbackScopeNode = scopeDataStructure.getScopeOrFunctionCallInfo(callbackScopeName);
438
+ if (!callbackScopeNode)
439
+ continue;
440
+ // Determine which parameter index receives the option
441
+ const paramIndex = callbackProp === 'renderOption' ? 1 : 0;
442
+ // Propagate property accesses from this callback
443
+ this.propagateAutocompletePropertyAccesses(callbackScopeNode, autocompleteCall, paramIndex, scopeNode.name, scopeDataStructure);
444
+ }
445
+ }
446
+ }
447
+ }
448
+ }
449
+ }
450
+ toString() {
451
+ return 'MuiManager';
452
+ }
453
+ }
454
+ //# sourceMappingURL=MuiManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MuiManager.js","sourceRoot":"","sources":["../../../../../../../../../packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,12 @@ export class ReactFrameworkManager {
4
4
  constructor() {
5
5
  this.useStateInfos = [];
6
6
  this.useCallbackEquivalents = {};
7
+ // Track variables used as ref props - they should be typed as 'null'
8
+ // Format: { scopeNodeName -> Set of variable paths }
9
+ this.refVariables = new Map();
10
+ // Track ref variable source paths for updating external function call schemas in finalize
11
+ // Format: { functionCallName -> Set of source paths (e.g., 'useAutoAnimate().functionCallReturnValue[]') }
12
+ this.refVariableSources = new Map();
7
13
  this.internalFunctions = new Set([
8
14
  'useState',
9
15
  'useEffect',
@@ -92,7 +98,26 @@ export class ReactFrameworkManager {
92
98
  }
93
99
  return propagated;
94
100
  }
95
- finalize(_scopeNode, _scopeDataStructure) { }
101
+ finalize(scopeNode, scopeDataStructure) {
102
+ // Set all tracked ref variables to 'null' type
103
+ // This ensures mock data generation uses null instead of placeholder strings
104
+ const refVarsForScope = this.refVariables.get(scopeNode.name);
105
+ if (refVarsForScope) {
106
+ for (const refVar of refVarsForScope) {
107
+ scopeNode.schema[refVar] = 'null';
108
+ }
109
+ }
110
+ // Update external function call schemas with ref source paths
111
+ // This runs AFTER schema building is complete, so the null values won't be overwritten
112
+ for (const efc of scopeDataStructure.externalFunctionCalls) {
113
+ const refSourcePaths = this.refVariableSources.get(efc.name);
114
+ if (refSourcePaths) {
115
+ for (const sourcePath of refSourcePaths) {
116
+ efc.schema[sourcePath] = 'null';
117
+ }
118
+ }
119
+ }
120
+ }
96
121
  findUseStateInfo(useStateCall) {
97
122
  return this.useStateInfos.find((useStateInfo) => useStateInfo.useStateCall === useStateCall);
98
123
  }
@@ -337,6 +362,83 @@ export class ReactFrameworkManager {
337
362
  }
338
363
  }
339
364
  for (const [equivalentPath, equivalentValues] of Object.entries(scopeNode.equivalencies)) {
365
+ // Check if the equivalency KEY (e.g., "div().signature[0].ref") ends with .ref
366
+ // If so, the VALUE (e.g., "parent") should be marked as null
367
+ const equivalentPathParts = scopeDataStructure.splitPath(equivalentPath);
368
+ const pathLength = equivalentPathParts.length;
369
+ if (pathLength >= 2) {
370
+ const secondToLast = equivalentPathParts[pathLength - 2];
371
+ const last = equivalentPathParts[pathLength - 1];
372
+ if (secondToLast === 'signature[0]' && last === 'ref') {
373
+ // This is a ref prop usage like div().signature[0].ref -> parent
374
+ for (const equivalentValue of equivalentValues) {
375
+ propagated = true;
376
+ // Track this variable as a ref - we'll set its type to 'null' in finalize()
377
+ // after the schema is built (setting directly here would be overwritten)
378
+ // IMPORTANT: The ref variable might be defined in a parent scope, not the
379
+ // current scope. We need to find where the variable is actually defined by
380
+ // walking up the scope tree.
381
+ const varName = equivalentValue.schemaPath;
382
+ let targetScope = scopeNode;
383
+ // Walk up the scope tree to find where this variable is defined
384
+ while (targetScope) {
385
+ // Check if this scope has the variable in its schema or equivalencies
386
+ const hasVariable = varName in (targetScope.schema || {}) ||
387
+ varName in (targetScope.equivalencies || {});
388
+ if (hasVariable) {
389
+ if (!this.refVariables.has(targetScope.name)) {
390
+ this.refVariables.set(targetScope.name, new Set());
391
+ }
392
+ this.refVariables.get(targetScope.name).add(varName);
393
+ // IMPORTANT: Also update the source of the ref variable in the external
394
+ // function call's schema. This ensures dataForMocks produces [null]
395
+ // instead of ["string"] for hooks like useAutoAnimate.
396
+ const varEquivalencies = targetScope.equivalencies?.[varName];
397
+ if (varEquivalencies) {
398
+ for (const varEquivalency of varEquivalencies) {
399
+ const sourcePath = varEquivalency.schemaPath;
400
+ // Check if this comes from an external function call
401
+ // (contains functionCallReturnValue which indicates it's a hook/function return)
402
+ if (sourcePath.includes('functionCallReturnValue')) {
403
+ // Store the source path for later - we'll update the external function
404
+ // call's schema in finalize() which runs AFTER schema building is complete.
405
+ // Setting it here would be overwritten by later schema building.
406
+ for (const efc of scopeDataStructure.externalFunctionCalls) {
407
+ if (sourcePath.startsWith(efc.name)) {
408
+ if (!this.refVariableSources.has(efc.name)) {
409
+ this.refVariableSources.set(efc.name, new Set());
410
+ }
411
+ // Store both the specific indexed path and the generic [] path
412
+ this.refVariableSources
413
+ .get(efc.name)
414
+ .add(sourcePath);
415
+ const genericPath = sourcePath.replace(/\[\d+\]/g, '[]');
416
+ if (genericPath !== sourcePath) {
417
+ this.refVariableSources
418
+ .get(efc.name)
419
+ .add(genericPath);
420
+ }
421
+ }
422
+ }
423
+ }
424
+ }
425
+ }
426
+ }
427
+ // Move up to parent scope
428
+ if (targetScope.tree && targetScope.tree.length > 0) {
429
+ const parentScopeName = targetScope.tree[targetScope.tree.length - 1];
430
+ targetScope = scopeDataStructure.getScopeOrFunctionCallInfo(parentScopeName);
431
+ }
432
+ else {
433
+ targetScope = null;
434
+ }
435
+ }
436
+ scopeDataStructure.removeEquivalency(equivalentPath, equivalentValue, scopeNode);
437
+ }
438
+ continue;
439
+ }
440
+ }
441
+ // Original logic for checking the value side
340
442
  for (const equivalentValue of equivalentValues) {
341
443
  const equivalentValueParts = scopeDataStructure.splitPath(equivalentValue.schemaPath);
342
444
  for (let i = 0; i < equivalentValueParts.length; i++) {