@codeyam/codeyam-cli 0.1.0-staging.323686 → 0.1.0-staging.4057bd2

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 (737) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +22 -22
  4. package/analyzer-template/packages/ai/index.ts +7 -1
  5. package/analyzer-template/packages/ai/package.json +3 -3
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +62 -18
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +101 -12
  8. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  9. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +409 -50
  10. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +21 -6
  12. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1250 -253
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +31 -3
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +37 -15
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +367 -96
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  26. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  27. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  28. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +393 -8
  29. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +9 -5
  30. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +145 -5
  31. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
  32. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +649 -142
  33. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +1 -1
  34. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  35. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  36. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
  37. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  38. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  39. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  40. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +25 -13
  41. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +4 -3
  42. package/analyzer-template/packages/analyze/index.ts +2 -0
  43. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  44. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +119 -26
  45. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  46. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  47. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  48. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  49. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  50. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  51. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  52. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +89 -9
  53. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +27 -4
  54. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  55. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  56. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  57. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +0 -3
  58. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  59. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  60. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  61. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +61 -13
  62. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +87 -25
  63. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +312 -19
  64. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +117 -9
  65. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +591 -75
  66. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  67. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  68. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  69. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  70. package/analyzer-template/packages/aws/package.json +10 -10
  71. package/analyzer-template/packages/database/index.ts +1 -0
  72. package/analyzer-template/packages/database/package.json +4 -4
  73. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  74. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  75. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  76. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  77. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  78. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  79. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -0
  80. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  81. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  82. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  83. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  84. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  85. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  86. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  87. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  88. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  89. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  90. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  91. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  92. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  93. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  94. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  95. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  96. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  97. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  99. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  102. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  103. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  105. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  107. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  108. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  109. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  110. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  111. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  112. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -0
  113. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  114. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  115. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  116. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  117. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  118. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  119. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  120. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  121. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  122. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  123. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  124. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  126. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  127. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  128. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  129. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  130. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  131. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  132. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  133. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  134. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  135. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  136. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  137. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  138. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  139. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  142. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  143. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  145. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  146. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  147. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  148. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  149. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  150. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  151. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  152. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  153. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  154. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  155. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  156. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  157. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  158. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  159. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/package.json +2 -2
  161. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  162. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  163. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +6 -5
  164. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  165. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  166. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  167. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  168. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  169. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  170. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  171. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  172. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  173. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  174. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  175. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  176. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  177. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  178. package/analyzer-template/project/constructMockCode.ts +260 -60
  179. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  180. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  181. package/analyzer-template/project/start.ts +3 -0
  182. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  183. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  184. package/analyzer-template/project/writeMockDataTsx.ts +198 -8
  185. package/analyzer-template/project/writeScenarioComponents.ts +170 -29
  186. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  187. package/analyzer-template/tsconfig.json +13 -1
  188. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  189. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  190. package/background/src/lib/virtualized/project/constructMockCode.js +220 -45
  191. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  192. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  193. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  194. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  195. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  196. package/background/src/lib/virtualized/project/start.js +2 -0
  197. package/background/src/lib/virtualized/project/start.js.map +1 -1
  198. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  199. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  200. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  201. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  202. package/background/src/lib/virtualized/project/writeMockDataTsx.js +174 -4
  203. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  204. package/background/src/lib/virtualized/project/writeScenarioComponents.js +143 -27
  205. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  206. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  207. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  208. package/codeyam-cli/scripts/apply-setup.js +386 -9
  209. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  210. package/codeyam-cli/src/cli.js +33 -24
  211. package/codeyam-cli/src/cli.js.map +1 -1
  212. package/codeyam-cli/src/codeyam-cli.js +18 -2
  213. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  214. package/codeyam-cli/src/commands/analyze.js +21 -9
  215. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  216. package/codeyam-cli/src/commands/baseline.js +2 -0
  217. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  218. package/codeyam-cli/src/commands/debug.js +9 -5
  219. package/codeyam-cli/src/commands/debug.js.map +1 -1
  220. package/codeyam-cli/src/commands/default.js +87 -21
  221. package/codeyam-cli/src/commands/default.js.map +1 -1
  222. package/codeyam-cli/src/commands/editor.js +1839 -0
  223. package/codeyam-cli/src/commands/editor.js.map +1 -0
  224. package/codeyam-cli/src/commands/init.js +81 -260
  225. package/codeyam-cli/src/commands/init.js.map +1 -1
  226. package/codeyam-cli/src/commands/memory.js +97 -92
  227. package/codeyam-cli/src/commands/memory.js.map +1 -1
  228. package/codeyam-cli/src/commands/recapture.js +2 -0
  229. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  230. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  231. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  232. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  233. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  234. package/codeyam-cli/src/commands/test-startup.js +2 -0
  235. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  236. package/codeyam-cli/src/commands/verify.js +14 -2
  237. package/codeyam-cli/src/commands/verify.js.map +1 -1
  238. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +246 -0
  239. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  240. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +126 -0
  241. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  242. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +295 -0
  243. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  244. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  245. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  246. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +100 -0
  247. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  248. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +147 -0
  249. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  250. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +76 -0
  251. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  252. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  253. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  254. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  255. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  256. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  257. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  258. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  259. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  260. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  261. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  262. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +154 -86
  263. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  264. package/codeyam-cli/src/utils/analyzer.js +7 -0
  265. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  266. package/codeyam-cli/src/utils/backgroundServer.js +109 -22
  267. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  268. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  269. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  270. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  271. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  272. package/codeyam-cli/src/utils/editorAudit.js +82 -0
  273. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  274. package/codeyam-cli/src/utils/editorDevServer.js +98 -0
  275. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  276. package/codeyam-cli/src/utils/editorJournal.js +137 -0
  277. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  278. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  279. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  280. package/codeyam-cli/src/utils/editorPreloadHelpers.js +64 -0
  281. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  282. package/codeyam-cli/src/utils/editorPreview.js +66 -0
  283. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  284. package/codeyam-cli/src/utils/editorScenarios.js +56 -0
  285. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  286. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  287. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  288. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  289. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  290. package/codeyam-cli/src/utils/generateReport.js +2 -2
  291. package/codeyam-cli/src/utils/git.js +103 -0
  292. package/codeyam-cli/src/utils/git.js.map +1 -1
  293. package/codeyam-cli/src/utils/install-skills.js +114 -47
  294. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  295. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  296. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  297. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  298. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  299. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  300. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  301. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  302. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  303. package/codeyam-cli/src/utils/progress.js +7 -0
  304. package/codeyam-cli/src/utils/progress.js.map +1 -1
  305. package/codeyam-cli/src/utils/project.js +15 -5
  306. package/codeyam-cli/src/utils/project.js.map +1 -1
  307. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  308. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  309. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  310. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  311. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  312. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  313. package/codeyam-cli/src/utils/queue/job.js +74 -1
  314. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  315. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  316. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  317. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  318. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  319. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  320. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  321. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  322. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  323. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  324. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  325. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  326. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  327. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  328. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  329. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  330. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  331. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  332. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  333. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  334. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  335. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  336. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  337. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  338. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  339. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  340. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  341. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  342. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  343. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  344. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  345. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  346. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  347. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  348. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  349. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  350. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  351. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  352. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  353. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  354. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  355. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  356. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  357. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  358. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  359. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  360. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  361. package/codeyam-cli/src/utils/rules/index.js +2 -0
  362. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  363. package/codeyam-cli/src/utils/rules/parser.js +16 -29
  364. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  365. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  366. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  367. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  368. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  369. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  370. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  371. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  372. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  373. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  374. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  375. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  376. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  377. package/codeyam-cli/src/utils/serverState.js +64 -12
  378. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  379. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +61 -43
  380. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  381. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  382. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  383. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  384. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  385. package/codeyam-cli/src/utils/testRunner.js +158 -0
  386. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  387. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  388. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  389. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  390. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  391. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  392. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  393. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  394. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  395. package/codeyam-cli/src/webserver/app/lib/database.js +56 -30
  396. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  397. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  398. package/codeyam-cli/src/webserver/backgroundServer.js +166 -16
  399. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  400. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  401. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  402. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +1 -0
  403. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-C76mRRiF.js} +1 -1
  404. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-g3saevPb.js} +1 -1
  405. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-CobE682z.js} +1 -1
  406. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-aht4aafF.js → InteractivePreview-DYFW3lDD.js} +3 -3
  408. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  409. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-BU_OAEMP.js} +1 -1
  410. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-ceAyBX-H.js} +1 -1
  411. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-djPLI-WV.js} +3 -8
  412. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-BED4B6sP.js} +1 -1
  413. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-B76aig_2.js} +2 -2
  414. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  415. package/codeyam-cli/src/webserver/build/client/assets/Terminal-Dnj5CY9R.js +41 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  417. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-C96V0n15.js} +1 -1
  418. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-BpKzcsJz.js} +6 -11
  419. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  420. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  422. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  423. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  424. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  425. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  426. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  427. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  428. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  429. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  430. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  431. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  432. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  433. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  434. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  435. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  436. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  437. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  438. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  439. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  440. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  441. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  442. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  443. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  444. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  445. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  446. package/codeyam-cli/src/webserver/build/client/assets/book-open-D_nMCFmP.js +6 -0
  447. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-BH2h1Ea2.js} +1 -1
  448. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-C4pqxYJB.js} +12 -12
  449. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-DyIKORY6.js} +1 -1
  450. package/codeyam-cli/src/webserver/build/client/assets/copy-NDbZjXao.js +11 -0
  451. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-CMT1jU2q.js} +1 -1
  452. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  453. package/codeyam-cli/src/webserver/build/client/assets/editor-D1DAKXtT.js +8 -0
  454. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BJUiQqZF.js → entity._sha._-CrjR3zZW.js} +11 -11
  455. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DkzqFzFj.js +6 -0
  456. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  457. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  458. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  459. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-DTvKq3TY.js} +1 -1
  460. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-cPo8LiG3.js} +1 -1
  461. package/codeyam-cli/src/webserver/build/client/assets/{files-CJ6lTdTA.js → files-DO4CZ16O.js} +1 -1
  462. package/codeyam-cli/src/webserver/build/client/assets/{git-CPTZZ-JZ.js → git-CFCTYk9I.js} +1 -1
  463. package/codeyam-cli/src/webserver/build/client/assets/globals-B17TBSS6.css +1 -0
  464. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-10oVnAAH.js} +1 -1
  465. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-BcvgDzbZ.js} +1 -1
  466. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  467. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-BAXYRVEO.js} +1 -1
  468. package/codeyam-cli/src/webserver/build/client/assets/manifest-a632de18.js +1 -0
  469. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +96 -0
  470. package/codeyam-cli/src/webserver/build/client/assets/pause-DTAcYxBt.js +11 -0
  471. package/codeyam-cli/src/webserver/build/client/assets/root-DUKqhFlb.js +67 -0
  472. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-fKo7v0Zo.js} +1 -1
  473. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  474. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DwFIBT09.js → simulations-B3aOzpCZ.js} +1 -1
  475. package/codeyam-cli/src/webserver/build/client/assets/terminal-BG4heKCG.js +11 -0
  476. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-DtSmdtM4.js} +1 -1
  477. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-C1v1PQzo.js → useCustomSizes-ByhSyh0W.js} +1 -1
  478. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  479. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DYxHZQuP.js → useReportContext-O-jkvSPx.js} +1 -1
  480. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-9FIWuYfK.js} +1 -1
  481. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  482. package/codeyam-cli/src/webserver/build/server/assets/index-HfLydfDq.js +1 -0
  483. package/codeyam-cli/src/webserver/build/server/assets/server-build-CUu_F-oo.js +366 -0
  484. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  485. package/codeyam-cli/src/webserver/build-info.json +5 -5
  486. package/codeyam-cli/src/webserver/devServer.js +39 -5
  487. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  488. package/codeyam-cli/src/webserver/editorProxy.js +440 -0
  489. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  490. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +175 -0
  491. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +140 -0
  492. package/codeyam-cli/src/webserver/server.js +226 -1
  493. package/codeyam-cli/src/webserver/server.js.map +1 -1
  494. package/codeyam-cli/src/webserver/terminalServer.js +698 -0
  495. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  496. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  497. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  498. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  499. package/codeyam-cli/templates/editor-step-hook.py +147 -0
  500. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  501. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  502. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  503. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  504. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  505. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  506. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  507. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  508. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  509. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  510. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  511. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  512. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  513. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  514. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +43 -0
  515. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  516. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  517. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  518. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  519. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  520. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  521. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  522. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  523. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  524. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  525. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  526. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  527. package/codeyam-cli/templates/rule-reflection-hook.py +647 -0
  528. package/codeyam-cli/templates/rules-instructions.md +78 -0
  529. package/codeyam-cli/templates/{codeyam:debug.md → skills/codeyam-debug/SKILL.md} +1 -1
  530. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  531. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +69 -0
  532. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  533. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  534. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.sh +108 -0
  535. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.sh +69 -0
  536. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  537. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  538. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.sh +12 -0
  539. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter.jq +45 -0
  540. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.sh +139 -0
  541. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  542. package/codeyam-cli/templates/{codeyam:setup.md → skills/codeyam-setup/SKILL.md} +13 -1
  543. package/codeyam-cli/templates/{codeyam:sim.md → skills/codeyam-sim/SKILL.md} +1 -1
  544. package/codeyam-cli/templates/{codeyam:test.md → skills/codeyam-test/SKILL.md} +1 -1
  545. package/codeyam-cli/templates/{codeyam:verify.md → skills/codeyam-verify/SKILL.md} +1 -1
  546. package/package.json +16 -14
  547. package/packages/ai/index.js +3 -2
  548. package/packages/ai/index.js.map +1 -1
  549. package/packages/ai/src/lib/analyzeScope.js +50 -13
  550. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  551. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +76 -12
  552. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  553. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  554. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  555. package/packages/ai/src/lib/astScopes/processExpression.js +317 -44
  556. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  557. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  558. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  559. package/packages/ai/src/lib/completionCall.js +10 -7
  560. package/packages/ai/src/lib/completionCall.js.map +1 -1
  561. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +996 -173
  562. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  563. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  564. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  565. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  566. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  567. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  568. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  569. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +33 -3
  570. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  571. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +36 -11
  572. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  573. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  574. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  575. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  576. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  577. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  578. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  579. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  580. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  581. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  582. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  583. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +309 -84
  584. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  585. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  586. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  587. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  588. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  589. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  590. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  591. package/packages/ai/src/lib/generateEntityScenarioData.js +284 -6
  592. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  593. package/packages/ai/src/lib/generateEntityScenarios.js +7 -1
  594. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  595. package/packages/ai/src/lib/generateExecutionFlows.js +107 -4
  596. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  597. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +447 -80
  598. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  599. package/packages/ai/src/lib/isolateScopes.js +39 -3
  600. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  601. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  602. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  603. package/packages/ai/src/lib/mergeStatements.js +70 -51
  604. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  605. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  606. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  607. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  608. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  609. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  610. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  611. package/packages/ai/src/lib/resolvePathToControllable.js +24 -14
  612. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
  613. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  614. package/packages/analyze/index.js +1 -0
  615. package/packages/analyze/index.js.map +1 -1
  616. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  617. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  618. package/packages/analyze/src/lib/ProjectAnalyzer.js +99 -26
  619. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  620. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  621. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  622. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  623. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  624. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  625. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  626. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  627. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  628. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  629. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  630. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  631. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  632. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  633. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  634. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +65 -7
  635. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  636. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -4
  637. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  638. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  639. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  640. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  641. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  642. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  643. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  644. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +0 -3
  645. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  646. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  647. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  648. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  649. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  650. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  651. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  652. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +56 -10
  653. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  654. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +75 -21
  655. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  656. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +215 -17
  657. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  658. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +56 -8
  659. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  660. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +494 -56
  661. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  662. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  663. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  664. package/packages/analyze/src/lib/index.js +1 -0
  665. package/packages/analyze/src/lib/index.js.map +1 -1
  666. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  667. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  668. package/packages/database/index.js +1 -0
  669. package/packages/database/index.js.map +1 -1
  670. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  671. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  672. package/packages/database/src/lib/analysisToDb.js +1 -1
  673. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  674. package/packages/database/src/lib/branchToDb.js +1 -1
  675. package/packages/database/src/lib/branchToDb.js.map +1 -1
  676. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  677. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  678. package/packages/database/src/lib/commitToDb.js +1 -1
  679. package/packages/database/src/lib/commitToDb.js.map +1 -1
  680. package/packages/database/src/lib/fileToDb.js +1 -1
  681. package/packages/database/src/lib/fileToDb.js.map +1 -1
  682. package/packages/database/src/lib/kysely/db.js +8 -0
  683. package/packages/database/src/lib/kysely/db.js.map +1 -1
  684. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  685. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  686. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  687. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  688. package/packages/database/src/lib/loadCommits.js +23 -13
  689. package/packages/database/src/lib/loadCommits.js.map +1 -1
  690. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  691. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  692. package/packages/database/src/lib/projectToDb.js +1 -1
  693. package/packages/database/src/lib/projectToDb.js.map +1 -1
  694. package/packages/database/src/lib/saveFiles.js +1 -1
  695. package/packages/database/src/lib/saveFiles.js.map +1 -1
  696. package/packages/database/src/lib/scenarioToDb.js +1 -1
  697. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  698. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  699. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  700. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  701. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  702. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  703. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  704. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  705. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  706. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  707. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  708. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  709. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  710. package/scripts/npm-post-install.cjs +34 -0
  711. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  712. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  713. package/codeyam-cli/src/commands/list.js +0 -31
  714. package/codeyam-cli/src/commands/list.js.map +0 -1
  715. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  716. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  717. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  718. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  719. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +0 -34
  720. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  721. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BBnGWYga.js +0 -1
  722. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +0 -6
  723. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +0 -6
  724. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  725. package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +0 -1
  726. package/codeyam-cli/src/webserver/build/client/assets/manifest-7522edd4.js +0 -1
  727. package/codeyam-cli/src/webserver/build/client/assets/memory-yxFcrxBX.js +0 -92
  728. package/codeyam-cli/src/webserver/build/client/assets/root-eVAaavTS.js +0 -62
  729. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  730. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-aSv48UbS.js +0 -2
  731. package/codeyam-cli/src/webserver/build/server/assets/index-DVzYx8PN.js +0 -1
  732. package/codeyam-cli/src/webserver/build/server/assets/server-build-4Cr0uToj.js +0 -257
  733. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  734. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  735. package/codeyam-cli/templates/codeyam:memory.md +0 -462
  736. package/codeyam-cli/templates/codeyam:new-rule.md +0 -13
  737. package/scripts/finalize-analyzer.cjs +0 -81
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Recursively strips `_nullable` keys from LLM-generated mock data.
3
+ *
4
+ * The `_nullable` marker is an internal CodeYam concept used in type definitions
5
+ * to indicate that a field can be null/undefined. The LLM sometimes includes
6
+ * these markers in its generated scenario data, which causes runtime errors
7
+ * when code iterates over object keys (e.g., `Object.keys(importedBy)` picks
8
+ * up `_nullable` as a key alongside real data).
9
+ *
10
+ * This function mutates the input object in-place, consistent with other
11
+ * post-processing helpers like `convertNullToUndefinedBySchema`.
12
+ */
13
+ export default function stripNullableMarkers(data) {
14
+ if (data == null || typeof data !== 'object')
15
+ return;
16
+ // Delete _nullable from this level
17
+ if ('_nullable' in data) {
18
+ delete data._nullable;
19
+ }
20
+ // Recurse into nested objects and arrays
21
+ for (const value of Object.values(data)) {
22
+ if (Array.isArray(value)) {
23
+ for (const item of value) {
24
+ if (item !== null && typeof item === 'object' && !Array.isArray(item)) {
25
+ stripNullableMarkers(item);
26
+ }
27
+ }
28
+ }
29
+ else if (value !== null && typeof value === 'object') {
30
+ stripNullableMarkers(value);
31
+ }
32
+ }
33
+ }
34
+ //# sourceMappingURL=stripNullableMarkers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stripNullableMarkers.js","sourceRoot":"","sources":["../../../../../../../../packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,OAAO,UAAU,oBAAoB,CAC1C,IAA6B;IAE7B,IAAI,IAAI,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,OAAO;IAErD,mCAAmC;IACnC,IAAI,WAAW,IAAI,IAAI,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,yCAAyC;IACzC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;oBACtE,oBAAoB,CAAC,IAA+B,CAAC,CAAC;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvD,oBAAoB,CAAC,KAAgC,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -1,32 +1,51 @@
1
- const DEFAULT_MAX_KEYS_PER_CHUNK = 8;
1
+ const DEFAULT_MAX_CHUNK_SIZE = 10000; // ~10K chars per chunk
2
+ const DEFAULT_MAX_KEYS_PER_CHUNK = 20;
2
3
  /**
3
4
  * Chunk a large data structure into smaller pieces for focused LLM processing.
4
5
  *
5
6
  * Large schemas overwhelm LLMs, causing them to make mistakes on some keys.
6
7
  * By processing smaller chunks, each key gets more focused attention.
7
8
  *
9
+ * Uses cumulative JSON size to decide chunk boundaries rather than a fixed
10
+ * key count, so a single oversized key gets its own chunk while many small
11
+ * keys are grouped together efficiently.
12
+ *
8
13
  * @param dataForMocks - The full data structure schema
9
- * @param options - Chunking options (maxKeysPerChunk defaults to 8)
14
+ * @param options - Chunking options (maxChunkSize defaults to 10_000)
10
15
  * @returns Array of smaller data structure chunks
11
16
  */
