@codeyam/codeyam-cli 0.1.0-staging.596f0eb → 0.1.0-staging.76566f9

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 (354) 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 +2 -1
  4. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +2 -0
  5. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +22 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +23 -1
  7. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +401 -106
  8. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +60 -0
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +734 -45
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +715 -0
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +233 -75
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +34 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -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/generateChangesEntityScenarioData.ts +41 -0
  21. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +37 -4
  22. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +5 -0
  23. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +213 -12
  24. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +36 -25
  25. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +114 -11
  26. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  27. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  28. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
  29. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +42 -2
  30. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +38 -2
  31. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  32. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +5 -0
  33. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
  34. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +127 -43
  35. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +158 -0
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +405 -45
  37. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  38. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +260 -133
  39. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +10 -5
  40. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +77 -83
  41. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -5
  42. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +196 -86
  43. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  44. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  45. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  46. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  47. package/analyzer-template/packages/aws/package.json +1 -1
  48. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  49. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  50. package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
  51. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  52. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +20 -9
  53. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
  54. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
  56. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
  57. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  58. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +8 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +14 -7
  61. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  66. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  69. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  70. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  72. package/analyzer-template/packages/github/dist/types/index.d.ts +4 -3
  73. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  74. package/analyzer-template/packages/github/dist/types/index.js +1 -0
  75. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  76. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +31 -1
  77. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  78. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +51 -1
  79. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  80. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +21 -1
  81. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  82. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  83. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  84. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  85. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  86. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  87. package/analyzer-template/packages/types/index.ts +8 -0
  88. package/analyzer-template/packages/types/src/types/Analysis.ts +32 -1
  89. package/analyzer-template/packages/types/src/types/Scenario.ts +75 -6
  90. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +49 -0
  91. package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
  92. package/analyzer-template/packages/utils/dist/types/index.d.ts +4 -3
  93. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  94. package/analyzer-template/packages/utils/dist/types/index.js +1 -0
  95. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  96. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +31 -1
  97. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  98. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +51 -1
  99. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  100. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +21 -1
  101. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  102. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  103. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  104. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  105. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  106. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  107. package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
  108. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  109. package/analyzer-template/playwright/takeScreenshot.ts +9 -7
  110. package/analyzer-template/project/constructMockCode.ts +286 -84
  111. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +77 -37
  112. package/analyzer-template/project/reconcileMockDataKeys.ts +5 -2
  113. package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
  114. package/analyzer-template/project/serverOnlyModules.ts +71 -23
  115. package/analyzer-template/project/start.ts +10 -0
  116. package/analyzer-template/project/startScenarioCapture.ts +73 -41
  117. package/analyzer-template/project/writeMockDataTsx.ts +115 -54
  118. package/analyzer-template/project/writeScenarioComponents.ts +571 -162
  119. package/analyzer-template/project/writeSimpleRoot.ts +11 -13
  120. package/background/src/lib/virtualized/project/constructMockCode.js +265 -75
  121. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  122. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +67 -32
  123. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  124. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +5 -2
  125. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  126. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
  127. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  128. package/background/src/lib/virtualized/project/serverOnlyModules.js +62 -25
  129. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  130. package/background/src/lib/virtualized/project/start.js +6 -0
  131. package/background/src/lib/virtualized/project/start.js.map +1 -1
  132. package/background/src/lib/virtualized/project/startScenarioCapture.js +54 -31
  133. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  134. package/background/src/lib/virtualized/project/writeMockDataTsx.js +106 -46
  135. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  136. package/background/src/lib/virtualized/project/writeScenarioComponents.js +399 -106
  137. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  138. package/background/src/lib/virtualized/project/writeSimpleRoot.js +11 -11
  139. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  140. package/codeyam-cli/src/cli.js +2 -0
  141. package/codeyam-cli/src/cli.js.map +1 -1
  142. package/codeyam-cli/src/commands/debug.js +14 -2
  143. package/codeyam-cli/src/commands/debug.js.map +1 -1
  144. package/codeyam-cli/src/commands/recapture.js +215 -0
  145. package/codeyam-cli/src/commands/recapture.js.map +1 -0
  146. package/codeyam-cli/src/commands/report.js +26 -23
  147. package/codeyam-cli/src/commands/report.js.map +1 -1
  148. package/codeyam-cli/src/utils/backgroundServer.js +2 -2
  149. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  150. package/codeyam-cli/src/utils/generateReport.js +252 -106
  151. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  152. package/codeyam-cli/src/utils/install-skills.js +2 -2
  153. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  154. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
  155. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  156. package/codeyam-cli/src/utils/queue/job.js +140 -16
  157. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  158. package/codeyam-cli/src/utils/queue/manager.js +19 -7
  159. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  160. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  161. package/codeyam-cli/src/webserver/app/lib/database.js +47 -0
  162. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  163. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  164. package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
  165. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  166. package/codeyam-cli/src/webserver/bootstrap.js +9 -0
  167. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
  168. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +1 -0
  169. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-efWKDYMr.js → EntityTypeBadge-CzGX-miz.js} +1 -1
  170. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +41 -0
  171. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +25 -0
  172. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CBQPrpT0.js +3 -0
  173. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-D1CdlbrV.js +6 -0
  174. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-wDPcZNKx.js +3 -0
  175. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +11 -0
  176. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BfmDgXxG.js +1 -0
  177. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +15 -0
  178. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-COPstp9J.js → TruncatedFilePath-6J7zDUD5.js} +1 -1
  179. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +11 -0
  180. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CVP_WGQ3.js +32 -0
  181. package/codeyam-cli/src/webserver/build/client/assets/api.link-scenario-value-l0sNRNKZ.js +1 -0
  182. package/codeyam-cli/src/webserver/build/client/assets/api.update-key-attributes-l0sNRNKZ.js +1 -0
  183. package/codeyam-cli/src/webserver/build/client/assets/api.update-valid-values-l0sNRNKZ.js +1 -0
  184. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BYimnrHg.js +6 -0
  185. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +51 -0
  186. package/codeyam-cli/src/webserver/build/client/assets/circle-check-CaVsIRxt.js +6 -0
  187. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgUsG7ib.js +21 -0
  188. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +1 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +1 -0
  190. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-Dt-SjPsw.js +23 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +1 -0
  192. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +1 -0
  193. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-CfLCUi9S.js +5 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DKJyZfAY.js +29 -0
  195. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DAtOlaWE.js +1 -0
  196. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/git-D62Lxxmv.js +15 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/globals-C9s7Lhdl.css +1 -0
  199. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/index-BosqDOlH.js +3 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/index-CzNNiTkw.js +9 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +1 -0
  203. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-CNp9QFCX.js +6 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/manifest-0d27da29.js +1 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/root-B_wIKCIf.js +56 -0
  207. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  208. package/codeyam-cli/src/webserver/build/client/assets/search-DDGjYAMJ.js +6 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +1 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +1 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CBc5dE1s.js +6 -0
  212. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +1 -0
  213. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +1 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-3pmpUQB-.js → useLastLogLine-BqPPNjAl.js} +1 -1
  215. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +1 -0
  216. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DEyawJ8r.js → useToast-DWHcCcl1.js} +1 -1
  217. package/codeyam-cli/src/webserver/build/server/assets/index-CU58-Ttc.js +1 -0
  218. package/codeyam-cli/src/webserver/build/server/assets/server-build-D35o2uae.js +175 -0
  219. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  220. package/codeyam-cli/src/webserver/build-info.json +5 -5
  221. package/codeyam-cli/src/webserver/devServer.js +1 -3
  222. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  223. package/codeyam-cli/templates/codeyam-setup-skill.md +138 -3
  224. package/codeyam-cli/templates/debug-codeyam.md +625 -0
  225. package/package.json +14 -14
  226. package/packages/ai/src/lib/analyzeScope.js +2 -0
  227. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  228. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +16 -0
  229. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  230. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +16 -0
  231. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  232. package/packages/ai/src/lib/astScopes/processExpression.js +305 -88
  233. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  234. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +582 -41
  235. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  236. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
  237. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  238. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +454 -0
  239. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  240. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +173 -55
  241. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  242. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
  243. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  244. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +30 -1
  245. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  246. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
  247. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  248. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  249. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  250. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +28 -2
  251. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  252. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +179 -17
  253. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  254. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +6 -0
  255. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  256. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +41 -0
  257. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  258. package/packages/ai/src/lib/generateChangesEntityScenarios.js +37 -4
  259. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  260. package/packages/ai/src/lib/generateEntityDataStructure.js +4 -0
  261. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  262. package/packages/ai/src/lib/generateEntityKeyAttributes.js +176 -9
  263. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  264. package/packages/ai/src/lib/generateEntityScenarioData.js +29 -25
  265. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  266. package/packages/ai/src/lib/generateEntityScenarios.js +105 -9
  267. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  268. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  269. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  270. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  271. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  272. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
  273. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  274. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +38 -2
  275. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  276. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +38 -2
  277. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  278. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  279. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  280. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  281. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
  282. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  283. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +100 -23
  284. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  285. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +125 -0
  286. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  287. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +298 -45
  288. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  289. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  290. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  291. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +201 -80
  292. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  293. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +10 -5
  294. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  295. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +55 -69
  296. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  297. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -5
  298. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  299. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +171 -81
  300. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  301. package/packages/database/src/lib/kysely/db.js +2 -2
  302. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  303. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  304. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  305. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  306. package/packages/generate/src/lib/deepMerge.js +27 -1
  307. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  308. package/packages/types/index.js +1 -0
  309. package/packages/types/index.js.map +1 -1
  310. package/packages/types/src/types/Scenario.js +21 -1
  311. package/packages/types/src/types/Scenario.js.map +1 -1
  312. package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
  313. package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  314. package/scripts/finalize-analyzer.cjs +3 -1
  315. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  316. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  317. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-CVbSvOjo.js +0 -1
  318. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-DcwcHyl5.js +0 -1
  319. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-WgwC1GfJ.js +0 -26
  320. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-IEKom9O2.js +0 -3
  321. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-BYnfxbUG.js +0 -3
  322. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-_lBPJCzG.js +0 -1
  323. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-lHVhvsu_.js +0 -1
  324. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-d_TBk4GQ.js +0 -5
  325. package/codeyam-cli/src/webserver/build/client/assets/_index-kGT7VUqj.js +0 -1
  326. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DDGmhu7P.js +0 -7
  327. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-n_HPRfM_.js +0 -1
  328. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CbVoyx1U.js +0 -26
  329. package/codeyam-cli/src/webserver/build/client/assets/circle-check-D1VOYveA.js +0 -1
  330. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-YR8jjAlu.js +0 -1
  331. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-B8vP3V_s.js +0 -1
  332. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CN6aLCT1.js +0 -16
  333. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DA5Jeu2P.js +0 -1
  334. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BTeitalf.js +0 -5
  335. package/codeyam-cli/src/webserver/build/client/assets/entry.client-du6UEYD-.js +0 -13
  336. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-BpjkhMoi.js +0 -1
  337. package/codeyam-cli/src/webserver/build/client/assets/files-BQGvk4lJ.js +0 -1
  338. package/codeyam-cli/src/webserver/build/client/assets/git-DVdYRT-I.js +0 -12
  339. package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
  340. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  341. package/codeyam-cli/src/webserver/build/client/assets/index-DCG-vks0.js +0 -1
  342. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-GazdNeLl.js +0 -1
  343. package/codeyam-cli/src/webserver/build/client/assets/manifest-0b694d28.js +0 -1
  344. package/codeyam-cli/src/webserver/build/client/assets/root-D3tQP7hx.js +0 -16
  345. package/codeyam-cli/src/webserver/build/client/assets/search-CIY6XmtE.js +0 -1
  346. package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
  347. package/codeyam-cli/src/webserver/build/client/assets/settings-CoMDgElu.js +0 -1
  348. package/codeyam-cli/src/webserver/build/client/assets/simulations-agkniXp2.js +0 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-B2VUcygF.js +0 -1
  350. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-EvdK-zXP.js +0 -1
  351. package/codeyam-cli/src/webserver/build/server/assets/index-DGVHQEXD.js +0 -1
  352. package/codeyam-cli/src/webserver/build/server/assets/server-build-CghkTkIL.js +0 -166
  353. package/codeyam-cli/templates/debug-command.md +0 -303
  354. /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
