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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (385) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +7 -6
  4. package/analyzer-template/packages/ai/package.json +1 -1
  5. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +2 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +22 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +23 -1
  8. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +401 -106
  9. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +60 -0
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +661 -50
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +14 -2
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +715 -0
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +123 -1
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +23 -1
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +34 -1
  18. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +236 -24
  19. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +18 -1
  20. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +37 -4
  21. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +5 -0
  22. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +213 -12
  23. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +11 -15
  24. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +114 -11
  25. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  26. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  27. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
  28. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +42 -2
  29. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +38 -2
  30. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  31. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +5 -0
  32. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
  33. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +339 -145
  34. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +20 -0
  35. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +8 -1
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +158 -0
  37. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +107 -18
  38. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  39. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +223 -103
  40. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +10 -5
  41. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +172 -83
  42. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -5
  43. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +97 -27
  44. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  45. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  46. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  47. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  48. package/analyzer-template/packages/aws/package.json +1 -1
  49. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  50. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  51. package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
  52. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  53. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +20 -9
  54. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +3 -2
  55. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
  56. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  57. package/analyzer-template/packages/generate/src/lib/getComponentScenarioPath.ts +8 -3
  58. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
  59. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
  60. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  61. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +8 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +14 -7
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  70. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
  71. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  73. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  74. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  77. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js +7 -3
  80. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/types/index.d.ts +4 -3
  82. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/types/index.js +1 -0
  84. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +31 -1
  86. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  87. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +51 -1
  88. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  89. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +21 -1
  90. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  91. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  92. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  93. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  95. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  97. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  98. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  99. package/analyzer-template/packages/types/index.ts +8 -0
  100. package/analyzer-template/packages/types/src/types/Analysis.ts +32 -1
  101. package/analyzer-template/packages/types/src/types/Scenario.ts +75 -6
  102. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +49 -0
  103. package/analyzer-template/packages/ui-components/package.json +4 -4
  104. package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
  105. package/analyzer-template/packages/utils/dist/types/index.d.ts +4 -3
  106. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  107. package/analyzer-template/packages/utils/dist/types/index.js +1 -0
  108. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  109. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +31 -1
  110. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  111. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +51 -1
  112. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  113. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +21 -1
  114. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  115. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +48 -0
  116. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  122. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  123. package/analyzer-template/packages/utils/src/lib/applyUniversalMocks.ts +28 -2
  124. package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
  125. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  126. package/analyzer-template/playwright/takeScreenshot.ts +9 -7
  127. package/analyzer-template/project/TESTING.md +83 -0
  128. package/analyzer-template/project/constructMockCode.ts +151 -30
  129. package/analyzer-template/project/loadReadyToBeCaptured.ts +17 -1
  130. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +16 -9
  131. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +77 -37
  132. package/analyzer-template/project/reconcileMockDataKeys.ts +104 -3
  133. package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
  134. package/analyzer-template/project/serverOnlyModules.ts +288 -0
  135. package/analyzer-template/project/start.ts +10 -0
  136. package/analyzer-template/project/startScenarioCapture.ts +73 -41
  137. package/analyzer-template/project/writeMockDataTsx.ts +103 -40
  138. package/analyzer-template/project/writeScenarioComponents.ts +1162 -203
  139. package/analyzer-template/project/writeSimpleRoot.ts +26 -4
  140. package/analyzer-template/project/writeUniversalMocks.ts +32 -11
  141. package/background/src/lib/virtualized/project/constructMockCode.js +132 -25
  142. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  143. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +15 -1
  144. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  145. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +11 -6
  146. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  147. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +67 -32
  148. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  149. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +65 -4
  150. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  151. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
  152. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  153. package/background/src/lib/virtualized/project/serverOnlyModules.js +235 -0
  154. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -0
  155. package/background/src/lib/virtualized/project/start.js +6 -0
  156. package/background/src/lib/virtualized/project/start.js.map +1 -1
  157. package/background/src/lib/virtualized/project/startScenarioCapture.js +54 -31
  158. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  159. package/background/src/lib/virtualized/project/writeMockDataTsx.js +87 -34
  160. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  161. package/background/src/lib/virtualized/project/writeScenarioComponents.js +852 -133
  162. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  163. package/background/src/lib/virtualized/project/writeSimpleRoot.js +25 -2
  164. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  165. package/background/src/lib/virtualized/project/writeUniversalMocks.js +27 -12
  166. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  167. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +7 -0
  168. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +1 -0
  169. package/codeyam-cli/src/cli.js +2 -0
  170. package/codeyam-cli/src/cli.js.map +1 -1
  171. package/codeyam-cli/src/commands/debug.js +14 -2
  172. package/codeyam-cli/src/commands/debug.js.map +1 -1
  173. package/codeyam-cli/src/commands/recapture.js +215 -0
  174. package/codeyam-cli/src/commands/recapture.js.map +1 -0
  175. package/codeyam-cli/src/commands/report.js +26 -23
  176. package/codeyam-cli/src/commands/report.js.map +1 -1
  177. package/codeyam-cli/src/utils/backgroundServer.js +2 -2
  178. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  179. package/codeyam-cli/src/utils/generateReport.js +252 -106
  180. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  181. package/codeyam-cli/src/utils/install-skills.js +2 -7
  182. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  183. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
  184. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  185. package/codeyam-cli/src/utils/queue/job.js +140 -16
  186. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  187. package/codeyam-cli/src/utils/queue/manager.js +19 -7
  188. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  189. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  190. package/codeyam-cli/src/webserver/app/lib/database.js +47 -0
  191. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  192. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  193. package/codeyam-cli/src/webserver/backgroundServer.js +5 -10
  194. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  195. package/codeyam-cli/src/webserver/bootstrap.js +9 -0
  196. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +1 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DQeyk25_.js → EntityTypeBadge-CzGX-miz.js} +1 -1
  199. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +41 -0
  200. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +25 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CBQPrpT0.js +3 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-D1CdlbrV.js +6 -0
  203. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-wDPcZNKx.js +3 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +11 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BfmDgXxG.js +1 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +15 -0
  207. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-ayCJdUAc.js → TruncatedFilePath-6J7zDUD5.js} +1 -1
  208. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +11 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +32 -0
  210. package/codeyam-cli/src/webserver/build/client/assets/api.link-scenario-value-l0sNRNKZ.js +1 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/api.update-key-attributes-l0sNRNKZ.js +1 -0
  212. package/codeyam-cli/src/webserver/build/client/assets/api.update-valid-values-l0sNRNKZ.js +1 -0
  213. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BYimnrHg.js +6 -0
  214. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +51 -0
  215. package/codeyam-cli/src/webserver/build/client/assets/circle-check-CaVsIRxt.js +6 -0
  216. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CgUsG7ib.js +21 -0
  217. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +1 -0
  218. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-FHOVOgFN.js → entity._sha._-zUEpfPsu.js} +22 -15
  220. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +1 -0
  221. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +1 -0
  222. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-CfLCUi9S.js +5 -0
  223. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DKJyZfAY.js +29 -0
  224. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DAtOlaWE.js +1 -0
  225. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +1 -0
  226. package/codeyam-cli/src/webserver/build/client/assets/git-D62Lxxmv.js +15 -0
  227. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +1 -0
  228. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  229. package/codeyam-cli/src/webserver/build/client/assets/index-BosqDOlH.js +3 -0
  230. package/codeyam-cli/src/webserver/build/client/assets/index-CzNNiTkw.js +9 -0
  231. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +1 -0
  232. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-CNp9QFCX.js +6 -0
  233. package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +1 -0
  234. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  235. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +56 -0
  236. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  237. package/codeyam-cli/src/webserver/build/client/assets/search-DDGjYAMJ.js +6 -0
  238. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +1 -0
  239. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +1 -0
  240. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CBc5dE1s.js +6 -0
  241. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +1 -0
  242. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +1 -0
  243. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-DOGXmJcI.js → useLastLogLine-BqPPNjAl.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{useToast-C07gRg7Z.js → useToast-DWHcCcl1.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +1 -0
  247. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +175 -0
  248. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  249. package/codeyam-cli/src/webserver/build-info.json +5 -5
  250. package/codeyam-cli/src/webserver/devServer.js +1 -3
  251. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  252. package/codeyam-cli/templates/debug-codeyam.md +620 -0
  253. package/package.json +14 -14
  254. package/packages/ai/src/lib/analyzeScope.js +2 -0
  255. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  256. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +16 -0
  257. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  258. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +16 -0
  259. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  260. package/packages/ai/src/lib/astScopes/processExpression.js +305 -88
  261. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  262. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +523 -42
  263. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  264. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +12 -2
  265. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  266. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +454 -0
  267. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  268. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +103 -1
  269. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  270. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
  271. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  272. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +19 -1
  273. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  274. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
  275. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  276. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +28 -2
  277. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  278. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +179 -17
  279. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +1 -1
  280. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +6 -0
  281. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +1 -1
  282. package/packages/ai/src/lib/generateChangesEntityScenarios.js +37 -4
  283. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  284. package/packages/ai/src/lib/generateEntityDataStructure.js +4 -0
  285. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  286. package/packages/ai/src/lib/generateEntityKeyAttributes.js +176 -9
  287. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +1 -1
  288. package/packages/ai/src/lib/generateEntityScenarioData.js +11 -15
  289. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  290. package/packages/ai/src/lib/generateEntityScenarios.js +105 -9
  291. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  292. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  293. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  294. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  295. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  296. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
  297. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  298. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +38 -2
  299. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  300. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +38 -2
  301. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  302. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  303. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  304. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  305. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
  306. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  307. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +258 -110
  308. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  309. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +18 -0
  310. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  311. package/packages/analyze/src/lib/files/getImportedExports.js +6 -1
  312. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  313. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +125 -0
  314. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  315. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +74 -19
  316. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  317. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  318. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  319. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +175 -58
  320. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  321. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +10 -5
  322. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +1 -1
  323. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +127 -69
  324. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  325. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -5
  326. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  327. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +74 -23
  328. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  329. package/packages/database/src/lib/kysely/db.js +2 -2
  330. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  331. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  332. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +4 -2
  333. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  334. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  335. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  336. package/packages/generate/src/lib/deepMerge.js +27 -1
  337. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  338. package/packages/generate/src/lib/getComponentScenarioPath.js +7 -3
  339. package/packages/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  340. package/packages/types/index.js +1 -0
  341. package/packages/types/index.js.map +1 -1
  342. package/packages/types/src/types/Scenario.js +21 -1
  343. package/packages/types/src/types/Scenario.js.map +1 -1
  344. package/packages/utils/src/lib/applyUniversalMocks.js +26 -2
  345. package/packages/utils/src/lib/applyUniversalMocks.js.map +1 -1
  346. package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
  347. package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  348. package/scripts/finalize-analyzer.cjs +3 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-CWKV2GEz.js +0 -1
  350. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-D2hFeDeg.js +0 -1
  351. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-C8K-4kKP.js +0 -26
  352. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DgXLv61M.js +0 -3
  353. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-DFdLQbPS.js +0 -3
  354. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DlRDjT4h.js +0 -1
  355. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-7UkVL-UI.js +0 -1
  356. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-XjtsGuPo.js +0 -5
  357. package/codeyam-cli/src/webserver/build/client/assets/_index-D2eJjWLf.js +0 -1
  358. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-w6sbwlOd.js +0 -7
  359. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-BBNQ8hup.js +0 -1
  360. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-Bex4RrGs.js +0 -26
  361. package/codeyam-cli/src/webserver/build/client/assets/circle-check-cdhjVtom.js +0 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DkgmwwRC.js +0 -1
  363. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CwLmCS0J.js +0 -1
  364. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-YZ-kM3ZG.js +0 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BeQlz94_.js +0 -5
  366. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DN2XXM7Z.js +0 -5
  367. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-CUeAIQNI.js +0 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/files-ccMQfhGf.js +0 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/git-JmESAHx5.js +0 -12
  370. package/codeyam-cli/src/webserver/build/client/assets/globals-CO-U8Bpo.css +0 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  372. package/codeyam-cli/src/webserver/build/client/assets/index-DsL9BiOc.js +0 -8
  373. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-COYCR2oZ.js +0 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/manifest-90adba57.js +0 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/root-DfbVEEjF.js +0 -16
  376. package/codeyam-cli/src/webserver/build/client/assets/search-DvK9iMBu.js +0 -1
  377. package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/settings-9LTbit4Z.js +0 -1
  379. package/codeyam-cli/src/webserver/build/client/assets/simulations-BrxN5ZtV.js +0 -1
  380. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-Iv0p8T-1.js +0 -1
  381. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BWmSRPH6.js +0 -1
  382. package/codeyam-cli/src/webserver/build/server/assets/index-CE_1qXCG.js +0 -1
  383. package/codeyam-cli/src/webserver/build/server/assets/server-build-BY_VDhiD.js +0 -166
  384. package/codeyam-cli/templates/debug-command.md +0 -141
  385. /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
@@ -0,0 +1 @@
1
+ import{w as K,u as Y,a as q,b as A,r as l,j as e}from"./chunk-JMJ3UQ3L-BambyYE_.js";import{u as G}from"./useInteractiveMode-Dk_FQqWJ.js";import{u as J}from"./useLastLogLine-BqPPNjAl.js";import{u as O,V as Q,S as X}from"./useCustomSizes-BMIGFP-m.js";import{c as Z}from"./cy-logo-cli-CKnwPCDr.js";const b=[{name:"Mobile",width:375,height:667},{name:"Tablet",width:768,height:1024},{name:"Laptop",width:1024,height:768},{name:"Desktop",width:1440,height:900}],le=K(function(){const{entity:a,scenario:s,analysis:r,projectSlug:m}=Y(),u=q();A();const[te,S]=l.useState(null),[M,k]=l.useState(1440),[i,g]=l.useState({name:"Desktop",width:1440,height:900}),[P,v]=l.useState(!1),[f,z]=l.useState(null),{customSizes:y,addCustomSize:_}=O(m),h=l.useMemo(()=>[...b,...y],[y]),{interactiveServerUrl:p,isStarting:w,isLoading:x,showIframe:L,iframeKey:B,onIframeLoad:D}=G({analysisId:r==null?void 0:r.id,scenarioId:s==null?void 0:s.id,scenarioName:s==null?void 0:s.name,projectSlug:m,enabled:!0}),{lastLine:C}=J(m,w||x),W=()=>{u(`/entity/${a.sha}`)},E=(t,n)=>{k(t);const o=h.find($=>$.width===t&&$.height===n);S(o||null),g({name:(o==null?void 0:o.name)||"Custom",width:t,height:n})},I=t=>{S(t),k(t.width),g({name:t.name,width:t.width,height:t.height})},U=t=>{_(t,i.width,i.height??900),v(!1),g(n=>({...n,name:t}))},c=(r==null?void 0:r.scenarios)||[],d=c.findIndex(t=>t.id===(s==null?void 0:s.id)),V=d+1,R=c.length,j=d>0,N=d<c.length-1,H=()=>{if(j){const t=c[d-1],n=encodeURIComponent(`/entity/${a.sha}/scenarios/${t.id}/fullscreen`);u(`/entity/${a.sha}/scenarios/${t.id}/fullscreen?from=${n}`)}},T=()=>{if(N){const t=c[d+1],n=encodeURIComponent(`/entity/${a.sha}/scenarios/${t.id}/fullscreen`);u(`/entity/${a.sha}/scenarios/${t.id}/fullscreen?from=${n}`)}},F=w||x||!L;return e.jsxs("div",{className:"fixed inset-0 bg-[#2d2d2d] flex flex-col",children:[e.jsxs("div",{className:"bg-[#3d3d3d] h-12 flex items-center px-4 gap-4 shrink-0 z-20",children:[e.jsxs("div",{className:"flex items-center gap-3 flex-1 min-w-0",children:[e.jsx("img",{src:Z,alt:"CodeYam",className:"h-6 brightness-0 invert"}),e.jsx("span",{className:"text-white font-medium text-sm whitespace-nowrap",children:a.name}),e.jsxs("div",{className:"flex items-center gap-2 shrink-0",children:[e.jsx("button",{onClick:H,disabled:!j,className:`${j?"text-white hover:text-gray-300":"text-gray-600 cursor-not-allowed"} transition-colors`,"aria-label":"Previous scenario",children:e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:e.jsx("path",{d:"M12.5 15L7.5 10L12.5 5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})}),e.jsxs("span",{className:"text-gray-400 text-sm",children:[V,"/",R]}),e.jsx("button",{onClick:T,disabled:!N,className:`${N?"text-white hover:text-gray-300":"text-gray-600 cursor-not-allowed"} transition-colors`,"aria-label":"Next scenario",children:e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:e.jsx("path",{d:"M7.5 15L12.5 10L7.5 5",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})})})]}),e.jsxs("div",{className:"flex items-center gap-2 ml-2 min-w-0",children:[e.jsx("span",{className:"text-white font-semibold text-xs whitespace-nowrap shrink-0",children:s==null?void 0:s.name}),(s==null?void 0:s.description)&&e.jsxs("div",{className:"relative group min-w-0",children:[e.jsx("span",{className:"text-gray-400 text-xs truncate block",children:s.description}),e.jsx("div",{className:"absolute left-0 top-full mt-1 hidden group-hover:block z-50 bg-black text-white text-xs px-3 py-2 rounded shadow-lg max-w-md",children:s.description})]})]})]}),e.jsx("button",{onClick:W,className:"text-white hover:text-gray-300 transition-colors ml-4","aria-label":"Close fullscreen",children:e.jsx("svg",{width:"20",height:"20",viewBox:"0 0 20 20",fill:"none",children:e.jsx("path",{d:"M15 5L5 15M5 5L15 15",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round"})})})]}),e.jsxs("div",{className:"bg-[#034456] border-b border-[rgba(0,92,117,0.25)] shrink-0 z-10 h-6 flex items-center justify-center relative",children:[e.jsx("div",{className:"absolute inset-0 flex justify-center",children:e.jsx("div",{style:{maxWidth:`${b[b.length-1].width}px`,width:"100%"},children:e.jsx(Q,{currentViewportWidth:M,currentPresetName:i.name,onDevicePresetClick:I,devicePresets:h,hideLabel:!0,onHoverChange:z})})}),e.jsxs("div",{className:"relative z-10 flex items-center gap-2",children:[e.jsxs("div",{className:"relative w-28 h-5",children:[e.jsxs("div",{className:"absolute inset-0 bg-[#007392] text-white text-xs px-2 rounded flex items-center justify-between pointer-events-none",children:[e.jsx("span",{className:"leading-none",children:(f==null?void 0:f.name)||i.name}),e.jsx("svg",{width:"10",height:"10",viewBox:"0 0 12 12",fill:"none",className:"shrink-0",children:e.jsx("path",{d:"M3 4.5L6 7.5L9 4.5",stroke:"currentColor",strokeWidth:"1.5",strokeLinecap:"round",strokeLinejoin:"round"})})]}),e.jsxs("select",{value:i.name,onChange:t=>{const n=h.find(o=>o.name===t.target.value);n&&I(n)},className:"relative w-full h-full opacity-0 cursor-pointer",children:[h.map(t=>e.jsx("option",{value:t.name,children:t.name},t.name)),i.name==="Custom"&&e.jsx("option",{value:"Custom",children:"Custom"})]})]}),e.jsx("input",{type:"number",value:i.width,onChange:t=>{const n=parseInt(t.target.value,10);!isNaN(n)&&n>0&&E(n,i.height??900)},className:"bg-white text-gray-900 text-xs px-1 rounded border border-gray-300 outline-none w-16 text-center h-5 leading-none",min:"200",max:"3840"}),e.jsx("span",{className:"text-gray-400 text-xs h-5 flex items-center leading-none",children:"×"}),e.jsx("span",{className:"bg-gray-100 text-gray-600 text-xs px-1 rounded w-14 text-center h-5 flex items-center justify-center leading-none",children:i.height??900}),i.name==="Custom"&&e.jsx("button",{onClick:()=>v(!0),className:"bg-[#007392] text-white text-xs px-2 rounded h-5 flex items-center leading-none hover:bg-[#005c75] transition-colors",children:"Save"})]})]}),e.jsx("div",{className:"flex-1 flex items-center justify-center overflow-auto p-8",children:p?e.jsxs("div",{className:"relative bg-white shadow-2xl w-full h-full",style:{maxWidth:`${i.width}px`,maxHeight:`${i.height}px`},children:[F&&e.jsx("div",{className:"absolute inset-0 flex items-center justify-center bg-white z-10",children:e.jsxs("div",{className:"flex flex-col items-center gap-3",children:[e.jsx("div",{className:"w-12 h-12",children:e.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:e.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),e.jsx("p",{className:"text-base font-semibold text-[#005c75]",children:w&&!p?"Starting interactive mode...":"Loading interactive preview..."})]})}),e.jsx("iframe",{src:p,className:"w-full h-full border-none",title:`Interactive preview: ${s==null?void 0:s.name}`,onLoad:D,style:{opacity:L?1:0}},B)]}):e.jsxs("div",{className:"flex flex-col items-center gap-6 max-w-2xl",children:[e.jsx("div",{className:"w-12 h-12",children:e.jsx("svg",{className:"animate-spin",viewBox:"0 0 50 50",children:e.jsx("circle",{cx:"25",cy:"25",r:"20",fill:"none",stroke:"#005c75",strokeWidth:"4",strokeDasharray:"31.4 31.4",strokeLinecap:"round"})})}),e.jsx("h2",{className:"text-2xl font-semibold text-white leading-[30px] m-0 font-['IBM_Plex_Sans']",children:x?"Interactive mode ready: launching...":"Starting Interactive Mode..."}),C&&e.jsx("p",{className:"text-xs font-mono text-gray-400 text-center leading-5 m-0 max-w-xl font-['IBM_Plex_Mono']",children:C}),e.jsx("p",{className:"text-xs text-gray-500 text-center leading-5 m-0 font-['IBM_Plex_Mono']",children:x?"Loading the page in the background...":"Setting up the dev server for this scenario..."})]})}),P&&e.jsx(X,{width:i.width,height:i.height??900,onSave:U,onCancel:()=>v(!1)})]})});export{le as default};
@@ -0,0 +1 @@
1
+ import{r as d,j as e,w as F,u as G,a as _,L as H}from"./chunk-JMJ3UQ3L-BambyYE_.js";import{W as Y,u as z,I as B}from"./InteractivePreview-D-9pXIaY.js";import{u as Q}from"./useInteractiveMode-Dk_FQqWJ.js";import{c as X}from"./keyAttributeCoverage-CTlFMihX.js";import"./preload-helper-ckwbz45p.js";import"./useLastLogLine-BqPPNjAl.js";function Z(t,r=50){if(t===null)return"null";if(t===void 0)return"undefined";let o;if(typeof t=="object")try{o=JSON.stringify(t)}catch{o="[complex object]"}else o=String(t);return o.length>r?o.slice(0,r)+"...":o}function ee({keyAttributes:t,selections:r,onChange:o,disabled:m=!1}){const[x,f]=d.useState({}),S=d.useCallback(a=>r.some(i=>i.path===a),[r]),p=d.useCallback(a=>r.find(i=>i.path===a),[r]),P=d.useCallback(a=>{if(S(a.path))o(r.filter(i=>i.path!==a.path));else{const s=a.validValues.find(c=>c.usedInScenarios.length===0)||a.validValues[0];o(s?[...r,{path:a.path,value:s.value,valueOptionIndex:s.index,isCustom:!1}]:[...r,{path:a.path,value:"",isCustom:!0}])}},[r,o,S]),A=d.useCallback((a,i)=>{const s=t.find(n=>n.path===a);if(!s)return;const c=r.map(n=>{if(n.path!==a)return n;if(i==="custom")return{...n,value:x[a]||"",valueOptionIndex:void 0,isCustom:!0};const l=parseInt(i,10),u=s.validValues[l];return u?{...n,value:u.value,valueOptionIndex:l,isCustom:!1}:n});o(c)},[r,o,t,x]),j=d.useCallback((a,i)=>{f(c=>({...c,[a]:i}));const s=r.map(c=>c.path!==a||!c.isCustom?c:{...c,value:i});o(s)},[r,o]);return t.length===0?e.jsx("div",{className:"text-sm text-gray-500 py-2",children:"No key attributes found."}):e.jsx("div",{className:"space-y-3",children:t.map(a=>{const i=S(a.path),s=p(a.path),c=a.validValues.filter(n=>n.usedInScenarios.length===0).length;return e.jsxs("div",{className:"border-b border-gray-100 pb-3 last:border-0 last:pb-0",children:[e.jsxs("label",{className:"flex items-start gap-2 cursor-pointer",children:[e.jsx("input",{type:"checkbox",checked:i,onChange:()=>P(a),disabled:m,className:"mt-0.5 h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500"}),e.jsxs("div",{className:"flex-1 min-w-0",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[e.jsx("span",{className:"font-mono text-sm font-medium text-gray-900",children:a.localVariable}),c>0&&e.jsxs("span",{className:"text-xs px-1.5 py-0.5 bg-amber-100 text-amber-700 rounded",children:[c," uncovered"]})]}),a.description&&e.jsx("p",{className:"text-xs text-gray-500 mt-0.5 m-0",children:a.description})]})]}),i&&e.jsxs("div",{className:"ml-6 mt-2",children:[e.jsxs("select",{value:s!=null&&s.isCustom?"custom":String((s==null?void 0:s.valueOptionIndex)??0),onChange:n=>A(a.path,n.target.value),disabled:m,className:"w-full text-sm border border-gray-300 rounded px-2 py-1.5 focus:border-blue-400 focus:outline-none focus:ring-1 focus:ring-blue-400",children:[a.validValues.map((n,l)=>{const u=n.usedInScenarios.length>0;return e.jsxs("option",{value:l,children:[Z(n.value),!u&&" (uncovered)"]},l)}),e.jsx("option",{value:"custom",children:"Custom value..."})]}),(s==null?void 0:s.isCustom)&&e.jsx("input",{type:"text",placeholder:"Enter custom value",value:x[a.path]||(s==null?void 0:s.value)||"",onChange:n=>j(a.path,n.target.value),disabled:m,className:"w-full mt-2 text-sm border border-gray-300 rounded px-2 py-1.5 focus:border-blue-400 focus:outline-none focus:ring-1 focus:ring-blue-400"}),a.dependencies&&a.dependencies.length>0&&e.jsxs("div",{className:"mt-2 p-2 bg-amber-50 rounded text-xs",children:[e.jsx("span",{className:"text-amber-700 font-medium",children:"Requires:"}),e.jsx("ul",{className:"m-0 mt-1 pl-4 space-y-0.5",children:a.dependencies.map((n,l)=>e.jsxs("li",{className:"text-amber-600",children:[e.jsx("code",{className:"bg-amber-100 px-1 rounded",children:n.path})," = ",e.jsx("code",{className:"bg-amber-100 px-1 rounded",children:String(n.requiredValue)})]},l))})]})]})]},a.path)})})}const ce=({data:t})=>[{title:t!=null&&t.entity?`Create Scenario - ${t.entity.name} - CodeYam`:"Create Scenario - CodeYam"},{name:"description",content:"Create a new scenario"}];function te(){const{analysis:t,defaultScenario:r,entity:o,entitySha:m,projectSlug:x}=G(),f=_(),{iframeRef:S}=z(),[p,P]=d.useState(""),[A,j]=d.useState(!1),[a,i]=d.useState(!1),[s,c]=d.useState(null),[n,l]=d.useState(null),[u,D]=d.useState([]),E=d.useMemo(()=>{var v;return!((v=t==null?void 0:t.metadata)!=null&&v.keyAttributes)||!(t!=null&&t.scenarios)?[]:X(t.metadata.keyAttributes,t.scenarios).keyAttributes},[t]),{interactiveServerUrl:w,isStarting:L,isLoading:W,showIframe:$,iframeKey:J,onIframeLoad:K}=Q({analysisId:t==null?void 0:t.id,scenarioId:r==null?void 0:r.id,scenarioName:r==null?void 0:r.name,projectSlug:x,enabled:!0}),M=d.useCallback(async()=>{var b,v,O,R;if(!p.trim()&&u.length===0){c("Please describe how you want to change the scenario or select key attributes");return}j(!0),c(null),l("Generating scenario with AI...");try{const h=await fetch("/api/generate-scenario-data",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:p,existingScenarios:t.scenarios,scenariosDataStructure:(b=t.metadata)==null?void 0:b.scenariosDataStructure,keyAttributeSelections:u.length>0?u:void 0})}),C=await h.json();if(!h.ok||!C.success)throw new Error(C.error||"Failed to generate scenario data");console.log("[CreateScenario] AI generated scenario:",C.data);const g=C.data;if(!g.name||!g.data)throw new Error("AI response missing required fields (name or data)");l("Saving new scenario..."),i(!0);const U={name:g.name,description:g.description||p,metadata:{data:g.data,interactiveExamplePath:(v=r.metadata)==null?void 0:v.interactiveExamplePath}},q=[...t.scenarios||[],U],T=await fetch("/api/save-scenarios",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({analysis:t,scenarios:q})}),I=await T.json();if(!T.ok||!I.success)throw new Error(I.error||"Failed to save scenario");console.log("[CreateScenario] Scenario saved:",I);const y=(R=(O=I.analysis)==null?void 0:O.scenarios)==null?void 0:R.find(V=>V.name===g.name);if(!(y!=null&&y.id)){console.warn("[CreateScenario] Could not find saved scenario ID, navigating to entity page"),l("Scenario created! Redirecting..."),setTimeout(()=>void f(`/entity/${m}`),1e3);return}if(w){l("Capturing screenshot...");const V=await fetch("/api/capture-screenshot",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({serverUrl:w,scenarioId:y.id,projectId:t.projectId,viewportWidth:1440})}),k=await V.json();!V.ok||!k.success?(console.error("[CreateScenario] Capture failed:",k),l("Scenario created! (Screenshot capture failed)")):l("Scenario created and captured!")}else l("Scenario created!");setTimeout(()=>{f(`/entity/${m}/scenarios/${y.id}`)},1e3)}catch(h){console.error("[CreateScenario] Error:",h),c(h instanceof Error?h.message:String(h)),l(null)}finally{j(!1),i(!1)}},[p,u,t,r,m,w,f]),N=A||a;return e.jsxs("div",{className:"h-screen bg-gray-50 flex flex-col",children:[e.jsxs("header",{className:"bg-white border-b border-gray-200 px-8 py-6 shrink-0",children:[e.jsx("div",{className:"mb-4",children:e.jsxs(H,{to:`/entity/${m}`,className:"text-blue-600 no-underline text-sm font-medium transition-colors hover:text-blue-700 hover:underline",children:["← Back to ",o==null?void 0:o.name]})}),e.jsx("h1",{className:"text-[32px] font-bold text-gray-900 m-0 mb-3",children:"Create New Scenario"}),e.jsx("p",{className:"text-gray-600 text-[15px] leading-relaxed m-0",children:"Create a new scenario based on the Default Scenario"})]}),e.jsxs("div",{className:"flex flex-1 gap-0 min-h-0",children:[e.jsxs("aside",{className:"w-[400px] bg-white border-r border-gray-200 overflow-y-auto shrink-0 p-6 flex flex-col",children:[e.jsxs("div",{className:"mb-6",children:[e.jsx("h2",{className:"text-lg font-semibold text-gray-900 mb-2",children:"Default Scenario Preview"}),e.jsx("p",{className:"text-sm text-gray-600 leading-relaxed",children:"The preview on the right shows the Default Scenario. Select key attributes and/or describe how you'd like to change it."})]}),E.length>0&&e.jsxs("details",{className:"mb-4 border border-gray-200 rounded-lg",children:[e.jsxs("summary",{className:"px-3 py-2 text-sm font-medium text-gray-700 cursor-pointer hover:bg-gray-50 rounded-lg",children:["Select Key Attributes"," ",u.length>0&&e.jsxs("span",{className:"text-blue-600",children:["(",u.length," selected)"]})]}),e.jsx("div",{className:"px-3 pb-3 pt-1 border-t border-gray-100",children:e.jsx(ee,{keyAttributes:E,selections:u,onChange:D,disabled:N})})]}),e.jsxs("div",{className:"flex-1",children:[e.jsx("label",{htmlFor:"prompt",className:"block text-sm font-medium text-gray-700 mb-2",children:"How would you like to change it for your new scenario?"}),e.jsx("textarea",{id:"prompt",value:p,onChange:b=>P(b.target.value),placeholder:"e.g., Show an empty state with no items in the list, or Display an error message when the API fails, or Show a user with admin privileges...",className:"w-full h-40 px-3 py-2 border border-gray-300 rounded-md shadow-sm focus:ring-blue-500 focus:border-blue-500 text-sm resize-none",disabled:N})]}),e.jsxs("div",{className:"mt-6 space-y-3",children:[e.jsx("button",{onClick:()=>void M(),disabled:N||!p.trim()&&u.length===0,className:"w-full px-4 py-2 bg-[#005c75] text-white rounded-md text-sm font-medium hover:bg-[#004a5e] disabled:bg-gray-400 disabled:cursor-not-allowed transition-colors",children:N?"Creating...":"Create Scenario"}),n&&e.jsx("div",{className:"text-sm text-blue-600 bg-blue-50 px-3 py-2 rounded-md",children:n}),s&&e.jsx("div",{className:"text-sm text-red-600 bg-red-50 px-3 py-2 rounded-md",children:s})]})]}),e.jsx("main",{className:"flex-1 bg-gray-100 overflow-auto flex flex-col min-w-0",children:e.jsx(B,{scenarioId:r.id||r.name,scenarioName:r.name,iframeUrl:w,isStarting:L,isLoading:W,showIframe:$,iframeKey:J,onIframeLoad:K,projectSlug:x,defaultWidth:1440,defaultHeight:900})})]})]})}const le=F(function(){return e.jsx(Y,{children:e.jsx(te,{})})});export{le as default,ce as meta};
@@ -0,0 +1,5 @@
1
+ import{j as e,r as l,w as Y,u as K,a as Q,L as z}from"./chunk-JMJ3UQ3L-BambyYE_.js";import{W as X,u as Z,I as ee}from"./InteractivePreview-D-9pXIaY.js";import{u as te}from"./useInteractiveMode-Dk_FQqWJ.js";import"./preload-helper-ckwbz45p.js";import"./useLastLogLine-BqPPNjAl.js";function U(t,n,r){if(Array.isArray(t)){if(!isNaN(parseInt(n)))return t[parseInt(n)];for(const s of t)if(s.name===n||s.title===n||s.id===n)return s}return t[n]}function q(t){return t&&(typeof t=="object"||Array.isArray(t))}function re(t){return Array.isArray(t)?t.length:void 0}function ne(t){const{data:n,structure:r}=t;if(!(!n&&!r)){if(Array.isArray(r))return Array.isArray(n)?n.map((s,d)=>d.toString()):[];if(typeof r=="object")return[...new Set([...Object.keys(n),...Object.keys(r)])].sort((d,o)=>{const p=q(n[d]),c=q(n[o]);return p&&!c?1:!p&&c?-1:d.localeCompare(o)});if(typeof n=="object")return Object.keys(n).sort((d,o)=>d.localeCompare(o))}}function se({scenarioFormData:t,handleInputChange:n}){return e.jsxs("div",{className:"p-3 flex flex-col gap-3",children:[e.jsxs("div",{className:"grid w-full max-w-sm items-center gap-1.5",children:[e.jsx("label",{htmlFor:"name",className:"text-sm font-medium text-gray-700",children:"Name"}),e.jsx("input",{type:"text",id:"name",placeholder:"Name",name:"name",value:t.name,onChange:n,required:!0,className:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"})]}),e.jsxs("div",{className:"grid w-full gap-1.5 pt-2",children:[e.jsx("label",{htmlFor:"description",className:"text-sm font-medium text-gray-700",children:"Description"}),e.jsx("textarea",{placeholder:"Type your message here.",id:"description",name:"description",value:t.description,onChange:n,required:!0,className:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500 min-h-[100px]"})]}),e.jsx("button",{type:"submit",className:"mt-3 w-full px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 font-medium",children:"Save Name & Description"})]})}function ae({path:t,namedPath:n,isArray:r,count:s,onClick:d}){const o=l.useCallback(()=>{d&&d(t)},[d,t]);return e.jsxs("div",{className:"bg-blue-50 p-3 rounded-lg flex items-center justify-between cursor-pointer group hover:bg-blue-100 transition-colors border border-blue-200",onClick:o,children:[e.jsxs("div",{className:"flex items-center gap-3",children:[r&&e.jsx("svg",{className:"w-4 h-4 text-gray-500",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M4 6h16M4 12h16M4 18h16"})}),e.jsxs("div",{className:"capitalize font-medium text-gray-900",children:[n[n.length-1],s!==void 0&&` (${s})`]})]}),e.jsxs("div",{className:"flex items-center gap-3",children:[r&&e.jsx("svg",{className:"w-5 h-5 text-red-500 opacity-0 group-hover:opacity-100 transition-opacity",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 7l-.867 12.142A2 2 0 0116.138 21H7.862a2 2 0 01-1.995-1.858L5 7m5 4v6m4-6v6m1-10V4a1 1 0 00-1-1h-4a1 1 0 00-1 1v3M4 7h16"})}),e.jsx("svg",{className:"w-4 h-4 text-gray-400",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]})]})}var V=(t=>(t.STRING="string",t.NUMBER="number",t.BOOLEAN="boolean",t.UNION="union",t.OBJECT="object",t.ARRAY="array",t))(V||{});const oe=({name:t,value:n,options:r,onChange:s})=>{const d=l.useCallback(o=>{s({target:{name:t,value:o.target.value}})},[t,s]);return e.jsx("select",{name:t,value:n,onChange:d,className:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",children:r.map((o,p)=>e.jsx("option",{value:o.trim(),children:o.trim()},p))})},ie=({name:t,value:n,onChange:r})=>{const s=l.useCallback(d=>{const o=d.target.checked;r({target:{name:t,value:o}})},[t,r]);return e.jsx("label",{className:"flex items-center gap-2 cursor-pointer",children:e.jsx("input",{type:"checkbox",name:t,checked:n,onChange:s,className:`w-10 h-6 rounded-full appearance-none cursor-pointer transition-colors relative
2
+ bg-gray-300 checked:bg-blue-600
3
+ after:content-[''] after:absolute after:top-1 after:left-1 after:w-4 after:h-4
4
+ after:bg-white after:rounded-full after:transition-transform
5
+ checked:after:translate-x-4`})})};function le({dataType:t,path:n,value:r,onChange:s}){const d=l.useMemo(()=>n[n.length-1],[n]),o=l.useMemo(()=>n.join("-"),[n]),p=l.useCallback(j=>{s(n,j.target.value)},[s,n]),c=l.useCallback(j=>{s(n,j.target.value)},[s,n]);return e.jsxs("div",{className:"grid w-full max-w-sm items-center gap-1.5",children:[e.jsx("label",{htmlFor:o,className:"capitalize text-sm font-medium text-gray-700",children:d==="~~codeyam-code~~"?"Dynamic Field":d}),t.includes("|")?e.jsx(oe,{name:o,value:r,options:t.split("|"),onChange:p}):t===V.BOOLEAN?e.jsx(ie,{name:o,value:r??!1,onChange:c}):e.jsx("input",{id:o,name:o,type:"text",value:JSON.stringify(r??"").replace(/"/g,""),onChange:p,className:"w-full px-3 py-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500"},`Input-${o}`)]})}const ce="Default Scenario";function de({analysis:t,scenarioName:n,dataItem:r,onResult:s,onGenerateData:d}){const[o,p]=l.useState(!1),[c,j]=l.useState(""),k=l.useCallback(async()=>{if(!d){console.error("onGenerateData prop is required for AI data generation");return}p(!0);try{const u=t.scenarios.find(b=>b.name===n);if(!u)throw new Error("Scenario not found");const A=t.scenarios.find(b=>b.name===ce),I=await d(c,r);if(!I){console.error("Error getting AI guess for scenario data"),p(!1);return}const w=(b,v)=>{const L=Object.assign({},b);return x(b)&&x(v)&&Object.keys(v).forEach(N=>{x(v[N])?N in b?L[N]=w(b[N],v[N]):Object.assign(L,{[N]:v[N]}):Object.assign(L,{[N]:v[N]})}),L},x=b=>b&&typeof b=="object"&&!Array.isArray(b);u.metadata.data=w(w((A==null?void 0:A.metadata.data)||{},u.metadata.data),I.data||{}),s(u),p(!1),j("")}catch(u){console.error("Error generating AI data:",u),p(!1)}},[t,c,r,n,s,d]),g=l.useCallback(u=>{j(u.target.value)},[]);return e.jsxs("div",{className:"w-full p-3 flex flex-col gap-2 rounded-lg border-2 border-blue-200 text-sm bg-blue-50",children:[e.jsx("div",{className:"font-medium text-gray-700",children:"Describe the data changes to the AI"}),e.jsx("textarea",{className:"peer w-full h-16 p-2 border border-gray-300 rounded-md focus:outline-none focus:ring-2 focus:ring-blue-500",placeholder:"Type your message here.",onChange:g,value:c}),e.jsx("button",{type:"button",disabled:o,className:`w-full px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 disabled:bg-gray-400 disabled:cursor-not-allowed font-medium ${c.length>0?"flex":"hidden peer-focus-within:flex"} items-center justify-center gap-2`,onClick:()=>void k(),children:o?e.jsxs(e.Fragment,{children:[e.jsxs("svg",{className:"animate-spin h-4 w-4 text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24",children:[e.jsx("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:"currentColor",strokeWidth:"4"}),e.jsx("path",{className:"opacity-75",fill:"currentColor",d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}),"Please wait"]}):"Generate Data"})]})}function ue({namedPath:t,path:n,last:r,onClick:s}){const d=l.useCallback(()=>s(r?n.slice(0,-1):n),[r,n,s]);return e.jsx("div",{className:"capitalize cursor-pointer hover:text-blue-600 transition-colors",onClick:d,children:t[t.length-1]})}function me({dataItem:t,onClick:n}){const r=l.useCallback(()=>n([]),[n]),s=l.useMemo(()=>t.namedPath.length>=2?t.namedPath.length-2:0,[t]);return e.jsxs("div",{className:"text-sm flex items-center gap-2 py-3 px-2 border-b border-t border-gray-300 bg-gray-50",children:[e.jsx("svg",{className:"w-4 h-4 cursor-pointer hover:text-blue-600",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",onClick:r,children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M15 19l-7-7 7-7"})}),t.namedPath.length>2&&e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx("div",{children:"..."}),e.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]}),t.namedPath.slice(s).map((d,o)=>e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(ue,{namedPath:t.namedPath.slice(0,o+s+1),path:t.path.slice(0,o+s+1),last:o+s===t.namedPath.length-1,onClick:n}),o+s<t.namedPath.length-1&&e.jsx("svg",{className:"w-3 h-3",fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M9 5l7 7-7 7"})})]},`path-${d}-${o+s}`))]})}function F({analysis:t,scenarioName:n,dataItem:r,onClick:s,onChange:d,onAIResult:o,onGenerateData:p,saveFeedback:c}){const j=l.useMemo(()=>r.data,[r]),k=l.useMemo(()=>ne(r),[r]);return e.jsxs("div",{className:"w-full flex flex-col gap-6 px-3 mt-3",children:[r.path.length>0&&e.jsx(me,{dataItem:r,onClick:s}),e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx(de,{analysis:t,scenarioName:n,dataItem:r,onResult:o,onGenerateData:p}),k==null?void 0:k.map((g,u)=>{var I;if(q(j[g])){let w=g;isNaN(Number(g))||(w=j[g].name??j[g].title??j[g].id??`${r.path[r.path.length-1].replace(/s$/,"")} ${parseInt(g)+1}`);const x=[...r.path,g],b=[...r.namedPath,w];return e.jsx(ae,{path:x,namedPath:b,isArray:Array.isArray(j),count:re(j[g]),onClick:s},`data-${g}-${u}`)}if(g==="id")return null;const A=[...r.path,g];return e.jsx(le,{dataType:((I=r.structure)==null?void 0:I[g])??"string",path:A,value:j[g],onChange:d},`InputField-${A.join("-")}`)})]}),e.jsx("input",{type:"hidden",name:"recapture",id:"recapture-input",value:"false"}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{type:"submit",onClick:()=>{const g=document.getElementById("recapture-input");g&&(g.value="false")},disabled:c==null?void 0:c.isSaving,className:"flex-1 px-4 py-2 bg-blue-600 text-white rounded-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 font-medium disabled:opacity-50 disabled:cursor-not-allowed",children:c!=null&&c.isSaving?"Saving...":"Save Changes"}),e.jsx("button",{type:"submit",onClick:()=>{const g=document.getElementById("recapture-input");g&&(g.value="true")},disabled:c==null?void 0:c.isSaving,className:"flex-1 px-4 py-2 bg-gray-100 text-gray-700 border border-gray-300 rounded-md hover:bg-gray-200 focus:outline-none focus:ring-2 focus:ring-blue-500 font-medium disabled:opacity-50 disabled:cursor-not-allowed",children:"Save & Recapture"})]}),(c==null?void 0:c.message)&&!(c!=null&&c.isSaving)&&e.jsx("div",{className:`mt-3 p-3 rounded-md text-sm font-medium ${c.isError?"bg-red-50 text-red-700 border border-red-200":"bg-green-50 text-green-700 border border-green-200"}`,children:c.message})]})}function H({title:t,children:n,defaultOpen:r=!1,borderT:s=!1,borderB:d=!1}){const[o,p]=l.useState(r),c=[];return s&&c.push("border-t"),d&&c.push("border-b"),e.jsxs("div",{className:`${c.join(" ")} border-gray-300`,children:[e.jsxs("button",{type:"button",onClick:()=>p(!o),className:"w-full px-4 py-3 flex items-center justify-between bg-gray-50 hover:bg-gray-100 transition-colors text-left font-semibold text-gray-900",children:[e.jsx("span",{children:t}),e.jsx("svg",{className:`transition-transform ${o?"rotate-180":""}`,fill:"none",stroke:"currentColor",viewBox:"0 0 24 24",xmlns:"http://www.w3.org/2000/svg",style:{width:"20px",height:"20px",minWidth:"20px",minHeight:"20px",maxWidth:"20px",maxHeight:"20px",flexShrink:0},children:e.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:2,d:"M19 9l-7 7-7-7"})})]}),o&&e.jsx("div",{className:"px-4 py-3",children:n})]})}const ge=({currentScenario:t,defaultScenario:n,dataStructure:r,analysis:s,shouldCreateNewScenario:d,onSave:o,onNavigate:p,iframeRef:c,onGenerateData:j,saveFeedback:k})=>{const g=l.useCallback((i,a)=>{const h=Object.assign({},i),f=m=>m&&typeof m=="object"&&!Array.isArray(m);return f(i)&&f(a)&&Object.keys(a).forEach(m=>{f(a[m])?m in i?h[m]=g(i[m],a[m]):Object.assign(h,{[m]:a[m]}):Object.assign(h,{[m]:a[m]})}),h},[]),[u,A]=l.useState({name:t.name,description:t.description,data:g(n.metadata.data,t.metadata.data)}),[I,w]=l.useState(null),x=l.useMemo(()=>({...u.data}),[u]),b=l.useMemo(()=>({...x.mockData?{"Retrieved Data":x.mockData}:{},...x.argumentsData?{"Function Arguments":x.argumentsData}:{}}),[x]),v=l.useMemo(()=>{const i={...r.arguments?{"Function Arguments":r.arguments}:{},...r.dataForMocks?{"Retrieved Data":r.dataForMocks}:{}};return Object.keys(i).reduce((a,h)=>{if(h.includes(".")){const[f,m]=h.split(".");a[f]||(a[f]={}),a[f][m]=i[h]}else a[h]=i[h];return a},{})},[r]),L=l.useCallback(async i=>{i.preventDefault();const a=i.target.querySelector('input[name="recapture"]'),h=(a==null?void 0:a.value)==="true",f={mockData:u.data.mockData??{},argumentsData:u.data.argumentsData??[]};console.log("[ScenarioEditor] Saving scenario data:",{scenarioName:u.name,shouldRecapture:h,dataToSave:f,rawFormData:u.data,iframePayload:{arguments:x.argumentsData??[],...x.mockData??{}}}),console.log("[ScenarioEditor] Full dataToSave JSON:",JSON.stringify(f,null,2).substring(0,1e3));const m=s==null?void 0:s.scenarios.map(S=>!d&&S.name===t.name?{...S,name:u.name,description:u.description,metadata:{...S.metadata,data:f}}:S);d&&m.push({name:u.name,description:u.description,metadata:{data:f,interactiveExamplePath:s==null?void 0:s.scenarios[0].metadata.interactiveExamplePath}}),console.log("[ScenarioEditor] Updated scenarios to save:",m),o&&await o(m,{recapture:h}),p&&p(u.name)},[s,t.name,u,x,d,o,p]),N=l.useCallback(i=>{A(a=>({...a,[i.target.name]:i.target.value}))},[]),M=l.useCallback(i=>{w(a=>{if(!a)return null;for(const h of[{arguments:i.metadata.data.argumentsData},i.metadata.data.mockData]){let f=h;for(const m of a.path)if(f=U(f,m),!f)break;f&&(a.data=f)}return{...a}}),A({name:i.name,description:i.description,data:i.metadata.data})},[]),W=l.useCallback((i,a)=>{A(h=>{for(const f of[{"Function Arguments":h.data.argumentsData},{"Retrieved Data":h.data.mockData}]){let m=f;for(const S of i.slice(0,-1))if(m=U(m,S),!m)break;if(m){const S=m[i[i.length-1]];w(C=>C?(C.namedPath[C.namedPath.length-1]===S&&(C.namedPath[C.namedPath.length-1]=a.toString()),C.data[i[i.length-1]]=a,{...C}):null),m[i[i.length-1]]=a}}return{...h}})},[]),J=l.useCallback(i=>{var m,S,C;if(i.length===0){w(null);return}let a=b;const h=[];let f=v;for(const E of i){if(h.push(isNaN(parseInt(E))?E:((m=a[E])==null?void 0:m.name)??((S=a[E])==null?void 0:S.title)??((C=a[E])==null?void 0:C.id)??E),a=U(a,E),!a){console.log("Data not found",a,E),w(null);return}Array.isArray(f)?f=f[0]:f=f[E]}w({path:i,namedPath:h,data:a,structure:f})},[b,v]);return l.useEffect(()=>{const i=a=>{var h;a.data.type==="codeyam-log"&&((h=a.data.data)!=null&&h.includes("Error"))&&console.error("[ScenarioEditor] Error from iframe:",a.data.data)};return window.addEventListener("message",i),()=>window.removeEventListener("message",i)},[]),l.useEffect(()=>{var i;if((i=c==null?void 0:c.current)!=null&&i.contentWindow){const a={arguments:x.argumentsData??[],...x.mockData??{}},h={type:"codeyam-override-data",name:t.name,data:JSON.stringify(a)};console.log("[ScenarioEditor] → SENDING codeyam-override-data:",{type:h.type,name:h.name,dataPreview:JSON.stringify(a).substring(0,200)+"...",fullData:a}),c.current.contentWindow.postMessage(h,"*")}},[x,t,c]),e.jsx("form",{method:"post",onSubmit:i=>void L(i),children:I?e.jsx(F,{analysis:s,scenarioName:u.name,dataItem:I,onClick:J,onChange:W,onAIResult:M,onGenerateData:j,saveFeedback:k}):e.jsxs(e.Fragment,{children:[e.jsx(H,{title:"Edit Name and Description",borderT:!0,children:e.jsx(se,{scenarioFormData:u,handleInputChange:N})}),t.metadata.data&&e.jsx(H,{title:"Edit Scenario Data",defaultOpen:!0,borderT:!0,borderB:!0,children:e.jsx(F,{analysis:s,scenarioName:u.name,dataItem:{path:[],namedPath:[],data:b,structure:v},onClick:J,onChange:W,onAIResult:M,onGenerateData:j,saveFeedback:k})})]})})},ye=({data:t})=>[{title:t!=null&&t.scenario?`Edit ${t.scenario.name} - CodeYam`:"Edit Scenario - CodeYam"},{name:"description",content:"Edit scenario data"}];function he(){var E,_,G;const t=K(),n=t.analysis,r=t.scenario,s=t.defaultScenario,d=t.entitySha,o=t.projectSlug,p=Q(),{iframeRef:c}=Z(),[j,k]=l.useState(!1),[g,u]=l.useState(null),[A,I]=l.useState(null),[w,x]=l.useState(!1),[b,v]=l.useState(!1),[L,N]=l.useState(null),{interactiveServerUrl:M,isStarting:W,isLoading:J,showIframe:i,iframeKey:a,onIframeLoad:h}=te({analysisId:n==null?void 0:n.id,scenarioId:r==null?void 0:r.id,scenarioName:r==null?void 0:r.name,projectSlug:o,enabled:!0}),f=l.useCallback(async(P,y)=>{k(!0),u(null),I(null),console.log("[EditScenario] Starting save with options:",y),console.log("[EditScenario] Scenarios to save:",P);try{const D={analysis:n,scenarios:P};console.log("[EditScenario] Sending to /api/save-scenarios:",{analysisId:n.id,scenarioCount:P.length,scenarioNames:P.map(R=>R.name)});const T=await fetch("/api/save-scenarios",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(D)}),B=await T.json();if(console.log("[EditScenario] API response:",B),!T.ok||!B.success)throw new Error(B.error||"Failed to save scenarios");if(console.log("[EditScenario] Scenarios saved successfully"),y!=null&&y.recapture&&r.id&&M){console.log("[EditScenario] ========== DIRECT CAPTURE START =========="),console.log("[EditScenario] Taking screenshot from running server",{scenarioId:r.id,projectId:n.projectId,serverUrl:M}),u("Changes saved. Capturing screenshot...");const R={serverUrl:M,scenarioId:r.id,projectId:n.projectId,viewportWidth:1440};console.log("[EditScenario] Capture request body:",R);const $=await fetch("/api/capture-screenshot",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(R)});console.log("[EditScenario] Capture response status:",$.status);const O=await $.json();if(console.log("[EditScenario] Capture response body:",O),!$.ok||!O.success)throw console.error("[EditScenario] Capture failed:",O),new Error(O.error||"Failed to capture screenshot");console.log("[EditScenario] Screenshot captured successfully:",O),console.log("[EditScenario] ========== DIRECT CAPTURE COMPLETE =========="),u("Recapture successful")}else if(y!=null&&y.recapture&&!M){console.log("[EditScenario] No running server, using queued recapture");const R=new FormData;R.append("analysisId",n.id||""),R.append("scenarioId",r.id||"");const $=await fetch("/api/recapture-scenario",{method:"POST",body:R}),O=await $.json();if(!$.ok||!O.success)throw new Error(O.error||"Failed to trigger recapture");console.log("Recapture queued:",O),I(O.jobId),u("Changes saved. Screenshot recapture queued.")}else u("Changes saved successfully.")}catch(D){console.error("Error saving scenarios:",D),u(`Error: ${D instanceof Error?D.message:String(D)}`)}finally{k(!1)}},[n,r.id,M]),m=l.useCallback(P=>{},[]),S=l.useCallback(async(P,y)=>{var B;const D=await fetch("/api/generate-scenario-data",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({description:P,existingScenarios:n.scenarios,scenariosDataStructure:(B=n.metadata)==null?void 0:B.scenariosDataStructure,editingMockName:r.name,editingMockData:y==null?void 0:y.data})}),T=await D.json();if(!D.ok||!T.success)throw new Error(T.error||"Failed to generate scenario data");return T.data},[n,r.name]),C=l.useCallback(async()=>{var P;if(!r.id){N("Cannot delete scenario without ID");return}x(!0),N(null);try{const y=await fetch("/api/delete-scenario",{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({scenarioId:r.id,screenshotPaths:((P=r.metadata)==null?void 0:P.screenshotPaths)||[]})}),D=await y.json();if(!y.ok||!D.success)throw new Error(D.error||"Failed to delete scenario");p(`/entity/${d}`)}catch(y){console.error("[EditScenario] Error deleting scenario:",y),N(y instanceof Error?y.message:"Failed to delete scenario"),v(!1)}finally{x(!1)}},[r.id,(E=r.metadata)==null?void 0:E.screenshotPaths,d,p]);return e.jsxs("div",{className:"h-screen bg-gray-50 flex flex-col",children:[e.jsxs("header",{className:"bg-white border-b border-gray-200 px-8 py-6 shrink-0",children:[e.jsx("div",{className:"mb-4",children:e.jsxs(z,{to:`/entity/${d}`,className:"text-blue-600 no-underline text-sm font-medium transition-colors hover:text-blue-700 hover:underline",children:["← Back to ",(_=n.entity)==null?void 0:_.name]})}),e.jsxs("h1",{className:"text-[32px] font-bold text-gray-900 m-0 mb-3",children:["Edit Scenario: ",r.name]}),r.description&&e.jsx("p",{className:"text-gray-600 text-[15px] leading-relaxed m-0",children:r.description})]}),e.jsxs("div",{className:"flex flex-1 gap-0 min-h-0",children:[e.jsxs("aside",{className:"w-[400px] bg-white border-r border-gray-200 overflow-y-auto shrink-0",children:[e.jsx(ge,{currentScenario:r,defaultScenario:s,dataStructure:((G=n.metadata)==null?void 0:G.scenariosDataStructure)||{},analysis:n,shouldCreateNewScenario:!1,onSave:f,onNavigate:m,iframeRef:c,onGenerateData:S,saveFeedback:{isSaving:j,message:g,isError:(g==null?void 0:g.startsWith("Error"))??!1}}),g==="Recapture successful"&&e.jsx("div",{className:"px-4 pb-4",children:e.jsx(z,{to:`/entity/${d}`,className:"text-blue-600 hover:text-blue-700 hover:underline text-sm",children:"View updated screenshot on entity page →"})}),e.jsxs("div",{className:"border-t border-gray-200 p-4 mt-4",children:[e.jsx("div",{className:"text-sm text-gray-600 mb-3",children:"Permanently remove this scenario and its screenshots."}),b?e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"text-sm text-red-600 font-medium",children:['Are you sure you want to delete "',r.name,'"?']}),e.jsxs("div",{className:"flex gap-2",children:[e.jsx("button",{onClick:()=>void C(),disabled:w,className:"flex-1 px-4 py-2 bg-red-600 text-white rounded-md text-sm font-medium hover:bg-red-700 disabled:bg-red-400 disabled:cursor-not-allowed transition-colors",children:w?"Deleting...":"Yes, Delete"}),e.jsx("button",{onClick:()=>v(!1),disabled:w,className:"flex-1 px-4 py-2 bg-gray-100 text-gray-700 border border-gray-300 rounded-md text-sm font-medium hover:bg-gray-200 disabled:opacity-50 transition-colors",children:"Cancel"})]})]}):e.jsx("button",{onClick:()=>v(!0),className:"w-full px-4 py-2 bg-red-50 text-red-600 border border-red-200 rounded-md text-sm font-medium hover:bg-red-100 transition-colors",children:"Delete Scenario"}),L&&e.jsx("div",{className:"mt-3 text-sm text-red-600 bg-red-50 px-3 py-2 rounded-md",children:L})]})]}),e.jsx("main",{className:"flex-1 bg-gray-100 overflow-auto flex flex-col min-w-0",children:e.jsx(ee,{scenarioId:r.id||r.name,scenarioName:r.name,iframeUrl:M,isStarting:W,isLoading:J,showIframe:i,iframeKey:a,onIframeLoad:h,projectSlug:o,defaultWidth:1440,defaultHeight:900})})]})]})}const we=Y(function(){return e.jsx(X,{children:e.jsx(he,{})})});export{we as default,ye as meta};