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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (625) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +9 -5
  5. package/analyzer-template/packages/ai/index.ts +5 -3
  6. package/analyzer-template/packages/ai/package.json +1 -1
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +152 -6
  9. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +107 -1
  10. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +42 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +38 -1
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +301 -1
  15. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +972 -106
  16. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +232 -0
  17. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  18. package/analyzer-template/packages/ai/src/lib/completionCall.ts +18 -2
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1409 -138
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +2 -1
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +771 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +233 -75
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +19 -1
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +39 -4
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +23 -0
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +42 -2
  28. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  29. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
  30. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +89 -112
  31. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +6 -0
  32. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +486 -86
  33. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +182 -104
  34. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +201 -0
  35. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  36. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1019 -0
  37. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  38. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  39. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +276 -3
  40. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +33 -3
  41. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +7 -0
  42. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  43. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -102
  44. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +71 -4
  45. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -53
  46. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  47. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  48. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +690 -0
  49. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  50. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  51. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +102 -0
  52. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +8 -1
  53. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +14 -0
  54. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  55. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  56. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +458 -267
  57. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +18 -0
  58. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  59. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  60. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  61. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  62. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  63. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +196 -0
  64. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  65. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +588 -52
  66. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  67. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  68. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +299 -133
  69. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +156 -0
  70. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +78 -83
  71. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +4 -8
  72. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +384 -94
  73. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  74. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  75. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  76. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  77. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  78. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  79. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  80. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  81. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  82. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  83. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  84. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  85. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  86. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  87. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  88. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  89. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  90. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  91. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  92. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  93. package/analyzer-template/packages/aws/package.json +2 -2
  94. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  95. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  96. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  97. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  98. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  99. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  100. package/analyzer-template/packages/database/src/lib/kysely/db.ts +4 -4
  101. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  102. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +36 -9
  103. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  104. package/analyzer-template/packages/generate/index.ts +3 -0
  105. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  106. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  107. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  108. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +9 -4
  109. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  110. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  111. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -2
  112. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +2 -2
  113. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  114. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -11
  115. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  116. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +30 -7
  117. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  118. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  119. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  120. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  121. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  122. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
  123. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  124. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  126. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  127. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  128. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  129. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  130. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  131. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  132. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  133. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  134. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  135. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  136. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  137. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  138. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  139. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  140. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  141. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  142. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  143. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  144. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  145. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  146. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  147. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  148. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  149. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  150. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  151. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  152. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  153. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  154. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  155. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  156. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  157. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  158. package/analyzer-template/packages/github/dist/types/index.d.ts +2 -2
  159. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  161. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +63 -13
  162. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  163. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  164. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  165. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +11 -6
  166. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  167. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +146 -0
  168. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  169. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  170. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  171. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  172. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  173. package/analyzer-template/packages/process/index.ts +2 -0
  174. package/analyzer-template/packages/process/package.json +12 -0
  175. package/analyzer-template/packages/process/tsconfig.json +8 -0
  176. package/analyzer-template/packages/types/index.ts +4 -0
  177. package/analyzer-template/packages/types/src/types/Analysis.ts +79 -13
  178. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  179. package/analyzer-template/packages/types/src/types/Scenario.ts +11 -10
  180. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +161 -0
  181. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  182. package/analyzer-template/packages/utils/dist/types/index.d.ts +2 -2
  183. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  184. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  185. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +63 -13
  186. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  187. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  188. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  189. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +11 -6
  190. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  191. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +146 -0
  192. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  193. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  194. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  195. package/analyzer-template/playwright/capture.ts +37 -18
  196. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  197. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  198. package/analyzer-template/playwright/waitForServer.ts +21 -6
  199. package/analyzer-template/project/analyzeBaselineCommit.ts +4 -0
  200. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  201. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  202. package/analyzer-template/project/analyzeRegularCommit.ts +4 -0
  203. package/analyzer-template/project/constructMockCode.ts +868 -132
  204. package/analyzer-template/project/controller/startController.ts +16 -1
  205. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  206. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  207. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  208. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +49 -33
  209. package/analyzer-template/project/orchestrateCapture.ts +10 -3
  210. package/analyzer-template/project/reconcileMockDataKeys.ts +102 -2
  211. package/analyzer-template/project/runAnalysis.ts +7 -0
  212. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  213. package/analyzer-template/project/start.ts +26 -4
  214. package/analyzer-template/project/startScenarioCapture.ts +72 -40
  215. package/analyzer-template/project/writeMockDataTsx.ts +118 -55
  216. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  217. package/analyzer-template/project/writeScenarioComponents.ts +263 -92
  218. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  219. package/analyzer-template/project/writeSimpleRoot.ts +13 -15
  220. package/analyzer-template/scripts/comboWorkerLoop.cjs +1 -0
  221. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  222. package/analyzer-template/tsconfig.json +2 -1
  223. package/background/src/lib/local/createLocalAnalyzer.js +1 -29
  224. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  225. package/background/src/lib/local/execAsync.js +1 -1
  226. package/background/src/lib/local/execAsync.js.map +1 -1
  227. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  228. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  229. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +2 -1
  230. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  231. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  232. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  233. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  234. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  235. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +2 -1
  236. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  237. package/background/src/lib/virtualized/project/constructMockCode.js +799 -121
  238. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  239. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  240. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  241. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  242. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  243. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  244. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  245. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  246. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  247. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +42 -28
  248. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  249. package/background/src/lib/virtualized/project/orchestrateCapture.js +7 -4
  250. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  251. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +87 -2
  252. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  253. package/background/src/lib/virtualized/project/runAnalysis.js +6 -0
  254. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  255. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  256. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  257. package/background/src/lib/virtualized/project/start.js +21 -4
  258. package/background/src/lib/virtualized/project/start.js.map +1 -1
  259. package/background/src/lib/virtualized/project/startScenarioCapture.js +56 -30
  260. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  261. package/background/src/lib/virtualized/project/writeMockDataTsx.js +110 -48
  262. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  263. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  264. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  265. package/background/src/lib/virtualized/project/writeScenarioComponents.js +211 -75
  266. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  267. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  268. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  269. package/background/src/lib/virtualized/project/writeSimpleRoot.js +13 -13
  270. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  271. package/codeyam-cli/src/cli.js +5 -1
  272. package/codeyam-cli/src/cli.js.map +1 -1
  273. package/codeyam-cli/src/commands/analyze.js +1 -1
  274. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  275. package/codeyam-cli/src/commands/baseline.js +174 -0
  276. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  277. package/codeyam-cli/src/commands/debug.js +28 -18
  278. package/codeyam-cli/src/commands/debug.js.map +1 -1
  279. package/codeyam-cli/src/commands/default.js +0 -15
  280. package/codeyam-cli/src/commands/default.js.map +1 -1
  281. package/codeyam-cli/src/commands/recapture.js +44 -23
  282. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  283. package/codeyam-cli/src/commands/report.js +72 -24
  284. package/codeyam-cli/src/commands/report.js.map +1 -1
  285. package/codeyam-cli/src/commands/start.js +8 -12
  286. package/codeyam-cli/src/commands/start.js.map +1 -1
  287. package/codeyam-cli/src/commands/status.js +23 -1
  288. package/codeyam-cli/src/commands/status.js.map +1 -1
  289. package/codeyam-cli/src/commands/test-startup.js +1 -1
  290. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  291. package/codeyam-cli/src/commands/wipe.js +108 -0
  292. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  293. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  294. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  295. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +27 -27
  296. package/codeyam-cli/src/utils/analysisRunner.js +8 -13
  297. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  298. package/codeyam-cli/src/utils/backgroundServer.js +12 -2
  299. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  300. package/codeyam-cli/src/utils/database.js +91 -5
  301. package/codeyam-cli/src/utils/database.js.map +1 -1
  302. package/codeyam-cli/src/utils/generateReport.js +253 -106
  303. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  304. package/codeyam-cli/src/utils/git.js +79 -0
  305. package/codeyam-cli/src/utils/git.js.map +1 -0
  306. package/codeyam-cli/src/utils/install-skills.js +11 -11
  307. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  308. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +38 -0
  309. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  310. package/codeyam-cli/src/utils/queue/job.js +239 -16
  311. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  312. package/codeyam-cli/src/utils/queue/manager.js +19 -7
  313. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  314. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  315. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  316. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +5 -5
  317. package/codeyam-cli/src/utils/versionInfo.js +25 -19
  318. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  319. package/codeyam-cli/src/utils/wipe.js +128 -0
  320. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  321. package/codeyam-cli/src/webserver/app/lib/database.js +96 -0
  322. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  323. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  324. package/codeyam-cli/src/webserver/backgroundServer.js +2 -5
  325. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  326. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-vauWK972.js +1 -0
  327. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DKdsUF7Y.js → EntityTypeBadge-COi5OvsN.js} +1 -1
  328. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BwdQv49w.js +41 -0
  329. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CEleMv_j.js +34 -0
  330. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D68KarMg.js +25 -0
  331. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-L75Wvqgw.js +3 -0
  332. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-C53WM8qn.js +6 -0
  333. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-CrNkmy4i.js +3 -0
  334. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DzJRkCkr.js +11 -0
  335. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CQifa1n-.js +1 -0
  336. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CyaBFX7l.js +20 -0
  337. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CWjSsLqY.js → TruncatedFilePath-D36O1rzU.js} +1 -1
  338. package/codeyam-cli/src/webserver/build/client/assets/_index-Be83mo_j.js +11 -0
  339. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BN6wu6Y-.js +37 -0
  340. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-DgTPh8H-.js +6 -0
  341. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-DdQKK6on.js +51 -0
  342. package/codeyam-cli/src/webserver/build/client/assets/circle-check-Dmr2bb1R.js +6 -0
  343. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-Do4ZLUYa.js +21 -0
  344. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  345. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  346. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Bn6aCAy_.js +1 -0
  347. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-CbdFyxZh.js +23 -0
  348. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js +6 -0
  349. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-wDWZZO1W.js +6 -0
  350. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BMbl7MeQ.js +5 -0
  351. package/codeyam-cli/src/webserver/build/client/assets/entry.client-5wRKRIH9.js +29 -0
  352. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  353. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DD3SDH7t.js +1 -0
  354. package/codeyam-cli/src/webserver/build/client/assets/files-DKyMFI90.js +1 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/git-zXjT7J0G.js +15 -0
  356. package/codeyam-cli/src/webserver/build/client/assets/globals-DTTQ3gY7.css +1 -0
  357. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  358. package/codeyam-cli/src/webserver/build/client/assets/index-DLbXwndH.js +9 -0
  359. package/codeyam-cli/src/webserver/build/client/assets/index-gPZ-lad1.js +3 -0
  360. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-BsPXJ81F.js +6 -0
  361. package/codeyam-cli/src/webserver/build/client/assets/manifest-22590fcf.js +1 -0
  362. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/root-BsAarjAM.js +57 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  365. package/codeyam-cli/src/webserver/build/client/assets/search-P2FKIUql.js +6 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/settings-B2eDuBj8.js +1 -0
  367. package/codeyam-cli/src/webserver/build/client/assets/simulations-L18M6-kN.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BDz7kbVA.js +6 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-29dDmbH8.js +1 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-CmrTPlIB.js → useLastLogLine-BUm0UVJm.js} +1 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CkIOKTrZ.js +1 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/{useToast-C1ig_BmP.js → useToast-KKw5kTn-.js} +1 -1
  373. package/codeyam-cli/src/webserver/build/server/assets/index-BND5I5fv.js +1 -0
  374. package/codeyam-cli/src/webserver/build/server/assets/server-build-CFXnd7MG.js +228 -0
  375. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  376. package/codeyam-cli/src/webserver/build-info.json +5 -5
  377. package/codeyam-cli/src/webserver/devServer.js +1 -3
  378. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  379. package/codeyam-cli/src/webserver/server.js +35 -25
  380. package/codeyam-cli/src/webserver/server.js.map +1 -1
  381. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam:debug.md} +1 -1
  382. package/codeyam-cli/templates/codeyam:diagnose.md +625 -0
  383. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam:setup.md} +139 -4
  384. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam:sim.md} +1 -1
  385. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam:test.md} +1 -1
  386. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam:verify.md} +1 -1
  387. package/package.json +8 -8
  388. package/packages/ai/index.js +2 -4
  389. package/packages/ai/index.js.map +1 -1
  390. package/packages/ai/src/lib/analyzeScope.js +107 -0
  391. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  392. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +76 -1
  393. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  394. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  395. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  396. package/packages/ai/src/lib/astScopes/methodSemantics.js +29 -0
  397. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  398. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  399. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  400. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +23 -0
  401. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  402. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +239 -1
  403. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  404. package/packages/ai/src/lib/astScopes/processExpression.js +728 -87
  405. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  406. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  407. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  408. package/packages/ai/src/lib/completionCall.js +17 -1
  409. package/packages/ai/src/lib/completionCall.js.map +1 -1
  410. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1126 -82
  411. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  412. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +2 -1
  413. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  414. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +482 -0
  415. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  416. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +173 -55
  417. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  418. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +16 -1
  419. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  420. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +35 -2
  421. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  422. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +20 -0
  423. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  424. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  425. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  426. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +34 -3
  427. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  428. package/packages/ai/src/lib/deepEqual.js +32 -0
  429. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  430. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
  431. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  432. package/packages/ai/src/lib/generateChangesEntityScenarios.js +81 -90
  433. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  434. package/packages/ai/src/lib/generateEntityDataStructure.js +5 -0
  435. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  436. package/packages/ai/src/lib/generateEntityScenarioData.js +398 -81
  437. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  438. package/packages/ai/src/lib/generateEntityScenarios.js +168 -82
  439. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  440. package/packages/ai/src/lib/generateExecutionFlows.js +123 -0
  441. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  442. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  443. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  444. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +742 -0
  445. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  446. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  447. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  448. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  449. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  450. package/packages/ai/src/lib/isolateScopes.js +231 -4
  451. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  452. package/packages/ai/src/lib/mergeStatements.js +26 -3
  453. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  454. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +6 -0
  455. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  456. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  457. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  458. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -64
  459. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  460. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +58 -4
  461. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  462. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -34
  463. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  464. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  465. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  466. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  467. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  468. package/packages/ai/src/lib/resolvePathToControllable.js +563 -0
  469. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  470. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  471. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  472. package/packages/ai/src/lib/worker/SerializableDataStructure.js +22 -0
  473. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  474. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +4 -0
  475. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  476. package/packages/analyze/src/lib/FileAnalyzer.js +15 -0
  477. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  478. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  479. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  480. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  481. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  482. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +214 -50
  483. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  484. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +10 -0
  485. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  486. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  487. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  488. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  489. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  490. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  491. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  492. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  493. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  494. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  495. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  496. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +159 -0
  497. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  498. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  499. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  500. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +458 -48
  501. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  502. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  503. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  504. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  505. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  506. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +235 -81
  507. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  508. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +96 -0
  509. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  510. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +56 -69
  511. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  512. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +4 -8
  513. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  514. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +307 -89
  515. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  516. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  517. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  518. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  519. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  520. package/packages/database/src/lib/kysely/db.js +2 -2
  521. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  522. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  523. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  524. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  525. package/packages/generate/index.js +3 -0
  526. package/packages/generate/index.js.map +1 -1
  527. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  528. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  529. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  530. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  531. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  532. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  533. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +8 -4
  534. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  535. package/packages/generate/src/lib/deepMerge.js +27 -1
  536. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  537. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  538. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  539. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  540. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  541. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  542. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  543. package/packages/process/index.js +3 -0
  544. package/packages/process/index.js.map +1 -0
  545. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  546. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  547. package/packages/process/src/ProcessManager.js.map +1 -0
  548. package/packages/process/src/index.js.map +1 -0
  549. package/packages/process/src/managedExecAsync.js.map +1 -0
  550. package/packages/types/index.js.map +1 -1
  551. package/scripts/finalize-analyzer.cjs +3 -1
  552. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  553. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -197
  554. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -271
  555. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -294
  556. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  557. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -115
  558. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  559. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  560. package/analyzer-template/process/README.md +0 -507
  561. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  562. package/background/src/lib/process/ProcessManager.js.map +0 -1
  563. package/background/src/lib/process/index.js.map +0 -1
  564. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  565. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  566. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  567. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-D0VW1-W7.js +0 -1
  568. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BAk4S4pI.js +0 -1
  569. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Y756iZxZ.js +0 -25
  570. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-zzrrjW1p.js +0 -3
  571. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-QMn7bJg6.js +0 -3
  572. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DmP5mRxX.js +0 -1
  573. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BXwvsbLw.js +0 -1
  574. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DAmUX_1y.js +0 -5
  575. package/codeyam-cli/src/webserver/build/client/assets/_index-Df-nk4J5.js +0 -1
  576. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-_ZUyFdie.js +0 -7
  577. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-Eoh0PhcW.js +0 -1
  578. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CZgPLy5i.js +0 -26
  579. package/codeyam-cli/src/webserver/build/client/assets/circle-check-DI-p9ZLZ.js +0 -1
  580. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DvyV2x6y.js +0 -1
  581. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DURu2qlF.js +0 -1
  582. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-DDobn9Xh.js +0 -16
  583. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CGdWnLD_.js +0 -1
  584. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-DgMmzrKs.js +0 -5
  585. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DEVXuhkn.js +0 -13
  586. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-WPRQyc68.js +0 -1
  587. package/codeyam-cli/src/webserver/build/client/assets/files-B9u3lJer.js +0 -1
  588. package/codeyam-cli/src/webserver/build/client/assets/git-YGnKIuHU.js +0 -11
  589. package/codeyam-cli/src/webserver/build/client/assets/globals-28lrWTTo.css +0 -1
  590. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  591. package/codeyam-cli/src/webserver/build/client/assets/index-CJ0uPJjV.js +0 -1
  592. package/codeyam-cli/src/webserver/build/client/assets/index-CfqeA2XG.js +0 -3
  593. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DIjSvh6B.js +0 -1
  594. package/codeyam-cli/src/webserver/build/client/assets/manifest-8125c15c.js +0 -1
  595. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-BXl3LOEh.js +0 -1
  596. package/codeyam-cli/src/webserver/build/client/assets/root-C-g286WP.js +0 -16
  597. package/codeyam-cli/src/webserver/build/client/assets/search-xBKWfOxd.js +0 -1
  598. package/codeyam-cli/src/webserver/build/client/assets/settings-DVY_wGOx.js +0 -1
  599. package/codeyam-cli/src/webserver/build/client/assets/simulations-Be1pJo5A.js +0 -1
  600. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-CR-FkSvx.js +0 -1
  601. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DABetnSj.js +0 -1
  602. package/codeyam-cli/src/webserver/build/server/assets/index-DcR7DH9q.js +0 -1
  603. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDBrfp7e.js +0 -175
  604. package/codeyam-cli/templates/debug-codeyam.md +0 -527
  605. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  606. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  607. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -136
  608. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  609. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -220
  610. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  611. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -241
  612. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  613. package/packages/ai/src/lib/isFrontend.js +0 -5
  614. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  615. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  616. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  617. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -72
  618. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  619. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  620. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  621. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  622. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  623. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  624. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  625. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -1,9 +1,11 @@
