@codeyam/codeyam-cli 0.1.0-staging.d0ad4ae → 0.1.0-staging.d52b24f

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 (1249) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +27 -27
  4. package/analyzer-template/packages/ai/index.ts +21 -5
  5. package/analyzer-template/packages/ai/package.json +3 -3
  6. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  7. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  8. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +217 -13
  10. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  12. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  16. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1215 -29
  17. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  18. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  19. package/analyzer-template/packages/ai/src/lib/completionCall.ts +247 -66
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +2020 -334
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +205 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +129 -20
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  34. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  35. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  36. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  37. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  38. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  39. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +4 -3
  40. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -149
  41. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  42. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1458 -65
  43. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  44. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +677 -0
  45. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  46. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  47. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  48. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  49. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  50. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  51. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  52. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  53. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +28 -170
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  63. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  64. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  65. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  66. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  67. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  68. package/analyzer-template/packages/analyze/index.ts +2 -0
  69. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  70. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +132 -33
  71. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  72. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  73. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  74. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  75. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  76. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  77. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  78. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  79. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  80. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +447 -255
  81. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +39 -4
  82. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  83. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  84. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  85. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +14 -14
  86. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +4 -4
  87. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  88. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  89. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  90. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  91. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  92. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +193 -76
  93. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +203 -41
  94. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -188
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +355 -23
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +166 -0
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +1 -0
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +845 -72
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  102. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  103. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  104. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  105. package/analyzer-template/packages/aws/package.json +10 -10
  106. package/analyzer-template/packages/database/index.ts +1 -0
  107. package/analyzer-template/packages/database/package.json +4 -4
  108. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  109. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  110. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  111. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  112. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  113. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  114. package/analyzer-template/packages/database/src/lib/kysely/db.ts +22 -1
  115. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  116. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  117. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  118. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  119. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  120. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  121. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  122. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  123. package/analyzer-template/packages/database/src/lib/loadCommits.ts +58 -19
  124. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -9
  125. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  126. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +5 -6
  127. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  128. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  129. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  130. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +96 -152
  131. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  132. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  133. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  134. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  135. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  136. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  137. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  138. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  139. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  142. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  143. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  145. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  146. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  147. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  148. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  149. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  150. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  151. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  152. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  153. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  154. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +16 -1
  155. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  156. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  157. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  158. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  159. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  161. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  163. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  166. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  167. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  168. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  169. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  170. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  171. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  172. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  173. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +6 -6
  174. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  175. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  176. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  177. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  178. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  179. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  181. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  182. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  184. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  186. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  187. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  188. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  189. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +45 -14
  190. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  192. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  193. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -10
  194. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  195. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  196. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  197. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  198. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  199. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +5 -5
  200. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  201. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  202. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  203. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  204. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  205. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  206. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  207. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  208. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  209. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -89
  210. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  211. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  212. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  213. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  214. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  215. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  216. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  217. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  218. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  219. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  220. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  221. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  222. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  223. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  224. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  225. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  226. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  227. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  228. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  229. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  230. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  231. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  232. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  233. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  234. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  235. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  236. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  237. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +13 -54
  238. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  239. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  240. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  241. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  242. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  243. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  244. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  245. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  246. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  247. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  248. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  249. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  250. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  251. package/analyzer-template/packages/github/package.json +2 -2
  252. package/analyzer-template/packages/types/index.ts +3 -6
  253. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  254. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  255. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  256. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  257. package/analyzer-template/packages/types/src/types/Scenario.ts +13 -77
  258. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  259. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  260. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  261. package/analyzer-template/packages/ui-components/package.json +1 -1
  262. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  263. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  264. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  265. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  266. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  267. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  268. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  269. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  270. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  271. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  272. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  273. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  274. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  275. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  276. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +13 -54
  277. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  278. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  279. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  280. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  281. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  282. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  283. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  284. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  285. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  286. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  287. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  288. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  289. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  290. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  291. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  292. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  293. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  294. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  295. package/analyzer-template/playwright/capture.ts +20 -8
  296. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  297. package/analyzer-template/playwright/captureStatic.ts +1 -1
  298. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  299. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  300. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  301. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  302. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  303. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  304. package/analyzer-template/project/constructMockCode.ts +593 -91
  305. package/analyzer-template/project/controller/startController.ts +16 -1
  306. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  307. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  308. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  309. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  310. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  311. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  312. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  313. package/analyzer-template/project/orchestrateCapture.ts +75 -7
  314. package/analyzer-template/project/reconcileMockDataKeys.ts +220 -1
  315. package/analyzer-template/project/runAnalysis.ts +6 -0
  316. package/analyzer-template/project/start.ts +49 -12
  317. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  318. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  319. package/analyzer-template/project/writeMockDataTsx.ts +312 -10
  320. package/analyzer-template/project/writeScenarioComponents.ts +314 -43
  321. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  322. package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
  323. package/analyzer-template/tsconfig.json +14 -1
  324. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  325. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  326. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  327. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  328. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  329. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  330. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  331. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  332. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  333. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  334. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  335. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  336. package/background/src/lib/virtualized/project/constructMockCode.js +493 -52
  337. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  338. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  339. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  340. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  341. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  342. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  343. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  344. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  345. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  346. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  347. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  348. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  349. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  350. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  351. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  352. package/background/src/lib/virtualized/project/orchestrateCapture.js +62 -7
  353. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  354. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +184 -1
  355. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  356. package/background/src/lib/virtualized/project/runAnalysis.js +5 -0
  357. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  358. package/background/src/lib/virtualized/project/start.js +44 -12
  359. package/background/src/lib/virtualized/project/start.js.map +1 -1
  360. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  361. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  362. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  363. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  364. package/background/src/lib/virtualized/project/writeMockDataTsx.js +263 -6
  365. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  366. package/background/src/lib/virtualized/project/writeScenarioComponents.js +237 -41
  367. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  368. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  369. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  370. package/codeyam-cli/scripts/apply-setup.js +386 -9
  371. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  372. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  373. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  374. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  375. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  376. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  377. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  378. package/codeyam-cli/src/cli.js +35 -24
  379. package/codeyam-cli/src/cli.js.map +1 -1
  380. package/codeyam-cli/src/codeyam-cli.js +18 -2
  381. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  382. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  383. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  384. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  385. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  386. package/codeyam-cli/src/commands/analyze.js +21 -9
  387. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  388. package/codeyam-cli/src/commands/baseline.js +10 -11
  389. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  390. package/codeyam-cli/src/commands/debug.js +37 -23
  391. package/codeyam-cli/src/commands/debug.js.map +1 -1
  392. package/codeyam-cli/src/commands/default.js +43 -35
  393. package/codeyam-cli/src/commands/default.js.map +1 -1
  394. package/codeyam-cli/src/commands/editor.js +4283 -0
  395. package/codeyam-cli/src/commands/editor.js.map +1 -0
  396. package/codeyam-cli/src/commands/init.js +147 -292
  397. package/codeyam-cli/src/commands/init.js.map +1 -1
  398. package/codeyam-cli/src/commands/memory.js +278 -0
  399. package/codeyam-cli/src/commands/memory.js.map +1 -0
  400. package/codeyam-cli/src/commands/recapture.js +31 -18
  401. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  402. package/codeyam-cli/src/commands/report.js +46 -1
  403. package/codeyam-cli/src/commands/report.js.map +1 -1
  404. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  405. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  406. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  407. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  408. package/codeyam-cli/src/commands/start.js +8 -12
  409. package/codeyam-cli/src/commands/start.js.map +1 -1
  410. package/codeyam-cli/src/commands/test-startup.js +2 -0
  411. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  412. package/codeyam-cli/src/commands/verify.js +14 -2
  413. package/codeyam-cli/src/commands/verify.js.map +1 -1
  414. package/codeyam-cli/src/data/techStacks.js +77 -0
  415. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  416. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  417. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  418. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  419. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  420. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  421. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  422. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +137 -0
  423. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  424. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +987 -0
  425. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  426. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  427. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  428. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  429. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  430. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  431. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  432. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  433. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  434. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +124 -0
  435. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  436. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +261 -0
  437. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  438. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  439. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  440. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  441. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  442. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  443. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  444. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  445. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  446. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  447. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  448. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  449. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  450. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +353 -0
  451. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  452. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  453. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  454. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  455. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  456. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  457. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  458. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1483 -0
  459. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  460. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +280 -0
  461. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  462. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  463. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  464. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  465. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  466. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  467. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  468. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1857 -0
  469. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  470. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  471. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  472. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  473. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  474. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  475. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  476. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  477. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  478. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  479. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  480. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  481. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  482. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  483. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  484. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +227 -0
  485. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  486. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  487. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  488. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +493 -0
  489. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  490. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  491. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  492. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +175 -82
  493. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  494. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  495. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  496. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  497. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  498. package/codeyam-cli/src/utils/analysisRunner.js +32 -16
  499. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  500. package/codeyam-cli/src/utils/analyzer.js +16 -0
  501. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  502. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  503. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  504. package/codeyam-cli/src/utils/backgroundServer.js +202 -29
  505. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  506. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  507. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  508. package/codeyam-cli/src/utils/database.js +37 -2
  509. package/codeyam-cli/src/utils/database.js.map +1 -1
  510. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  511. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  512. package/codeyam-cli/src/utils/devServerState.js +71 -0
  513. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  514. package/codeyam-cli/src/utils/editorApi.js +79 -0
  515. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  516. package/codeyam-cli/src/utils/editorAudit.js +210 -0
  517. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  518. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  519. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  520. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  521. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  522. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  523. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  524. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  525. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  526. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  527. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  528. package/codeyam-cli/src/utils/editorEntityHelpers.js +129 -0
  529. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  530. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  531. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  532. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  533. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  534. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  535. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  536. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  537. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  538. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  539. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  540. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  541. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  542. package/codeyam-cli/src/utils/editorPreview.js +137 -0
  543. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  544. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  545. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  546. package/codeyam-cli/src/utils/editorScenarios.js +548 -0
  547. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  548. package/codeyam-cli/src/utils/editorSeedAdapter.js +422 -0
  549. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  550. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  551. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  552. package/codeyam-cli/src/utils/entityChangeStatus.js +366 -0
  553. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  554. package/codeyam-cli/src/utils/entityChangeStatus.server.js +196 -0
  555. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  556. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  557. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  558. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  559. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  560. package/codeyam-cli/src/utils/generateReport.js +4 -3
  561. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  562. package/codeyam-cli/src/utils/git.js +103 -0
  563. package/codeyam-cli/src/utils/git.js.map +1 -1
  564. package/codeyam-cli/src/utils/install-skills.js +129 -39
  565. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  566. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  567. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  568. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  569. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  570. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  571. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  572. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  573. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  574. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  575. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  576. package/codeyam-cli/src/utils/progress.js +8 -1
  577. package/codeyam-cli/src/utils/progress.js.map +1 -1
  578. package/codeyam-cli/src/utils/project.js +15 -5
  579. package/codeyam-cli/src/utils/project.js.map +1 -1
  580. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  581. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  582. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  583. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  584. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  585. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  586. package/codeyam-cli/src/utils/queue/job.js +75 -1
  587. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  588. package/codeyam-cli/src/utils/queue/manager.js +7 -0
  589. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  590. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  591. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  592. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  593. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  594. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  595. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  596. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  597. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  598. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  599. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  600. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  601. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  602. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  603. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  604. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  605. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  606. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  607. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  608. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  609. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  610. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  611. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  612. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  613. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  614. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  615. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  616. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  617. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  618. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  619. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  620. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  621. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  622. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  623. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  624. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  625. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  626. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  627. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  628. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  629. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  630. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  631. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  632. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  633. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  634. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  635. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  636. package/codeyam-cli/src/utils/rules/index.js +7 -0
  637. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  638. package/codeyam-cli/src/utils/rules/parser.js +93 -0
  639. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  640. package/codeyam-cli/src/utils/rules/pathMatcher.js +49 -0
  641. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  642. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  643. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  644. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  645. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  646. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  647. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  648. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  649. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  650. package/codeyam-cli/src/utils/scenarioCoverage.js +74 -0
  651. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  652. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  653. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  654. package/codeyam-cli/src/utils/scenariosManifest.js +249 -0
  655. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  656. package/codeyam-cli/src/utils/serverState.js +94 -12
  657. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  658. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +96 -45
  659. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  660. package/codeyam-cli/src/utils/simulationGateMiddleware.js +166 -0
  661. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  662. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  663. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  664. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  665. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  666. package/codeyam-cli/src/utils/testRunner.js +158 -0
  667. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  668. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  669. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  670. package/codeyam-cli/src/utils/versionInfo.js +67 -15
  671. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  672. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  673. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  674. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  675. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  676. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
  677. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  678. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  679. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  680. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +567 -0
  681. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  682. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +146 -0
  683. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  684. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +65 -0
  685. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  686. package/codeyam-cli/src/webserver/app/lib/database.js +63 -33
  687. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  688. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  689. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  690. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  691. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  692. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  693. package/codeyam-cli/src/webserver/backgroundServer.js +182 -18
  694. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  695. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  696. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  697. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CzTDWkF2.js +1 -0
  698. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BFbq6iFk.js +11 -0
  699. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  700. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-B6OMi58N.js +41 -0
  701. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-DuYodzo1.js +1 -0
  702. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CXo9EeCl.js +25 -0
  703. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DYCNb2It.js +3 -0
  704. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-By5zI316.js} +1 -1
  705. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-CZgY3sxX.js} +3 -3
  706. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-CnYYwRDw.js +11 -0
  707. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CDoF7ZpU.js +1 -0
  708. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-DrnfvaLL.js +10 -0
  709. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Df3UCi8k.js +34 -0
  710. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  711. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-DRKR9T0U.js +1 -0
  712. package/codeyam-cli/src/webserver/build/client/assets/_index-ClR-g3tY.js +11 -0
  713. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-DTH6ydEA.js +27 -0
  714. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  715. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  716. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-74hnHF59.js +1 -0
  717. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  718. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8CYhCO9.js +22 -0
  719. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  720. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  721. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  722. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  723. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  724. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  725. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  726. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  727. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  728. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  729. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  730. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  731. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  732. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  733. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  734. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  735. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  736. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  737. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  738. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  739. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  740. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  741. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  742. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  743. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  744. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  745. package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
  746. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  747. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  748. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  749. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  750. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  751. package/codeyam-cli/src/webserver/build/client/assets/book-open-CLaoh4ac.js +6 -0
  752. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-BZ2DZxbW.js} +2 -2
  753. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BBXArFPl.js +43 -0
  754. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-CT4unAk-.js} +2 -2
  755. package/codeyam-cli/src/webserver/build/client/assets/copy-zK0B6Nu-.js +11 -0
  756. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DJB0YQJL.js +41 -0
  757. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  758. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  759. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CkXFP_i-.js +1 -0
  760. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +1 -0
  761. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-B2KVBVj4.js +58 -0
  762. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DBa7T2FK.js +41 -0
  763. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-D0-YwkBh.js → entity._sha._-BqAN7hyG.js} +13 -13
  764. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-BOi8kpwd.js +6 -0
  765. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js +6 -0
  766. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CJX6kkkV.js +6 -0
  767. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-C1H_a_Y3.js → entity._sha_.edit._scenarioId-BhVjZhKg.js} +2 -2
  768. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-_gzKltPN.js} +6 -6
  769. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  770. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  771. package/codeyam-cli/src/webserver/build/client/assets/files-CV_17tZS.js +1 -0
  772. package/codeyam-cli/src/webserver/build/client/assets/git-D-YXmMbR.js +1 -0
  773. package/codeyam-cli/src/webserver/build/client/assets/globals-CGrDAxj0.css +1 -0
  774. package/codeyam-cli/src/webserver/build/client/assets/index-Blo6EK8G.js +15 -0
  775. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-BsX0F-9C.js} +1 -1
  776. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-CCrgCshv.js} +1 -1
  777. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  778. package/codeyam-cli/src/webserver/build/client/assets/labs-Byazq8Pv.js +1 -0
  779. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-DVQ0oHR7.js} +2 -2
  780. package/codeyam-cli/src/webserver/build/client/assets/manifest-a6273a24.js +1 -0
  781. package/codeyam-cli/src/webserver/build/client/assets/memory-b-VmA2Vj.js +101 -0
  782. package/codeyam-cli/src/webserver/build/client/assets/pause-DGcndCAa.js +11 -0
  783. package/codeyam-cli/src/webserver/build/client/assets/root-D5Zi3U2Z.js +67 -0
  784. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-C0Uw0bcK.js} +2 -2
  785. package/codeyam-cli/src/webserver/build/client/assets/settings-OoNgHIfW.js +1 -0
  786. package/codeyam-cli/src/webserver/build/client/assets/simulations-Bcemfu8a.js +1 -0
  787. package/codeyam-cli/src/webserver/build/client/assets/terminal-BgMmG7R9.js +11 -0
  788. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-Cs87hJYK.js} +2 -2
  789. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BR3Rs7JY.js +1 -0
  790. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BxxP_XF9.js +2 -0
  791. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BermyNU5.js +1 -0
  792. package/codeyam-cli/src/webserver/build/client/assets/useToast-a_QN_W9_.js +1 -0
  793. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  794. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  795. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-H_bGKza6.js +13 -0
  796. package/codeyam-cli/src/webserver/build/server/assets/index-BjsaHnnW.js +1 -0
  797. package/codeyam-cli/src/webserver/build/server/assets/init-CmahXA_a.js +10 -0
  798. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  799. package/codeyam-cli/src/webserver/build/server/assets/server-build-BYvtz6_N.js +501 -0
  800. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  801. package/codeyam-cli/src/webserver/build-info.json +5 -5
  802. package/codeyam-cli/src/webserver/devServer.js +39 -5
  803. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  804. package/codeyam-cli/src/webserver/editorProxy.js +901 -0
  805. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  806. package/codeyam-cli/src/webserver/idleDetector.js +73 -0
  807. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  808. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  809. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  810. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  811. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  812. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  813. package/codeyam-cli/src/webserver/server.js +344 -26
  814. package/codeyam-cli/src/webserver/server.js.map +1 -1
  815. package/codeyam-cli/src/webserver/terminalServer.js +831 -0
  816. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  817. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  818. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  819. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  820. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  821. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  822. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  823. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  824. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  825. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  826. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  827. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  828. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  829. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  830. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  831. package/codeyam-cli/templates/codeyam-editor-claude.md +147 -0
  832. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  833. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  834. package/codeyam-cli/templates/editor-step-hook.py +321 -0
  835. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  836. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  837. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  838. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  839. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  840. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  841. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  842. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  843. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  844. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  845. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  846. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  847. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  848. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  849. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  850. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  851. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  852. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  853. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  854. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  855. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  856. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  857. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  858. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  859. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  860. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  861. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  862. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  863. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  864. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  865. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  866. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  867. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  868. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  869. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  870. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  871. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  872. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  873. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  874. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  875. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  876. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  877. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  878. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +127 -0
  879. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  880. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  881. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  882. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  883. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  884. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  885. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  886. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  887. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  888. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  889. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  890. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  891. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  892. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  893. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  894. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  895. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  896. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  897. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  898. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  899. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  900. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  901. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  902. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  903. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  904. package/codeyam-cli/templates/rule-reflection-hook.py +647 -0
  905. package/codeyam-cli/templates/rules-instructions.md +78 -0
  906. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  907. package/codeyam-cli/templates/{codeyam-debug-skill.md → skills/codeyam-debug/SKILL.md} +48 -4
  908. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  909. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +211 -0
  910. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  911. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  912. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  913. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  914. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  915. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  916. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  917. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  918. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  919. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  920. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  921. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  922. package/codeyam-cli/templates/{codeyam-setup-skill.md → skills/codeyam-setup/SKILL.md} +13 -1
  923. package/codeyam-cli/templates/{codeyam-sim-skill.md → skills/codeyam-sim/SKILL.md} +1 -1
  924. package/codeyam-cli/templates/{codeyam-test-skill.md → skills/codeyam-test/SKILL.md} +1 -1
  925. package/codeyam-cli/templates/{codeyam-verify-skill.md → skills/codeyam-verify/SKILL.md} +1 -1
  926. package/package.json +32 -22
  927. package/packages/ai/index.js +8 -6
  928. package/packages/ai/index.js.map +1 -1
  929. package/packages/ai/src/lib/analyzeScope.js +179 -13
  930. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  931. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  932. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  933. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +160 -13
  934. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  935. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  936. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  937. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  938. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  939. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  940. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  941. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  942. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  943. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  944. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  945. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  946. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  947. package/packages/ai/src/lib/astScopes/processExpression.js +931 -29
  948. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  949. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  950. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  951. package/packages/ai/src/lib/completionCall.js +188 -38
  952. package/packages/ai/src/lib/completionCall.js.map +1 -1
  953. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1600 -189
  954. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  955. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  956. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  957. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +179 -0
  958. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  959. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  960. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  961. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  962. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  963. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  964. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  965. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  966. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  967. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +111 -14
  968. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  969. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  970. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  971. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  972. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  973. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  974. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  975. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  976. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  977. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  978. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  979. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  980. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  981. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  982. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  983. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  984. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  985. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  986. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  987. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  988. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  989. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  990. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  991. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +4 -3
  992. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  993. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  994. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  995. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  996. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  997. package/packages/ai/src/lib/generateEntityScenarioData.js +1153 -60
  998. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  999. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  1000. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  1001. package/packages/ai/src/lib/generateExecutionFlows.js +484 -0
  1002. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  1003. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  1004. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  1005. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  1006. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  1007. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  1008. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  1009. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  1010. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  1011. package/packages/ai/src/lib/isolateScopes.js +270 -7
  1012. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  1013. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  1014. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  1015. package/packages/ai/src/lib/mergeStatements.js +88 -46
  1016. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  1017. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  1018. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  1019. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  1020. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  1021. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  1022. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  1023. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -119
  1024. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  1025. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  1026. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  1027. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  1028. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  1029. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  1030. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  1031. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  1032. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  1033. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  1034. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  1035. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  1036. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  1037. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  1038. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  1039. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  1040. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  1041. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  1042. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  1043. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  1044. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  1045. package/packages/analyze/index.js +1 -0
  1046. package/packages/analyze/index.js.map +1 -1
  1047. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  1048. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  1049. package/packages/analyze/src/lib/ProjectAnalyzer.js +109 -30
  1050. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  1051. package/packages/analyze/src/lib/analysisContext.js +30 -5
  1052. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  1053. package/packages/analyze/src/lib/asts/index.js +4 -2
  1054. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  1055. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  1056. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  1057. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  1058. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  1059. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  1060. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  1061. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  1062. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  1063. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  1064. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  1065. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  1066. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  1067. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  1068. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  1069. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +189 -41
  1070. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  1071. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +28 -4
  1072. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  1073. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  1074. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  1075. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  1076. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  1077. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  1078. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  1079. package/packages/analyze/src/lib/files/analyzeChange.js +10 -10
  1080. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  1081. package/packages/analyze/src/lib/files/analyzeEntity.js +4 -4
  1082. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  1083. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  1084. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  1085. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  1086. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  1087. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  1088. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  1089. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  1090. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  1091. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  1092. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  1093. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +164 -68
  1094. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  1095. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +178 -31
  1096. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  1097. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -129
  1098. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  1099. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +252 -21
  1100. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  1101. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +104 -0
  1102. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  1103. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +1 -0
  1104. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  1105. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  1106. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  1107. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +686 -55
  1108. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  1109. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  1110. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  1111. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  1112. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  1113. package/packages/analyze/src/lib/index.js +1 -0
  1114. package/packages/analyze/src/lib/index.js.map +1 -1
  1115. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  1116. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  1117. package/packages/database/index.js +1 -0
  1118. package/packages/database/index.js.map +1 -1
  1119. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  1120. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  1121. package/packages/database/src/lib/analysisToDb.js +1 -1
  1122. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  1123. package/packages/database/src/lib/branchToDb.js +1 -1
  1124. package/packages/database/src/lib/branchToDb.js.map +1 -1
  1125. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  1126. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  1127. package/packages/database/src/lib/commitToDb.js +1 -1
  1128. package/packages/database/src/lib/commitToDb.js.map +1 -1
  1129. package/packages/database/src/lib/fileToDb.js +1 -1
  1130. package/packages/database/src/lib/fileToDb.js.map +1 -1
  1131. package/packages/database/src/lib/kysely/db.js +16 -1
  1132. package/packages/database/src/lib/kysely/db.js.map +1 -1
  1133. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  1134. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  1135. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  1136. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  1137. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  1138. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  1139. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  1140. package/packages/database/src/lib/loadAnalyses.js +45 -2
  1141. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  1142. package/packages/database/src/lib/loadAnalysis.js +8 -0
  1143. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  1144. package/packages/database/src/lib/loadBranch.js +11 -1
  1145. package/packages/database/src/lib/loadBranch.js.map +1 -1
  1146. package/packages/database/src/lib/loadCommit.js +7 -0
  1147. package/packages/database/src/lib/loadCommit.js.map +1 -1
  1148. package/packages/database/src/lib/loadCommits.js +45 -14
  1149. package/packages/database/src/lib/loadCommits.js.map +1 -1
  1150. package/packages/database/src/lib/loadEntities.js +23 -10
  1151. package/packages/database/src/lib/loadEntities.js.map +1 -1
  1152. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  1153. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  1154. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +5 -5
  1155. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  1156. package/packages/database/src/lib/projectToDb.js +1 -1
  1157. package/packages/database/src/lib/projectToDb.js.map +1 -1
  1158. package/packages/database/src/lib/saveFiles.js +1 -1
  1159. package/packages/database/src/lib/saveFiles.js.map +1 -1
  1160. package/packages/database/src/lib/scenarioToDb.js +1 -1
  1161. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  1162. package/packages/database/src/lib/updateCommitMetadata.js +76 -89
  1163. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  1164. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  1165. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  1166. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  1167. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  1168. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  1169. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  1170. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  1171. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  1172. package/packages/types/index.js +0 -1
  1173. package/packages/types/index.js.map +1 -1
  1174. package/packages/types/src/enums/ProjectFramework.js +2 -0
  1175. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  1176. package/packages/types/src/types/Scenario.js +1 -21
  1177. package/packages/types/src/types/Scenario.js.map +1 -1
  1178. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  1179. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  1180. package/packages/utils/src/lib/safeFileName.js +29 -3
  1181. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  1182. package/scripts/npm-post-install.cjs +34 -0
  1183. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -109
  1184. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -584
  1185. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -341
  1186. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  1187. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  1188. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  1189. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  1190. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  1191. package/codeyam-cli/src/commands/list.js +0 -31
  1192. package/codeyam-cli/src/commands/list.js.map +0 -1
  1193. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  1194. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  1195. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  1196. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  1197. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-Cmysw5OP.js +0 -1
  1198. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-DLqD3qNt.js +0 -1
  1199. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CAneekK2.js +0 -41
  1200. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Cu16OUmx.js +0 -25
  1201. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CVtiBnY5.js +0 -3
  1202. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DcAUIpD_.js +0 -11
  1203. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DuDvi0jm.js +0 -1
  1204. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BMKg0SAF.js +0 -15
  1205. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-DyFZkK0l.js +0 -1
  1206. package/codeyam-cli/src/webserver/build/client/assets/_index-DSmTpjmK.js +0 -11
  1207. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BF_aK4y6.js +0 -32
  1208. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +0 -51
  1209. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BdhJEx6B.js +0 -21
  1210. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  1211. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-RJCf3Tvw.js +0 -1
  1212. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-EylcgScH.js +0 -1
  1213. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DMe7kvgo.js +0 -1
  1214. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DMJ7zii9.js +0 -1
  1215. package/codeyam-cli/src/webserver/build/client/assets/files-BW7Cyeyi.js +0 -1
  1216. package/codeyam-cli/src/webserver/build/client/assets/git-CZu4fif0.js +0 -15
  1217. package/codeyam-cli/src/webserver/build/client/assets/globals-wHVy_II5.css +0 -1
  1218. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  1219. package/codeyam-cli/src/webserver/build/client/assets/manifest-2d191949.js +0 -1
  1220. package/codeyam-cli/src/webserver/build/client/assets/root-FHgpM6gc.js +0 -56
  1221. package/codeyam-cli/src/webserver/build/client/assets/settings-6D8k8Jp5.js +0 -1
  1222. package/codeyam-cli/src/webserver/build/client/assets/simulations-CDJZnWhN.js +0 -1
  1223. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dv18q8LD.js +0 -1
  1224. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-0ToGk4K3.js +0 -1
  1225. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-aSv48UbS.js +0 -2
  1226. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-1BX144Eg.js +0 -1
  1227. package/codeyam-cli/src/webserver/build/client/assets/useToast-mBRpZPiu.js +0 -1
  1228. package/codeyam-cli/src/webserver/build/server/assets/index-pU0o5t1o.js +0 -1
  1229. package/codeyam-cli/src/webserver/build/server/assets/server-build-YzfkRwdn.js +0 -178
  1230. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  1231. package/codeyam-cli/templates/debug-codeyam.md +0 -625
  1232. package/packages/ai/src/lib/findMatchingAttribute.js +0 -81
  1233. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  1234. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -425
  1235. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  1236. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -267
  1237. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  1238. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  1239. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  1240. package/packages/ai/src/lib/isFrontend.js +0 -5
  1241. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  1242. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  1243. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  1244. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  1245. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  1246. package/scripts/finalize-analyzer.cjs +0 -81
  1247. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  1248. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.dev-mode-events-l0sNRNKZ.js} +0 -0
  1249. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.editor-audit-l0sNRNKZ.js} +0 -0