12
17
  export function chunkDataStructure(dataForMocks, options = {}) {
13
18
  if (!dataForMocks || typeof dataForMocks !== 'object') {
14
19
  return [dataForMocks];
15
20
  }
16
- const { maxKeysPerChunk = DEFAULT_MAX_KEYS_PER_CHUNK } = options;
21
+ const { maxChunkSize = DEFAULT_MAX_CHUNK_SIZE, maxKeysPerChunk = DEFAULT_MAX_KEYS_PER_CHUNK, } = options;
17
22
  const keys = Object.keys(dataForMocks);
18
- // Don't chunk if already small enough
19
- if (keys.length <= maxKeysPerChunk) {
23
+ // Calculate total size to see if chunking is needed
24
+ const totalSize = JSON.stringify(dataForMocks).length;
25
+ if (totalSize <= maxChunkSize && keys.length <= maxKeysPerChunk) {
20
26
  return [dataForMocks];
21
27
  }
28
+ // Greedily pack keys into chunks by cumulative size and key count
22
29
  const chunks = [];
23
- for (let i = 0; i < keys.length; i += maxKeysPerChunk) {
24
- const chunkKeys = keys.slice(i, i + maxKeysPerChunk);
25
- const chunk = {};
26
- for (const key of chunkKeys) {
27
- chunk[key] = dataForMocks[key];
30
+ let currentChunk = {};
31
+ let currentSize = 0;
32
+ for (const key of keys) {
33
+ const keySize = JSON.stringify(dataForMocks[key]).length;
34
+ const currentKeyCount = Object.keys(currentChunk).length;
35
+ // If adding this key would exceed size or key count limit AND chunk isn't empty, start a new chunk
36
+ if (currentSize > 0 &&
37
+ (currentSize + keySize > maxChunkSize ||
38
+ currentKeyCount >= maxKeysPerChunk)) {
39
+ chunks.push(currentChunk);
40
+ currentChunk = {};
41
+ currentSize = 0;
28
42
  }
29
- chunks.push(chunk);
43
+ currentChunk[key] = dataForMocks[key];
44
+ currentSize += keySize;
45
+ }
46
+ // Push the last chunk
47
+ if (Object.keys(currentChunk).length > 0) {
48
+ chunks.push(currentChunk);
30
49
  }
31
50
  return chunks;
32
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"dataStructureChunking.js","sourceRoot":"","sources":["../../../../../../packages/ai/src/lib/dataStructureChunking.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"dataStructureChunking.js","sourceRoot":"","sources":["../../../../../../packages/ai/src/lib/dataStructureChunking.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import isolateScopes from "./isolateScopes.js";
2
2
  import analyzeScope from "./analyzeScope.js";
3
- import { resetScopeDataStructureMetrics } from "./dataStructure/ScopeDataStructure.js";
3
+ import { transformationTracer } from "../../../../packages/analyze/index.js";
4
+ import { resetScopeDataStructureMetrics, } from "./dataStructure/ScopeDataStructure.js";
4
5
  export default async function generateEntityDataStructure({ entity, fileAnalyzer, model, }) {
5
6
  // Reset metrics counters to prevent false "infinite loop" detection when
6
7
  // processing multiple entities in the same run
@@ -61,8 +62,51 @@ export default async function generateEntityDataStructure({ entity, fileAnalyzer
61
62
  return undefined;
62
63
  }
63
64
  // Inspect the runtime type of dataStructure to see if it must be serialized
65
+ // Note: When worker threads are used, dataStructure is already serialized (no toSerializable).
66
+ // Workers are disabled when CODEYAM_TRACE_TRANSFORMS=1 to enable full tracing.
64
67
  if ('toSerializable' in entityScope.dataStructure) {
65
- return entityScope.dataStructure.toSerializable();
68
+ const scopeDataStructure = entityScope.dataStructure;
69
+ // Trace the internal state BEFORE serialization - captures what methods return
70
+ if (transformationTracer.isEnabled()) {
71
+ transformationTracer.startEntity({
72
+ name: entity.name,
73
+ entityType: entity.entityType ?? 'unknown',
74
+ filePath: entity.filePath,
75
+ });
76
+ // Capture internal state - this is what getReturnValue/getFunctionSignature return
77
+ transformationTracer.snapshot(entity.name, 'scopeDataStructure', {
78
+ signatureSchema: scopeDataStructure.getFunctionSignature({
79
+ fillInUnknowns: true,
80
+ }),
81
+ returnValueSchema: scopeDataStructure.getReturnValue({
82
+ fillInUnknowns: true,
83
+ }),
84
+ });
85
+ }
86
+ const serialized = scopeDataStructure.toSerializable();
87
+ // Trace AFTER serialization - shows what gets output
88
+ if (transformationTracer.isEnabled()) {
89
+ // Build schema from external function calls for comparison
90
+ const externalSchemas = {};
91
+ for (const efc of serialized.externalFunctionCalls ?? []) {
92
+ for (const [path, type] of Object.entries(efc.schema ?? {})) {
93
+ externalSchemas[path] = type;
94
+ }
95
+ }
96
+ transformationTracer.snapshot(entity.name, 'serialized', {
97
+ signatureSchema: serialized.functionResults?.[entity.name]?.signatureWithUnknowns,
98
+ returnValueSchema: serialized.functionResults?.[entity.name]?.returnValueWithUnknowns,
99
+ // Include external function schemas to detect serialization gaps
100
+ dependencySchemas: {
101
+ externalFunctions: {
102
+ combined: {
103
+ returnValueSchema: externalSchemas,
104
+ },
105
+ },
106
+ },
107
+ });
108
+ }
109
+ return serialized;
66
110
  }
67
111
  return entityScope.dataStructure;
68
112
  }
@@ -1 +1 @@
1
- {"version":3,"file":"generateEntityDataStructure.js","sourceRoot":"","sources":["../../../../../../packages/ai/src/lib/generateEntityDataStructure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generateEntityDataStructure.js","sourceRoot":"","sources":["../../../../../../packages/ai/src/lib/generateEntityDataStructure.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,11 @@ import validateJson from "./validateJson.js";
8
8
  import { awsLog, awsLogDebugLevel } from "../../../../packages/utils/index.js";
9
9
  import { parseJsonSafe } from "../../../../packages/ai/index.js";
10
10
  import convertNullToUndefinedBySchema from "./dataStructure/helpers/convertNullToUndefinedBySchema.js";
11
+ import convertTypeAnnotationsToValues from "./dataStructure/helpers/convertTypeAnnotationsToValues.js";
11
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";
12
16
  import { deepMerge } from "../../../../packages/generate/index.js";
13
17
  import { chunkDataStructure, getRequiredValuesForChunk, } from "./dataStructureChunking.js";
14
18
  /**
@@ -127,6 +131,35 @@ function findKeyPath(targetKey, obj, currentPath = []) {
127
131
  }
128
132
  return null;
129
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
+ }
130
163
  /**
131
164
  * Relocate misplaced nested keys in mockData to their correct position
132
165
  * based on the dataForMocks structure.
@@ -179,9 +212,16 @@ function relocateMisplacedNestedKeys(mockData, dataForMocks, currentPathForLoggi
179
212
  current = current[pathKey];
180
213
  }
181
214
  // Deep merge the value into the correct location
182
- // Use deep merge to preserve existing data at that 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.
183
220
  if (current[key] !== undefined && typeof current[key] === 'object') {
184
- current[key] = deepMerge(current[key], value);
221
+ const safeValue = stripPrimitivesOverwritingComplexValues(current[key], value);
222
+ if (safeValue !== null) {
223
+ current[key] = deepMerge(current[key], safeValue);
224
+ }
185
225
  }
186
226
  else {
187
227
  current[key] = value;
@@ -235,9 +275,14 @@ function generateDefaultForSchemaType(schemaType) {
235
275
  return null;
236
276
  return schemaType; // Return the type as a string placeholder
237
277
  }
238
- if (typeof schemaType === 'object' &&
239
- schemaType !== null &&
240
- !Array.isArray(schemaType)) {
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) {
241
286
  // Recursively generate defaults for nested objects
242
287
  const result = {};
243
288
  for (const [key, value] of Object.entries(schemaType)) {
@@ -342,6 +387,8 @@ function fillMissingMockDataKeysWithDefaults(mockData, dataForMocks, pathPrefix
342
387
  }
343
388
  const missingKeys = [];
344
389
  for (const key of Object.keys(dataForMocks)) {
390
+ if (key === '_nullable')
391
+ continue; // Internal marker, not a data key
345
392
  const fullPath = pathPrefix ? `${pathPrefix}.${key}` : key;
346
393
  if (mockData[key] === undefined) {
347
394
  missingKeys.push(fullPath);
@@ -367,6 +414,139 @@ function fillMissingMockDataKeysWithDefaults(mockData, dataForMocks, pathPrefix
367
414
  awsLog(`CodeYam: Generated default mock data for ${missingKeys.length} missing key(s): ${missingKeys.slice(0, 10).join(', ')}${missingKeys.length > 10 ? '...' : ''}`);
368
415
  }
369
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
+ }
370
550
  /**
371
551
  * For Default Scenario only: detect missing mockData keys and make a follow-up
372
552
  * LLM call to fill them in. This handles cases where the LLM completes normally
@@ -477,6 +657,18 @@ export async function generateDataForScenario({ entity, structure, scenario, exe
477
657
  }
478
658
  }
479
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
+ }
480
672
  awsLog(`Chunked processing complete. Generated ${Object.keys(chunkedMockData).length} keys total`);
481
673
  }
482
674
  }
@@ -629,6 +821,15 @@ export async function generateDataForScenario({ entity, structure, scenario, exe
629
821
  }
630
822
  awsLog(`Merged chunked mock data for keys: ${Object.keys(chunkedMockData).join(', ')}`);
631
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
+ }
632
833
  // Relocate misplaced nested keys to their correct position.
633
834
  // The LLM sometimes places nested keys at root level instead of inside their
634
835
  // parent object (e.g., 'fastener' at root instead of inside 'trpc').
@@ -643,6 +844,23 @@ export async function generateDataForScenario({ entity, structure, scenario, exe
643
844
  if (structure.dataForMocks && fullScenarioData.data.mockData) {
644
845
  convertNullToUndefinedBySchema(fullScenarioData.data.mockData, structure.dataForMocks);
645
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
+ }
646
864
  // Convert comma-separated strings to arrays when appropriate.
647
865
  // The LLM sometimes generates strings like "color,size" instead of arrays
648
866
  // like ["color", "size"] when the schema type is incorrectly inferred as
@@ -651,6 +869,15 @@ export async function generateDataForScenario({ entity, structure, scenario, exe
651
869
  if (fullScenarioData.data.mockData) {
652
870
  convertCommaSeparatedStringsToArrays(fullScenarioData.data.mockData);
653
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
+ }
654
881
  // Fix null values for ID fields when the schema indicates they should be non-null.
655
882
  // The LLM sometimes generates `null` for ID fields (e.g., `"id": null`) when
656
883
  // the schema type is `"number"`. This causes runtime issues when code checks
@@ -658,6 +885,13 @@ export async function generateDataForScenario({ entity, structure, scenario, exe
658
885
  if (structure.dataForMocks && fullScenarioData.data.mockData) {
659
886
  fixNullIdsBySchema(fullScenarioData.data.mockData, structure.dataForMocks);
660
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
+ }
661
895
  if (structure.arguments && fullScenarioData.data.argumentsData) {
662
896
  for (let i = 0; i < fullScenarioData.data.argumentsData.length; i++) {
663
897
  if (structure.arguments[i]) {
@@ -787,6 +1021,46 @@ export default async function generateEntityScenarioData({ entity, structure, sc
787
1021
  scenarioData.data.argumentsData =
788
1022
  defaultScenarioData.data.argumentsData.map((arg) => ({ ...arg }));
789
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
+ }
790
1064
  return scenarioData;
791
1065
  });
792
1066
  scenarioDatas.push(...mergedScenarioDatas);
@@ -810,7 +1084,8 @@ Generate COMPLETE, robust data for the entire data structure.
810
1084
  : `## Non-Default Scenario
811
1085
  Generate ONLY the differences from the default scenario.
812
1086
  - Include only fields that need to change
813
- - 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\`
814
1089
  - Omit unchanged fields—they merge from default`;
815
1090
  // Only include the "NO ERROR DATA" instruction when the scenario doesn't require error data
816
1091
  const noErrorDataInstruction = requiresErrorData
@@ -892,6 +1167,7 @@ Use simple elements only (\`<div>\`, \`<span>\`). No custom components.
892
1167
  - Arrays should have many items (at least 4) unless specified otherwise
893
1168
  - Each item must follow the exact structure provided
894
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
895
1171
 
896
1172
  ## CRITICAL: Preserve Exact Structure
897
1173
  Your response MUST mirror the EXACT nested structure provided in mockData Structure.
@@ -965,6 +1241,7 @@ Use simple elements only (\`<div>\`, \`<span>\`). No custom components.
965
1241
  ### Arrays
966
1242
  - Arrays should have many items (at least 4) unless specified otherwise
967
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
968
1245
 
969
1246
  ## CRITICAL: Preserve Exact Structure
970
1247
  Your response MUST mirror the EXACT nested structure provided for the missing keys.
@@ -1087,5 +1364,6 @@ NEVER include "error" fields in responses. Skip them entirely.
1087
1364
  - No \`undefined\`—use \`null\` or omit
1088
1365
  - Generate data for ALL keys in the chunk (don't skip any)
1089
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
1090
1368
  `;
1091
1369
  //# sourceMappingURL=generateEntityScenarioData.js.map