@codeyam/codeyam-cli 0.1.0-staging.1 → 0.1.0-staging.da5baf5

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 (393) 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 +5 -5
  4. package/analyzer-template/packages/ai/index.ts +2 -1
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/scripts/ai-test-matrix.mjs +424 -0
  7. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +24 -0
  8. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +6 -16
  9. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +197 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +28 -2
  11. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +127 -4
  12. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +1 -3
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1821 -542
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.ts +138 -0
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +1 -1
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +139 -0
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/DebugTracer.ts +224 -0
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/PathManager.ts +203 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/README.md +294 -0
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +161 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.ts +235 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +14 -6
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/selectBestValue.ts +70 -0
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.ts +113 -0
  25. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +36 -0
  26. package/analyzer-template/packages/ai/src/lib/generateChangesEntityDocumentation.ts +20 -2
  27. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +51 -107
  28. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +56 -160
  29. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +79 -265
  30. package/analyzer-template/packages/ai/src/lib/generateEntityDocumentation.ts +16 -2
  31. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +53 -176
  32. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +53 -154
  33. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +84 -254
  34. package/analyzer-template/packages/ai/src/lib/generateStatementAnalysis.ts +48 -71
  35. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +27 -6
  36. package/analyzer-template/packages/ai/src/lib/getLLMCallStats.ts +0 -14
  37. package/analyzer-template/packages/ai/src/lib/modelInfo.ts +15 -0
  38. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +42 -4
  39. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.ts +8 -33
  40. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +54 -62
  41. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +93 -109
  42. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.ts +8 -27
  43. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +33 -38
  44. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +30 -30
  45. package/analyzer-template/packages/ai/src/lib/types/index.ts +2 -0
  46. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +39 -0
  47. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +52 -6
  48. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +238 -0
  49. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.ts +25 -0
  50. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/index.ts +2 -0
  51. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +8 -10
  52. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +6 -1
  53. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +34 -15
  54. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +17 -3
  55. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +35 -16
  56. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +7 -1
  57. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +9 -1
  58. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +6 -1
  59. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +9 -1
  60. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +15 -7
  61. package/analyzer-template/packages/aws/package.json +2 -2
  62. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +28 -21
  63. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.ts +18 -11
  64. package/analyzer-template/packages/generate/src/lib/scenarioComponent.ts +6 -3
  65. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  66. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  70. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js +5 -3
  73. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponent.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/utils/index.d.ts +2 -0
  75. package/analyzer-template/packages/github/dist/utils/index.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/utils/index.js +2 -0
  77. package/analyzer-template/packages/github/dist/utils/index.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts +25 -0
  79. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  80. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js +40 -0
  81. package/analyzer-template/packages/github/dist/utils/src/lib/Semaphore.js.map +1 -0
  82. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  84. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  87. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  90. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  91. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  92. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  93. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  94. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  95. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  96. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  97. package/analyzer-template/packages/github/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  98. package/analyzer-template/packages/ui-components/src/scenario-editor/components/DataItemEditor.tsx +1 -1
  99. package/analyzer-template/packages/utils/dist/utils/index.d.ts +2 -0
  100. package/analyzer-template/packages/utils/dist/utils/index.d.ts.map +1 -1
  101. package/analyzer-template/packages/utils/dist/utils/index.js +2 -0
  102. package/analyzer-template/packages/utils/dist/utils/index.js.map +1 -1
  103. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts +25 -0
  104. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.d.ts.map +1 -0
  105. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js +40 -0
  106. package/analyzer-template/packages/utils/dist/utils/src/lib/Semaphore.js.map +1 -0
  107. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.d.ts.map +1 -1
  108. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  109. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  110. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.d.ts.map +1 -1
  111. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  112. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  113. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.d.ts.map +1 -1
  114. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  115. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  116. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts +12 -0
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.d.ts.map +1 -0
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  122. package/analyzer-template/packages/utils/dist/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  123. package/analyzer-template/packages/utils/index.ts +2 -0
  124. package/analyzer-template/packages/utils/src/lib/Semaphore.ts +42 -0
  125. package/analyzer-template/packages/utils/src/lib/frameworks/getNextRoutePath.ts +8 -3
  126. package/analyzer-template/packages/utils/src/lib/frameworks/getRemixRoutePath.ts +2 -1
  127. package/analyzer-template/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.ts +2 -1
  128. package/analyzer-template/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.ts +1 -0
  129. package/analyzer-template/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.ts +33 -0
  130. package/analyzer-template/project/constructMockCode.ts +170 -6
  131. package/analyzer-template/project/reconcileMockDataKeys.ts +13 -0
  132. package/analyzer-template/project/startScenarioCapture.ts +24 -0
  133. package/analyzer-template/project/trackGeneratedFiles.ts +41 -0
  134. package/analyzer-template/project/writeMockDataTsx.ts +125 -4
  135. package/analyzer-template/project/writeScenarioComponents.ts +175 -45
  136. package/analyzer-template/project/writeUniversalMocks.ts +72 -10
  137. package/background/src/lib/virtualized/project/constructMockCode.js +158 -7
  138. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  139. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +12 -0
  140. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  141. package/background/src/lib/virtualized/project/startScenarioCapture.js +18 -0
  142. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  143. package/background/src/lib/virtualized/project/trackGeneratedFiles.js +30 -0
  144. package/background/src/lib/virtualized/project/trackGeneratedFiles.js.map +1 -0
  145. package/background/src/lib/virtualized/project/writeMockDataTsx.js +95 -3
  146. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  147. package/background/src/lib/virtualized/project/writeScenarioComponents.js +130 -28
  148. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  149. package/background/src/lib/virtualized/project/writeUniversalMocks.js +59 -9
  150. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  151. package/codeyam-cli/scripts/apply-setup.js +288 -0
  152. package/codeyam-cli/scripts/apply-setup.js.map +1 -0
  153. package/codeyam-cli/scripts/extract-setup.js +130 -0
  154. package/codeyam-cli/scripts/extract-setup.js.map +1 -0
  155. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +238 -0
  156. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +1 -0
  157. package/codeyam-cli/src/cli.js +4 -0
  158. package/codeyam-cli/src/cli.js.map +1 -1
  159. package/codeyam-cli/src/codeyam-cli.js +0 -0
  160. package/codeyam-cli/src/commands/debug.js +190 -0
  161. package/codeyam-cli/src/commands/debug.js.map +1 -0
  162. package/codeyam-cli/src/commands/init.js +4 -23
  163. package/codeyam-cli/src/commands/init.js.map +1 -1
  164. package/codeyam-cli/src/commands/setup-sandbox.js +164 -0
  165. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js +6 -6
  167. package/codeyam-cli/src/utils/__tests__/cleanupAnalysisFiles.test.js.map +1 -1
  168. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +8 -0
  169. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  170. package/codeyam-cli/src/utils/analysisRunner.js +4 -3
  171. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  172. package/codeyam-cli/src/utils/backgroundServer.js +25 -5
  173. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  174. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js +2 -2
  175. package/codeyam-cli/src/utils/cleanupAnalysisFiles.js.map +1 -1
  176. package/codeyam-cli/src/utils/fileWatcher.js +75 -5
  177. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  178. package/codeyam-cli/src/utils/queue/job.js +3 -2
  179. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  180. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +4 -0
  181. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  182. package/codeyam-cli/src/utils/webappDetection.js +2 -1
  183. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  184. package/codeyam-cli/src/webserver/app/lib/database.js +63 -2
  185. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  186. package/codeyam-cli/src/webserver/backgroundServer.js +15 -35
  187. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  188. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BFRmw1TF.js +1 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Dh-FldQK.js → InteractivePreview-CRfBaL5B.js} +3 -3
  190. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-BYVx9KFp.js +3 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dp6DC845.js → LogViewer-CRcT5fOZ.js} +1 -1
  192. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Bual6h18.js +1 -0
  193. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Dj4Mm0AR.js +6 -0
  194. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-wtCIkGzq.js +5 -0
  195. package/codeyam-cli/src/webserver/build/client/assets/_index-Cjdlwanz.js +1 -0
  196. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-Dv3k2aEm.js +10 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/chart-column-DOftqM9U.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-De6i8FUT.js +26 -0
  199. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-0WShkwuc.js +1 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/clock-DXui5oLF.js +1 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DPFKgE96.js +1 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-1Z6D0fLM.js → entity._sha._-BxaXKsIx.js} +10 -10
  203. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BRD2FrH5.js +1 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-69R47Ffu.js +5 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/{entityVersioning-DO2gCvXv.js → entityVersioning-Bk_YB1jM.js} +1 -1
  206. package/codeyam-cli/src/webserver/build/client/assets/entry.client-B5l8I1m3.js +5 -0
  207. package/codeyam-cli/src/webserver/build/client/assets/file-text-fb2mx25c.js +1 -0
  208. package/codeyam-cli/src/webserver/build/client/assets/files-l_Eh9jQG.js +1 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/git-BCnOUEl9.js +12 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/globals-BxkM6Up7.css +1 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/index-BgDzgbQW.js +8 -0
  212. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DE3HAwpF.js +1 -0
  213. package/codeyam-cli/src/webserver/build/client/assets/manifest-5579bc45.js +1 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/root-o8NMI2bW.js +16 -0
  215. package/codeyam-cli/src/webserver/build/client/assets/search-BymWwY_X.js +1 -0
  216. package/codeyam-cli/src/webserver/build/client/assets/settings-C7G4GDvW.js +1 -0
  217. package/codeyam-cli/src/webserver/build/client/assets/settings-Dc4MlMpK.js +1 -0
  218. package/codeyam-cli/src/webserver/build/client/assets/simulations-Duh3oShE.js +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BBlyqxij.js → useLastLogLine-AlhS7g5F.js} +1 -1
  220. package/codeyam-cli/src/webserver/build/client/assets/useToast-XY00p4rI.js +1 -0
  221. package/codeyam-cli/src/webserver/build/client/assets/zap-Dra7vum1.js +1 -0
  222. package/codeyam-cli/src/webserver/build/server/assets/index-Dpr7o3dP.js +1 -0
  223. package/codeyam-cli/src/webserver/build/server/assets/server-build-BM5nyvlV.js +166 -0
  224. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  225. package/codeyam-cli/src/webserver/build-info.json +5 -5
  226. package/codeyam-cli/src/webserver/server.js +1 -1
  227. package/codeyam-cli/src/webserver/server.js.map +1 -1
  228. package/codeyam-cli/templates/codeyam-setup-skill.md +85 -94
  229. package/package.json +7 -10
  230. package/packages/ai/index.js +1 -2
  231. package/packages/ai/index.js.map +1 -1
  232. package/packages/ai/src/lib/analyzeScope.js +13 -0
  233. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  234. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +6 -15
  235. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  236. package/packages/ai/src/lib/astScopes/methodSemantics.js +134 -0
  237. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  238. package/packages/ai/src/lib/astScopes/paths.js +28 -3
  239. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  240. package/packages/ai/src/lib/astScopes/processExpression.js +111 -3
  241. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  242. package/packages/ai/src/lib/checkAllAttributes.js +1 -3
  243. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  244. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1320 -396
  245. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  246. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js +137 -1
  247. package/packages/ai/src/lib/dataStructure/equivalencyManagers/FunctionCallManager.js.map +1 -1
  248. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +1 -1
  249. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  250. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +112 -0
  251. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -0
  252. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js +176 -0
  253. package/packages/ai/src/lib/dataStructure/helpers/DebugTracer.js.map +1 -0
  254. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js +178 -0
  255. package/packages/ai/src/lib/dataStructure/helpers/PathManager.js.map +1 -0
  256. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +138 -0
  257. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -0
  258. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js +199 -0
  259. package/packages/ai/src/lib/dataStructure/helpers/VisitedTracker.js.map +1 -0
  260. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +14 -6
  261. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  262. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js +62 -0
  263. package/packages/ai/src/lib/dataStructure/helpers/selectBestValue.js.map +1 -0
  264. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js +90 -0
  265. package/packages/ai/src/lib/dataStructure/helpers/uniqueIdUtils.js.map +1 -0
  266. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +22 -0
  267. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  268. package/packages/ai/src/lib/generateChangesEntityDocumentation.js +19 -1
  269. package/packages/ai/src/lib/generateChangesEntityDocumentation.js.map +1 -1
  270. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +51 -107
  271. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  272. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +55 -156
  273. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  274. package/packages/ai/src/lib/generateChangesEntityScenarios.js +79 -262
  275. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  276. package/packages/ai/src/lib/generateEntityDocumentation.js +15 -1
  277. package/packages/ai/src/lib/generateEntityDocumentation.js.map +1 -1
  278. package/packages/ai/src/lib/generateEntityKeyAttributes.js +53 -176
  279. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  280. package/packages/ai/src/lib/generateEntityScenarioData.js +52 -152
  281. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  282. package/packages/ai/src/lib/generateEntityScenarios.js +88 -258
  283. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  284. package/packages/ai/src/lib/generateStatementAnalysis.js +46 -71
  285. package/packages/ai/src/lib/generateStatementAnalysis.js.map +1 -1
  286. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +13 -8
  287. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  288. package/packages/ai/src/lib/getLLMCallStats.js +0 -14
  289. package/packages/ai/src/lib/getLLMCallStats.js.map +1 -1
  290. package/packages/ai/src/lib/modelInfo.js +15 -0
  291. package/packages/ai/src/lib/modelInfo.js.map +1 -1
  292. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +36 -3
  293. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  294. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js +8 -33
  295. package/packages/ai/src/lib/promptGenerators/generateChangesEntityDocumentationGenerator.js.map +1 -1
  296. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +35 -41
  297. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  298. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +59 -72
  299. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  300. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js +8 -27
  301. package/packages/ai/src/lib/promptGenerators/generateEntityDocumentationGenerator.js.map +1 -1
  302. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +24 -27
  303. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  304. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +21 -22
  305. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  306. package/packages/ai/src/lib/types/index.js +2 -0
  307. package/packages/ai/src/lib/types/index.js.map +1 -1
  308. package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
  309. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  310. package/packages/analyze/src/lib/FileAnalyzer.js +45 -5
  311. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  312. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +191 -0
  313. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -0
  314. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js +16 -0
  315. package/packages/analyze/src/lib/asts/sourceFiles/getDeclaredEntityNode.js.map +1 -0
  316. package/packages/analyze/src/lib/asts/sourceFiles/index.js +2 -0
  317. package/packages/analyze/src/lib/asts/sourceFiles/index.js.map +1 -1
  318. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +6 -8
  319. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  320. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +5 -1
  321. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  322. package/packages/analyze/src/lib/files/analyzeChange.js +21 -9
  323. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  324. package/packages/analyze/src/lib/files/analyzeEntity.js +10 -4
  325. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  326. package/packages/analyze/src/lib/files/analyzeInitial.js +21 -9
  327. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  328. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +6 -1
  329. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  330. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +9 -1
  331. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  332. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +5 -1
  333. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  334. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +9 -1
  335. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  336. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +16 -7
  337. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  338. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +28 -21
  339. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  340. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js +18 -11
  341. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageRemix.js.map +1 -1
  342. package/packages/generate/src/lib/scenarioComponent.js +5 -3
  343. package/packages/generate/src/lib/scenarioComponent.js.map +1 -1
  344. package/packages/utils/index.js +2 -0
  345. package/packages/utils/index.js.map +1 -1
  346. package/packages/utils/src/lib/Semaphore.js +40 -0
  347. package/packages/utils/src/lib/Semaphore.js.map +1 -0
  348. package/packages/utils/src/lib/frameworks/getNextRoutePath.js +5 -3
  349. package/packages/utils/src/lib/frameworks/getNextRoutePath.js.map +1 -1
  350. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js +2 -1
  351. package/packages/utils/src/lib/frameworks/getRemixRoutePath.js.map +1 -1
  352. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js +2 -1
  353. package/packages/utils/src/lib/frameworks/nextRouteFileNameToRoute.js.map +1 -1
  354. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js +1 -0
  355. package/packages/utils/src/lib/frameworks/remixRouteFileNameToRoute.js.map +1 -1
  356. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js +32 -0
  357. package/packages/utils/src/lib/frameworks/sanitizeNextRouteSegments.js.map +1 -0
  358. package/analyzer-template/packages/ai/src/lib/generateEntityDataMap.ts +0 -375
  359. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-GqWwt5wG.js +0 -1
  360. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-p0fuyqGQ.js +0 -3
  361. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-xwuhwsZH.js +0 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/ScenarioPreview-Bl2IRh55.js +0 -1
  363. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-M2QuSHKC.js +0 -5
  364. package/codeyam-cli/src/webserver/build/client/assets/_index-CAVtep9Q.js +0 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLmzsLsT.js +0 -10
  366. package/codeyam-cli/src/webserver/build/client/assets/chart-column-B2I7jQx2.js +0 -1
  367. package/codeyam-cli/src/webserver/build/client/assets/circle-alert-GwwOAbhw.js +0 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/components-CAx5ONX_.js +0 -40
  369. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgyOwWip.js +0 -1
  370. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DGy3zrli.js +0 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-ChAdTrrU.js +0 -1
  372. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-D9L7267w.js +0 -5
  373. package/codeyam-cli/src/webserver/build/client/assets/entry.client-C6FRgjPr.js +0 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/files-C3-cQjgv.js +0 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/git-Dp4EB9nv.js +0 -12
  376. package/codeyam-cli/src/webserver/build/client/assets/globals-Da3jt49-.css +0 -1
  377. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DN7Vr40D.js +0 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/manifest-172a4629.js +0 -1
  379. package/codeyam-cli/src/webserver/build/client/assets/root-COyVTsPq.js +0 -16
  380. package/codeyam-cli/src/webserver/build/client/assets/search-CvyP_1Lo.js +0 -1
  381. package/codeyam-cli/src/webserver/build/client/assets/settings-Hbf8b7J_.js +0 -1
  382. package/codeyam-cli/src/webserver/build/client/assets/settings-MZc4XdmE.js +0 -1
  383. package/codeyam-cli/src/webserver/build/client/assets/simulations-BMBi0VzO.js +0 -1
  384. package/codeyam-cli/src/webserver/build/client/assets/useToast-C_VxoXTh.js +0 -1
  385. package/codeyam-cli/src/webserver/build/client/assets/zap-B4gsLUZQ.js +0 -1
  386. package/codeyam-cli/src/webserver/build/client/cy-logo-cli.svg +0 -13
  387. package/codeyam-cli/src/webserver/build/server/assets/index-eAULANMV.js +0 -1
  388. package/codeyam-cli/src/webserver/build/server/assets/server-build-lutv16q5.js +0 -161
  389. package/codeyam-cli/src/webserver/public/cy-logo-cli.svg +0 -13
  390. package/packages/ai/src/lib/generateEntityDataMap.js +0 -335
  391. package/packages/ai/src/lib/generateEntityDataMap.js.map +0 -1
  392. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js +0 -17
  393. package/packages/ai/src/lib/promptGenerators/generateEntityDataMapGenerator.js.map +0 -1