@@ -1,14 +1,681 @@
1
1
  import completionCall from "./completionCall.js";
2
2
  import generateEntityScenarioDataGenerator from "./promptGenerators/generateEntityScenarioDataGenerator.js";
3
+ import generateMissingKeysPrompt from "./promptGenerators/generateMissingKeysPrompt.js";
4
+ import generateChunkPrompt from "./promptGenerators/generateChunkPrompt.js";
3
5
  import { saveLlmCall } from "../../../../packages/aws/dynamodb/index.js";
6
+ import { trackDataSnapshot } from "./e2eDataTracking.js";
4
7
  import validateJson from "./validateJson.js";
5
8
  import { awsLog, awsLogDebugLevel } from "../../../../packages/utils/index.js";
6
9
  import { parseJsonSafe } from "../../../../packages/ai/index.js";
7
10
  import convertNullToUndefinedBySchema from "./dataStructure/helpers/convertNullToUndefinedBySchema.js";
11
+ import convertTypeAnnotationsToValues from "./dataStructure/helpers/convertTypeAnnotationsToValues.js";
12
+ import fixNullIdsBySchema from "./dataStructure/helpers/fixNullIdsBySchema.js";
13
+ import coerceObjectsToPrimitivesBySchema from "./dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js";
14
+ import coercePrimitivesToArraysBySchema from "./dataStructure/helpers/coercePrimitivesToArraysBySchema.js";
15
+ import stripNullableMarkers from "./dataStructure/helpers/stripNullableMarkers.js";
16
+ import { deepMerge } from "../../../../packages/generate/index.js";
17
+ import { chunkDataStructure, getRequiredValuesForChunk, } from "./dataStructureChunking.js";
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(scenario, executionFlows) {
23
+ const coveredFlowIds = scenario.metadata?.coveredFlows || [];
24
+ for (const flowId of coveredFlowIds) {
25
+ const flow = executionFlows?.find((f) => f.id === flowId);
26
+ if (!flow?.requiredValues)
27
+ continue;
28
+ for (const rv of flow.requiredValues) {
29
+ // Check if any requiredValue has an error path and requires it to be truthy
30
+ if (rv.attributePath?.toLowerCase().includes('.error') &&
31
+ rv.comparison === 'truthy') {
32
+ return true;
33
+ }
34
+ }
35
+ }
36
+ return false;
37
+ }
38
+ /**
39
+ * Deep merge scenario data with default scenario data.
40
+ * The scenario-specific data takes precedence, with default filling in missing fields.
41
+ *
42
+ * IMPORTANT: null values are PRESERVED (not removed) in the result.
43
+ * This is critical because writeMockDataTsx.ts does another deepMerge with default data,
44
+ * and it needs null values to prevent defaults from being filled back in.
45
+ * If we removed null here, the second merge would restore the defaults,
46
+ * making scenarios identical to the default scenario.
47
+ */
48
+ function deepMergeScenarioData(defaultData, scenarioData) {
49
+ // Guard against non-object inputs (LLM sometimes returns primitives)
50
+ if (typeof scenarioData !== 'object' ||
51
+ scenarioData === null ||
52
+ Array.isArray(scenarioData)) {
53
+ // Return scenario value directly if it's not a mergeable object
54
+ return scenarioData;
55
+ }
56
+ if (typeof defaultData !== 'object' ||
57
+ defaultData === null ||
58
+ Array.isArray(defaultData)) {
59
+ // Return scenario value if default isn't mergeable
60
+ return scenarioData;
61
+ }
62
+ const result = {};
63
+ // Start with all keys from default
64
+ for (const key of Object.keys(defaultData)) {
65
+ if (key in scenarioData) {
66
+ const scenarioValue = scenarioData[key];
67
+ const defaultValue = defaultData[key];
68
+ // null means explicitly override with null (falsy value)
69
+ // IMPORTANT: We preserve null instead of removing the key
70
+ // This ensures writeMockDataTsx's deepMerge won't fill in defaults
71
+ if (scenarioValue === null) {
72
+ result[key] = null;
73
+ continue;
74
+ }
75
+ // Deep merge objects (but not arrays)
76
+ if (typeof scenarioValue === 'object' &&
77
+ !Array.isArray(scenarioValue) &&
78
+ typeof defaultValue === 'object' &&
79
+ !Array.isArray(defaultValue) &&
80
+ defaultValue !== null) {
81
+ result[key] = deepMergeScenarioData(defaultValue, scenarioValue);
82
+ }
83
+ else {
84
+ // Use scenario value (overrides default)
85
+ result[key] = scenarioValue;
86
+ }
87
+ }
88
+ else {
89
+ // Key not in scenario, use default
90
+ result[key] = defaultData[key];
91
+ }
92
+ }
93
+ // Add any keys that are only in scenario data (including null values)
94
+ for (const key of Object.keys(scenarioData)) {
95
+ if (!(key in defaultData)) {
96
+ result[key] = scenarioData[key];
97
+ }
98
+ }
99
+ return result;
100
+ }
8
101
  const DEFAULT_SCENARIO_NAME = 'Default Scenario';