1
1
  import completionCall from './completionCall';
2
2
  import generateEntityScenarioDataGenerator from './promptGenerators/generateEntityScenarioDataGenerator';
3
+ import generateMissingKeysPrompt from './promptGenerators/generateMissingKeysPrompt';
3
4
  import { saveLlmCall } from '~codeyam/aws/dynamodb';
4
5
  import type {
5
6
  Analysis,
6
7
  Entity,
8
+ ExecutionFlow,
7
9
  Scenario,
8
10
  ScenarioData,
9
11
  ScenariosDataStructure,
@@ -11,6 +13,109 @@ import type {
11
13
  import validateJson from './validateJson';
12
14
  import { awsLog, awsLogDebugLevel } from '~codeyam/utils';
13
15
  import { AI, parseJsonSafe } from '~codeyam/ai';
16
+ import convertNullToUndefinedBySchema from './dataStructure/helpers/convertNullToUndefinedBySchema';
17
+
18
+ /**
19
+ * Check if any of the scenario's covered flows require error data.
20
+ * Returns true if any requiredValue has an error path with truthy comparison.
21
+ */
22
+ function scenarioRequiresErrorData(
23
+ scenario: Scenario,
24
+ executionFlows: ExecutionFlow[] | undefined,
25
+ ): boolean {
26
+ const coveredFlowIds = scenario.metadata?.coveredFlows || [];
27
+ for (const flowId of coveredFlowIds) {
28
+ const flow = executionFlows?.find((f) => f.id === flowId);
29
+ if (!flow?.requiredValues) continue;
30
+ for (const rv of flow.requiredValues) {
31
+ // Check if any requiredValue has an error path and requires it to be truthy
32
+ if (
33
+ rv.attributePath?.toLowerCase().includes('.error') &&
34
+ rv.comparison === 'truthy'
35
+ ) {
36
+ return true;
37
+ }
38
+ }
39
+ }
40
+ return false;
41
+ }
42
+
43
+ /**
44
+ * Deep merge scenario data with default scenario data.
45
+ * The scenario-specific data takes precedence, with default filling in missing fields.
46
+ *
47
+ * IMPORTANT: null values are PRESERVED (not removed) in the result.
48
+ * This is critical because writeMockDataTsx.ts does another deepMerge with default data,
49
+ * and it needs null values to prevent defaults from being filled back in.
50
+ * If we removed null here, the second merge would restore the defaults,
51
+ * making scenarios identical to the default scenario.
52
+ */
53
+ function deepMergeScenarioData(
54
+ defaultData: Record<string, any>,
55
+ scenarioData: Record<string, any>,
56
+ ): Record<string, any> {
57
+ // Guard against non-object inputs (LLM sometimes returns primitives)
58
+ if (
59
+ typeof scenarioData !== 'object' ||
60
+ scenarioData === null ||
61
+ Array.isArray(scenarioData)
62
+ ) {
63
+ // Return scenario value directly if it's not a mergeable object
64
+ return scenarioData;
65
+ }
66
+ if (
67
+ typeof defaultData !== 'object' ||
68
+ defaultData === null ||
69
+ Array.isArray(defaultData)
70
+ ) {
71
+ // Return scenario value if default isn't mergeable
72
+ return scenarioData;
73
+ }
74
+
75
+ const result: Record<string, any> = {};
76
+
77
+ // Start with all keys from default
78
+ for (const key of Object.keys(defaultData)) {
79
+ if (key in scenarioData) {
80
+ const scenarioValue = scenarioData[key];
81
+ const defaultValue = defaultData[key];
82
+
83
+ // null means explicitly override with null (falsy value)
84
+ // IMPORTANT: We preserve null instead of removing the key
85
+ // This ensures writeMockDataTsx's deepMerge won't fill in defaults
86
+ if (scenarioValue === null) {
87
+ result[key] = null;
88
+ continue;
89
+ }
90
+
91
+ // Deep merge objects (but not arrays)
92
+ if (
93
+ typeof scenarioValue === 'object' &&
94
+ !Array.isArray(scenarioValue) &&
95
+ typeof defaultValue === 'object' &&
96
+ !Array.isArray(defaultValue) &&
97
+ defaultValue !== null
98
+ ) {
99
+ result[key] = deepMergeScenarioData(defaultValue, scenarioValue);
100
+ } else {
101
+ // Use scenario value (overrides default)
102
+ result[key] = scenarioValue;
103
+ }
104
+ } else {
105
+ // Key not in scenario, use default
106
+ result[key] = defaultData[key];
107
+ }
108
+ }
109
+
110
+ // Add any keys that are only in scenario data (including null values)
111
+ for (const key of Object.keys(scenarioData)) {
112
+ if (!(key in defaultData)) {
113
+ result[key] = scenarioData[key];
114
+ }
115
+ }
116
+
117
+ return result;
118
+ }
14
119
 
15
120
  const DEFAULT_SCENARIO_NAME = 'Default Scenario';
16
121
 
@@ -20,6 +125,7 @@ interface GenerateEntityScenarioDataArgs {
20
125
  entity: Pick<Entity, 'name' | 'filePath' | 'metadata'>;
21
126
  structure: ScenariosDataStructure;
22
127
  scenarios: Scenario[];
128
+ executionFlows?: ExecutionFlow[];
23
129
  incompleteResponse?: string;
24
130
  analysis: Analysis;
25
131
  model?: AI.Model;
@@ -33,10 +139,96 @@ type GenerateDataForScenarioArgs = Omit<
33
139
  defaultScenarioData?: ScenarioData;
34
140
  };
35
141
 
142
+ interface FillMissingMockDataKeysArgs {
143
+ structure: ScenariosDataStructure;
144
+ scenario: Scenario;
145
+ executionFlows: ExecutionFlow[] | undefined;
146
+ fullScenarioData: ScenarioData;
147
+ model: AI.Model | undefined;
148
+ }
149
+
150
+ /**
151
+ * For Default Scenario only: detect missing mockData keys and make a follow-up
152
+ * LLM call to fill them in. This handles cases where the LLM completes normally
153
+ * but misses some keys (often small/simple ones when the schema is large).
154
+ */
155
+ async function fillMissingMockDataKeys({
156
+ structure,
157
+ scenario,
158
+ executionFlows,
159
+ fullScenarioData,
160
+ model,
161
+ }: FillMissingMockDataKeysArgs): Promise<void> {
162
+ if (
163
+ !structure.dataForMocks ||
164
+ typeof structure.dataForMocks !== 'object' ||
165
+ Array.isArray(structure.dataForMocks)
166
+ ) {
167
+ return;
168
+ }
169
+
170
+ const expectedKeys = Object.keys(structure.dataForMocks);
171
+ const generatedKeys = Object.keys(fullScenarioData.data.mockData || {});
172
+ const missingKeys = expectedKeys.filter((k) => !generatedKeys.includes(k));
173
+
174
+ if (missingKeys.length === 0) {
175
+ return;
176
+ }
177
+
178
+ awsLog(
179
+ `Default Scenario missing ${missingKeys.length} keys, making follow-up call`,
180
+ { missingKeys },
181
+ );
182
+
183
+ // Build subset schema with only missing keys
184
+ const missingSchema: Record<string, any> = {};
185
+ for (const key of missingKeys) {
186
+ missingSchema[key] = (structure.dataForMocks as Record<string, any>)[key];
187
+ }
188
+
189
+ const followUpPrompt = generateMissingKeysPrompt({
190
+ scenario,
191
+ executionFlows,
192
+ generatedMockData: fullScenarioData.data.mockData || {},
193
+ missingSchema,
194
+ });
195
+
196
+ const followUpResponse = await completionCall({
197
+ type: 'generateMissingMockData',
198
+ systemMessage: generateMissingKeysSystemMessage(),
199
+ prompt: followUpPrompt,
200
+ model,
201
+ });
202
+
203
+ if (!followUpResponse.completion) {
204
+ return;
205
+ }
206
+
207
+ const followUpJson = validateJson(followUpResponse.completion);
208
+ const followUpParsed = parseJsonSafe(followUpJson);
209
+
210
+ if (
211
+ !followUpParsed ||
212
+ typeof followUpParsed !== 'object' ||
213
+ !('mockData' in followUpParsed)
214
+ ) {
215
+ return;
216
+ }
217
+
218
+ const followUpMockData = (followUpParsed as any).mockData;
219
+ if (followUpMockData && typeof followUpMockData === 'object') {
220
+ fullScenarioData.data.mockData = {
221
+ ...fullScenarioData.data.mockData,
222
+ ...followUpMockData,
223
+ };
224
+ }
225
+ }
226
+
36
227
  export async function generateDataForScenario({
37
228
  entity,
38
229
  structure,
39
230
  scenario,
231
+ executionFlows,
40
232
  defaultScenarioData,
41
233
  incompleteResponse,
42
234
  analysis,
@@ -47,6 +239,7 @@ export async function generateDataForScenario({
47
239
  const prompt = generateEntityScenarioDataGenerator(
48
240
  structure,
49
241
  scenario,
242
+ executionFlows,
50
243
  defaultScenarioData,
51
244
  incompleteResponse,
52
245
  );
@@ -91,7 +284,7 @@ export async function generateDataForScenario({
91
284
  ...response.stats,
92
285
  });
93
286
 
94
- const { completion, finishReason } = response;
287
+ let { completion, finishReason } = response;
95
288
 
96
289
  if (!completion) {
97
290
  console.log(
@@ -100,42 +293,80 @@ export async function generateDataForScenario({
100
293
  return null;
101
294
  }
102
295
 
103
- awsLog(
104
- `LLMCall ${llmCall ? llmCall.id : 'N/A'}: ${entity.filePath} ${entity.metadata?.exportAlias ?? entity.name} scenario data completion :>> Finish reason:`,
105
- {
106
- finishReason,
107
- completion,
108
- },
296
+ awsLogDebugLevel(
297
+ 1,
298
+ `LLMCall ${llmCall ? llmCall.id : 'N/A'}: ${entity.filePath} ${entity.metadata?.exportAlias ?? entity.name} finishReason: ${finishReason}`,
109
299
  );
110
300
 
301
+ // If response was truncated due to token limit, make a continuation call
302
+ if (finishReason === 'length') {
303
+ awsLogDebugLevel(1, 'Response truncated, making continuation call');
304
+
305
+ const continuationResponse = await completionCall({
306
+ type: 'generateEntityScenarioData',
307
+ systemMessage: generateIncompleteSystemMessage(scenario.name, isDefault),
308
+ prompt: completion, // Pass the incomplete response as the prompt
309
+ model,
310
+ });
311
+
312
+ if (continuationResponse.completion) {
313
+ completion = completion + continuationResponse.completion;
314
+ finishReason = continuationResponse.finishReason;
315
+ }
316
+ }
317
+
111
318
  const validJson = validateJson(completion);
112
319
 
113
320
  const parsed = parseJsonSafe(validJson);
114
321
  if (!parsed || typeof parsed !== 'object' || !('scenarioData' in parsed)) {
115
- console.log('CodeYam Debug: generateDataForScenario failed to parse', {
116
- entityName: entity.name,
117
- scenarioName: scenario.name,
118
- hasParsed: !!parsed,
119
- parsedType: typeof parsed,
120
- hasScenarioData: parsed && 'scenarioData' in parsed,
121
- completionPreview: completion.substring(0, 200),
122
- });
322
+ awsLog(`Failed to parse scenario data for ${entity.name}/${scenario.name}`);
123
323
  return null;
124
324
  }
125
325
 
126
- const { scenarioData: scenarioDataWithoutDescription } = parsed as {
326
+ let { scenarioData: scenarioDataWithoutDescription } = parsed as {
127
327
  scenarioData: ScenarioDataWithoutDescription;
128
328
  };
129
329
 
130
- console.log('CodeYam Debug: generateDataForScenario parsed successfully', {
131
- entityName: entity.name,
132
- scenarioName: scenario.name,
133
- parsedScenarioName: scenarioDataWithoutDescription.scenarioName,
134
- hasData: !!scenarioDataWithoutDescription.data,
135
- dataKeys: scenarioDataWithoutDescription.data
136
- ? Object.keys(scenarioDataWithoutDescription.data)
137
- : [],
138
- });
330
+ // FIX: LLM sometimes puts mock data keys directly under scenarioData instead of
331
+ // under scenarioData.data.mockData. Detect and fix this structural issue.
332
+ if (structure.dataForMocks) {
333
+ const scenarioDataAsAny = scenarioDataWithoutDescription as any;
334
+ const reservedKeys = new Set([
335
+ 'scenarioName',
336
+ 'data',
337
+ 'scenarioDescription',
338
+ ]);
339
+ const misplacedKeys: string[] = [];
340
+
341
+ // Find keys that are directly under scenarioData but should be in mockData
342
+ for (const key of Object.keys(scenarioDataAsAny)) {
343
+ if (reservedKeys.has(key)) continue;
344
+ // If this key exists in the dataForMocks schema, it's misplaced
345
+ if (key in structure.dataForMocks) {
346
+ misplacedKeys.push(key);
347
+ }
348
+ }
349
+
350
+ if (misplacedKeys.length > 0) {
351
+ // Ensure data.mockData exists
352
+ if (!scenarioDataAsAny.data) {
353
+ scenarioDataAsAny.data = {};
354
+ }
355
+ if (!scenarioDataAsAny.data.mockData) {
356
+ scenarioDataAsAny.data.mockData = {};
357
+ }
358
+
359
+ // Move misplaced keys to mockData
360
+ for (const key of misplacedKeys) {
361
+ scenarioDataAsAny.data.mockData[key] = scenarioDataAsAny[key];
362
+ delete scenarioDataAsAny[key];
363
+ }
364
+
365
+ // Update the reference
366
+ scenarioDataWithoutDescription =
367
+ scenarioDataAsAny as ScenarioDataWithoutDescription;
368
+ }
369
+ }
139
370
 
140
371
  const fullScenarioData: ScenarioData = {
141
372
  ...scenarioDataWithoutDescription,
@@ -144,8 +375,9 @@ export async function generateDataForScenario({
144
375
 
145
376
  if (structure.dataForMocks && !fullScenarioData.data.argumentsData) {
146
377
  fullScenarioData.data.argumentsData = [];
147
- if (structure.arguments && !fullScenarioData.data.argumentsData) {
148
- fullScenarioData.data.argumentsData = [];
378
+ // Populate argumentsData from structure.arguments using top-level data values
379
+ // Bug fix: removed redundant !argumentsData check that was always false after setting to []
380
+ if (structure.arguments) {
149
381
  for (let i = 0; i < structure.arguments.length; ++i) {
150
382
  if (!fullScenarioData.data.argumentsData[i]) {
151
383
  fullScenarioData.data.argumentsData[i] = {};
@@ -166,6 +398,38 @@ export async function generateDataForScenario({
166
398
  }
167
399
  }
168
400
 
401
+ // Convert null values to undefined based on schema type constraints.
402
+ // LLM uses null for "no value" (JSON doesn't support undefined), but TypeScript
403
+ // types like "string | undefined" don't accept null. This converts null→undefined
404
+ // for fields typed as "T | undefined" (but preserves null for "T | null").
405
+ if (structure.dataForMocks && fullScenarioData.data.mockData) {
406
+ convertNullToUndefinedBySchema(
407
+ fullScenarioData.data.mockData,
408
+ structure.dataForMocks,
409
+ );
410
+ }
411
+ if (structure.arguments && fullScenarioData.data.argumentsData) {
412
+ for (let i = 0; i < fullScenarioData.data.argumentsData.length; i++) {
413
+ if (structure.arguments[i]) {
414
+ convertNullToUndefinedBySchema(
415
+ fullScenarioData.data.argumentsData[i],
416
+ structure.arguments[i],
417
+ );
418
+ }
419
+ }
420
+ }
421
+
422
+ // For Default Scenario only: check for missing keys and make follow-up call if needed
423
+ if (isDefault) {
424
+ await fillMissingMockDataKeys({
425
+ structure,
426
+ scenario,
427
+ executionFlows,
428
+ fullScenarioData,
429
+ model,
430
+ });
431
+ }
432
+
169
433
  return {
170
434
  scenarioData: fullScenarioData,
171
435
  llmCall: { name: scenario.name, id: llmCall.id },
@@ -176,6 +440,7 @@ export default async function generateEntityScenarioData({
176
440
  entity,
177
441
  structure,
178
442
  scenarios,
443
+ executionFlows,
179
444
  incompleteResponse,
180
445
  analysis,
181
446
  model,
@@ -196,6 +461,7 @@ export default async function generateEntityScenarioData({
196
461
  entity,
197
462
  structure,
198
463
  scenario: defaultScenario,
464
+ executionFlows,
199
465
  incompleteResponse,
200
466
  analysis,
201
467
  model,
@@ -218,6 +484,7 @@ export default async function generateEntityScenarioData({
218
484
  entity,
219
485
  structure,
220
486
  scenario,
487
+ executionFlows,
221
488
  defaultScenarioData,
222
489
  incompleteResponse,
223
490
  analysis,
@@ -238,37 +505,77 @@ export default async function generateEntityScenarioData({
238
505
  );
239
506
  }
240
507
 
241
- scenarioDatas.push(...validResults.map((result) => result.scenarioData));
242
- llmCalls.push(...validResults.map((result) => result.llmCall));
508
+ // Merge non-default scenario data with default scenario data
509
+ // The LLM generates partial data (only differences), we need to merge with default
510
+ const mergedScenarioDatas = validResults.map((result) => {
511
+ const scenarioData = result.scenarioData;
512
+
513
+ // Merge mockData with default mockData
514
+ if (defaultScenarioData.data?.mockData && scenarioData.data?.mockData) {
515
+ scenarioData.data.mockData = deepMergeScenarioData(
516
+ defaultScenarioData.data.mockData,
517
+ scenarioData.data.mockData,
518
+ );
519
+ } else if (
520
+ defaultScenarioData.data?.mockData &&
521
+ !scenarioData.data?.mockData
522
+ ) {
523
+ // Use default mockData if scenario has none
524
+ scenarioData.data.mockData = { ...defaultScenarioData.data.mockData };
525
+ }
243
526
 
244
- console.log('CodeYam Debug: generateEntityScenarioData results', {
245
- filePath: entity.filePath,
246
- entityName: entity.name,
247
- totalScenarios: scenarios.length,
248
- defaultScenarioGenerated: !!defaultScenarioResult,
249
- otherScenariosRequested: scenarios.length - 1,
250
- otherScenariosResults: results.length,
251
- nullResults: results.filter((r) => r === null).length,
252
- validResults: validResults.length,
253
- finalScenarioDatasCount: scenarioDatas.length,
527
+ // Merge argumentsData with default argumentsData
528
+ if (
529
+ defaultScenarioData.data?.argumentsData &&
530
+ Array.isArray(defaultScenarioData.data.argumentsData) &&
531
+ scenarioData.data?.argumentsData &&
532
+ Array.isArray(scenarioData.data.argumentsData)
533
+ ) {
534
+ for (
535
+ let i = 0;
536
+ i < defaultScenarioData.data.argumentsData.length;
537
+ i++
538
+ ) {
539
+ const scenarioArg = scenarioData.data.argumentsData[i];
540
+ const defaultArg = defaultScenarioData.data.argumentsData[i];
541
+
542
+ // Only merge if both are objects (LLM sometimes returns primitives)
543
+ if (
544
+ scenarioArg &&
545
+ typeof scenarioArg === 'object' &&
546
+ !Array.isArray(scenarioArg) &&
547
+ defaultArg &&
548
+ typeof defaultArg === 'object' &&
549
+ !Array.isArray(defaultArg)
550
+ ) {
551
+ scenarioData.data.argumentsData[i] = deepMergeScenarioData(
552
+ defaultArg,
553
+ scenarioArg,
554
+ );
555
+ } else if (scenarioArg !== undefined) {
556
+ // Keep the scenario value as-is (even if primitive)
557
+ scenarioData.data.argumentsData[i] = scenarioArg;
558
+ } else if (defaultArg && typeof defaultArg === 'object') {
559
+ // Use default if scenario is undefined and default is an object
560
+ scenarioData.data.argumentsData[i] = { ...defaultArg };
561
+ } else {
562
+ scenarioData.data.argumentsData[i] = defaultArg;
563
+ }
564
+ }
565
+ } else if (
566
+ defaultScenarioData.data?.argumentsData &&
567
+ !scenarioData.data?.argumentsData
568
+ ) {
569
+ // Use default argumentsData if scenario has none
570
+ scenarioData.data.argumentsData =
571
+ defaultScenarioData.data.argumentsData.map((arg) => ({ ...arg }));
572
+ }
573
+
574
+ return scenarioData;
254
575
  });
255
576
 
256
- awsLog(
257
- 'CodeYam: scenarioDatas :>> ',
258
- JSON.stringify(
259
- {
260
- filePath: entity.filePath,
261
- entityName: entity.name,
262
- scenarioDatas: scenarioDatas.map((sd) => ({
263
- scenarioName: sd.scenarioName,
264
- hasData: !!sd.data,
265
- dataKeys: sd.data ? Object.keys(sd.data) : [],
266
- })),
267
- },
268
- null,
269
- 2,
270
- ),
271
- );
577
+ scenarioDatas.push(...mergedScenarioDatas);
578
+ llmCalls.push(...validResults.map((result) => result.llmCall));
272
579
 
273
580
  return { scenarioDatas, llmCalls };
274
581
  } catch (error) {
@@ -280,13 +587,15 @@ export default async function generateEntityScenarioData({
280
587
  export const generateSystemMessage = (
281
588
  scenarioName: string,
282
589
  defaultScenario: boolean,
590
+ requiresErrorData: boolean = false,
283
591
  ) => {
284
592
  const scenarioType = defaultScenario
285
593
  ? `## Default Scenario
286
594
  Generate COMPLETE, robust data for the entire data structure.
287
- - Fill ALL fields with realistic values (except error attributes and key attributes set to null or undefined)
288
- - Arrays should have 2-3 items
289
- - Don't skip nested attributes unless the key attributes specify a parent attribute should be null or undefined
595
+ - Fill ALL fields with realistic values (except error attributes)
596
+ - Do not skip any keys, even simple or small entries
597
+ - Arrays should have 3-5 items to provide realistic test data variety
598
+ - Don't skip nested attributes unless the execution flow requirements specify a parent attribute should be null or undefined
290
599
  - This provides the baseline data for all other scenarios`
291
600
  : `## Non-Default Scenario
292
601
  Generate ONLY the differences from the default scenario.
@@ -294,14 +603,57 @@ Generate ONLY the differences from the default scenario.
294
603
  - Set to \`null\` to remove data
295
604
  - Omit unchanged fields—they merge from default`;
296
605
 
606
+ // Only include the "NO ERROR DATA" instruction when the scenario doesn't require error data
607
+ const noErrorDataInstruction = requiresErrorData
608
+ ? `## IMPORTANT: ERROR DATA REQUIRED
609
+ This scenario tests error handling. You MUST include "error" fields with realistic error messages.
610
+ - Set error fields to truthy values (e.g., "Error: Operation failed" or "Something went wrong")
611
+ - The error data is REQUIRED to trigger the correct error UI state`
612
+ : `## CRITICAL: NO ERROR DATA
613
+ NEVER include "error" fields in responses. Skip them entirely.
614
+ - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
615
+ - Leave out any attribute named "error"—do not set to null, omit entirely`;
616
+
297
617
  return `You are a test data generator. Create mock data matching a data structure and scenario requirements.
298
618
 
619
+ ## Execution Flow Requirements
620
+ Each scenario has \`coveredFlows\` which lists the execution flows (distinct outcomes/behaviors) this scenario should demonstrate.
621
+ Each flow has \`requiredValues\` - the attribute values that MUST be set to produce that outcome.
622
+
623
+ **Your job**: Generate mock data that satisfies ALL the requiredValues from ALL coveredFlows.
624
+
625
+ For example, if a flow requires:
626
+ \`\`\`json
627
+ {
628
+ "attributePath": "signature[0].isLoading",
629
+ "value": "false",
630
+ "comparison": "equals",
631
+ "valueType": "boolean"
632
+ }
633
+ \`\`\`
634
+ Then set \`isLoading: false\` in the mockData.
635
+
636
+ ## CRITICAL: Blocking Flows to Avoid
637
+ If the scenario includes \`blockingFlowsToAvoid\`, these are flows (like modals, overlays) that would BLOCK the expected UI.
638
+ You MUST generate mock data that PREVENTS these flows from triggering:
639
+
640
+ - For \`comparison: "truthy"\` requirements → set the value to \`false\`, \`null\`, \`undefined\`, or \`0\`
641
+ - For \`comparison: "exists"\` requirements → set the value to \`null\` or omit it entirely
642
+ - For \`comparison: "equals"\` requirements → set a DIFFERENT value than what's required
643
+
644
+ For example, if a blocking flow has:
645
+ \`\`\`json
646
+ {
647
+ "attributePath": "useFetcher().data.success",
648
+ "value": "true",
649
+ "comparison": "truthy"
650
+ }
651
+ \`\`\`
652
+ Then you MUST set \`useFetcher().data\` to \`null\` or \`{ success: false }\` to prevent the modal from appearing.
653
+
299
654
  ${scenarioType}
300
655
 
301
- ## CRITICAL: NO ERROR DATA
302
- NEVER include "error" fields in responses. Skip them entirely.
303
- - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
304
- - Leave out any attribute named "error"—do not set to null, omit entirely
656
+ ${noErrorDataInstruction}
305
657
 
306
658
  ## Special Markers
307
659
 
@@ -317,30 +669,19 @@ Use for relative dates. Code runs in Node (no browser APIs, no external librarie
317
669
  \`\`\`
318
670
  Use simple elements only (\`<div>\`, \`<span>\`). No custom components.
319
671
 
320
- ## Mock Data Keys
321
- Preserve keys exactly as written in the structure. There are two formats:
672
+ ### Arrays
673
+ - Arrays should have many items (at least 4) unless specified otherwise
674
+ - Each item must follow the exact structure provided
675
+ - In general we want robust data, not minimal data unless specified otherwise
322
676
 
323
- ### Standard function calls
324
- \`\`\`json
325
- {
326
- "mockData": {
327
- "useUser()": { "user": { "name": "John" } },
328
- "from().select()": [{ "id": "1" }]
329
- }
330
- }
331
- \`\`\`
332
-
333
- ### Variable-qualified calls (for multiple calls to the same function)
334
- When the same function is called multiple times with results stored in different variables, keys use the format \`variableName <- functionName\`:
335
- \`\`\`json
336
- {
337
- "mockData": {
338
- "entityDiffFetcher <- useFetcher": { "data": null, "state": "idle" },
339
- "reportFetcher <- useFetcher": { "data": { "reportId": "abc123" }, "state": "idle" }
340
- }
341
- }
342
- \`\`\`
343
- This reads as "entityDiffFetcher receives from useFetcher". Each variable gets its own distinct mock data.
677
+ ## CRITICAL: Preserve Exact Structure
678
+ Your response MUST mirror the EXACT nested structure provided in mockData Structure.
679
+ - Do NOT reorganize, split, or create duplicate keys
680
+ - The hierarchy of nested objects must match exactly what was provided unless overridden by scenario rules
681
+ - Only change the leaf VALUES (replacing type descriptions like "string" with actual data like "hello")
682
+ - Copy the key strings EXACTLY from the structure
683
+ - Do NOT modify type parameters, arguments, or any part of the key
684
+ - The keys preserve the exact function call as written in the original code
344
685
 
345
686
  ## Response Format
346
687
  \`\`\`json
@@ -358,9 +699,15 @@ This reads as "entityDiffFetcher receives from useFetcher". Each variable gets i
358
699
  ## Rules
359
700
  - Valid JSON only—no raw code outside markers
360
701
  - No \`undefined\`—use \`null\` or omit
361
- - No data references (can't use \`posts[0]\` elsewhere—duplicate the value)
702
+ - No data references (can't use \`posts[0]\` elsewhere duplicate the value)
362
703
  - Scenario name must match exactly: "${scenarioName}"
363
704
  - Empty mockData: \`{}\`, empty argumentsData: \`[]\`
705
+
706
+ ## IMPORTANT: Avoid Identifier Collisions
707
+ When generating identifier values (SHA hashes, entity IDs, etc.):
708
+ - Use DISTINCT values for different identifier fields
709
+ - Avoid matching: if \`entity.sha\` is "abc123", arrays like \`jobs[].entityShas\` or \`currentlyExecuting.entityShas\` should NOT contain "abc123"
710
+ - This prevents accidental blocking of UI conditionals that check if IDs are in/not-in arrays
364
711
  `;
365
712
  };
366
713
 
@@ -376,3 +723,56 @@ Here is the original system message as well:
376
723
  ${generateSystemMessage(scenarioName, isDefault)}
377
724
  \`\`\`
378
725
  `;
726
+
727
+ /**
728
+ * System message for follow-up calls to generate missing mockData keys.
729
+ * Includes the same rules as the main system message but with a simpler response format.
730
+ */
731
+ export const generateMissingKeysSystemMessage =
732
+ () => `You are completing mock data generation for the Default Scenario. The initial response was missing some keys.
733
+
734
+ Generate data ONLY for the missing keys provided in the prompt. Do not skip any of them.
735
+
736
+ ## Special Markers
737
+
738
+ ### Dynamic Dates (\`~~codeyam-code~~\`)
739
+ \`\`\`json
740
+ { "createdAt": { "~~codeyam-code~~": "new Date(Date.now() - 24*60*60*1000)" } }
741
+ \`\`\`
742
+ Use for relative dates. Code runs in Node (no browser APIs, no external libraries).
743
+
744
+ ### JSX Children (\`~~codeyam-jsx~~\`)
745
+ \`\`\`json
746
+ { "children": { "~~codeyam-jsx~~": "<div>Hello</div>" } }
747
+ \`\`\`
748
+ Use simple elements only (\`<div>\`, \`<span>\`). No custom components.
749
+
750
+ ### Arrays
751
+ - Arrays should have many items (at least 4) unless specified otherwise
752
+ - Each item must follow the exact structure provided
753
+
754
+ ## CRITICAL: Preserve Exact Structure
755
+ Your response MUST mirror the EXACT nested structure provided for the missing keys.
756
+ - Only change the leaf VALUES (replacing type descriptions like "string" with actual data)
757
+ - Copy the key strings EXACTLY from the structure
758
+ - Do NOT modify type parameters, arguments, or any part of the key
759
+
760
+ ## CRITICAL: NO ERROR DATA
761
+ NEVER include "error" fields in responses. Skip them entirely.
762
+ - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
763
+ - Leave out any attribute named "error"—do not set to null, omit entirely
764
+
765
+ ## Response Format
766
+ \`\`\`json
767
+ {
768
+ "mockData": {
769
+ // fill in ONLY the missing keys
770
+ }
771
+ }
772
+ \`\`\`
773
+
774
+ ## Rules
775
+ - Valid JSON only—no raw code outside markers
776
+ - No \`undefined\`—use \`null\` or omit
777
+ - No data references (can't use \`posts[0]\` elsewhere — duplicate the value)
778
+ `;