@@ -16,7 +16,12 @@ import { AI } from '~codeyam/ai';
16
16
  import extractDiffLines from './extractDiffLines';
17
17
  import analyzeCodeChange from './analyzeCodeChange';
18
18
  import relevantDiffPart from './relevantDiffPart';
19
- import { awsLog, awsLogDebugLevel, pushAnalysisError } from '~codeyam/utils';
19
+ import {
20
+ awsLog,
21
+ awsLogDebugLevel,
22
+ pushAnalysisError,
23
+ Semaphore,
24
+ } from '~codeyam/utils';
20
25
 
21
26
  export interface AnalyzeChangeArgs {
22
27
  previousAnalysis: Analysis;
@@ -29,6 +34,8 @@ export interface AnalyzeChangeArgs {
29
34
  steps?: string[];
30
35
  updateProgress?: (detail: string) => void;
31
36
  model: AI.Model;
37
+ /** Semaphore to serialize CPU-intensive Structure phase */
38
+ structureSemaphore?: Semaphore;
32
39
  }
33
40
 
34
41
  export default async function analyzeChange({
@@ -42,6 +49,7 @@ export default async function analyzeChange({
42
49
  steps,
43
50
  updateProgress,
44
51
  model,
52
+ structureSemaphore,
45
53
  }: AnalyzeChangeArgs) {
46
54
  analysis.entity = entity;
47
55
  awsLog('CodeYam: Analyzing change entity', {
@@ -79,24 +87,35 @@ export default async function analyzeChange({
79
87
  });
80
88
  }
81
89
 
90
+ // Structure phase: CPU-intensive, serialize via semaphore if provided
82
91
  if (!steps || steps.includes(Step.Structure)) {
83
- awsLogDebugLevel(
84
- 1,
85
- `Merging dependent data structures for ${entity.name}...`,
86
- );
92
+ if (structureSemaphore) {
93
+ await structureSemaphore.acquire();
94
+ }
95
+ try {
96
+ awsLogDebugLevel(
97
+ 1,
98
+ `Merging dependent data structures for ${entity.name}...`,
99
+ );
87
100
 
88
- const { step: dataStructureStep } = await recordStep(
89
- 'generateDataStructure',
90
- () =>
91
- generateDataStructure({
92
- entity,
93
- dependentAnalyses,
94
- analysis,
95
- }),
96
- );
97
- analysis.status.steps.push(dataStructureStep);
101
+ const { step: dataStructureStep } = await recordStep(
102
+ 'generateDataStructure',
103
+ () =>
104
+ generateDataStructure({
105
+ entity,
106
+ dependentAnalyses,
107
+ analysis,
108
+ }),
109
+ );
110
+ analysis.status.steps.push(dataStructureStep);
111
+ } finally {
112
+ if (structureSemaphore) {
113
+ structureSemaphore.release();
114
+ }
115
+ }
98
116
  }
99
117
 
118
+ // KeyAttributes phase: I/O-bound LLM call, can run in parallel with other entities' Structure
100
119
  if (!steps || steps.includes(Step.KeyAttributes)) {
101
120
  awsLogDebugLevel(1, `Determining key attributes for ${entity.name}...`);
102
121
 
@@ -31,7 +31,12 @@ import relevantDiffPart from './relevantDiffPart';
31
31
  import { Step } from './enums/steps';
32
32
  import { ImmutableAnalysisContext } from '../analysisContext';
33
33
  import generateAnalyzedTreeSha from './analyze/generateAnalyzedTreeSha';
34
- import { awsLog, awsLogDebugLevel, pushAnalysisError } from '~codeyam/utils';
34
+ import {
35
+ awsLog,
36
+ awsLogDebugLevel,
37
+ pushAnalysisError,
38
+ Semaphore,
39
+ } from '~codeyam/utils';
35
40
 
36
41
  export interface AnalyzeEntityArgs {
37
42
  project: Project;
@@ -50,6 +55,8 @@ export interface AnalyzeEntityArgs {
50
55
  forceAll?: boolean;
51
56
  updateProgress?: (detail: string) => void;
52
57
  modelString?: string;
58
+ /** Semaphore to serialize CPU-intensive Structure phase */
59
+ structureSemaphore?: Semaphore;
53
60
  }
54
61
 
55
62
  /**
@@ -77,6 +84,7 @@ export default async function analyzeEntity({
77
84
  forceAll,
78
85
  updateProgress,
79
86
  modelString,
87
+ structureSemaphore,
80
88
  }: AnalyzeEntityArgs): Promise<{
81
89
  analysis: Analysis;
82
90
  dependentAnalyses?: ReadonlyAnalysisMap;
@@ -476,6 +484,7 @@ export default async function analyzeEntity({
476
484
  steps,
477
485
  updateProgress,
478
486
  model,
487
+ structureSemaphore,
479
488
  })
480
489
  : analyzeInitial({
481
490
  analysis,
@@ -485,6 +494,7 @@ export default async function analyzeEntity({
485
494
  steps,
486
495
  updateProgress,
487
496
  model,
497
+ structureSemaphore,
488
498
  }),
489
499
  ]);
490
500
 
@@ -498,8 +508,12 @@ export default async function analyzeEntity({
498
508
  analysis = analysisResult.analysis;
499
509
 
500
510
  analysis.completedAt = new Date().toISOString();
501
- // Don't set analyzedTreeSha when ONLY_DATA_STRUCTURE=true, so full analysis can re-analyze later
502
- if (process.env.ONLY_DATA_STRUCTURE !== 'true') {
511
+ // Don't set analyzedTreeSha when:
512
+ // 1. ONLY_DATA_STRUCTURE=true - so full analysis can re-analyze later
513
+ // 2. analyzeAsDependency=true - dependency analyses only generate Structure+KeyAttributes,
514
+ // not scenarios. Leaving analyzedTreeSha unset allows partial analysis detection to work
515
+ // when the entity is later analyzed directly.
516
+ if (process.env.ONLY_DATA_STRUCTURE !== 'true' && !analyzeAsDependency) {
503
517
  analysis.analyzedTreeSha = generateAnalyzedTreeSha(analysis);
504
518
  }
505
519
  } catch (error) {
@@ -12,7 +12,12 @@ import {
12
12
  type ReadonlyAnalysisMap,
13
13
  } from '~codeyam/types';
14
14
  import { upsertAnalysesWithScenarios } from '~codeyam/supabase';
15
- import { awsLog, awsLogDebugLevel, pushAnalysisError } from '~codeyam/utils';
15
+ import {
16
+ awsLog,
17
+ awsLogDebugLevel,
18
+ pushAnalysisError,
19
+ Semaphore,
20
+ } from '~codeyam/utils';
16
21
  import generateKeyAttributes from './scenarios/generateKeyAttributes';
17
22
 
18
23
  export interface AnalyzeInitialArgs {
@@ -23,6 +28,8 @@ export interface AnalyzeInitialArgs {
23
28
  steps?: string[];
24
29
  updateProgress?: (detail: string) => void;
25
30
  model: AI.Model;
31
+ /** Semaphore to serialize CPU-intensive Structure phase */
32
+ structureSemaphore?: Semaphore;
26
33
  }
27
34
 
28
35
  export default async function analyzeInitial({
@@ -33,6 +40,7 @@ export default async function analyzeInitial({
33
40
  steps,
34
41
  updateProgress,
35
42
  model,
43
+ structureSemaphore,
36
44
  }: AnalyzeInitialArgs) {
37
45
  analysis.entity = entity;
38
46
  awsLog('CodeYam: Analyzing initial entity', {
@@ -47,22 +55,32 @@ export default async function analyzeInitial({
47
55
  });
48
56
 
49
57
  try {
58
+ // Structure phase: CPU-intensive, serialize via semaphore if provided
50
59
  if (!steps || steps.includes(Step.Structure)) {
51
- awsLogDebugLevel(
52
- 1,
53
- `Merging dependent data structures for ${entity.name}...`,
54
- );
55
-
56
- const { step: dataStructureStep } = await recordStep(
57
- 'generateDataStructure',
58
- () =>
59
- generateDataStructure({
60
- entity,
61
- dependentAnalyses,
62
- analysis,
63
- }),
64
- );
65
- analysis.status.steps.push(dataStructureStep);
60
+ if (structureSemaphore) {
61
+ await structureSemaphore.acquire();
62
+ }
63
+ try {
64
+ awsLogDebugLevel(
65
+ 1,
66
+ `Merging dependent data structures for ${entity.name}...`,
67
+ );
68
+
69
+ const { step: dataStructureStep } = await recordStep(
70
+ 'generateDataStructure',
71
+ () =>
72
+ generateDataStructure({
73
+ entity,
74
+ dependentAnalyses,
75
+ analysis,
76
+ }),
77
+ );
78
+ analysis.status.steps.push(dataStructureStep);
79
+ } finally {
80
+ if (structureSemaphore) {
81
+ structureSemaphore.release();
82
+ }
83
+ }
66
84
  }
67
85
 
68
86
  // Short-circuit for test mocking: only generate data structure, skip key attributes and scenarios
@@ -73,6 +91,7 @@ export default async function analyzeInitial({
73
91
  return { analysis };
74
92
  }
75
93
 
94
+ // KeyAttributes phase: I/O-bound LLM call, can run in parallel with other entities' Structure
76
95
  if (!steps || steps.includes(Step.KeyAttributes)) {
77
96
  awsLogDebugLevel(1, `Determining key attributes for ${entity.name}...`);
78
97
 
@@ -54,8 +54,14 @@ export default function generateDataStructure({
54
54
  const nonMockedDependentAnalyses: ReadonlyAnalysisMap =
55
55
  allImportedExports.reduce((acc, importedExport) => {
56
56
  if (importedExport.isMocked) return acc;
57
+ // Use resolvedFilePath when available (for re-exports from index files)
58
+ // to find the actual analysis of the component
59
+ const lookupPath =
60
+ ('resolvedFilePath' in importedExport &&
61
+ importedExport.resolvedFilePath) ||
62
+ importedExport.filePath;
57
63
  const relevantDependencyAnalysis =
58
- dependentAnalyses[importedExport.filePath]?.[importedExport.name];
64
+ dependentAnalyses[lookupPath]?.[importedExport.name];
59
65
 
60
66
  if (!relevantDependencyAnalysis) {
61
67
  // console.info(
@@ -8,6 +8,7 @@ import measureAndReportExecutionTime from '../../utils/measureAndReportExecution
8
8
  import { AI, generateEntityKeyAttributes } from '~codeyam/ai';
9
9
  import { awsLog } from '~codeyam/utils';
10
10
  import { gatherRelevantDependentKeyAttributes } from '~codeyam/ai';
11
+ import { gatherDataForMocks } from './generateScenarioData';
11
12
 
12
13
  export interface GenerateEntityKeyAttributesArgs {
13
14
  entity: Entity;
@@ -28,7 +29,14 @@ export default async function generateKeyAttributes({
28
29
  }: GenerateEntityKeyAttributesArgs): Promise<void> {
29
30
  if (!['visual', 'library'].includes(entity.entityType)) return;
30
31
 
31
- const structure = { ...analysis.metadata.scenariosDataStructure };
32
+ // Merge direct dataForMocks with recursively gathered data from dependencies
33
+ const structure = {
34
+ arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
35
+ dataForMocks: {
36
+ ...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
37
+ ...gatherDataForMocks(analysis, dependentAnalyses),
38
+ },
39
+ };
32
40
 
33
41
  awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
34
42
  filePath: entity.filePath,
@@ -104,8 +104,13 @@ export function gatherDataForMocks(
104
104
  // regardless of whether we found a relevantKey above.
105
105
  // This ensures transitive dependencies are included.
106
106
  // For example: Activity -> CurrentActivityTab -> useLastLogLine
107
+ // Use resolvedFilePath when available (for re-exports from index files)
108
+ const lookupPath =
109
+ ('resolvedFilePath' in importedExport &&
110
+ importedExport.resolvedFilePath) ||
111
+ importedExport.filePath;
107
112
  const dependentAnalysis =
108
- dependentAnalyses?.[importedExport.filePath]?.[importedExport.name];
113
+ dependentAnalyses?.[lookupPath]?.[importedExport.name];
109
114
 
110
115
  if (dependentAnalysis && !analysesGathered.has(dependentAnalysis.id)) {
111
116
  analysesGathered.add(dependentAnalysis.id);
@@ -7,6 +7,7 @@ import {
7
7
  import measureAndReportExecutionTime from '../../utils/measureAndReportExecutionTime';
8
8
  import { AI, generateEntityScenarios } from '~codeyam/ai';
9
9
  import { awsLog } from '~codeyam/utils';
10
+ import { gatherDataForMocks } from './generateScenarioData';
10
11
 
11
12
  export interface GenerateScenariosArgs {
12
13
  entity: Entity;
@@ -27,7 +28,14 @@ export default async function generateScenarios({
27
28
  }: GenerateScenariosArgs): Promise<void> {
28
29
  if (!['visual', 'library'].includes(entity.entityType)) return;
29
30
 
30
- const structure = { ...analysis.metadata.scenariosDataStructure };
31
+ // Merge direct dataForMocks with recursively gathered data from dependencies
32
+ const structure = {
33
+ arguments: analysis.metadata.scenariosDataStructure?.arguments ?? [],
34
+ dataForMocks: {
35
+ ...(analysis.metadata.scenariosDataStructure?.dataForMocks ?? {}),
36
+ ...gatherDataForMocks(analysis, dependentAnalyses),
37
+ },
38
+ };
31
39
 
32
40
  awsLog(`🔮 Generating ${error ? 'error ' : ''}scenarios for`, {
33
41
  filePath: entity.filePath,
@@ -696,13 +696,23 @@ export default function mergeInDependentDataStructure({
696
696
  });
697
697
 
698
698
  // First, normalize any returnValue. paths that were written by equivalency processing
699
- // to the standard functionName().functionCallReturnValue. format
699
+ // to the standard functionName().functionCallReturnValue. format.
700
+ // Also delete returnValue[] artifact paths that don't represent actual array structure.
700
701
  const pathsToNormalize: [string, string][] = [];
702
+ const pathsToDelete: string[] = [];
701
703
  for (const path in depSchema.returnValueSchema) {
702
704
  if (path === 'returnValue' || path.startsWith('returnValue.')) {
703
705
  pathsToNormalize.push([path, depSchema.returnValueSchema[path]]);
706
+ } else if (path.match(/^returnValue\[\d*\]/)) {
707
+ // Delete returnValue[] and returnValue[n] paths - these are artifacts from
708
+ // equivalency processing and don't represent the actual structure of mocked dependencies.
709
+ // The correct structure comes from srcSchema (dependencySchemas).
710
+ pathsToDelete.push(path);
704
711
  }
705
712
  }
713
+ for (const path of pathsToDelete) {
714
+ delete depSchema.returnValueSchema[path];
715
+ }
706
716
  for (const [path, value] of pathsToNormalize) {
707
717
  delete depSchema.returnValueSchema[path];
708
718
  const normalizedPath =
@@ -734,9 +744,8 @@ export default function mergeInDependentDataStructure({
734
744
  `${dependency.name}().functionCallReturnValue.`,
735
745
  );
736
746
 
737
- if (!(normalizedPath in depSchema.returnValueSchema)) {
738
- depSchema.returnValueSchema[normalizedPath] = value;
739
- }
747
+ // Always write srcSchema values - they take precedence over equivalency-derived values
748
+ depSchema.returnValueSchema[normalizedPath] = value;
740
749
  continue;
741
750
  }
742
751
 
@@ -744,9 +753,8 @@ export default function mergeInDependentDataStructure({
744
753
  // These are needed for constructMockCode to build the proper mock data hierarchy
745
754
  // Example: supabase.auth.getSession().functionCallReturnValue.data.session
746
755
  if (path.includes('.functionCallReturnValue')) {
747
- if (!(path in depSchema.returnValueSchema)) {
748
- depSchema.returnValueSchema[path] = value;
749
- }
756
+ // Always write srcSchema values - they take precedence over equivalency-derived values
757
+ depSchema.returnValueSchema[path] = value;
750
758
  continue;
751
759
  }
752
760
 
@@ -11,10 +11,10 @@
11
11
  "author": "",
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
- "@aws-sdk/client-codebuild": "^3.940.0",
14
+ "@aws-sdk/client-codebuild": "^3.948.0",
15
15
  "@aws-sdk/client-cloudwatch-logs": "^3.940.0",
16
16
  "@aws-sdk/client-dynamodb": "^3.899.0",
17
- "@aws-sdk/client-ecr": "^3.946.0",
17
+ "@aws-sdk/client-ecr": "^3.948.0",
18
18
  "@aws-sdk/client-ecs": "^3.937.0",
19
19
  "@aws-sdk/client-s3": "^3.899.0",
20
20
  "@aws-sdk/client-sqs": "^3.940.0",
@@ -39,7 +39,6 @@ export default function componentScenarioPageNext({
39
39
  type ReactNode,
40
40
  type ChangeEvent
41
41
  } from 'react';
42
- import Head from 'next/head';
43
42
  ${analysis.scenarios?.length > 0 && `import { scenarios } from "${relativeMocksDir}/MockData_${safeFileName(scenario.name)}";`}
44
43
  ${getComponentImportStatement({
45
44
  file,
@@ -58,17 +57,7 @@ ${getComponentImportStatement({
58
57
  // Inject image interception code at module level to run before any rendering
59
58
  ${getImageReplacementCode()}
60
59
 
61
-
62
- const NextHead = () => {
63
- return (
64
- <Head>
65
- <title>${fileName}: ${escapeQuotes(scenario.name)} CodeYam Demo v${VERSION}</title>
66
- <meta name="description" content="This is a demo of the ${fileName} component" />
67
- </Head>
68
- )
69
- };
70
-
71
- function Scenario({ name, width, children }: { name: string, width: string, children: ReactNode }) {
60
+ function Scenario({ name, width, height, children }: { name: string, width: string, height: string, children: ReactNode }) {
72
61
 
73
62
  useEffect(() => {
74
63
  if (typeof window === 'undefined') return;
@@ -89,14 +78,14 @@ function Scenario({ name, width, children }: { name: string, width: string, chil
89
78
  return Math.max(100, bodyHeight, htmlHeight, scrollHeight);
90
79
  }
91
80
 
92
- const height = calculateHeight();
93
- parent.postMessage({ type: 'codeyam-resize', name, height }, '*');
81
+ const calculatedHeight = calculateHeight();
82
+ parent.postMessage({ type: 'codeyam-resize', name, height: calculatedHeight }, '*');
94
83
 
95
84
  const eventListener = (event) => {
96
85
  if (event.data.name === name) {
97
86
  if (event.data.type === 'codeyam-respond') {
98
- const height = calculateHeight();
99
- parent.postMessage({ type: 'codeyam-resize', name, height }, '*');
87
+ const calculatedHeight = calculateHeight();
88
+ parent.postMessage({ type: 'codeyam-resize', name, height: calculatedHeight }, '*');
100
89
  }
101
90
  }
102
91
  };
@@ -108,9 +97,9 @@ function Scenario({ name, width, children }: { name: string, width: string, chil
108
97
  return (
109
98
  <div className='w-full flex items-center justify-center'>
110
99
  <div id='component' style={{
111
- width: width,
112
- minWidth: width,
113
- maxWidth: width,
100
+ minWidth: width !== 'auto' ? \`min(\${width}, 100vw)\` : undefined,
101
+ height: height !== 'auto' ? height : undefined,
102
+ minHeight: height !== 'auto' ? height : undefined,
114
103
  display: 'block',
115
104
  padding: '6px'
116
105
  }}>
@@ -121,13 +110,31 @@ function Scenario({ name, width, children }: { name: string, width: string, chil
121
110
  }
122
111
 
123
112
  export default function Index() {
113
+ const [searchParams] = useState(() =>
114
+ typeof window !== 'undefined'
115
+ ? new URLSearchParams(window.location.search)
116
+ : new URLSearchParams()
117
+ );
118
+ const widthOverride = searchParams.get('width');
119
+ const heightOverride = searchParams.get('height') || 'auto';
120
+
121
+ useEffect(() => {
122
+ document.title = "${fileName}: ${escapeQuotes(scenario.name)} CodeYam Demo v${VERSION}";
123
+ let metaDesc = document.querySelector('meta[name="description"]');
124
+ if (!metaDesc) {
125
+ metaDesc = document.createElement('meta');
126
+ metaDesc.setAttribute('name', 'description');
127
+ document.head.appendChild(metaDesc);
128
+ }
129
+ metaDesc.setAttribute('content', "This is a demo of the ${fileName} component");
130
+ }, []);
131
+
124
132
  ${getIFrameMessageListenerCode({ scenarioName: scenario.name })}
125
133
  ${getNextJsErrorClosingCode()}
126
134
 
127
135
  return (
128
136
  <div className='flex flex-col justify-center items-center h-screen' data-version={version}>
129
- <NextHead />
130
- ${scenarioComponent(entity, analysis, scenario)}
137
+ ${scenarioComponent(entity, analysis, scenario, { useOverrides: true })}
131
138
  </div>
132
139
  );
133
140
  }`;
@@ -18,8 +18,6 @@ export default function componentScenarioPageRemix(
18
18
  mocksDir: string,
19
19
  ) {
20
20
  return `import { ReactNode, useEffect, useCallback, useState } from 'react';
21
- import type { MetaFunction } from "@remix-run/node";
22
- import { useSearchParams } from "@remix-run/react";
23
21
  ${analysis.scenarios?.length > 0 && `import { scenarios } from "${mocksDir}/MockData_${safeFileName(scenario.name)}";`}
24
22
  ${getComponentImportStatement({
25
23
  file,
@@ -38,13 +36,6 @@ ${getComponentImportStatement({
38
36
  // Inject image interception code at module level to run before any rendering
39
37
  ${getImageReplacementCode()}
40
38
 
41
- export const meta: MetaFunction = () => {
42
- return [
43
- { title: "${file.name}: ${escapeQuotes(scenario.name)} CodeYam Demo v${VERSION}" },
44
- { name: "description", content: "This is a demo of the ${file.name} component under the scenario: ${escapeQuotes(scenario.description)}" },
45
- ];
46
- };
47
-
48
39
  function Scenario({ name, width, height, children }: { name: string, width: string, height: string, children: ReactNode }) {
49
40
 
50
41
  useEffect(() => {
@@ -85,7 +76,7 @@ function Scenario({ name, width, height, children }: { name: string, width: stri
85
76
  return (
86
77
  <div className='w-full flex items-center justify-center'>
87
78
  <div id='component' style={{
88
- minWidth: \`min(\${width}, 100vw)\`,
79
+ minWidth: width !== 'auto' ? \`min(\${width}, 100vw)\` : undefined,
89
80
  height: height !== 'auto' ? height : undefined,
90
81
  minHeight: height !== 'auto' ? height : undefined,
91
82
  display: 'block',
@@ -98,9 +89,25 @@ function Scenario({ name, width, height, children }: { name: string, width: stri
98
89
  }
99
90
 
100
91
  export default function Index() {
101
- const [searchParams] = useSearchParams();
92
+ const [searchParams] = useState(() =>
93
+ typeof window !== 'undefined'
94
+ ? new URLSearchParams(window.location.search)
95
+ : new URLSearchParams()
96
+ );
102
97
  const widthOverride = searchParams.get('width');
103
98
  const heightOverride = searchParams.get('height') || 'auto';
99
+
100
+ useEffect(() => {
101
+ document.title = "${file.name}: ${escapeQuotes(scenario.name)} CodeYam Demo v${VERSION}";
102
+ let metaDesc = document.querySelector('meta[name="description"]');
103
+ if (!metaDesc) {
104
+ metaDesc = document.createElement('meta');
105
+ metaDesc.setAttribute('name', 'description');
106
+ document.head.appendChild(metaDesc);
107
+ }
108
+ metaDesc.setAttribute('content', "This is a demo of the ${file.name} component under the scenario: ${escapeQuotes(scenario.description)}");
109
+ }, []);
110
+
104
111
  ${getIFrameMessageListenerCode({ scenarioName: scenario.name })}
105
112
 
106
113
  return (
@@ -2,6 +2,9 @@ import type { Analysis, Entity, Scenario } from '~codeyam/types';
2
2
  import { safeFileName } from '~codeyam/utils';
3
3
  import handleWrappers from './handleWrappers';
4
4
 
5
+ // Escape double quotes for use in JavaScript string literals
6
+ const escapeForJsString = (s: string): string => s.replace(/"/g, '\\"');
7
+
5
8
  const dimensionString = (dimension?: string | number) => {
6
9
  if (!dimension) return 'auto';
7
10
  if (typeof dimension === 'string') {
@@ -83,9 +86,9 @@ export default function scenarioComponent(
83
86
  .map((name) =>
84
87
  isNaN(parseInt(name))
85
88
  ? name.endsWith(')')
86
- ? `${name.split('(')[0]}={() => _getScenarioProps({ argumentIndex: 0, propName: "${name}" }) as any}`
87
- : `${name}={_getScenarioProps({ argumentIndex: 0, propName: "${name}" }) as any}`
88
- : `positionalArgument_${name}={_getScenarioProps({ argumentIndex: 0, propName: "positionalArgument_${name}" }) as any}`,
89
+ ? `${name.split('(')[0]}={() => _getScenarioProps({ argumentIndex: 0, propName: "${escapeForJsString(name)}" }) as any}`
90
+ : `${name}={_getScenarioProps({ argumentIndex: 0, propName: "${escapeForJsString(name)}" }) as any}`
91
+ : `positionalArgument_${name}={_getScenarioProps({ argumentIndex: 0, propName: "positionalArgument_${escapeForJsString(name)}" }) as any}`,
89
92
  )
90
93
  .join(argsSpacing)}\n >`
91
94
  : `>`;
@@ -1 +1 @@
1
- {"version":3,"file":"componentScenarioPageNext.d.ts","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW5E,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UA0GA"}
1
+ {"version":3,"file":"componentScenarioPageNext.d.ts","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAW5E,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GACjB,EAAE;IACD,IAAI,EAAE,IAAI,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,QAAQ,CAAC;IACnB,gBAAgB,EAAE,MAAM,CAAC;CAC1B,UAiHA"}
@@ -19,7 +19,6 @@ export default function componentScenarioPageNext({ file, entity, analysis, curr
19
19
  type ReactNode,
20
20
  type ChangeEvent
21
21
  } from 'react';
22
- import Head from 'next/head';
23
22
  ${analysis.scenarios?.length > 0 && `import { scenarios } from "${relativeMocksDir}/MockData_${safeFileName(scenario.name)}";`}
24
23
  ${getComponentImportStatement({
25
24
  file,
@@ -37,17 +36,7 @@ ${getComponentImportStatement({
37
36
  // Inject image interception code at module level to run before any rendering
38
37
  ${getImageReplacementCode()}
39
38
 
40
-
41
- const NextHead = () => {
42
- return (
43
- <Head>
44
- <title>${fileName}: ${escapeQuotes(scenario.name)} CodeYam Demo v${VERSION}</title>
45
- <meta name="description" content="This is a demo of the ${fileName} component" />
46
- </Head>
47
- )
48
- };
49
-
50
- function Scenario({ name, width, children }: { name: string, width: string, children: ReactNode }) {
39
+ function Scenario({ name, width, height, children }: { name: string, width: string, height: string, children: ReactNode }) {
51
40
 
52
41
  useEffect(() => {
53
42
  if (typeof window === 'undefined') return;
@@ -68,14 +57,14 @@ function Scenario({ name, width, children }: { name: string, width: string, chil
68
57
  return Math.max(100, bodyHeight, htmlHeight, scrollHeight);
69
58
  }
70
59
 
71
- const height = calculateHeight();
72
- parent.postMessage({ type: 'codeyam-resize', name, height }, '*');
60
+ const calculatedHeight = calculateHeight();
61
+ parent.postMessage({ type: 'codeyam-resize', name, height: calculatedHeight }, '*');
73
62
 
74
63
  const eventListener = (event) => {
75
64
  if (event.data.name === name) {
76
65
  if (event.data.type === 'codeyam-respond') {
77
- const height = calculateHeight();
78
- parent.postMessage({ type: 'codeyam-resize', name, height }, '*');
66
+ const calculatedHeight = calculateHeight();
67
+ parent.postMessage({ type: 'codeyam-resize', name, height: calculatedHeight }, '*');
79
68
  }
80
69
  }
81
70
  };
@@ -87,9 +76,9 @@ function Scenario({ name, width, children }: { name: string, width: string, chil
87
76
  return (
88
77
  <div className='w-full flex items-center justify-center'>
89
78
  <div id='component' style={{
90
- width: width,
91
- minWidth: width,
92
- maxWidth: width,
79
+ minWidth: width !== 'auto' ? \`min(\${width}, 100vw)\` : undefined,
80
+ height: height !== 'auto' ? height : undefined,
81
+ minHeight: height !== 'auto' ? height : undefined,
93
82
  display: 'block',
94
83
  padding: '6px'
95
84
  }}>
@@ -100,13 +89,31 @@ function Scenario({ name, width, children }: { name: string, width: string, chil
100
89
  }
101
90
 
102
91
  export default function Index() {
92
+ const [searchParams] = useState(() =>
93
+ typeof window !== 'undefined'
94
+ ? new URLSearchParams(window.location.search)
95
+ : new URLSearchParams()
96
+ );
97
+ const widthOverride = searchParams.get('width');
98
+ const heightOverride = searchParams.get('height') || 'auto';
99
+
100
+ useEffect(() => {
101
+ document.title = "${fileName}: ${escapeQuotes(scenario.name)} CodeYam Demo v${VERSION}";
102
+ let metaDesc = document.querySelector('meta[name="description"]');
103
+ if (!metaDesc) {
104
+ metaDesc = document.createElement('meta');
105
+ metaDesc.setAttribute('name', 'description');
106
+ document.head.appendChild(metaDesc);
107
+ }
108
+ metaDesc.setAttribute('content', "This is a demo of the ${fileName} component");
109
+ }, []);
110
+
103
111
  ${getIFrameMessageListenerCode({ scenarioName: scenario.name })}
104
112
  ${getNextJsErrorClosingCode()}
105
113
 
106
114
  return (
107
115
  <div className='flex flex-col justify-center items-center h-screen' data-version={version}>
108
- <NextHead />
109
- ${scenarioComponent(entity, analysis, scenario)}
116
+ ${scenarioComponent(entity, analysis, scenario, { useOverrides: true })}
110
117
  </div>
111
118
  );
112
119
  }`;
@@ -1 +1 @@
1
- {"version":3,"file":"componentScenarioPageNext.js","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,2BAA2B,MAAM,gCAAgC,CAAC;AACzE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GASjB;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO;;;;;;;;;;;;EAYP,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,8BAA8B,gBAAgB,aAAa,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;EAC5H,2BAA2B,CAAC;QAC5B,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,WAAW,EACT,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC7D,MAAM,CAAC,UAAU,KAAK,SAAS;KAClC,CAAC;;;EAGA,uBAAuB,EAAE;;;;;;eAMZ,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,OAAO;gEAChB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA0DpE,4BAA4B,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7D,yBAAyB,EAAE;;;;;QAKvB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;;;EAGnD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"componentScenarioPageNext.js","sourceRoot":"","sources":["../../../../../../generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,2BAA2B,MAAM,gCAAgC,CAAC;AACzE,OAAO,iBAAiB,MAAM,sBAAsB,CAAC;AACrD,OAAO,YAAY,MAAM,iBAAiB,CAAC;AAC3C,OAAO,4BAA4B,MAAM,gCAAgC,CAAC;AAC1E,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAChE,OAAO,yBAAyB,MAAM,6BAA6B,CAAC;AAEpE,MAAM,OAAO,GAAG,OAAO,CAAC;AAExB,MAAM,CAAC,OAAO,UAAU,yBAAyB,CAAC,EAChD,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,WAAW,EACX,OAAO,EACP,QAAQ,EACR,gBAAgB,GASjB;IACC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IAEzC,OAAO;;;;;;;;;;;EAWP,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,CAAC,IAAI,8BAA8B,gBAAgB,aAAa,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI;EAC5H,2BAA2B,CAAC;QAC5B,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,WAAW;QACX,OAAO;QACP,QAAQ;QACR,OAAO,EAAE,IAAI;QACb,WAAW,EACT,MAAM,CAAC,IAAI,KAAK,SAAS;YACzB,CAAC,MAAM,CAAC,QAAQ,CAAC,WAAW,IAAI,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC;YAC7D,MAAM,CAAC,UAAU,KAAK,SAAS;KAClC,CAAC;;;EAGA,uBAAuB,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAgEH,QAAQ,KAAK,YAAY,CAAC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,OAAO;;;;;;;8DAO3B,QAAQ;;;IAGlE,4BAA4B,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC7D,yBAAyB,EAAE;;;;QAIvB,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC;;;EAG3E,CAAC;AACH,CAAC"}