9
- export async function generateDataForScenario({ entity, structure, scenario, defaultScenarioData, incompleteResponse, analysis, model, }) {
102
+ /**
103
+ * Find the path to a key within a nested dataForMocks structure.
104
+ * Returns the path as an array of keys, or null if not found.
105
+ *
106
+ * @example
107
+ * // dataForMocks = { trpc: { fastener: { "useMutation()": { isLoading: "boolean" } } } }
108
+ * // findKeyPath("fastener", dataForMocks) returns ["trpc"]
109
+ */
110
+ function findKeyPath(targetKey, obj, currentPath = []) {
111
+ if (typeof obj !== 'object' || obj === null || Array.isArray(obj)) {
112
+ return null;
113
+ }
114
+ for (const key of Object.keys(obj)) {
115
+ if (key === targetKey) {
116
+ return currentPath;
117
+ }
118
+ // Recursively search in nested objects
119
+ const nested = obj[key];
120
+ if (typeof nested === 'object' &&
121
+ nested !== null &&
122
+ !Array.isArray(nested)) {
123
+ const result = findKeyPath(targetKey, nested, [
124
+ ...currentPath,
125
+ key,
126
+ ]);
127
+ if (result !== null) {
128
+ return result;
129
+ }
130
+ }
131
+ }
132
+ return null;
133
+ }
134
+ /**
135
+ * Strip primitive values from `source` when the `destination` already has an
136
+ * array or object at the same key. Returns a cleaned copy of source (or null
137
+ * if nothing remains after stripping).
138
+ *
139
+ * This prevents misplaced LLM data (e.g., `{ webapps: true }`) from
140
+ * overwriting correct complex values (e.g., `{ webapps: [...] }`) during
141
+ * deep merge in relocateMisplacedNestedKeys.
142
+ */
143
+ function stripPrimitivesOverwritingComplexValues(destination, source) {
144
+ if (typeof source !== 'object' || source === null || Array.isArray(source)) {
145
+ return null;
146
+ }
147
+ const result = {};
148
+ let hasKeys = false;
149
+ for (const key of Object.keys(source)) {
150
+ const srcVal = source[key];
151
+ const dstVal = destination[key];
152
+ // If destination has an array or object but source has a primitive, skip it
153
+ if (typeof dstVal === 'object' &&
154
+ dstVal !== null &&
155
+ typeof srcVal !== 'object') {
156
+ continue;
157
+ }
158
+ result[key] = srcVal;
159
+ hasKeys = true;
160
+ }
161
+ return hasKeys ? result : null;
162
+ }
163
+ /**
164
+ * Relocate misplaced nested keys in mockData to their correct position
165
+ * based on the dataForMocks structure.
166
+ *
167
+ * When the LLM returns mockData with keys at the wrong nesting level
168
+ * (e.g., { trpc: { quote: {...} }, fastener: {...} } when fastener should
169
+ * be inside trpc), this function moves them to the correct position.
170
+ *
171
+ * This function works recursively to handle nested misplacements, not just
172
+ * root-level ones. For example, if getQuote is at trpc.getQuote instead of
173
+ * trpc.quote.getQuote, it will be relocated.
174
+ *
175
+ * @example
176
+ * // dataForMocks: { trpc: { quote: {...}, fastener: {...} } }
177
+ * // mockData: { trpc: { quote: {...} }, fastener: {...} }
178
+ * // After: mockData: { trpc: { quote: {...}, fastener: {...} } }
179
+ *
180
+ * @example (nested case)
181
+ * // dataForMocks: { trpc: { quote: { getQuote: {...} } } }
182
+ * // mockData: { trpc: { quote: {...}, getQuote: {...} } }
183
+ * // After: mockData: { trpc: { quote: { getQuote: {...} } } }
184
+ */
185
+ function relocateMisplacedNestedKeys(mockData, dataForMocks, currentPathForLogging = []) {
186
+ if (typeof dataForMocks !== 'object' || dataForMocks === null) {
187
+ return;
188
+ }
189
+ const keysInSchema = Object.keys(dataForMocks);
190
+ const keysToRelocate = [];
191
+ // Find keys in mockData that are NOT at this level in dataForMocks
192
+ // but DO exist somewhere nested in dataForMocks
193
+ for (const key of Object.keys(mockData)) {
194
+ if (!keysInSchema.includes(key)) {
195
+ // This key is at this level in mockData but not at this level in dataForMocks
196
+ // Check if it exists somewhere nested in dataForMocks
197
+ const path = findKeyPath(key, dataForMocks);
198
+ if (path !== null && path.length > 0) {
199
+ keysToRelocate.push({ key, path });
200
+ }
201
+ }
202
+ }
203
+ // Relocate each misplaced key to its correct nested position
204
+ for (const { key, path } of keysToRelocate) {
205
+ const value = mockData[key];
206
+ // Navigate to the correct parent in mockData, creating nested objects if needed
207
+ let current = mockData;
208
+ for (const pathKey of path) {
209
+ if (current[pathKey] === undefined) {
210
+ current[pathKey] = {};
211
+ }
212
+ current = current[pathKey];
213
+ }
214
+ // Deep merge the value into the correct location
215
+ // Use deep merge to preserve existing data at that location.
216
+ // Before merging, strip primitives from the misplaced value that would
217
+ // overwrite arrays/objects at the destination. The misplaced data is lower
218
+ // quality — the LLM put it in the wrong place — so primitives like `true`
219
+ // should not overwrite correct complex values like arrays.
220
+ if (current[key] !== undefined && typeof current[key] === 'object') {
221
+ const safeValue = stripPrimitivesOverwritingComplexValues(current[key], value);
222
+ if (safeValue !== null) {
223
+ current[key] = deepMerge(current[key], safeValue);
224
+ }
225
+ }
226
+ else {
227
+ current[key] = value;
228
+ }
229
+ // Remove the key from its current (wrong) level
230
+ delete mockData[key];
231
+ const fullPath = [...currentPathForLogging, ...path].join('.');
232
+ awsLog(`CodeYam: Relocated misplaced key "${key}" from [${currentPathForLogging.join('.')}] to [${fullPath}]`);
233
+ }
234
+ // Recursively process nested objects to handle deeply nested misplacements
235
+ for (const key of Object.keys(mockData)) {
236
+ const mockValue = mockData[key];
237
+ const schemaValue = dataForMocks[key];
238
+ // Only recurse if both mockData and schema have nested objects at this key
239
+ if (typeof mockValue === 'object' &&
240
+ mockValue !== null &&
241
+ !Array.isArray(mockValue) &&
242
+ typeof schemaValue === 'object' &&
243
+ schemaValue !== null &&
244
+ !Array.isArray(schemaValue)) {
245
+ relocateMisplacedNestedKeys(mockValue, schemaValue, [...currentPathForLogging, key]);
246
+ }
247
+ }
248
+ }
249
+ /**
250
+ * Generate default mock data for a schema type.
251
+ * Returns reasonable default values based on the schema type string.
252
+ */
253
+ function generateDefaultForSchemaType(schemaType) {
254
+ if (typeof schemaType === 'string') {
255
+ // Handle common type strings
256
+ if (schemaType === 'function')
257
+ return () => { };
258
+ if (schemaType === 'promise')
259
+ return Promise.resolve();
260
+ if (schemaType === 'boolean')
261
+ return false;
262
+ if (schemaType === 'string')
263
+ return '';
264
+ if (schemaType === 'number')
265
+ return 0;
266
+ if (schemaType.includes('number | undefined'))
267
+ return undefined;
268
+ if (schemaType.includes('string | undefined'))
269
+ return undefined;
270
+ if (schemaType.includes('boolean | undefined'))
271
+ return undefined;
272
+ if (schemaType.includes('| undefined'))
273
+ return undefined;
274
+ if (schemaType.includes('| null'))
275
+ return null;
276
+ return schemaType; // Return the type as a string placeholder
277
+ }
278
+ if (Array.isArray(schemaType)) {
279
+ if (schemaType.length === 0)
280
+ return [];
281
+ // Generate a single default element based on the first element's schema
282
+ const elementDefault = generateDefaultForSchemaType(schemaType[0]);
283
+ return elementDefault !== undefined ? [elementDefault] : [];
284
+ }
285
+ if (typeof schemaType === 'object' && schemaType !== null) {
286
+ // Recursively generate defaults for nested objects
287
+ const result = {};
288
+ for (const [key, value] of Object.entries(schemaType)) {
289
+ result[key] = generateDefaultForSchemaType(value);
290
+ }
291
+ return result;
292
+ }
293
+ return undefined;
294
+ }
295
+ /**
296
+ * Detect if a string should be converted to an array.
297
+ * Returns the array if the field appears to be an array field, or null if it should remain a string.
298
+ *
299
+ * This handles two cases:
300
+ * 1. Comma-separated values: "color,size" -> ["color", "size"]
301
+ * 2. Single values for array-named fields: "Finish" -> ["Finish"]
302
+ */
303
+ function parseCommaSeparatedStringAsArray(value, key) {
304
+ // Heuristic: if the key name suggests it's an array field, convert it
305
+ // Common patterns: *_attributes, *_ids, *_items, *_tags, *_values, plural names
306
+ // Check this FIRST because array-named fields should be converted regardless
307
+ // of whether they contain commas (single values become single-element arrays).
308
+ const arrayFieldPatterns = [
309
+ /_attributes$/i,
310
+ /_ids$/i,
311
+ /_items$/i,
312
+ /_tags$/i,
313
+ /_values$/i,
314
+ /_types$/i,
315
+ /_names$/i,
316
+ /_keys$/i,
317
+ /^attributes$/i,
318
+ /^items$/i,
319
+ /^tags$/i,
320
+ /^values$/i,
321
+ ];
322
+ const looksLikeArrayField = arrayFieldPatterns.some((pattern) => pattern.test(key));
323
+ if (looksLikeArrayField) {
324
+ // Skip newlines check - multiline values shouldn't be split
325
+ if (value.includes('\n')) {
326
+ return null;
327
+ }
328
+ // Split by comma and trim whitespace
329
+ const parts = value.split(',').map((s) => s.trim());
330
+ // Filter out empty strings - this handles both "Finish" -> ["Finish"]
331
+ // and "" -> []
332
+ return parts.filter((s) => s.length > 0);
333
+ }
334
+ // For non-array-named fields, only convert if there are commas
335
+ if (!value.includes(',')) {
336
+ return null;
337
+ }
338
+ // For non-array-named fields, apply stricter sentence detection
339
+ // Skip if it looks like a sentence (comma followed by space and lowercase)
340
+ if (/,\s+[a-z]/.test(value)) {
341
+ return null;
342
+ }
343
+ // Skip if it contains newlines (likely formatted text)
344
+ if (value.includes('\n')) {
345
+ return null;
346
+ }
347
+ return null;
348
+ }
349
+ /**
350
+ * Convert comma-separated string values to arrays when they look like array data.
351
+ * This handles cases where the LLM generates strings like "color,size" instead
352
+ * of arrays like ["color", "size"] due to schema type misdetection.
353
+ */
354
+ function convertCommaSeparatedStringsToArrays(mockData) {
355
+ for (const [key, value] of Object.entries(mockData)) {
356
+ if (typeof value === 'string') {
357
+ const asArray = parseCommaSeparatedStringAsArray(value, key);
358
+ if (asArray !== null) {
359
+ mockData[key] = asArray;
360
+ awsLog(`CodeYam: Converted comma-separated string to array for key "${key}": "${value}" -> [${asArray.map((s) => `"${s}"`).join(', ')}]`);
361
+ }
362
+ }
363
+ else if (value !== null &&
364
+ typeof value === 'object' &&
365
+ !Array.isArray(value)) {
366
+ // Recursively process nested objects
367
+ convertCommaSeparatedStringsToArrays(value);
368
+ }
369
+ else if (Array.isArray(value)) {
370
+ // Recursively process arrays (each element could be an object)
371
+ for (const item of value) {
372
+ if (item !== null && typeof item === 'object' && !Array.isArray(item)) {
373
+ convertCommaSeparatedStringsToArrays(item);
374
+ }
375
+ }
376
+ }
377
+ }
378
+ }
379
+ /**
380
+ * Ensure all keys from dataForMocks have corresponding data in mockData.
381
+ * For missing keys, generate default values based on the schema.
382
+ * Recursively checks nested objects to fill in any missing nested fields.
383
+ */
384
+ function fillMissingMockDataKeysWithDefaults(mockData, dataForMocks, pathPrefix = '') {
385
+ if (typeof dataForMocks !== 'object' || dataForMocks === null) {
386
+ return;
387
+ }
388
+ const missingKeys = [];
389
+ for (const key of Object.keys(dataForMocks)) {
390
+ if (key === '_nullable')
391
+ continue; // Internal marker, not a data key
392
+ const fullPath = pathPrefix ? `${pathPrefix}.${key}` : key;
393
+ if (mockData[key] === undefined) {
394
+ missingKeys.push(fullPath);
395
+ // Generate default data based on schema
396
+ const schemaForKey = dataForMocks[key];
397
+ mockData[key] = generateDefaultForSchemaType(schemaForKey);
398
+ }
399
+ else {
400
+ // Key exists, but if both are objects, recursively check for missing nested keys
401
+ const schemaValue = dataForMocks[key];
402
+ const mockValue = mockData[key];
403
+ if (typeof schemaValue === 'object' &&
404
+ schemaValue !== null &&
405
+ !Array.isArray(schemaValue) &&
406
+ typeof mockValue === 'object' &&
407
+ mockValue !== null &&
408
+ !Array.isArray(mockValue)) {
409
+ fillMissingMockDataKeysWithDefaults(mockValue, schemaValue, fullPath);
410
+ }
411
+ }
412
+ }
413
+ if (missingKeys.length > 0) {
414
+ awsLog(`CodeYam: Generated default mock data for ${missingKeys.length} missing key(s): ${missingKeys.slice(0, 10).join(', ')}${missingKeys.length > 10 ? '...' : ''}`);
415
+ }
416
+ }
417
+ /**
418
+ * Enforce execution flow requiredValues by setting falsy paths to null.
419
+ *
420
+ * The LLM doesn't reliably generate null for `comparison: 'falsy'` requirements.
421
+ * For example, a flow like "diffView: falsy" should hide a modal, but the LLM
422
+ * might generate a truthy object, causing the modal to show in all screenshots.
423
+ *
424
+ * This function:
425
+ * 1. Gets requiredValues from covered flows
426
+ * 2. For 'falsy' comparisons: sets the value to null
427
+ * 3. For 'truthy' comparisons with falsy values: generates a default truthy value
428
+ */
429
+ function enforceRequiredValues(mockData, coveredFlowIds, executionFlows) {
430
+ if (!coveredFlowIds.length || !executionFlows.length) {
431
+ return;
432
+ }
433
+ // Get all requiredValues from covered flows
434
+ const coveredFlows = executionFlows.filter((flow) => coveredFlowIds.includes(flow.id));
435
+ for (const flow of coveredFlows) {
436
+ if (!flow.requiredValues)
437
+ continue;
438
+ for (const rv of flow.requiredValues) {
439
+ if (!rv.attributePath)
440
+ continue;
441
+ // Find the value in mockData - the path could be nested
442
+ // e.g., attributePath: "diffView" could be at mockData['useDiffModal()'].diffView
443
+ const result = findAndSetValueInMockData(mockData, rv.attributePath, rv.comparison, rv.valueType);
444
+ if (result.found) {
445
+ awsLog(`CodeYam: Enforced ${rv.comparison} for ${rv.attributePath} (set to ${result.newValue === null ? 'null' : typeof result.newValue})`);
446
+ }
447
+ }
448
+ }
449
+ }
450
+ /**
451
+ * Find a value in mockData by attributePath and enforce the comparison.
452
+ * The attributePath could be a simple key or a nested path.
453
+ *
454
+ * Returns { found: boolean, newValue: unknown }
455
+ */
456
+ function findAndSetValueInMockData(mockData, attributePath, comparison, valueType) {
457
+ // Try to find the path at various nesting levels
458
+ // The attributePath might be "diffView" but the actual location is
459
+ // mockData['useDiffModal()'].diffView
460
+ // Strategy 1: Direct path (e.g., mockData[attributePath])
461
+ if (attributePath in mockData) {
462
+ const currentValue = mockData[attributePath];
463
+ const { shouldChange, newValue } = getEnforcedValue(currentValue, comparison, valueType);
464
+ if (shouldChange) {
465
+ mockData[attributePath] = newValue;
466
+ return { found: true, newValue };
467
+ }
468
+ return { found: true, newValue: currentValue };
469
+ }
470
+ // Strategy 2: Search in nested objects
471
+ for (const [key, value] of Object.entries(mockData)) {
472
+ if (value && typeof value === 'object' && !Array.isArray(value)) {
473
+ const nestedObj = value;
474
+ // Check if attributePath exists in this nested object
475
+ if (attributePath in nestedObj) {
476
+ const currentValue = nestedObj[attributePath];
477
+ const { shouldChange, newValue } = getEnforcedValue(currentValue, comparison, valueType);
478
+ if (shouldChange) {
479
+ nestedObj[attributePath] = newValue;
480
+ return { found: true, newValue };
481
+ }
482
+ return { found: true, newValue: currentValue };
483
+ }
484
+ // Also check dot-notation paths (e.g., "diffView.type")
485
+ if (attributePath.includes('.')) {
486
+ const parts = attributePath.split('.');
487
+ const firstPart = parts[0];
488
+ if (firstPart in nestedObj) {
489
+ // Recurse with the rest of the path
490
+ const result = findAndSetValueInMockData(nestedObj, attributePath, comparison, valueType);
491
+ if (result.found)
492
+ return result;
493
+ }
494
+ }
495
+ // Recursively search deeper
496
+ const result = findAndSetValueInMockData(nestedObj, attributePath, comparison, valueType);
497
+ if (result.found)
498
+ return result;
499
+ }
500
+ }
501
+ return { found: false };
502
+ }
503
+ /**
504
+ * Determine if a value should be changed to match a comparison requirement.
505
+ *
506
+ * For 'falsy' comparison: truthy values should become null
507
+ * For 'truthy' comparison: falsy values should become a default truthy value
508
+ */
509
+ function getEnforcedValue(currentValue, comparison, valueType) {
510
+ const isTruthy = Boolean(currentValue);
511
+ if (comparison === 'falsy') {
512
+ // Value should be falsy
513
+ if (isTruthy) {
514
+ return { shouldChange: true, newValue: null };
515
+ }
516
+ return { shouldChange: false, newValue: currentValue };
517
+ }
518
+ if (comparison === 'truthy') {
519
+ // Value should be truthy
520
+ if (!isTruthy) {
521
+ // Generate a default truthy value based on valueType
522
+ const defaultValue = generateDefaultTruthyValue(valueType);
523
+ return { shouldChange: true, newValue: defaultValue };
524
+ }
525
+ return { shouldChange: false, newValue: currentValue };
526
+ }
527
+ // For other comparisons (equals, exists, etc.), don't auto-enforce
528
+ return { shouldChange: false, newValue: currentValue };
529
+ }
530
+ /**
531
+ * Generate a default truthy value for a given type.
532
+ */
533
+ function generateDefaultTruthyValue(valueType) {
534
+ if (!valueType)
535
+ return { _placeholder: true };
536
+ switch (valueType.toLowerCase()) {
537
+ case 'string':
538
+ return 'default-value';
539
+ case 'number':
540
+ return 1;
541
+ case 'boolean':
542
+ return true;
543
+ case 'array':
544
+ return [{ _placeholder: true }];
545
+ case 'object':
546
+ default:
547
+ return { _placeholder: true };
548
+ }
549
+ }
550
+ /**
551
+ * For Default Scenario only: detect missing mockData keys and make a follow-up
552
+ * LLM call to fill them in. This handles cases where the LLM completes normally
553
+ * but misses some keys (often small/simple ones when the schema is large).
554
+ */
555
+ async function fillMissingMockDataKeys({ structure, scenario, executionFlows, fullScenarioData, model, }) {
556
+ if (!structure.dataForMocks ||
557
+ typeof structure.dataForMocks !== 'object' ||
558
+ Array.isArray(structure.dataForMocks)) {
559
+ return;
560
+ }
561
+ const expectedKeys = Object.keys(structure.dataForMocks);
562
+ const generatedKeys = Object.keys(fullScenarioData.data.mockData || {});
563
+ const missingKeys = expectedKeys.filter((k) => !generatedKeys.includes(k));
564
+ if (missingKeys.length === 0) {
565
+ return;
566
+ }
567
+ awsLog(`Default Scenario missing ${missingKeys.length} keys, making follow-up call`, { missingKeys });
568
+ // Build subset schema with only missing keys
569
+ const missingSchema = {};
570
+ for (const key of missingKeys) {
571
+ missingSchema[key] = structure.dataForMocks[key];
572
+ }
573
+ const followUpPrompt = generateMissingKeysPrompt({
574
+ scenario,
575
+ executionFlows,
576
+ generatedMockData: fullScenarioData.data.mockData || {},
577
+ missingSchema,
578
+ });
579
+ const followUpResponse = await completionCall({
580
+ type: 'generateMissingMockData',
581
+ systemMessage: generateMissingKeysSystemMessage(),
582
+ prompt: followUpPrompt,
583
+ model,
584
+ });
585
+ if (!followUpResponse.completion) {
586
+ return;
587
+ }
588
+ const followUpJson = validateJson(followUpResponse.completion);
589
+ const followUpParsed = parseJsonSafe(followUpJson);
590
+ if (!followUpParsed ||
591
+ typeof followUpParsed !== 'object' ||
592
+ !('mockData' in followUpParsed)) {
593
+ return;
594
+ }
595
+ const followUpMockData = followUpParsed.mockData;
596
+ if (followUpMockData && typeof followUpMockData === 'object') {
597
+ fullScenarioData.data.mockData = {
598
+ ...fullScenarioData.data.mockData,
599
+ ...followUpMockData,
600
+ };
601
+ }
602
+ }
603
+ export async function generateDataForScenario({ entity, structure, scenario, executionFlows, defaultScenarioData, incompleteResponse, analysis, model, }) {
604
+ var _a;
10
605
  awsLogDebugLevel(1, `Generating data for ${entity.name}: ${scenario.name}`);
11
- const prompt = generateEntityScenarioDataGenerator(structure, scenario, defaultScenarioData, incompleteResponse);
606
+ // Check if we should chunk the data structure for focused processing
607
+ let chunkedMockData;
608
+ const coveredFlowIds = scenario.metadata?.coveredFlows || [];
609
+ if (structure.dataForMocks &&
610
+ !incompleteResponse // Don't do chunked calls on continuation
611
+ ) {
612
+ const chunks = chunkDataStructure(structure.dataForMocks);
613
+ // If we have multiple chunks, process each one with a focused call
614
+ if (chunks.length > 1) {
615
+ awsLog(`Data structure has ${Object.keys(structure.dataForMocks).length} keys, splitting into ${chunks.length} chunks for focused processing`);
616
+ chunkedMockData = {};
617
+ for (let i = 0; i < chunks.length; i++) {
618
+ const chunk = chunks[i];
619
+ const chunkKeys = Object.keys(chunk || {});
620
+ // Get relevant requiredValues for this chunk
621
+ const relevantRequiredValues = getRequiredValuesForChunk(chunk, executionFlows || [], coveredFlowIds);
622
+ awsLog(`Processing chunk ${i + 1}/${chunks.length}: ${chunkKeys.join(', ')}`);
623
+ const chunkPrompt = generateChunkPrompt({
624
+ scenario,
625
+ chunk,
626
+ chunkIndex: i,
627
+ totalChunks: chunks.length,
628
+ relevantRequiredValues,
629
+ });
630
+ const chunkResponse = await completionCall({
631
+ type: 'generateChunkMockData',
632
+ systemMessage: generateChunkSystemMessage(scenario.name),
633
+ prompt: chunkPrompt,
634
+ model,
635
+ });
636
+ // Save chunk call to LLM log for replay support
637
+ await saveLlmCall({
638
+ object_type: 'analysis',
639
+ object_id: analysis.id,
640
+ propsJson: {
641
+ entity: { name: entity.name, filePath: entity.filePath },
642
+ scenario: { name: scenario.name },
643
+ chunkIndex: i,
644
+ totalChunks: chunks.length,
645
+ },
646
+ ...chunkResponse.stats,
647
+ });
648
+ if (chunkResponse.completion) {
649
+ const validJson = validateJson(chunkResponse.completion);
650
+ const parsed = parseJsonSafe(validJson);
651
+ if (parsed && typeof parsed === 'object' && 'mockData' in parsed) {
652
+ const chunkMockData = parsed.mockData;
653
+ if (chunkMockData && typeof chunkMockData === 'object') {
654
+ Object.assign(chunkedMockData, chunkMockData);
655
+ awsLog(`Chunk ${i + 1} generated data for: ${Object.keys(chunkMockData).join(', ')}`);
656
+ }
657
+ }
658
+ }
659
+ }
660
+ // Detect keys that were lost from failed or partial chunk responses
661
+ // and fill them with schema-based defaults so they aren't permanently lost.
662
+ const allChunkedKeys = chunks.flatMap((c) => Object.keys(c || {}));
663
+ const returnedKeys = new Set(Object.keys(chunkedMockData));
664
+ const missingChunkKeys = allChunkedKeys.filter((k) => !returnedKeys.has(k));
665
+ if (missingChunkKeys.length > 0) {
666
+ awsLog(`Chunked processing: ${missingChunkKeys.length} key(s) missing from chunk results, filling with defaults: ${missingChunkKeys.join(', ')}`);
667
+ const dataForMocksRecord = structure.dataForMocks;
668
+ for (const key of missingChunkKeys) {
669
+ chunkedMockData[key] = generateDefaultForSchemaType(dataForMocksRecord[key]);
670
+ }
671
+ }
672
+ awsLog(`Chunked processing complete. Generated ${Object.keys(chunkedMockData).length} keys total`);
673
+ }
674
+ }
675
+ // When we have chunked mock data with actual content, tell the main prompt to skip mockData generation
676
+ // Important: Check for actual keys, not just truthy object, because {} would skip generation incorrectly
677
+ const hasChunkedData = chunkedMockData && Object.keys(chunkedMockData).length > 0;
678
+ const prompt = generateEntityScenarioDataGenerator(structure, scenario, executionFlows, defaultScenarioData, incompleteResponse, { mockDataAlreadyGenerated: hasChunkedData });
12
679
  const isDefault = scenario.name === DEFAULT_SCENARIO_NAME;
13
680
  const response = await completionCall({
14
681
  type: 'generateEntityScenarioData',
@@ -46,38 +713,70 @@ export async function generateDataForScenario({ entity, structure, scenario, def
46
713
  },
47
714
  ...response.stats,
48
715
  });
49
- const { completion, finishReason } = response;
716
+ let { completion, finishReason } = response;
50
717
  if (!completion) {
51
718
  console.log('CodeYam Error: Example data generation failed: No response from AI');
52
719
  return null;
53
720
  }
54
- awsLog(`LLMCall ${llmCall ? llmCall.id : 'N/A'}: ${entity.filePath} ${entity.metadata?.exportAlias ?? entity.name} scenario data completion :>> Finish reason:`, {
55
- finishReason,
56
- completion,
57
- });
721
+ awsLogDebugLevel(1, `LLMCall ${llmCall ? llmCall.id : 'N/A'}: ${entity.filePath} ${entity.metadata?.exportAlias ?? entity.name} finishReason: ${finishReason}`);
722
+ // If response was truncated due to token limit, make a continuation call
723
+ if (finishReason === 'length') {
724
+ awsLogDebugLevel(1, 'Response truncated, making continuation call');
725
+ const continuationResponse = await completionCall({
726
+ type: 'generateEntityScenarioData',
727
+ systemMessage: generateIncompleteSystemMessage(scenario.name, isDefault),
728
+ prompt: completion, // Pass the incomplete response as the prompt
729
+ model,
730
+ });
731
+ if (continuationResponse.completion) {
732
+ completion = completion + continuationResponse.completion;
733
+ finishReason = continuationResponse.finishReason;
734
+ }
735
+ }
58
736
  const validJson = validateJson(completion);
59
737
  const parsed = parseJsonSafe(validJson);
60
738
  if (!parsed || typeof parsed !== 'object' || !('scenarioData' in parsed)) {
61
- console.log('CodeYam Debug: generateDataForScenario failed to parse', {
62
- entityName: entity.name,
63
- scenarioName: scenario.name,
64
- hasParsed: !!parsed,
65
- parsedType: typeof parsed,
66
- hasScenarioData: parsed && 'scenarioData' in parsed,
67
- completionPreview: completion.substring(0, 200),
68
- });
739
+ awsLog(`Failed to parse scenario data for ${entity.name}/${scenario.name}`);
69
740
  return null;
70
741
  }
71
- const { scenarioData: scenarioDataWithoutDescription } = parsed;
72
- console.log('CodeYam Debug: generateDataForScenario parsed successfully', {
73
- entityName: entity.name,
74
- scenarioName: scenario.name,
75
- parsedScenarioName: scenarioDataWithoutDescription.scenarioName,
76
- hasData: !!scenarioDataWithoutDescription.data,
77
- dataKeys: scenarioDataWithoutDescription.data
78
- ? Object.keys(scenarioDataWithoutDescription.data)
79
- : [],
80
- });
742
+ let { scenarioData: scenarioDataWithoutDescription } = parsed;
743
+ // FIX: LLM sometimes puts mock data keys directly under scenarioData instead of
744
+ // under scenarioData.data.mockData. Detect and fix this structural issue.
745
+ if (structure.dataForMocks) {
746
+ const scenarioDataAsAny = scenarioDataWithoutDescription;
747
+ const reservedKeys = new Set([
748
+ 'scenarioName',
749
+ 'data',
750
+ 'scenarioDescription',
751
+ ]);
752
+ const misplacedKeys = [];
753
+ // Find keys that are directly under scenarioData but should be in mockData
754
+ for (const key of Object.keys(scenarioDataAsAny)) {
755
+ if (reservedKeys.has(key))
756
+ continue;
757
+ // If this key exists in the dataForMocks schema, it's misplaced
758
+ if (key in structure.dataForMocks) {
759
+ misplacedKeys.push(key);
760
+ }
761
+ }
762
+ if (misplacedKeys.length > 0) {
763
+ // Ensure data.mockData exists
764
+ if (!scenarioDataAsAny.data) {
765
+ scenarioDataAsAny.data = {};
766
+ }
767
+ if (!scenarioDataAsAny.data.mockData) {
768
+ scenarioDataAsAny.data.mockData = {};
769
+ }
770
+ // Move misplaced keys to mockData
771
+ for (const key of misplacedKeys) {
772
+ scenarioDataAsAny.data.mockData[key] = scenarioDataAsAny[key];
773
+ delete scenarioDataAsAny[key];
774
+ }
775
+ // Update the reference
776
+ scenarioDataWithoutDescription =
777
+ scenarioDataAsAny;
778
+ }
779
+ }
81
780
  const fullScenarioData = {
82
781
  ...scenarioDataWithoutDescription,
83
782
  scenarioDescription: scenario?.description ?? '',
@@ -98,12 +797,45 @@ export async function generateDataForScenario({ entity, structure, scenario, def
98
797
  }
99
798
  }
100
799
  }
101
- if (structure.dataForMocks && !fullScenarioData.data.mockData) {
102
- fullScenarioData.data.mockData = {};
103
- for (const propKey of Object.keys(structure.arguments)) {
104
- const dataAsAny = fullScenarioData.data;
105
- fullScenarioData.data.mockData[propKey] = dataAsAny[propKey];
800
+ // Merge flat-level mock data into mockData.
801
+ // Sometimes the LLM returns some data inside data.mockData but other data at the flat
802
+ // data level (e.g., data.useRouter() instead of data.mockData.useRouter()).
803
+ // This code ensures all dataForMocks keys end up in mockData.
804
+ if (structure.dataForMocks) {
805
+ (_a = fullScenarioData.data).mockData || (_a.mockData = {});
806
+ const dataAsAny = fullScenarioData.data;
807
+ for (const propKey of Object.keys(structure.dataForMocks)) {
808
+ // Only copy if it exists at flat level and not already in mockData
809
+ if (dataAsAny[propKey] !== undefined &&
810
+ !fullScenarioData.data.mockData[propKey]) {
811
+ fullScenarioData.data.mockData[propKey] = dataAsAny[propKey];
812
+ }
813
+ }
814
+ }
815
+ // Merge chunked mock data from focused calls (takes priority over main call's data)
816
+ // This ensures keys processed with focused attention are correctly generated.
817
+ if (chunkedMockData && fullScenarioData.data.mockData) {
818
+ for (const [key, value] of Object.entries(chunkedMockData)) {
819
+ // Chunked data takes priority - overwrite main call's potentially wrong data
820
+ fullScenarioData.data.mockData[key] = value;
106
821
  }
822
+ awsLog(`Merged chunked mock data for keys: ${Object.keys(chunkedMockData).join(', ')}`);
823
+ }
824
+ // Strip _nullable markers from LLM-generated mock data.
825
+ // The _nullable marker is an internal CodeYam concept used in type definitions
826
+ // to indicate that a field can be null/undefined. The LLM sometimes includes
827
+ // these markers in its generated data, which causes runtime errors when code
828
+ // iterates over object keys (e.g., Object.keys(importedBy) picks up "_nullable",
829
+ // then Object.keys(importedBy["_nullable"]) calls Object.keys(null) and throws).
830
+ if (fullScenarioData.data.mockData) {
831
+ stripNullableMarkers(fullScenarioData.data.mockData);
832
+ }
833
+ // Relocate misplaced nested keys to their correct position.
834
+ // The LLM sometimes places nested keys at root level instead of inside their
835
+ // parent object (e.g., 'fastener' at root instead of inside 'trpc').
836
+ // This ensures the mockData structure matches the dataForMocks schema.
837
+ if (structure.dataForMocks && fullScenarioData.data.mockData) {
838
+ relocateMisplacedNestedKeys(fullScenarioData.data.mockData, structure.dataForMocks);
107
839
  }
108
840
  // Convert null values to undefined based on schema type constraints.
109
841
  // LLM uses null for "no value" (JSON doesn't support undefined), but TypeScript
@@ -112,6 +844,54 @@ export async function generateDataForScenario({ entity, structure, scenario, def
112
844
  if (structure.dataForMocks && fullScenarioData.data.mockData) {
113
845
  convertNullToUndefinedBySchema(fullScenarioData.data.mockData, structure.dataForMocks);
114
846
  }
847
+ // Coerce objects/arrays to primitives when the schema expects a primitive type.
848
+ // The LLM sometimes generates an object where the schema expects "string",
849
+ // e.g., { body: { "env": "production" } } instead of { body: "some string" }.
850
+ // This causes runtime errors like "TypeError: body.match is not a function".
851
+ // Must run BEFORE convertCommaSeparatedStringsToArrays, which intentionally
852
+ // overrides schema types for array-like field names.
853
+ if (structure.dataForMocks && fullScenarioData.data.mockData) {
854
+ coerceObjectsToPrimitivesBySchema(fullScenarioData.data.mockData, structure.dataForMocks);
855
+ }
856
+ // Coerce primitives to empty arrays when the schema expects an array.
857
+ // The LLM sometimes generates a primitive (e.g., `webapps: true`) where the
858
+ // schema expects an array (e.g., `webapps: [{ name: "string" }]`).
859
+ // This causes runtime errors like "TypeError: config.webapps?.forEach is not a function".
860
+ // Must run AFTER coerceObjectsToPrimitivesBySchema and BEFORE convertCommaSeparatedStringsToArrays.
861
+ if (structure.dataForMocks && fullScenarioData.data.mockData) {
862
+ coercePrimitivesToArraysBySchema(fullScenarioData.data.mockData, structure.dataForMocks);
863
+ }
864
+ // Convert comma-separated strings to arrays when appropriate.
865
+ // The LLM sometimes generates strings like "color,size" instead of arrays
866
+ // like ["color", "size"] when the schema type is incorrectly inferred as
867
+ // 'string' instead of 'string[]'. This causes runtime errors when code
868
+ // calls array methods like .map() on the value.
869
+ if (fullScenarioData.data.mockData) {
870
+ convertCommaSeparatedStringsToArrays(fullScenarioData.data.mockData);
871
+ }
872
+ // Convert type annotation strings that appear as values to actual values.
873
+ // The LLM sometimes echoes the schema type annotation as the value.
874
+ // For example, if the schema says { filePath: "string | undefined" },
875
+ // the LLM might return { filePath: "string | undefined" } instead of
876
+ // generating an actual value. This converts those type strings to
877
+ // appropriate default values (e.g., "string | undefined" → undefined).
878
+ if (fullScenarioData.data.mockData) {
879
+ convertTypeAnnotationsToValues(fullScenarioData.data.mockData);
880
+ }
881
+ // Fix null values for ID fields when the schema indicates they should be non-null.
882
+ // The LLM sometimes generates `null` for ID fields (e.g., `"id": null`) when
883
+ // the schema type is `"number"`. This causes runtime issues when code checks
884
+ // `if (!data?.id)` expecting a truthy value.
885
+ if (structure.dataForMocks && fullScenarioData.data.mockData) {
886
+ fixNullIdsBySchema(fullScenarioData.data.mockData, structure.dataForMocks);
887
+ }
888
+ // Enforce execution flow requiredValues by setting falsy paths to null.
889
+ // The LLM doesn't reliably generate null for falsy requirements (e.g., diffView: falsy
890
+ // to hide a modal). This post-processing ensures that scenarios match their
891
+ // covered flows' requiredValues.
892
+ if (fullScenarioData.data.mockData && executionFlows) {
893
+ enforceRequiredValues(fullScenarioData.data.mockData, scenario.metadata?.coveredFlows || [], executionFlows);
894
+ }
115
895
  if (structure.arguments && fullScenarioData.data.argumentsData) {
116
896
  for (let i = 0; i < fullScenarioData.data.argumentsData.length; i++) {
117
897
  if (structure.arguments[i]) {
@@ -119,12 +899,38 @@ export async function generateDataForScenario({ entity, structure, scenario, def
119
899
  }
120
900
  }
121
901
  }
902
+ // For Default Scenario only: check for missing keys and make follow-up call if needed.
903
+ // This tries to get better-quality data via LLM before falling back to defaults.
904
+ if (isDefault) {
905
+ await fillMissingMockDataKeys({
906
+ structure,
907
+ scenario,
908
+ executionFlows,
909
+ fullScenarioData,
910
+ model,
911
+ });
912
+ }
913
+ // Fill in missing mock data keys with default values (after trying LLM follow-up).
914
+ // The LLM sometimes doesn't generate data for all keys in large schemas.
915
+ // This ensures all dataForMocks keys have corresponding data to prevent
916
+ // runtime errors like "Cannot read properties of undefined".
917
+ // Only run for Default Scenario - non-default scenarios will get missing
918
+ // data filled in from the merge with default scenario data.
919
+ if (isDefault && structure.dataForMocks && fullScenarioData.data.mockData) {
920
+ fillMissingMockDataKeysWithDefaults(fullScenarioData.data.mockData, structure.dataForMocks);
921
+ }
922
+ // Track the final scenario data for E2E debugging
923
+ trackDataSnapshot('generateDataForScenario_result', {
924
+ scenarioName: scenario.name,
925
+ mockData: fullScenarioData.data.mockData,
926
+ argumentsData: fullScenarioData.data.argumentsData,
927
+ }, entity.name, scenario.name);
122
928
  return {
123
929
  scenarioData: fullScenarioData,
124
930
  llmCall: { name: scenario.name, id: llmCall.id },
125
931
  };
126
932
  }
127
- export default async function generateEntityScenarioData({ entity, structure, scenarios, incompleteResponse, analysis, model, }) {
933
+ export default async function generateEntityScenarioData({ entity, structure, scenarios, executionFlows, incompleteResponse, analysis, model, }) {
128
934
  if (scenarios.length === 0) {
129
935
  return { scenarioDatas: [], llmCalls: [] };
130
936
  }
@@ -136,6 +942,7 @@ export default async function generateEntityScenarioData({ entity, structure, sc
136
942
  entity,
137
943
  structure,
138
944
  scenario: defaultScenario,
945
+ executionFlows,
139
946
  incompleteResponse,
140
947
  analysis,
141
948
  model,
@@ -152,6 +959,7 @@ export default async function generateEntityScenarioData({ entity, structure, sc
152
959
  entity,
153
960
  structure,
154
961
  scenario,
962
+ executionFlows,
155
963
  defaultScenarioData,
156
964
  incompleteResponse,
157
965
  analysis,
@@ -164,28 +972,99 @@ export default async function generateEntityScenarioData({ entity, structure, sc
164
972
  if (nullCount > 0) {
165
973
  awsLog(`⚠️ Warning: ${nullCount} of ${results.length} non-default scenarios failed to generate data for ${entity.name}`);
166
974
  }
167
- scenarioDatas.push(...validResults.map((result) => result.scenarioData));
168
- llmCalls.push(...validResults.map((result) => result.llmCall));
169
- console.log('CodeYam Debug: generateEntityScenarioData results', {
170
- filePath: entity.filePath,
171
- entityName: entity.name,
172
- totalScenarios: scenarios.length,
173
- defaultScenarioGenerated: !!defaultScenarioResult,
174
- otherScenariosRequested: scenarios.length - 1,
175
- otherScenariosResults: results.length,
176
- nullResults: results.filter((r) => r === null).length,
177
- validResults: validResults.length,
178
- finalScenarioDatasCount: scenarioDatas.length,
975
+ // Merge non-default scenario data with default scenario data
976
+ // The LLM generates partial data (only differences), we need to merge with default
977
+ const mergedScenarioDatas = validResults.map((result) => {
978
+ const scenarioData = result.scenarioData;
979
+ // Merge mockData with default mockData
980
+ if (defaultScenarioData.data?.mockData && scenarioData.data?.mockData) {
981
+ scenarioData.data.mockData = deepMergeScenarioData(defaultScenarioData.data.mockData, scenarioData.data.mockData);
982
+ }
983
+ else if (defaultScenarioData.data?.mockData &&
984
+ !scenarioData.data?.mockData) {
985
+ // Use default mockData if scenario has none
986
+ scenarioData.data.mockData = { ...defaultScenarioData.data.mockData };
987
+ }
988
+ // Merge argumentsData with default argumentsData
989
+ if (defaultScenarioData.data?.argumentsData &&
990
+ Array.isArray(defaultScenarioData.data.argumentsData) &&
991
+ scenarioData.data?.argumentsData &&
992
+ Array.isArray(scenarioData.data.argumentsData)) {
993
+ for (let i = 0; i < defaultScenarioData.data.argumentsData.length; i++) {
994
+ const scenarioArg = scenarioData.data.argumentsData[i];
995
+ const defaultArg = defaultScenarioData.data.argumentsData[i];
996
+ // Only merge if both are objects (LLM sometimes returns primitives)
997
+ if (scenarioArg &&
998
+ typeof scenarioArg === 'object' &&
999
+ !Array.isArray(scenarioArg) &&
1000
+ defaultArg &&
1001
+ typeof defaultArg === 'object' &&
1002
+ !Array.isArray(defaultArg)) {
1003
+ scenarioData.data.argumentsData[i] = deepMergeScenarioData(defaultArg, scenarioArg);
1004
+ }
1005
+ else if (scenarioArg !== undefined) {
1006
+ // Keep the scenario value as-is (even if primitive)
1007
+ scenarioData.data.argumentsData[i] = scenarioArg;
1008
+ }
1009
+ else if (defaultArg && typeof defaultArg === 'object') {
1010
+ // Use default if scenario is undefined and default is an object
1011
+ scenarioData.data.argumentsData[i] = { ...defaultArg };
1012
+ }
1013
+ else {
1014
+ scenarioData.data.argumentsData[i] = defaultArg;
1015
+ }
1016
+ }
1017
+ }
1018
+ else if (defaultScenarioData.data?.argumentsData &&
1019
+ !scenarioData.data?.argumentsData) {
1020
+ // Use default argumentsData if scenario has none
1021
+ scenarioData.data.argumentsData =
1022
+ defaultScenarioData.data.argumentsData.map((arg) => ({ ...arg }));
1023
+ }
1024
+ // Enforce requiredValues AFTER merge for non-default scenarios
1025
+ // This ensures that if a non-default scenario doesn't cover a certain flow,
1026
+ // it inherits the enforcement from the default scenario
1027
+ if (scenarioData.data?.mockData && executionFlows) {
1028
+ // Get the flows covered by this scenario
1029
+ const scenarioCoveredFlows = nonDefaultScenarios.find((s) => s.name === result.scenarioData.scenarioDescription)?.metadata?.coveredFlows || [];
1030
+ // Get the paths that the scenario's flows affect
1031
+ const scenarioAffectedPaths = new Set();
1032
+ for (const flowId of scenarioCoveredFlows) {
1033
+ const flow = executionFlows.find((f) => f.id === flowId);
1034
+ if (flow?.requiredValues) {
1035
+ for (const rv of flow.requiredValues) {
1036
+ if (rv.attributePath) {
1037
+ // Extract base path (e.g., "diffView" from "diffView.type")
1038
+ const basePath = rv.attributePath.split('.')[0];
1039
+ scenarioAffectedPaths.add(basePath);
1040
+ }
1041
+ }
1042
+ }
1043
+ }
1044
+ // Get the default scenario's flows
1045
+ const defaultCoveredFlows = defaultScenario.metadata?.coveredFlows || [];
1046
+ // For paths NOT affected by the scenario, apply default's enforcement
1047
+ const defaultFlowsForUnaffectedPaths = defaultCoveredFlows.filter((flowId) => {
1048
+ const flow = executionFlows.find((f) => f.id === flowId);
1049
+ if (!flow?.requiredValues)
1050
+ return false;
1051
+ // Check if this flow affects a path that the scenario doesn't cover
1052
+ return flow.requiredValues.some((rv) => {
1053
+ if (!rv.attributePath)
1054
+ return false;
1055
+ const basePath = rv.attributePath.split('.')[0];
1056
+ return !scenarioAffectedPaths.has(basePath);
1057
+ });
1058
+ });
1059
+ // Apply enforcement from default scenario for unaffected paths
1060
+ if (defaultFlowsForUnaffectedPaths.length > 0) {
1061
+ enforceRequiredValues(scenarioData.data.mockData, defaultFlowsForUnaffectedPaths, executionFlows);
1062
+ }
1063
+ }
1064
+ return scenarioData;
179
1065
  });
180
- awsLog('CodeYam: scenarioDatas :>> ', JSON.stringify({
181
- filePath: entity.filePath,
182
- entityName: entity.name,
183
- scenarioDatas: scenarioDatas.map((sd) => ({
184
- scenarioName: sd.scenarioName,
185
- hasData: !!sd.data,
186
- dataKeys: sd.data ? Object.keys(sd.data) : [],
187
- })),
188
- }, null, 2));
1066
+ scenarioDatas.push(...mergedScenarioDatas);
1067
+ llmCalls.push(...validResults.map((result) => result.llmCall));
189
1068
  return { scenarioDatas, llmCalls };
190
1069
  }
191
1070
  catch (error) {
@@ -193,27 +1072,82 @@ export default async function generateEntityScenarioData({ entity, structure, sc
193
1072
  throw error;
194
1073
  }
195
1074
  }
196
- export const generateSystemMessage = (scenarioName, defaultScenario) => {
1075
+ export const generateSystemMessage = (scenarioName, defaultScenario, requiresErrorData = false) => {
197
1076
  const scenarioType = defaultScenario
198
1077
  ? `## Default Scenario
199
1078
  Generate COMPLETE, robust data for the entire data structure.
200
- - Fill ALL fields with realistic values (except error attributes and key attributes set to null or undefined)
1079
+ - Fill ALL fields with realistic values (except error attributes)
1080
+ - Do not skip any keys, even simple or small entries
201
1081
  - Arrays should have 3-5 items to provide realistic test data variety
202
- - Don't skip nested attributes unless the key attributes specify a parent attribute should be null or undefined
1082
+ - Don't skip nested attributes unless the execution flow requirements specify a parent attribute should be null or undefined
203
1083
  - This provides the baseline data for all other scenarios`
204
1084
  : `## Non-Default Scenario
205
1085
  Generate ONLY the differences from the default scenario.
206
1086
  - Include only fields that need to change
207
- - Set to \`null\` to remove data
1087
+ - For object/scalar fields: set to \`null\` to remove/unset the data
1088
+ - For array fields: use \`[]\` for empty arrays (not \`null\`) unless the schema type explicitly includes \`| null\`
208
1089
  - Omit unchanged fields—they merge from default`;
1090
+ // Only include the "NO ERROR DATA" instruction when the scenario doesn't require error data
1091
+ const noErrorDataInstruction = requiresErrorData
1092
+ ? `## IMPORTANT: ERROR DATA REQUIRED
1093
+ This scenario tests error handling. You MUST include "error" fields with realistic error messages.
1094
+ - Set error fields to truthy values (e.g., "Error: Operation failed" or "Something went wrong")
1095
+ - The error data is REQUIRED to trigger the correct error UI state`
1096
+ : `## CRITICAL: NO ERROR DATA
1097
+ NEVER include "error" fields in responses. Skip them entirely.
1098
+ - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
1099
+ - Leave out any attribute named "error"—do not set to null, omit entirely`;
209
1100
  return `You are a test data generator. Create mock data matching a data structure and scenario requirements.
210
1101
 
1102
+ ## Execution Flow Requirements
1103
+ Each scenario has \`coveredFlows\` which lists the execution flows (distinct outcomes/behaviors) this scenario should demonstrate.
1104
+ Each flow has \`requiredValues\` - the attribute values that MUST be set to produce that outcome.
1105
+
1106
+ **Your job**: Generate mock data that satisfies ALL the requiredValues from ALL coveredFlows.
1107
+
1108
+ For example, if a flow requires:
1109
+ \`\`\`json
1110
+ {
1111
+ "attributePath": "signature[0].isLoading",
1112
+ "value": "false",
1113
+ "comparison": "equals",
1114
+ "valueType": "boolean"
1115
+ }
1116
+ \`\`\`
1117
+ Then set \`isLoading: false\` in the mockData.
1118
+
1119
+ ### Array Length Requirements (length< and length>)
1120
+ For array size variation flows:
1121
+ - \`comparison: "length<"\` with \`value: "0"\` → generate EMPTY array \`[]\`
1122
+ - \`comparison: "length<"\` with \`value: "3"\` → generate 1-2 items (few items)
1123
+ - \`comparison: "length>"\` with \`value: "10"\` → generate 12+ items (many items)
1124
+
1125
+ ### String Length Requirements (normal vs long)
1126
+ For text length variation flows:
1127
+ - \`value: "normal"\` with \`valueType: "string"\` → generate normal length text (10-50 chars)
1128
+ - \`value: "long"\` with \`valueType: "string"\` → generate LONG text (200+ chars) to test overflow/truncation
1129
+
1130
+ ## CRITICAL: Blocking Flows to Avoid
1131
+ If the scenario includes \`blockingFlowsToAvoid\`, these are flows (like modals, overlays) that would BLOCK the expected UI.
1132
+ You MUST generate mock data that PREVENTS these flows from triggering:
1133
+
1134
+ - For \`comparison: "truthy"\` requirements → set the value to \`false\`, \`null\`, \`undefined\`, or \`0\`
1135
+ - For \`comparison: "exists"\` requirements → set the value to \`null\` or omit it entirely
1136
+ - For \`comparison: "equals"\` requirements → set a DIFFERENT value than what's required
1137
+
1138
+ For example, if a blocking flow has:
1139
+ \`\`\`json
1140
+ {
1141
+ "attributePath": "useFetcher().data.success",
1142
+ "value": "true",
1143
+ "comparison": "truthy"
1144
+ }
1145
+ \`\`\`
1146
+ Then you MUST set \`useFetcher().data\` to \`null\` or \`{ success: false }\` to prevent the modal from appearing.
1147
+
211
1148
  ${scenarioType}
212
1149
 
213
- ## CRITICAL: NO ERROR DATA
214
- NEVER include "error" fields in responses. Skip them entirely.
215
- - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
216
- - Leave out any attribute named "error"—do not set to null, omit entirely
1150
+ ${noErrorDataInstruction}
217
1151
 
218
1152
  ## Special Markers
219
1153
 
@@ -233,6 +1167,7 @@ Use simple elements only (\`<div>\`, \`<span>\`). No custom components.
233
1167
  - Arrays should have many items (at least 4) unless specified otherwise
234
1168
  - Each item must follow the exact structure provided
235
1169
  - In general we want robust data, not minimal data unless specified otherwise
1170
+ - For empty arrays, use \`[]\` (not \`null\`) unless the schema type explicitly includes \`| null\` and the scenario requires the attribute be removed
236
1171
 
237
1172
  ## CRITICAL: Preserve Exact Structure
238
1173
  Your response MUST mirror the EXACT nested structure provided in mockData Structure.
@@ -262,6 +1197,12 @@ Your response MUST mirror the EXACT nested structure provided in mockData Struct
262
1197
  - No data references (can't use \`posts[0]\` elsewhere — duplicate the value)
263
1198
  - Scenario name must match exactly: "${scenarioName}"
264
1199
  - Empty mockData: \`{}\`, empty argumentsData: \`[]\`
1200
+
1201
+ ## IMPORTANT: Avoid Identifier Collisions
1202
+ When generating identifier values (SHA hashes, entity IDs, etc.):
1203
+ - Use DISTINCT values for different identifier fields
1204
+ - Avoid matching: if \`entity.sha\` is "abc123", arrays like \`jobs[].entityShas\` or \`currentlyExecuting.entityShas\` should NOT contain "abc123"
1205
+ - This prevents accidental blocking of UI conditionals that check if IDs are in/not-in arrays
265
1206
  `;
266
1207
  };
267
1208
  export const generateIncompleteSystemMessage = (scenarioName, isDefault) => `Your previous response provided us with an incomplete json object.
@@ -273,4 +1214,156 @@ Here is the original system message as well:
273
1214
  ${generateSystemMessage(scenarioName, isDefault)}
274
1215
  \`\`\`
275
1216
  `;
1217
+ /**
1218
+ * System message for follow-up calls to generate missing mockData keys.
1219
+ * Includes the same rules as the main system message but with a simpler response format.
1220
+ */
1221
+ export const generateMissingKeysSystemMessage = () => `You are completing mock data generation for the Default Scenario. The initial response was missing some keys.
1222
+
1223
+ Generate data ONLY for the missing keys provided in the prompt. Do not skip any of them.
1224
+
1225
+ - Scenario name must match exactly: "Default Scenario"
1226
+
1227
+ ## Special Markers
1228
+
1229
+ ### Dynamic Dates (\`~~codeyam-code~~\`)
1230
+ \`\`\`json
1231
+ { "createdAt": { "~~codeyam-code~~": "new Date(Date.now() - 24*60*60*1000)" } }
1232
+ \`\`\`
1233
+ Use for relative dates. Code runs in Node (no browser APIs, no external libraries).
1234
+
1235
+ ### JSX Children (\`~~codeyam-jsx~~\`)
1236
+ \`\`\`json
1237
+ { "children": { "~~codeyam-jsx~~": "<div>Hello</div>" } }
1238
+ \`\`\`
1239
+ Use simple elements only (\`<div>\`, \`<span>\`). No custom components.
1240
+
1241
+ ### Arrays
1242
+ - Arrays should have many items (at least 4) unless specified otherwise
1243
+ - Each item must follow the exact structure provided
1244
+ - For empty arrays, use \`[]\` (not \`null\`) unless the schema type explicitly includes \`| null\` and the scenario requires the attribute be removed
1245
+
1246
+ ## CRITICAL: Preserve Exact Structure
1247
+ Your response MUST mirror the EXACT nested structure provided for the missing keys.
1248
+ - Only change the leaf VALUES (replacing type descriptions like "string" with actual data)
1249
+ - Copy the key strings EXACTLY from the structure
1250
+ - Do NOT modify type parameters, arguments, or any part of the key
1251
+
1252
+ ## CRITICAL: NO ERROR DATA
1253
+ NEVER include "error" fields in responses. Skip them entirely.
1254
+ - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
1255
+ - Leave out any attribute named "error"—do not set to null, omit entirely
1256
+
1257
+ ## Response Format
1258
+ \`\`\`json
1259
+ {
1260
+ "mockData": {
1261
+ // fill in ONLY the missing keys
1262
+ }
1263
+ }
1264
+ \`\`\`
1265
+
1266
+ ## Rules
1267
+ - Valid JSON only—no raw code outside markers
1268
+ - No \`undefined\`—use \`null\` or omit
1269
+ - No data references (can't use \`posts[0]\` elsewhere — duplicate the value)
1270
+ `;
1271
+ /**
1272
+ * System message for focused calls to generate critical mockData keys.
1273
+ * These are keys referenced by the scenario's execution flow requiredValues.
1274
+ */
1275
+ export const generateCriticalKeysSystemMessage = (scenarioName) => `You are generating mock data for CRITICAL keys that control scenario behavior.
1276
+
1277
+ These keys are referenced by the execution flow's requiredValues - they directly determine
1278
+ what the component renders. Pay EXTRA attention to matching the exact structure and values.
1279
+
1280
+ - Scenario name must match exactly: "${scenarioName}"
1281
+
1282
+ ## CRITICAL: Special Characters in Keys
1283
+ Keys like \`*\` are LITERAL string keys, NOT wildcards or patterns.
1284
+ - If the schema shows \`{ "*": "string" }\`, generate \`{ "*": "some value" }\`
1285
+ - Do NOT interpret \`*\` as "any key" - use it as an actual key name
1286
+
1287
+ ## CRITICAL: Preserve Exact Structure
1288
+ Your response MUST mirror the EXACT nested structure provided.
1289
+ - Copy key strings EXACTLY as shown (including special characters)
1290
+ - Only change leaf VALUES (replacing type descriptions with actual data)
1291
+ - Do NOT modify keys, type parameters, or add extra keys
1292
+
1293
+ ## Matching requiredValues
1294
+ When the prompt shows requiredValues like:
1295
+ - \`attributePath: "useParams().functionCallReturnValue.*"\`
1296
+ - \`value: "scenarios"\`
1297
+
1298
+ This means set the \`*\` key to include "scenarios". For URL paths split by \`/\`,
1299
+ generate a path like \`"scenarios/id/mode"\` where segments match requirements.
1300
+
1301
+ ## Response Format
1302
+ \`\`\`json
1303
+ {
1304
+ "scenarioData": {
1305
+ "scenarioName": "${scenarioName}",
1306
+ "data": {
1307
+ "mockData": {
1308
+ // generate data for ONLY the critical keys
1309
+ }
1310
+ }
1311
+ }
1312
+ }
1313
+ \`\`\`
1314
+
1315
+ ## Rules
1316
+ - Valid JSON only
1317
+ - No \`undefined\`—use \`null\` or omit
1318
+ - Match the exact schema structure provided
1319
+ `;
1320
+ /**
1321
+ * System message for focused calls to generate mock data for a chunk of keys.
1322
+ * Used when data structures are large and need to be processed in smaller pieces.
1323
+ */
1324
+ export const generateChunkSystemMessage = (scenarioName) => `You are generating mock data for a SUBSET of keys from a larger data structure.
1325
+
1326
+ This chunk contains fewer keys so you can focus on generating HIGH QUALITY data for each one.
1327
+ Pay EXTRA attention to matching the exact structure and values for each key.
1328
+
1329
+ - Scenario name must match exactly: "${scenarioName}"
1330
+
1331
+ ## CRITICAL: Special Characters in Keys
1332
+ Keys like \`*\` are LITERAL string keys, NOT wildcards or patterns.
1333
+ - If the schema shows \`{ "*": "string" }\`, generate \`{ "*": "some value" }\`
1334
+ - Do NOT interpret \`*\` as "any key" - use it as an actual key name
1335
+
1336
+ ## CRITICAL: Preserve Exact Structure
1337
+ Your response MUST mirror the EXACT nested structure provided.
1338
+ - Copy key strings EXACTLY as shown (including special characters)
1339
+ - Only change leaf VALUES (replacing type descriptions with actual data)
1340
+ - Do NOT modify keys, type parameters, or add extra keys
1341
+
1342
+ ## Matching requiredValues
1343
+ If the prompt includes requiredValues, these are specific values that MUST be set:
1344
+ - For \`attributePath: "useParams().functionCallReturnValue.*"\` with \`value: "scenarios"\`
1345
+ → Set the \`*\` key to include "scenarios" (e.g., "scenarios/id/mode")
1346
+ - For URL paths, generate realistic paths that satisfy the requirements
1347
+
1348
+ ## CRITICAL: NO ERROR DATA
1349
+ NEVER include "error" fields in responses. Skip them entirely.
1350
+ - If structure has \`{ data: {...}, error: {...} }\`, only fill \`data\`
1351
+ - Leave out any attribute named "error"—do not set to null, omit entirely
1352
+
1353
+ ## Response Format
1354
+ \`\`\`json
1355
+ {
1356
+ "mockData": {
1357
+ // generate data for ONLY the keys in this chunk
1358
+ }
1359
+ }
1360
+ \`\`\`
1361
+
1362
+ ## Rules
1363
+ - Valid JSON only
1364
+ - No \`undefined\`—use \`null\` or omit
1365
+ - Generate data for ALL keys in the chunk (don't skip any)
1366
+ - Arrays should have many items (at least 4) unless specified otherwise
1367
+ - For empty arrays, use \`[]\` (not \`null\`) unless the schema type explicitly includes \`| null\` and the scenario requires the attribute be removed
1368
+ `;
276
1369
  //# sourceMappingURL=generateEntityScenarioData.js.map