@@ -9,10 +9,12 @@ import {
9
9
  fillInDirectSchemaGapsAndUnknowns,
10
10
  deduplicateFunctionSchemas,
11
11
  clearAttributesFromMapping,
12
+ mergeJsonTypeDefinitions,
12
13
  } from '~codeyam/ai';
13
14
  import mergeInDependentDataStructure from './mergeInDependentDataStructure';
14
15
  import { awsLog } from '~codeyam/utils';
15
16
  import gatherDataForMocks from './gatherDataForMocks';
17
+ import enrichArrayTypesFromChildSignatures from './enrichArrayTypesFromChildSignatures';
16
18
 
17
19
  export interface GenerateDataStructureArgs {
18
20
  entity: Entity;
@@ -109,55 +111,6 @@ export default function generateDataStructure({
109
111
  const relevantDependencyAnalysis =
110
112
  dependentAnalyses[lookupPath]?.[importedExport.name];
111
113
 
112
- // DEBUG: Track buildBranchFileMap and fileComparisons
113
- if (
114
- importedExport.name === 'buildBranchFileMap' ||
115
- entity.name === 'GitView'
116
- ) {
117
- console.log('🔍 DEBUG generateDataStructure:', {
118
- entityName: entity.name,
119
- importedExportName: importedExport.name,
120
- lookupPath,
121
- hasAnalysis: !!relevantDependencyAnalysis,
122
- signatureSchema:
123
- relevantDependencyAnalysis?.metadata?.mergedDataStructure
124
- ?.signatureSchema,
125
- dependencySchemas: relevantDependencyAnalysis?.metadata
126
- ?.mergedDataStructure?.dependencySchemas
127
- ? Object.keys(
128
- relevantDependencyAnalysis.metadata.mergedDataStructure
129
- .dependencySchemas,
130
- )
131
- : null,
132
- });
133
- if (
134
- relevantDependencyAnalysis?.metadata?.mergedDataStructure
135
- ?.signatureSchema
136
- ) {
137
- const sig =
138
- relevantDependencyAnalysis.metadata.mergedDataStructure
139
- .signatureSchema;
140
- console.log(
141
- '🔍 DEBUG buildBranchFileMap signature keys:',
142
- Object.keys(sig),
143
- );
144
- // Look for fileComparisons in the signature
145
- for (const key of Object.keys(sig)) {
146
- if (
147
- key.includes('fileComparisons') ||
148
- key.includes('entityDiff')
149
- ) {
150
- console.log(
151
- '🔍 DEBUG Found relevant key:',
152
- key,
153
- '=',
154
- JSON.stringify(sig[key], null, 2),
155
- );
156
- }
157
- }
158
- }
159
- }
160
-
161
114
  if (!relevantDependencyAnalysis) {
162
115
  // console.info(
163
116
  // 'CodeYam Warn: No relevant dependency analysis found for importedExport',
@@ -207,6 +160,227 @@ export default function generateDataStructure({
207
160
  return acc;
208
161
  }, {} as ReadonlyAnalysisMap);
209
162
 
163
+ // For non-mocked child components (like visual components), include their mocked
164
+ // dependencies in allImportedExports. This ensures that when a parent component
165
+ // renders a child that uses the same hook with different destructure patterns,
166
+ // both patterns get separate mock data keys.
167
+ //
168
+ // Example: DashboardPage uses QuotesTableCompact (child, not mocked).
169
+ // Both use useFlags hook but destructure different properties:
170
+ // - DashboardPage: const { enableNewAdminDashboard } = useFlags()
171
+ // - QuotesTableCompact: const { flagShowReferenceIdOnQuoteTable } = useFlags()
172
+ // We need mock data keys for BOTH destructure patterns.
173
+ //
174
+ // We need to traverse the ENTIRE dependency tree recursively because nested
175
+ // child components (e.g., QuotesTableCompact inside AdminDashboard inside
176
+ // DashboardPage) also have mocked dependencies that need mock data keys.
177
+
178
+ // Collect child dependency schemas to merge after mergeInDependentDataStructure
179
+ // This ensures that when we look up schemas for child imports in gatherDataForMocks,
180
+ // the child's schemas are available in mergedDataStructure.dependencySchemas.
181
+ type DependencySchemas = NonNullable<
182
+ Analysis['metadata']['mergedDataStructure']
183
+ >['dependencySchemas'];
184
+ const childDependencySchemas: DependencySchemas = {};
185
+
186
+ // Helper function to add mocked imports from an entity to allImportedExports
187
+ const addMockedImportsFromEntity = (childEntity: Entity | undefined) => {
188
+ if (!childEntity?.metadata) return;
189
+
190
+ // Add child's mocked nodeModuleImports
191
+ const childNodeModuleImports = childEntity.metadata.nodeModuleImports;
192
+ if (childNodeModuleImports) {
193
+ for (const moduleName of Object.keys(childNodeModuleImports)) {
194
+ const moduleImports = childNodeModuleImports[moduleName] || [];
195
+ for (const imported of moduleImports) {
196
+ if (!imported.isMocked) continue;
197
+
198
+ // Check if this import already exists in allImportedExports
199
+ const existingImport = allImportedExports.find(
200
+ (existing) =>
201
+ existing.filePath === moduleName &&
202
+ existing.name === imported.name,
203
+ );
204
+
205
+ if (existingImport) {
206
+ // Merge callVariableNames if the same dependency exists with different patterns
207
+ if (imported.callVariableNames && imported.calls) {
208
+ existingImport.calls = existingImport.calls || [];
209
+ existingImport.callVariableNames =
210
+ existingImport.callVariableNames || [];
211
+
212
+ // Add each call/variable pair that doesn't already exist
213
+ for (let i = 0; i < imported.calls.length; i++) {
214
+ const call = imported.calls[i];
215
+ const varName = imported.callVariableNames[i];
216
+ if (!varName) continue;
217
+
218
+ // Check if this specific callVariableName already exists
219
+ if (!existingImport.callVariableNames.includes(varName)) {
220
+ existingImport.calls.push(call);
221
+ existingImport.callVariableNames.push(varName);
222
+ }
223
+ }
224
+ }
225
+ } else {
226
+ // Add new import
227
+ allImportedExports.push({
228
+ filePath: moduleName,
229
+ name: imported.name,
230
+ isDefault: imported.isDefault,
231
+ isMocked: imported.isMocked,
232
+ calls: imported.calls ? [...imported.calls] : undefined,
233
+ callVariableNames: imported.callVariableNames
234
+ ? [...imported.callVariableNames]
235
+ : undefined,
236
+ });
237
+ }
238
+ }
239
+ }
240
+ }
241
+
242
+ // Add child's mocked importedExports
243
+ const childImportedExports = childEntity.metadata.importedExports;
244
+ if (childImportedExports) {
245
+ for (const imported of childImportedExports) {
246
+ if (!imported.isMocked) continue;
247
+
248
+ // Check if this import already exists in allImportedExports
249
+ const existingImport = allImportedExports.find(
250
+ (existing) =>
251
+ existing.filePath === imported.filePath &&
252
+ existing.name === imported.name,
253
+ );
254
+
255
+ if (existingImport) {
256
+ // Merge callVariableNames if the same dependency exists with different patterns
257
+ if (imported.callVariableNames && imported.calls) {
258
+ existingImport.calls = existingImport.calls || [];
259
+ existingImport.callVariableNames =
260
+ existingImport.callVariableNames || [];
261
+
262
+ // Add each call/variable pair that doesn't already exist
263
+ for (let i = 0; i < imported.calls.length; i++) {
264
+ const call = imported.calls[i];
265
+ const varName = imported.callVariableNames[i];
266
+ if (!varName) continue;
267
+
268
+ // Check if this specific callVariableName already exists
269
+ if (!existingImport.callVariableNames.includes(varName)) {
270
+ existingImport.calls.push(call);
271
+ existingImport.callVariableNames.push(varName);
272
+ }
273
+ }
274
+ }
275
+ } else {
276
+ // Add new import
277
+ allImportedExports.push({
278
+ filePath: imported.filePath,
279
+ name: imported.name,
280
+ isDefault: imported.isDefault,
281
+ isMocked: imported.isMocked,
282
+ calls: imported.calls ? [...imported.calls] : undefined,
283
+ callVariableNames: imported.callVariableNames
284
+ ? [...imported.callVariableNames]
285
+ : undefined,
286
+ });
287
+ }
288
+ }
289
+ }
290
+ };
291
+
292
+ // Recursive function to traverse the dependency tree
293
+ const processedAnalyses = new Set<string>();
294
+ const traverseDependencyTree = (analyses: ReadonlyAnalysisMap) => {
295
+ for (const filePath in analyses) {
296
+ for (const name in analyses[filePath]) {
297
+ const analysisKey = `${filePath}:${name}`;
298
+ if (processedAnalyses.has(analysisKey)) continue;
299
+ processedAnalyses.add(analysisKey);
300
+
301
+ const childAnalysis = analyses[filePath][name];
302
+ const childEntity = childAnalysis?.entity;
303
+
304
+ // Add mocked imports from this child entity
305
+ addMockedImportsFromEntity(childEntity as Entity | undefined);
306
+
307
+ // Recursively process this child's non-mocked children
308
+ // via their mergedDataStructure's nested dependentAnalyses
309
+ const childMergedDataStructure =
310
+ childAnalysis?.metadata?.mergedDataStructure;
311
+
312
+ // Collect the child's dependency schemas for merging later.
313
+ // This ensures schemas for child imports are available in gatherDataForMocks.
314
+ if (childMergedDataStructure?.dependencySchemas) {
315
+ for (const schemaFilePath in childMergedDataStructure.dependencySchemas) {
316
+ for (const schemaName in childMergedDataStructure
317
+ .dependencySchemas[schemaFilePath]) {
318
+ childDependencySchemas[schemaFilePath] ||= {};
319
+ const existingSchema =
320
+ childDependencySchemas[schemaFilePath][schemaName];
321
+ const newSchema =
322
+ childMergedDataStructure.dependencySchemas[schemaFilePath][
323
+ schemaName
324
+ ];
325
+
326
+ if (existingSchema) {
327
+ // Merge schemas if the same dependency exists from multiple children
328
+ childDependencySchemas[schemaFilePath][schemaName] = {
329
+ signatureSchema: {
330
+ ...existingSchema.signatureSchema,
331
+ ...newSchema.signatureSchema,
332
+ },
333
+ returnValueSchema: mergeJsonTypeDefinitions(
334
+ existingSchema.returnValueSchema as Record<
335
+ string,
336
+ unknown
337
+ >,
338
+ newSchema.returnValueSchema as Record<string, unknown>,
339
+ ) as Record<string, string>,
340
+ };
341
+ } else {
342
+ childDependencySchemas[schemaFilePath][schemaName] = {
343
+ signatureSchema: { ...newSchema.signatureSchema },
344
+ returnValueSchema: { ...newSchema.returnValueSchema },
345
+ };
346
+ }
347
+ }
348
+ }
349
+ }
350
+
351
+ if (childMergedDataStructure?.dependencySchemas) {
352
+ // We need to find non-mocked child components in the dependency tree
353
+ // These would be in the child's importedExports that are NOT mocked
354
+ const childImportedExports =
355
+ childEntity?.metadata?.importedExports ?? [];
356
+ const nonMockedChildDeps: ReadonlyAnalysisMap = {};
357
+
358
+ for (const dep of childImportedExports) {
359
+ if (dep.isMocked) continue;
360
+ if (dep.entityType !== 'visual') continue;
361
+
362
+ // Try to find this dependency in dependentAnalyses
363
+ const depFilePath = dep.resolvedFilePath ?? dep.filePath;
364
+ const depName = dep.resolvedName ?? dep.name;
365
+
366
+ if (dependentAnalyses[depFilePath]?.[depName]) {
367
+ nonMockedChildDeps[depFilePath] ||= {};
368
+ nonMockedChildDeps[depFilePath][depName] =
369
+ dependentAnalyses[depFilePath][depName];
370
+ }
371
+ }
372
+
373
+ if (Object.keys(nonMockedChildDeps).length > 0) {
374
+ traverseDependencyTree(nonMockedChildDeps);
375
+ }
376
+ }
377
+ }
378
+ }
379
+ };
380
+
381
+ // Start traversal from direct non-mocked children
382
+ traverseDependencyTree(nonMockedDependentAnalyses);
383
+
210
384
  // console.info(
211
385
  // 'CODEYAM DEBUG: start merge',
212
386
  // JSON.stringify(
@@ -239,42 +413,39 @@ export default function generateDataStructure({
239
413
  dependencySchemas: isolatedDataStructure?.dependencySchemas || {},
240
414
  });
241
415
 
242
- // DEBUG: Check merged result for GitView
243
- if (entity.name === 'GitView') {
244
- console.log(
245
- '🔍 DEBUG GitView mergedDataStructure dependency schemas:',
246
- Object.keys(mergedDataStructure.dependencySchemas || {}),
247
- );
248
- for (const filePath of Object.keys(
249
- mergedDataStructure.dependencySchemas || {},
250
- )) {
251
- for (const depName of Object.keys(
252
- mergedDataStructure.dependencySchemas[filePath] || {},
253
- )) {
254
- const depSchema =
255
- mergedDataStructure.dependencySchemas[filePath][depName];
256
- console.log(
257
- `🔍 DEBUG Merged dep ${filePath}/${depName} signature keys:`,
258
- Object.keys(depSchema.signatureSchema || {}),
259
- );
260
- // Look for fileComparisons
261
- for (const key of Object.keys(depSchema.signatureSchema || {})) {
262
- if (key.includes('fileComparisons') || key.includes('entityDiff')) {
263
- console.log(
264
- '🔍 DEBUG MERGED Found relevant key:',
265
- key,
266
- '=',
267
- JSON.stringify(depSchema.signatureSchema[key], null, 2),
268
- );
269
- }
270
- }
416
+ mergedDataStructure.environmentVariables =
417
+ isolatedDataStructure.environmentVariables || [];
418
+
419
+ // Merge collected child dependency schemas into mergedDataStructure.
420
+ // This ensures that when gatherDataForMocks looks up schemas for child imports,
421
+ // the child's schemas are available.
422
+ for (const schemaFilePath in childDependencySchemas) {
423
+ for (const schemaName in childDependencySchemas[schemaFilePath]) {
424
+ mergedDataStructure.dependencySchemas[schemaFilePath] ||= {};
425
+ const existingSchema =
426
+ mergedDataStructure.dependencySchemas[schemaFilePath][schemaName];
427
+ const childSchema = childDependencySchemas[schemaFilePath][schemaName];
428
+
429
+ if (existingSchema) {
430
+ // Merge schemas - child schemas add to parent schemas
431
+ mergedDataStructure.dependencySchemas[schemaFilePath][schemaName] = {
432
+ signatureSchema: {
433
+ ...existingSchema.signatureSchema,
434
+ ...childSchema.signatureSchema,
435
+ },
436
+ returnValueSchema: mergeJsonTypeDefinitions(
437
+ existingSchema.returnValueSchema as Record<string, unknown>,
438
+ childSchema.returnValueSchema as Record<string, unknown>,
439
+ ) as Record<string, string>,
440
+ };
441
+ } else {
442
+ // No existing schema - just add the child's schema
443
+ mergedDataStructure.dependencySchemas[schemaFilePath][schemaName] =
444
+ childSchema;
271
445
  }
272
446
  }
273
447
  }
274
448
 
275
- mergedDataStructure.environmentVariables =
276
- isolatedDataStructure.environmentVariables || [];
277
-
278
449
  // console.info(
279
450
  // 'CODEYAM DEBUG: end merge',
280
451
  // JSON.stringify(
@@ -326,63 +497,19 @@ export default function generateDataStructure({
326
497
  analysis.metadata ||= {};
327
498
  analysis.metadata.mergedDataStructure = mergedDataStructure;
328
499
 
329
- const dataForMocks = gatherDataForMocks(
500
+ // Enrich mocked dependency array types with fields from child component signatures
501
+ // This ensures that when getSurveysAction returns { data: array }, and SurveyCard
502
+ // expects survey.updatedAt, the array element type includes updatedAt
503
+ enrichArrayTypesFromChildSignatures(
330
504
  allImportedExports,
331
505
  mergedDataStructure.dependencySchemas,
332
506
  );
333
507
 
334
- // DEBUG: Check dataForMocks for GitView
335
- if (entity.name === 'GitView') {
336
- console.log(
337
- '🔍 DEBUG GitView dataForMocks keys:',
338
- Object.keys(dataForMocks),
339
- );
340
- for (const key of Object.keys(dataForMocks)) {
341
- if (
342
- key.includes('buildBranchFileMap') ||
343
- key.includes('fileComparisons') ||
344
- key.includes('entityDiff')
345
- ) {
346
- console.log(
347
- '🔍 DEBUG dataForMocks relevant key:',
348
- key,
349
- '=',
350
- JSON.stringify(dataForMocks[key], null, 2),
351
- );
352
- }
353
- }
354
- }
355
-
356
- // console.info(
357
- // 'CODEYAM DEBUG: dataForMocks',
358
- // JSON.stringify(
359
- // {
360
- // filePath: entity.filePath,
361
- // entityName: entity.name,
362
- // dataForMocks,
363
- // },
364
- // null,
365
- // 2,
366
- // ),
367
- // );
368
-
369
- // Log union types in signatureSchema before processing
370
- const unionTypeEntries = Object.entries(
371
- mergedDataStructure.signatureSchema,
372
- ).filter(
373
- ([_, value]) =>
374
- typeof value === 'string' &&
375
- value.includes("'") &&
376
- value.includes(' | '),
508
+ const dataForMocks = gatherDataForMocks(
509
+ allImportedExports,
510
+ mergedDataStructure.dependencySchemas,
511
+ { entityName: entity.name },
377
512
  );
378
- if (unionTypeEntries.length > 0) {
379
- console.log(
380
- `[UNION-TYPE] generateDataStructure for ${entity.name}: Found union types in signatureSchema:`,
381
- );
382
- unionTypeEntries.forEach(([key, value]) => {
383
- console.log(`[UNION-TYPE] "${key}": ${value}`);
384
- });
385
- }
386
513
 
387
514
  const finalizedArgumentsSchema = fillInDirectSchemaGapsAndUnknowns({
388
515
  schema: { ...mergedDataStructure.signatureSchema },
@@ -29,13 +29,10 @@ export default async function generateKeyAttributes({
29
29
  }: GenerateEntityKeyAttributesArgs): Promise<void> {
30
30
  if (!['visual', 'library'].includes(entity.entityType)) return;
31
31
 
32
- // Merge direct dataForMocks with recursively gathered data from dependencies
32
+ // Gather all mock data, consolidated under the root entity name
33
33
  const structure = {
34
34
  arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
35
- dataForMocks: {
36
- ...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
37
- ...gatherDataForMocks(analysis, dependentAnalyses),
38
- },
35
+ dataForMocks: gatherDataForMocks(analysis, dependentAnalyses, entity.name),
39
36
  };
40
37
 
41
38
  awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
@@ -98,6 +95,14 @@ export default async function generateKeyAttributes({
98
95
  ...(ka.dependencies && {
99
96
  dependencies: ka.dependencies.map((dep) => ({ ...dep })),
100
97
  }),
98
+ // Convert readonly sourceLocations array to mutable if present
99
+ ...(ka.sourceLocations && {
100
+ sourceLocations: ka.sourceLocations.map((loc) => ({ ...loc })),
101
+ }),
102
+ // Convert readonly compoundConditionalIds array to mutable if present
103
+ ...(ka.compoundConditionalIds && {
104
+ compoundConditionalIds: [...ka.compoundConditionalIds],
105
+ }),
101
106
  })),
102
107
  ].filter(
103
108
  (ka, index, self) =>
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  Analysis,
3
3
  Entity,
4
+ JsonTypeDefinition,
4
5
  ReadonlyAnalysis,
5
6
  ReadonlyAnalysisMap,
6
7
  } from '~codeyam/types';
@@ -21,17 +22,91 @@ export interface GenerateScenarioDataArgs {
21
22
  updateProgress?: (detail: string) => void;
22
23
  }
23
24
 
25
+ /**
26
+ * Consolidates dataForMocks from the current analysis and all dependent analyses.
27
+ *
28
+ * Keys are preserved as original call signatures (e.g., 'useFetcher<UserData>()',
29
+ * 'db.select(usersQuery)'). When the same call signature appears from multiple
30
+ * analyses, schemas are merged.
31
+ */
24
32
  export function gatherDataForMocks(
25
33
  analysis: ReadonlyAnalysis,
26
34
  dependentAnalyses: ReadonlyAnalysisMap,
35
+ _rootEntityName?: string, // Kept for API compatibility but no longer used for key transformation
27
36
  ): Analysis['metadata']['scenariosDataStructure']['dataForMocks'] {
28
- const dataForMocks = {};
37
+ const dataForMocks: Analysis['metadata']['scenariosDataStructure']['dataForMocks'] =
38
+ {};
29
39
  const analysesGathered = new Set<string>();
30
40
 
41
+ /**
42
+ * Helper to merge schemas (only works for objects, otherwise just returns new value)
43
+ */
44
+ const mergeSchemas = (
45
+ existing: JsonTypeDefinition[keyof JsonTypeDefinition],
46
+ incoming: JsonTypeDefinition[keyof JsonTypeDefinition],
47
+ ): JsonTypeDefinition[keyof JsonTypeDefinition] => {
48
+ // Only merge if both are objects (not arrays, not primitives)
49
+ if (
50
+ typeof existing === 'object' &&
51
+ existing !== null &&
52
+ !Array.isArray(existing) &&
53
+ typeof incoming === 'object' &&
54
+ incoming !== null &&
55
+ !Array.isArray(incoming)
56
+ ) {
57
+ return mergeJsonTypeDefinitions(
58
+ existing as JsonTypeDefinition,
59
+ incoming as JsonTypeDefinition,
60
+ );
61
+ }
62
+ // For primitives/arrays, just use the incoming value
63
+ return incoming;
64
+ };
65
+
66
+ /**
67
+ * Add mock data, preserving original call signature as key.
68
+ * Merges schemas when the same key appears from multiple sources.
69
+ */
70
+ const addMockData = (
71
+ key: string,
72
+ schema: JsonTypeDefinition[keyof JsonTypeDefinition],
73
+ ): void => {
74
+ // Skip if schema is empty object
75
+ if (
76
+ typeof schema === 'object' &&
77
+ schema !== null &&
78
+ !Array.isArray(schema) &&
79
+ Object.keys(schema).length === 0
80
+ ) {
81
+ return;
82
+ }
83
+
84
+ // Skip null/undefined
85
+ if (schema === null || schema === undefined) {
86
+ return;
87
+ }
88
+
89
+ // Preserve original key (call signature), merge if exists
90
+ if (dataForMocks[key]) {
91
+ dataForMocks[key] = mergeSchemas(dataForMocks[key], schema);
92
+ } else {
93
+ dataForMocks[key] = schema;
94
+ }
95
+ };
96
+
31
97
  // inner recursive function to gather data for mocks
32
98
  const gatherDataForMocksRecursive = (
33
99
  activeAnalysis: ReadonlyAnalysis,
34
100
  ): void => {
101
+ // First, process ALL keys from this analysis's dataForMocks
102
+ const localDataForMocks =
103
+ activeAnalysis.metadata?.scenariosDataStructure?.dataForMocks ?? {};
104
+
105
+ for (const [key, schema] of Object.entries(localDataForMocks)) {
106
+ addMockData(key, schema as JsonTypeDefinition[keyof JsonTypeDefinition]);
107
+ }
108
+
109
+ // Then, recurse into dependent analyses based on imports
35
110
  const allImportedExports = [
36
111
  ...(activeAnalysis.entity?.metadata.importedExports ?? []),
37
112
  ...Object.keys(
@@ -46,68 +121,7 @@ export function gatherDataForMocks(
46
121
  ),
47
122
  ];
48
123
 
49
- // console.info('CODEYAM DEBUG: gatherDataForMocksRecursive START', {
50
- // filePath: activeAnalysis.filePath,
51
- // analysisEntityName: activeAnalysis.entityName,
52
- // analysisId: activeAnalysis.id,
53
- // entity: !!activeAnalysis.entity,
54
- // entityName: activeAnalysis.entity?.name,
55
- // allImportedExports: allImportedExports.map((ie) => ({
56
- // filePath: ie.filePath,
57
- // name: ie.name,
58
- // })),
59
- // });
60
-
61
124
  for (const importedExport of allImportedExports) {
62
- const localDataForMocks =
63
- activeAnalysis.metadata?.scenariosDataStructure?.dataForMocks ?? {};
64
- // Find relevant keys - handle both old format (starts with name)
65
- // and new variable-qualified format ("varName <- functionName")
66
- const relevantKeys = Object.keys(localDataForMocks).filter(
67
- (key) =>
68
- key.startsWith(importedExport.name) ||
69
- key.endsWith(` <- ${importedExport.name}`),
70
- );
71
-
72
- // console.info('CODEYAM DEBUG: Processing import', {
73
- // importedExportName: importedExport.name,
74
- // importedExportFilePath: importedExport.filePath,
75
- // relevantKeys,
76
- // hasLocalDataForMocks: Object.keys(localDataForMocks).length > 0,
77
- // localDataForMocksKeys: Object.keys(localDataForMocks),
78
- // });
79
-
80
- // First, if we have local data for this mock, add it
81
- for (const relevantKey of relevantKeys) {
82
- const localDataForMock = localDataForMocks[relevantKey];
83
-
84
- // console.info('CODEYAM DEBUG: Found relevantKey', {
85
- // relevantKey,
86
- // localDataForMockType: typeof localDataForMock,
87
- // localDataForMockValue: localDataForMock,
88
- // isObject: typeof localDataForMock === 'object',
89
- // objectKeysLength:
90
- // typeof localDataForMock === 'object' && localDataForMock !== null
91
- // ? Object.keys(localDataForMock).length
92
- // : 'N/A',
93
- // });
94
-
95
- if (Object.keys(localDataForMock).length > 0) {
96
- if ((dataForMocks as any)[relevantKey]) {
97
- (dataForMocks as any)[relevantKey] = mergeJsonTypeDefinitions(
98
- (dataForMocks as any)[relevantKey],
99
- localDataForMock,
100
- );
101
- } else {
102
- (dataForMocks as any)[relevantKey] = localDataForMock;
103
- }
104
- }
105
- }
106
-
107
- // ALWAYS check for dependent analysis to gather nested dependencies,
108
- // regardless of whether we found a relevantKey above.
109
- // This ensures transitive dependencies are included.
110
- // For example: Activity -> CurrentActivityTab -> useLastLogLine
111
125
  // Use resolvedFilePath when available (for re-exports from index files)
112
126
  const lookupPath =
113
127
  ('resolvedFilePath' in importedExport &&
@@ -121,30 +135,10 @@ export function gatherDataForMocks(
121
135
  gatherDataForMocksRecursive(dependentAnalysis);
122
136
  }
123
137
  }
124
-
125
- // console.info('CODEYAM DEBUG: gatherDataForMocksRecursive END', {
126
- // filePath: activeAnalysis.filePath,
127
- // entityName: activeAnalysis.entityName,
128
- // currentDataForMocksKeys: Object.keys(dataForMocks),
129
- // });
130
138
  };
131
139
 
132
140
  gatherDataForMocksRecursive(analysis);
133
141
 
134
- // console.info(
135
- // 'CODEYAM DEBUG: gatherDataForMocks FINAL RESULT',
136
- // JSON.stringify(
137
- // {
138
- // filePath: analysis.filePath,
139
- // entityName: analysis.entityName,
140
- // dataForMocksKeys: Object.keys(dataForMocks),
141
- // dataForMocks,
142
- // },
143
- // null,
144
- // 2,
145
- // ),
146
- // );
147
-
148
142
  return dataForMocks;
149
143
  }
150
144
 
@@ -159,7 +153,7 @@ export default async function generateScenarioData({
159
153
 
160
154
  const structure: Analysis['metadata']['scenariosDataStructure'] = {
161
155
  arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
162
- dataForMocks: gatherDataForMocks(analysis, dependentAnalyses),
156
+ dataForMocks: gatherDataForMocks(analysis, dependentAnalyses, entity.name),
163
157
  };
164
158
 
165
159
  const scenarios = analysis.scenarios;