@codeyam/codeyam-cli 0.1.0-staging.b8a55ba → 0.1.0-staging.c1c8678

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 (953) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +15 -12
  5. package/analyzer-template/packages/ai/index.ts +21 -5
  6. package/analyzer-template/packages/ai/package.json +3 -3
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  9. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +183 -10
  11. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  16. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  17. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1229 -30
  18. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  19. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  20. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  21. package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1867 -334
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +7 -2
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +296 -35
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +120 -76
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +140 -20
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  34. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  35. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  36. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  37. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +174 -0
  38. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  39. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  40. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  41. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
  42. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
  43. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  44. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1421 -88
  45. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  46. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +614 -0
  47. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  48. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  49. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  50. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  51. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  52. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  53. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  63. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  64. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  65. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  66. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  67. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  68. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  69. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  70. package/analyzer-template/packages/analyze/index.ts +2 -0
  71. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
  72. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  73. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  74. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  75. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  76. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  77. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  78. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  79. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  80. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  81. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  82. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +466 -270
  83. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +34 -1
  84. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  85. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  86. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  87. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  88. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  89. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  90. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  91. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  92. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  93. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  94. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +201 -46
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +593 -84
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +377 -84
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +35 -129
  102. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  103. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +970 -140
  104. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  105. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  106. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  107. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  108. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  109. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  110. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  111. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  112. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  113. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  114. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  115. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  116. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  117. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  118. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  119. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  120. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  121. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  122. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  123. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  124. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  125. package/analyzer-template/packages/aws/package.json +3 -3
  126. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  127. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  128. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  129. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  130. package/analyzer-template/packages/database/package.json +1 -1
  131. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  132. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  133. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  134. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  135. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  136. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  137. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  138. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  139. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  140. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  141. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  142. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  143. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  144. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  145. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  146. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  147. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  148. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  149. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  150. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  151. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  152. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  153. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  154. package/analyzer-template/packages/generate/index.ts +3 -0
  155. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  156. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  157. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  158. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  159. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  160. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  163. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  166. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  167. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  168. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  169. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  170. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  171. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  172. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  173. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  175. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  176. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  177. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  178. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  179. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  180. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  181. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  182. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  184. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  185. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  186. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  187. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  188. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  189. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  190. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
  191. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  192. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  193. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  194. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  195. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  196. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  197. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  198. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  199. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  200. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  201. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  202. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  203. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  204. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  205. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  206. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  207. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  208. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  209. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  210. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  211. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  212. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  213. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  214. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  215. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  216. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  217. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  218. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  219. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  220. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  221. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  222. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  223. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  224. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  225. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  226. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  227. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  228. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  229. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  230. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  231. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  232. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  233. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  234. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  235. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  236. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  237. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  238. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  239. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  240. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  241. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  242. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  243. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  244. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  245. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  246. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  247. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  248. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  249. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  250. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  251. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  252. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  253. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  254. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  255. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  256. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  257. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  258. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  259. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  260. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  261. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  262. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  263. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  264. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  265. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +9 -54
  266. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  267. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  268. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  269. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  270. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  271. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  272. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  273. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  274. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  275. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  276. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  277. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  278. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  279. package/analyzer-template/packages/github/package.json +1 -1
  280. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  281. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  282. package/analyzer-template/packages/process/index.ts +2 -0
  283. package/analyzer-template/packages/process/package.json +12 -0
  284. package/analyzer-template/packages/process/tsconfig.json +8 -0
  285. package/analyzer-template/packages/types/index.ts +3 -6
  286. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  287. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  288. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  289. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  290. package/analyzer-template/packages/types/src/types/Scenario.ts +9 -77
  291. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  292. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  293. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  294. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  295. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  296. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  297. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  298. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  299. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  300. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  301. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  302. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  303. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  304. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  305. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  306. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +9 -54
  307. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  308. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  309. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  310. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  311. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  312. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  313. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  314. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  315. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  316. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  317. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  318. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  319. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  320. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  321. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  322. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  323. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  324. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  325. package/analyzer-template/playwright/capture.ts +57 -26
  326. package/analyzer-template/playwright/captureStatic.ts +1 -1
  327. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  328. package/analyzer-template/playwright/waitForServer.ts +21 -6
  329. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  330. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  331. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  332. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  333. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  334. package/analyzer-template/project/constructMockCode.ts +1201 -178
  335. package/analyzer-template/project/controller/startController.ts +16 -1
  336. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  337. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  338. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  339. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  340. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  341. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  342. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  343. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  344. package/analyzer-template/project/orchestrateCapture.ts +81 -9
  345. package/analyzer-template/project/reconcileMockDataKeys.ts +220 -78
  346. package/analyzer-template/project/runAnalysis.ts +11 -0
  347. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  348. package/analyzer-template/project/start.ts +51 -15
  349. package/analyzer-template/project/startScenarioCapture.ts +6 -0
  350. package/analyzer-template/project/writeMockDataTsx.ts +345 -32
  351. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  352. package/analyzer-template/project/writeScenarioComponents.ts +358 -118
  353. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  354. package/analyzer-template/project/writeSimpleRoot.ts +28 -42
  355. package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
  356. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  357. package/analyzer-template/tsconfig.json +2 -1
  358. package/background/src/lib/local/createLocalAnalyzer.js +2 -30
  359. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  360. package/background/src/lib/local/execAsync.js +1 -1
  361. package/background/src/lib/local/execAsync.js.map +1 -1
  362. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  363. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  364. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  365. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  366. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  367. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  368. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  369. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  370. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  371. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  372. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  373. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  374. package/background/src/lib/virtualized/project/constructMockCode.js +1062 -134
  375. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  376. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  377. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  378. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  379. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  380. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  381. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  382. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  383. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  384. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  385. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  386. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  387. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  388. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  389. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  390. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  391. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  392. package/background/src/lib/virtualized/project/orchestrateCapture.js +65 -10
  393. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  394. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +188 -47
  395. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  396. package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
  397. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  398. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  399. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  400. package/background/src/lib/virtualized/project/start.js +47 -15
  401. package/background/src/lib/virtualized/project/start.js.map +1 -1
  402. package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
  403. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  404. package/background/src/lib/virtualized/project/writeMockDataTsx.js +301 -27
  405. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  406. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  407. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  408. package/background/src/lib/virtualized/project/writeScenarioComponents.js +278 -100
  409. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  410. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  411. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  412. package/background/src/lib/virtualized/project/writeSimpleRoot.js +28 -41
  413. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  414. package/codeyam-cli/scripts/apply-setup.js +180 -0
  415. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  416. package/codeyam-cli/src/cli.js +9 -1
  417. package/codeyam-cli/src/cli.js.map +1 -1
  418. package/codeyam-cli/src/codeyam-cli.js +18 -2
  419. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  420. package/codeyam-cli/src/commands/analyze.js +5 -3
  421. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  422. package/codeyam-cli/src/commands/baseline.js +176 -0
  423. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  424. package/codeyam-cli/src/commands/debug.js +37 -23
  425. package/codeyam-cli/src/commands/debug.js.map +1 -1
  426. package/codeyam-cli/src/commands/default.js +30 -34
  427. package/codeyam-cli/src/commands/default.js.map +1 -1
  428. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  429. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  430. package/codeyam-cli/src/commands/init.js +49 -257
  431. package/codeyam-cli/src/commands/init.js.map +1 -1
  432. package/codeyam-cli/src/commands/memory.js +264 -0
  433. package/codeyam-cli/src/commands/memory.js.map +1 -0
  434. package/codeyam-cli/src/commands/recapture.js +31 -18
  435. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  436. package/codeyam-cli/src/commands/report.js +46 -1
  437. package/codeyam-cli/src/commands/report.js.map +1 -1
  438. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  439. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  440. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  441. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  442. package/codeyam-cli/src/commands/start.js +8 -12
  443. package/codeyam-cli/src/commands/start.js.map +1 -1
  444. package/codeyam-cli/src/commands/status.js +23 -1
  445. package/codeyam-cli/src/commands/status.js.map +1 -1
  446. package/codeyam-cli/src/commands/test-startup.js +3 -1
  447. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  448. package/codeyam-cli/src/commands/verify.js +14 -2
  449. package/codeyam-cli/src/commands/verify.js.map +1 -1
  450. package/codeyam-cli/src/commands/wipe.js +108 -0
  451. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  452. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  453. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  454. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  455. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  456. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  457. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  458. package/codeyam-cli/src/utils/analyzer.js +7 -0
  459. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  460. package/codeyam-cli/src/utils/backgroundServer.js +112 -21
  461. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  462. package/codeyam-cli/src/utils/database.js +91 -5
  463. package/codeyam-cli/src/utils/database.js.map +1 -1
  464. package/codeyam-cli/src/utils/generateReport.js +4 -3
  465. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  466. package/codeyam-cli/src/utils/git.js +79 -0
  467. package/codeyam-cli/src/utils/git.js.map +1 -0
  468. package/codeyam-cli/src/utils/install-skills.js +76 -37
  469. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  470. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  471. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  472. package/codeyam-cli/src/utils/progress.js +7 -0
  473. package/codeyam-cli/src/utils/progress.js.map +1 -1
  474. package/codeyam-cli/src/utils/queue/job.js +109 -0
  475. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  476. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  477. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  478. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  479. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  480. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  481. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  482. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  483. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  484. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  485. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  486. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  487. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  488. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  489. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  490. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  491. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  492. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  493. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
  494. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  495. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +378 -0
  496. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  497. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +115 -0
  498. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  499. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  500. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  501. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  502. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  503. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  504. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  505. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  506. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  507. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  508. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  509. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  510. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  511. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  512. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  513. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  514. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  515. package/codeyam-cli/src/utils/rules/index.js +6 -0
  516. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  517. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  518. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  519. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  520. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  521. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  522. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  523. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  524. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  525. package/codeyam-cli/src/utils/serverState.js +37 -10
  526. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  527. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  528. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  529. package/codeyam-cli/src/utils/versionInfo.js +25 -19
  530. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  531. package/codeyam-cli/src/utils/wipe.js +128 -0
  532. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  533. package/codeyam-cli/src/webserver/app/lib/database.js +88 -23
  534. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  535. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  536. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  537. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  538. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  539. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  540. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-D9i_zSlY.js +1 -0
  541. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BLlhOa3C.js +11 -0
  542. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-De5b5pC7.js} +1 -1
  543. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CzdG5I7z.js +41 -0
  544. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bclf8Hka.js +34 -0
  545. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Ce-byqKl.js +25 -0
  546. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-DEMHrl7v.js} +1 -1
  547. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-B1LNGboS.js} +1 -1
  548. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-B0Ll1DjK.js} +1 -1
  549. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-CVOvmCKb.js +11 -0
  550. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-L0DWHa_L.js} +1 -1
  551. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-D54Mmpwi.js +10 -0
  552. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-C7PFQfXy.js} +1 -1
  553. package/codeyam-cli/src/webserver/build/client/assets/_index-CKTtYlBU.js +11 -0
  554. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CdziRIWU.js +27 -0
  555. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-CPXtdaWm.js +17 -0
  556. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  557. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  558. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  559. package/codeyam-cli/src/webserver/build/client/assets/book-open-Ch8b7GyQ.js +6 -0
  560. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-vJHJExlT.js} +1 -1
  561. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BEyX4X6_.js +51 -0
  562. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-rwynPZTW.js} +1 -1
  563. package/codeyam-cli/src/webserver/build/client/assets/copy-BBSpeBYf.js +11 -0
  564. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-DHVDauuc.js} +1 -1
  565. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  566. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  567. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-B9_ZqelV.js +1 -0
  568. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-BOPComvD.js +16 -0
  569. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Cfw__yQa.js +6 -0
  570. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BIDUUrI3.js +6 -0
  571. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-BEqewwtZ.js} +1 -1
  572. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-Dxqz8ygt.js} +6 -6
  573. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  574. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-CYnF5KWN.js} +1 -1
  575. package/codeyam-cli/src/webserver/build/client/assets/files-B_dAq2PQ.js +1 -0
  576. package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-BHPqH3Ch.js} +8 -8
  577. package/codeyam-cli/src/webserver/build/client/assets/globals-BJGhRykz.css +1 -0
  578. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-DgAAopZk.js} +1 -1
  579. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-viijWaN6.js} +1 -1
  580. package/codeyam-cli/src/webserver/build/client/assets/labs-ChoAe3xq.js +1 -0
  581. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-LGi2eKI5.js} +1 -1
  582. package/codeyam-cli/src/webserver/build/client/assets/manifest-87493a32.js +1 -0
  583. package/codeyam-cli/src/webserver/build/client/assets/memory-D9eA6kTo.js +78 -0
  584. package/codeyam-cli/src/webserver/build/client/assets/pause-DxJFmMsK.js +11 -0
  585. package/codeyam-cli/src/webserver/build/client/assets/root-C3r0p_7H.js +62 -0
  586. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-Cu3QE9E5.js} +1 -1
  587. package/codeyam-cli/src/webserver/build/client/assets/settings-KH9TdArD.js +1 -0
  588. package/codeyam-cli/src/webserver/build/client/assets/simulations-D9Fkx0-d.js +1 -0
  589. package/codeyam-cli/src/webserver/build/client/assets/terminal-dAhIBEcd.js +11 -0
  590. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-C4CYTEeP.js} +1 -1
  591. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-CLPnITMB.js +1 -0
  592. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-DmGI38Et.js} +1 -1
  593. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BK0S88PB.js +1 -0
  594. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-CJ-JqR0l.js} +1 -1
  595. package/codeyam-cli/src/webserver/build/server/assets/index-CkkmL6r5.js +1 -0
  596. package/codeyam-cli/src/webserver/build/server/assets/server-build-iBGjHYtO.js +259 -0
  597. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  598. package/codeyam-cli/src/webserver/build-info.json +5 -5
  599. package/codeyam-cli/src/webserver/server.js +35 -25
  600. package/codeyam-cli/src/webserver/server.js.map +1 -1
  601. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam-debug.md} +48 -4
  602. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  603. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  604. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  605. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  606. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam-setup.md} +151 -4
  607. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam-sim.md} +1 -1
  608. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam-test.md} +1 -1
  609. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam-verify.md} +1 -1
  610. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  611. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  612. package/codeyam-cli/templates/rules-instructions.md +132 -0
  613. package/package.json +17 -14
  614. package/packages/ai/index.js +8 -6
  615. package/packages/ai/index.js.map +1 -1
  616. package/packages/ai/src/lib/analyzeScope.js +179 -13
  617. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  618. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  619. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  620. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +138 -9
  621. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  622. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  623. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  624. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  625. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  626. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  627. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  628. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  629. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  630. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  631. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  632. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  633. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  634. package/packages/ai/src/lib/astScopes/processExpression.js +944 -30
  635. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  636. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  637. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  638. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  639. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  640. package/packages/ai/src/lib/completionCall.js +178 -31
  641. package/packages/ai/src/lib/completionCall.js.map +1 -1
  642. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1461 -205
  643. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  644. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +7 -2
  645. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  646. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +230 -23
  647. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  648. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +77 -55
  649. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  650. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  651. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  652. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  653. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  654. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  655. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  656. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +122 -14
  657. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  658. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  659. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  660. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  661. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  662. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  663. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  664. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  665. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  666. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  667. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  668. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  669. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  670. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  671. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  672. package/packages/ai/src/lib/dataStructureChunking.js +126 -0
  673. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  674. package/packages/ai/src/lib/deepEqual.js +32 -0
  675. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  676. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  677. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  678. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  679. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  680. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
  681. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  682. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  683. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  684. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  685. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  686. package/packages/ai/src/lib/generateEntityScenarioData.js +1130 -83
  687. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  688. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  689. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  690. package/packages/ai/src/lib/generateExecutionFlows.js +414 -0
  691. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  692. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  693. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  694. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  695. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  696. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  697. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  698. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  699. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  700. package/packages/ai/src/lib/isolateScopes.js +270 -7
  701. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  702. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  703. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  704. package/packages/ai/src/lib/mergeStatements.js +88 -46
  705. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  706. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  707. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  708. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  709. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  710. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  711. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  712. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
  713. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  714. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  715. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  716. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  717. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  718. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  719. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  720. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  721. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  722. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  723. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  724. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  725. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  726. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  727. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  728. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  729. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  730. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  731. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  732. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  733. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  734. package/packages/analyze/index.js +1 -0
  735. package/packages/analyze/index.js.map +1 -1
  736. package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
  737. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  738. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  739. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  740. package/packages/analyze/src/lib/analysisContext.js +30 -5
  741. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  742. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  743. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  744. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  745. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  746. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  747. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  748. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  749. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  750. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  751. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  752. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  753. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  754. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  755. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  756. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  757. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  758. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +211 -54
  759. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  760. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -1
  761. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  762. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  763. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  764. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  765. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  766. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  767. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  768. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  769. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  770. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  771. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  772. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  773. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  774. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  775. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  776. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  777. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  778. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  779. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  780. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  781. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  782. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  783. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  784. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +170 -40
  785. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  786. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  787. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  788. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +480 -71
  789. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  790. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  791. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  792. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +268 -66
  793. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  794. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
  795. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  796. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +27 -98
  797. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  798. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  799. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  800. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +801 -118
  801. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  802. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  803. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  804. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  805. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  806. package/packages/analyze/src/lib/index.js +1 -0
  807. package/packages/analyze/src/lib/index.js.map +1 -1
  808. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  809. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  810. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  811. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  812. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  813. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  814. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  815. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  816. package/packages/database/src/lib/analysisToDb.js +1 -1
  817. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  818. package/packages/database/src/lib/branchToDb.js +1 -1
  819. package/packages/database/src/lib/branchToDb.js.map +1 -1
  820. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  821. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  822. package/packages/database/src/lib/commitToDb.js +1 -1
  823. package/packages/database/src/lib/commitToDb.js.map +1 -1
  824. package/packages/database/src/lib/fileToDb.js +1 -1
  825. package/packages/database/src/lib/fileToDb.js.map +1 -1
  826. package/packages/database/src/lib/kysely/db.js +11 -1
  827. package/packages/database/src/lib/kysely/db.js.map +1 -1
  828. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  829. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  830. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  831. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  832. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  833. package/packages/database/src/lib/loadAnalyses.js +45 -2
  834. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  835. package/packages/database/src/lib/loadAnalysis.js +8 -0
  836. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  837. package/packages/database/src/lib/loadBranch.js +11 -1
  838. package/packages/database/src/lib/loadBranch.js.map +1 -1
  839. package/packages/database/src/lib/loadCommit.js +7 -0
  840. package/packages/database/src/lib/loadCommit.js.map +1 -1
  841. package/packages/database/src/lib/loadCommits.js +22 -1
  842. package/packages/database/src/lib/loadCommits.js.map +1 -1
  843. package/packages/database/src/lib/loadEntities.js +23 -4
  844. package/packages/database/src/lib/loadEntities.js.map +1 -1
  845. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  846. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  847. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  848. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  849. package/packages/database/src/lib/projectToDb.js +1 -1
  850. package/packages/database/src/lib/projectToDb.js.map +1 -1
  851. package/packages/database/src/lib/saveFiles.js +1 -1
  852. package/packages/database/src/lib/saveFiles.js.map +1 -1
  853. package/packages/database/src/lib/scenarioToDb.js +1 -1
  854. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  855. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  856. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  857. package/packages/generate/index.js +3 -0
  858. package/packages/generate/index.js.map +1 -1
  859. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  860. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  861. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  862. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  863. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  864. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  865. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  866. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  867. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  868. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  869. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  870. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  871. package/packages/process/index.js +3 -0
  872. package/packages/process/index.js.map +1 -0
  873. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  874. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  875. package/packages/process/src/ProcessManager.js.map +1 -0
  876. package/packages/process/src/index.js.map +1 -0
  877. package/packages/process/src/managedExecAsync.js.map +1 -0
  878. package/packages/types/index.js +0 -1
  879. package/packages/types/index.js.map +1 -1
  880. package/packages/types/src/types/Scenario.js +1 -21
  881. package/packages/types/src/types/Scenario.js.map +1 -1
  882. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  883. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  884. package/packages/utils/src/lib/safeFileName.js +29 -3
  885. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  886. package/scripts/finalize-analyzer.cjs +8 -76
  887. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  888. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
  889. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
  890. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  891. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  892. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  893. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  894. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  895. package/analyzer-template/process/README.md +0 -507
  896. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  897. package/background/src/lib/process/ProcessManager.js.map +0 -1
  898. package/background/src/lib/process/index.js.map +0 -1
  899. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  900. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  901. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  902. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js +0 -7
  903. package/codeyam-cli/scripts/fixtures/formbricks/universal-mocks/apps/web/lib/instance/service.js.map +0 -1
  904. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
  905. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
  906. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
  907. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
  908. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  909. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  910. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-2mG6mjVb.js +0 -32
  911. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  912. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  913. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
  914. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-zUEpfPsu.js +0 -23
  915. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  916. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
  917. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
  918. package/codeyam-cli/src/webserver/build/client/assets/globals-C6vQASxy.css +0 -1
  919. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  920. package/codeyam-cli/src/webserver/build/client/assets/manifest-09d684be.js +0 -1
  921. package/codeyam-cli/src/webserver/build/client/assets/root-BxJUvKau.js +0 -56
  922. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
  923. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  924. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
  925. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
  926. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
  927. package/codeyam-cli/src/webserver/build/server/assets/index-CV6i1S1A.js +0 -1
  928. package/codeyam-cli/src/webserver/build/server/assets/server-build-BDlyhfrv.js +0 -175
  929. package/codeyam-cli/templates/debug-codeyam.md +0 -620
  930. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  931. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  932. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -298
  933. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  934. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
  935. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  936. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  937. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  938. package/packages/ai/src/lib/isFrontend.js +0 -5
  939. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  940. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  941. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  942. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  943. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  944. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  945. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  946. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  947. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  948. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  949. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
  950. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.labs-unlock-l0sNRNKZ.js} +0 -0
  951. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  952. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  953. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -117,9 +117,10 @@ export class ScopeTreeManager {
117
117
  */
118
118
  findNode(name: string): ScopeTreeNode | undefined {
119
119
  const queue: ScopeTreeNode[] = [this.tree];
120
+ let index = 0;
120
121
 
121
- while (queue.length > 0) {
122
- const node = queue.shift()!;
122
+ while (index < queue.length) {
123
+ const node = queue[index++]!;
123
124
  if (node.name === name) {
124
125
  return node;
125
126
  }
@@ -135,9 +136,10 @@ export class ScopeTreeManager {
135
136
  getAllNames(): string[] {
136
137
  const names: string[] = [];
137
138
  const queue: ScopeTreeNode[] = [this.tree];
139
+ let index = 0;
138
140
 
139
- while (queue.length > 0) {
140
- const node = queue.shift()!;
141
+ while (index < queue.length) {
142
+ const node = queue[index++]!;
141
143
  names.push(node.name);
142
144
  queue.push(...node.children);
143
145
  }
@@ -35,6 +35,47 @@ const getParts = (path: string): string[] => {
35
35
  return parts;
36
36
  };
37
37
 
38
+ function buildPrefixParts(parts: string[]): string[] {
39
+ if (parts.length === 0) return [];
40
+ const prefixes = new Array(parts.length);
41
+ let current = '';
42
+ for (let i = 0; i < parts.length; i++) {
43
+ const part = parts[i];
44
+ if (i === 0) {
45
+ current = part;
46
+ } else if (part.startsWith('[') || part.startsWith('(')) {
47
+ current += part;
48
+ } else {
49
+ current += `.${part}`;
50
+ }
51
+ prefixes[i] = current;
52
+ }
53
+ return prefixes;
54
+ }
55
+
56
+ /**
57
+ * Clear the module-level cache.
58
+ * Call this between entity analyses to prevent unbounded memory growth.
59
+ */
60
+ export function clearCleanKnownObjectFunctionsCache(): {
61
+ count: number;
62
+ estimatedBytes: number;
63
+ } {
64
+ let totalBytes = 0;
65
+ for (const [key, value] of partsCache) {
66
+ // Key is a string, value is string[] - estimate UTF-16 encoding (2 bytes per char)
67
+ totalBytes += key.length * 2;
68
+ for (const part of value) {
69
+ totalBytes += part.length * 2;
70
+ }
71
+ // Add overhead for array and Map entry (~50 bytes per entry)
72
+ totalBytes += 50;
73
+ }
74
+ const count = partsCache.size;
75
+ partsCache.clear();
76
+ return { count, estimatedBytes: totalBytes };
77
+ }
78
+
38
79
  /** pre-compute the prototype-method sets once per module load */
39
80
  const protoMethodSets: Record<PrimitiveKind, Set<string>> = {
40
81
  array: new Set(
@@ -110,6 +151,7 @@ function scrub(
110
151
 
111
152
  for (const keyPath of sortedKeys) {
112
153
  const keyParts = getParts(keyPath);
154
+ const prefixParts = buildPrefixParts(keyParts);
113
155
 
114
156
  if (
115
157
  IGNORE_CLASSES_AND_OBJECTS.find(
@@ -122,7 +164,7 @@ function scrub(
122
164
 
123
165
  // walk back through the prefixes: foo.bar.baz.qux → foo.bar.baz → foo.bar …
124
166
  for (let cut = keyParts.length - 1; cut > 0; --cut) {
125
- const prefix = joinParenthesesAndArrays(keyParts.slice(0, cut));
167
+ const prefix = prefixParts[cut - 1];
126
168
  const rootKind = rootTable.get(prefix);
127
169
  if (!rootKind) continue;
128
170
 
@@ -130,9 +172,18 @@ function scrub(
130
172
  const rawMethod = rawToken.split('(')[0];
131
173
 
132
174
  // Check if it's a prototype method (e.g., map, filter, toString)
175
+ // Only match when the token is actually a method reference/call:
176
+ // - Has parentheses (explicit call like map(), filter(x => x))
177
+ // - OR is typed as "function" (method reference like .split)
178
+ // Bare property names that happen to match method names
179
+ // (like .entries = "array", .values = "object") are preserved.
133
180
  if (protoMethodSets[rootKind].has(rawMethod)) {
134
- onRemove(keyPath);
135
- break;
181
+ const isMethodCall = rawToken.includes('(');
182
+ const isMethodReference = mapping[keyPath] === 'function';
183
+ if (isMethodCall || isMethodReference) {
184
+ onRemove(keyPath);
185
+ break;
186
+ }
136
187
  }
137
188
 
138
189
  // Check if it's a built-in property (e.g., length on arrays/strings)
@@ -119,6 +119,17 @@ const stringMethodsSet = new Set([
119
119
  ]);
120
120
  export const allMethodsSet = new Set([...arrayMethodsSet, ...stringMethodsSet]);
121
121
 
122
+ // Methods that exist in both stringMethodsSet and arrayMethodsSet.
123
+ // When ONLY these methods are called on an object, we can't determine if it's a string or array.
124
+ // Don't infer 'string' type from these alone - leave as 'unknown' for other type resolution.
125
+ const stringArrayAmbiguousMethodsSet = new Set([
126
+ 'includes', // exists in both String.includes() and Array.includes()
127
+ 'indexOf', // exists in both String.indexOf() and Array.indexOf()
128
+ 'lastIndexOf', // exists in both String.lastIndexOf() and Array.lastIndexOf()
129
+ 'concat', // exists in both String.concat() and Array.concat()
130
+ 'slice', // exists in both String.slice() and Array.slice()
131
+ ]);
132
+
122
133
  const signatureKeyWord = 'signature';
123
134
  const returnValueKeyWord = 'functionCallReturnValue';
124
135
 
@@ -128,31 +139,75 @@ const signatureRegExp = new RegExp(`^${signatureKeyWord}\\[\\d+\\]$`);
128
139
 
129
140
  // --- Caching splitOutsideParentheses ---
130
141
  // Instead of splitting the same string repeatedly, we cache the result.
142
+ // IMPORTANT: Do NOT strip ::cyDuplicateKey:: markers - they are critical for
143
+ // distinguishing variable reassignments (e.g., fetcher vs fetcher::cyDuplicateKey1::).
144
+ // Stripping them causes schema contamination where fields from one type-parameterized
145
+ // call get incorrectly attributed to another.
131
146
  const splitCache = new Map<string, string[]>();
132
147
  function cachedSplit(str: string): string[] {
133
148
  if (splitCache.has(str)) return splitCache.get(str)!;
134
- const parts = splitOutsideParentheses(str).map((p) =>
135
- p.replace(/::cyDuplicateKey\d+::/g, ''),
136
- );
149
+ const parts = splitOutsideParentheses(str);
137
150
  splitCache.set(str, parts);
138
151
  return parts;
139
152
  }
140
153
 
154
+ /**
155
+ * Clear the module-level cache.
156
+ * Call this between entity analyses to prevent unbounded memory growth.
157
+ */
158
+ export function clearCleanNonObjectFunctionsCache(): {
159
+ count: number;
160
+ estimatedBytes: number;
161
+ } {
162
+ let totalBytes = 0;
163
+ for (const [key, value] of splitCache) {
164
+ // Key is a string, value is string[] - estimate UTF-16 encoding (2 bytes per char)
165
+ totalBytes += key.length * 2;
166
+ for (const part of value) {
167
+ totalBytes += part.length * 2;
168
+ }
169
+ // Add overhead for array and Map entry (~50 bytes per entry)
170
+ totalBytes += 50;
171
+ }
172
+ const count = splitCache.size;
173
+ splitCache.clear();
174
+ return { count, estimatedBytes: totalBytes };
175
+ }
176
+
141
177
  // --- Prefix Index for O(1) lookup in subPathIsFromKnownObject ---
142
178
  // Maps parent prefix -> array of last parts (method names without parens)
143
179
  type PrefixIndex = Map<string, string[]>;
144
180
 
181
+ function buildPrefixPartsWithRoot(parts: string[]): string[] {
182
+ const prefixes = new Array(parts.length + 1);
183
+ prefixes[0] = '';
184
+ let current = '';
185
+ for (let i = 0; i < parts.length; i++) {
186
+ const part = parts[i];
187
+ if (i === 0) {
188
+ current = part;
189
+ } else if (part.startsWith('[') || part.startsWith('(')) {
190
+ current += part;
191
+ } else {
192
+ current += `.${part}`;
193
+ }
194
+ prefixes[i + 1] = current;
195
+ }
196
+ return prefixes;
197
+ }
198
+
145
199
  function buildPrefixIndex(allPaths: string[]): PrefixIndex {
146
200
  const index: PrefixIndex = new Map();
147
201
 
148
202
  for (const path of allPaths) {
149
203
  const parts = cachedSplit(path);
150
204
  if (parts.length < 1) continue;
205
+ const prefixes = buildPrefixPartsWithRoot(parts);
151
206
 
152
207
  // For each possible prefix length, add the last part to that prefix's entry
153
208
  // This allows lookup at any depth
154
209
  for (let prefixLen = 0; prefixLen < parts.length; prefixLen++) {
155
- const prefix = joinParenthesesAndArrays(parts.slice(0, prefixLen));
210
+ const prefix = prefixes[prefixLen];
156
211
  const lastPart = parts[prefixLen]?.split('(')?.[0];
157
212
  if (lastPart) {
158
213
  let existing = index.get(prefix);
@@ -455,7 +510,7 @@ function removeNonTransformingArrayMethods(variablePath: string): string {
455
510
  const part = keyParts[i];
456
511
 
457
512
  const arrayMethod = getMethodName(part);
458
- if (isValidArrayMethod(arrayMethod)) {
513
+ if (isValidFunctionCall(part) && isValidArrayMethod(arrayMethod)) {
459
514
  const nextPart = keyParts[i + 1];
460
515
  if (
461
516
  !nonTransformingArrayMethodsSet.has(arrayMethod) ||
@@ -495,7 +550,7 @@ function removeIsolatingArrayMethods(
495
550
  const part = keyParts[i];
496
551
 
497
552
  const arrayMethod = getMethodName(part);
498
- if (isValidArrayMethod(arrayMethod)) {
553
+ if (isValidFunctionCall(part) && isValidArrayMethod(arrayMethod)) {
499
554
  const nextPart = keyParts[i + 1];
500
555
  const prevPart = i > 1 ? keyParts[i - 1] : undefined;
501
556
  if (
@@ -695,7 +750,14 @@ function handleFunctionMapping(
695
750
  allProperties.every((prop) => stringMethodsSet.has(getMethodName(prop)))
696
751
  ) {
697
752
  if (allProperties.every((prop) => isValidStringMethod(prop))) {
698
- keyMapping[previousPath] = 'string';
753
+ // Don't infer string if ALL methods are ambiguous between string and array
754
+ // (like includes, indexOf, concat, slice - these exist on both types)
755
+ const hasOnlyStringArrayAmbiguousMethods = allProperties.every(
756
+ (prop) => stringArrayAmbiguousMethodsSet.has(getMethodName(prop)),
757
+ );
758
+ if (!hasOnlyStringArrayAmbiguousMethods) {
759
+ keyMapping[previousPath] = 'string';
760
+ }
699
761
  } else {
700
762
  return false;
701
763
  }
@@ -716,19 +778,36 @@ function handleFunctionMapping(
716
778
 
717
779
  // Don't add [] element for ambiguous methods without other array evidence
718
780
  // Also don't add [] if the path was already identified as a string type
781
+ // Also don't add [] if the method is ambiguous between string and array (like includes)
719
782
  const methodName = getMethodName(lastPart);
720
783
  const isAmbiguousMethod = ambiguousArrayMethodsSet.has(methodName);
784
+ const isStringArrayAmbiguous =
785
+ stringArrayAmbiguousMethodsSet.has(methodName);
721
786
  const isStringType = keyMapping[previousPath] === 'string';
722
787
  if (
723
788
  !isValidFunctionCall(previousPart) &&
724
789
  arrayMethodsSet.has(methodName) &&
725
790
  !keyMapping[previousPath + '[]'] &&
726
791
  !isAmbiguousMethod &&
792
+ !isStringArrayAmbiguous &&
727
793
  !isStringType
728
794
  ) {
729
795
  keyMapping[previousPath + '[]'] = 'unknown';
730
796
  }
731
797
 
798
+ // For primitive-returning methods (like includes, indexOf, some, every),
799
+ // also delete the .functionCallReturnValue children since the return value
800
+ // is just a primitive (boolean/number) and not useful data.
801
+ // For other methods (like filter, map), keep children for transformation.
802
+ const isPrimitiveReturning = primitiveReturningMethodsSet.has(methodName);
803
+ if (isPrimitiveReturning) {
804
+ for (const otherPath of Object.keys(keyMapping)) {
805
+ if (otherPath.startsWith(path + '.')) {
806
+ delete keyMapping[otherPath];
807
+ }
808
+ }
809
+ }
810
+
732
811
  delete keyMapping[path];
733
812
  return true;
734
813
  }
@@ -954,14 +1033,34 @@ function clearAttributes(
954
1033
  }
955
1034
  }
956
1035
 
1036
+ // Track paths that have primitive-returning method calls (like includes, some, every)
1037
+ // These need cleanup even if we can't determine the base type
1038
+ const pathsWithPrimitiveReturningMethods = new Set<string>();
1039
+
957
1040
  for (const key in functionCallsOnObjects) {
958
1041
  const functionCalls = functionCallsOnObjects[key];
1042
+
1043
+ // Check if any method calls are primitive-returning
1044
+ const hasPrimitiveReturningMethods = functionCalls.some((f) =>
1045
+ primitiveReturningMethodsSet.has(getMethodName(f)),
1046
+ );
1047
+ if (hasPrimitiveReturningMethods) {
1048
+ pathsWithPrimitiveReturningMethods.add(key);
1049
+ }
1050
+
959
1051
  if (
960
1052
  functionCalls.every(
961
1053
  (f) => stringMethodsSet.has(getMethodName(f)) && isValidStringMethod(f),
962
1054
  )
963
1055
  ) {
964
- mapping[key] = 'string';
1056
+ // Don't infer string if ALL methods are ambiguous between string and array
1057
+ // (like includes, indexOf, concat, slice - these exist on both types)
1058
+ const hasOnlyStringArrayAmbiguousMethods = functionCalls.every((f) =>
1059
+ stringArrayAmbiguousMethodsSet.has(getMethodName(f)),
1060
+ );
1061
+ if (!hasOnlyStringArrayAmbiguousMethods) {
1062
+ mapping[key] = 'string';
1063
+ }
965
1064
  } else if (
966
1065
  functionCalls.every(
967
1066
  (f) => arrayMethodsSet.has(getMethodName(f)) && isValidArrayMethod(f),
@@ -983,33 +1082,54 @@ function clearAttributes(
983
1082
  for (const key in mapping) {
984
1083
  const value = mapping[key];
985
1084
  if (knownTypes.has(value)) {
1085
+ // Don't add string-typed array element paths (ending with []) to knownBasePaths.
1086
+ // When an array element is typed as 'string' but has child paths (like data[].id),
1087
+ // it's actually an object - the 'string' type is incorrect. The child paths
1088
+ // describe the array element structure and should not be deleted.
1089
+ //
1090
+ // However, array-typed [] paths (like matrix[] where matrix is array of arrays)
1091
+ // should still be in knownBasePaths so their method calls (filter, map, etc.)
1092
+ // get cleaned up properly.
1093
+ if (key.endsWith('[]') && value === 'string') {
1094
+ continue;
1095
+ }
986
1096
  knownBasePaths.add(key);
987
1097
  }
988
1098
  }
989
1099
 
1100
+ // Also add paths with primitive-returning method calls (like includes, some, every)
1101
+ // to knownBasePaths so their method call paths get cleaned up, even if we couldn't
1102
+ // determine the base type (e.g., when only ambiguous methods like includes are used)
1103
+ for (const path of pathsWithPrimitiveReturningMethods) {
1104
+ knownBasePaths.add(path);
1105
+ }
1106
+
1107
+ // OPTIMIZATION: Instead of O(keys × basePaths), use O(keys × keyDepth) where keyDepth is small
1108
+ // For each key, find all its prefixes and check if any is a known basePath (O(1) Set lookup)
990
1109
  for (const key in mapping) {
991
1110
  const keyParts = cachedSplit(key);
992
- for (const basePath of knownBasePaths) {
993
- const basePathParts = cachedSplit(basePath);
994
- if (keyParts.length <= basePathParts.length) continue;
995
- if (
996
- joinParenthesesAndArrays(keyParts.slice(0, basePathParts.length)) !==
997
- basePath
998
- )
999
- continue;
1111
+ if (keyParts.length <= 1) continue; // No possible parent basePath
1112
+
1113
+ // Check each prefix of the key to see if it's a known basePath
1114
+ // Start from shortest prefix (most likely to match) for early exit
1115
+ for (let prefixLen = 1; prefixLen < keyParts.length; prefixLen++) {
1116
+ const prefix = joinParenthesesAndArrays(keyParts.slice(0, prefixLen));
1117
+ if (!knownBasePaths.has(prefix)) continue;
1118
+
1119
+ // Found a matching basePath - now check the conditions
1120
+ const basePath = prefix;
1121
+
1000
1122
  // Preserve functionCallReturnValue for non-string types, UNLESS
1001
1123
  // the method is a primitive-returning method (like some, every, includes, indexOf)
1002
1124
  // whose return values are not mockable
1003
- const methodPart = keyParts[basePathParts.length];
1125
+ const methodPart = keyParts[prefixLen];
1004
1126
  const methodName = methodPart?.split('(')[0];
1005
1127
  const isPrimitiveReturning = primitiveReturningMethodsSet.has(
1006
1128
  methodName ?? '',
1007
1129
  );
1008
1130
  if (
1009
1131
  mapping[basePath] !== 'string' &&
1010
- keyParts[basePathParts.length + 1]?.startsWith(
1011
- 'functionCallReturnValue',
1012
- ) &&
1132
+ keyParts[prefixLen + 1]?.startsWith('functionCallReturnValue') &&
1013
1133
  !isPrimitiveReturning
1014
1134
  )
1015
1135
  continue;
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Coerces object/array values to primitive types when the schema expects a primitive.
3
+ *
4
+ * The LLM sometimes generates an object or array where the schema expects a primitive
5
+ * type like "string", "number", or "boolean". For example:
6
+ * Schema: { body: "string" }
7
+ * LLM output: { body: { "env": "production" } }
8
+ *
9
+ * This causes runtime errors like `TypeError: body.match is not a function` because
10
+ * the code expects a string but gets an object.
11
+ *
12
+ * Coercion rules:
13
+ * - object/array → string: JSON.stringify
14
+ * - object/array → number: 0
15
+ * - object/array → boolean: false
16
+ *
17
+ * @param data The mock data object to coerce (mutated in place)
18
+ * @param schema The schema describing expected types
19
+ */
20
+ export default function coerceObjectsToPrimitivesBySchema<T>(
21
+ data: T,
22
+ schema: unknown,
23
+ ): T {
24
+ if (data === null || data === undefined) {
25
+ return data;
26
+ }
27
+
28
+ if (typeof data !== 'object') {
29
+ return data;
30
+ }
31
+
32
+ if (Array.isArray(data)) {
33
+ const itemSchema = Array.isArray(schema) ? schema[0] : undefined;
34
+ for (let i = 0; i < data.length; i++) {
35
+ data[i] = coerceObjectsToPrimitivesBySchema(data[i], itemSchema);
36
+ }
37
+ return data;
38
+ }
39
+
40
+ const dataObj = data as Record<string, unknown>;
41
+ const schemaObj = schema as Record<string, unknown> | undefined;
42
+
43
+ for (const key of Object.keys(dataObj)) {
44
+ const value = dataObj[key];
45
+ const fieldSchema = schemaObj?.[key];
46
+
47
+ if (value === null || value === undefined) {
48
+ continue;
49
+ }
50
+
51
+ if (typeof value === 'object' && typeof fieldSchema === 'string') {
52
+ // Schema expects a primitive but the value is an object/array.
53
+ // Coerce to the expected type.
54
+ const schemaType = fieldSchema.toLowerCase();
55
+
56
+ if (schemaType.includes('string')) {
57
+ dataObj[key] = JSON.stringify(value);
58
+ } else if (schemaType.includes('number')) {
59
+ dataObj[key] = 0;
60
+ } else if (schemaType.includes('boolean')) {
61
+ dataObj[key] = false;
62
+ }
63
+ } else if (typeof value === 'object' && value !== null) {
64
+ // Both value and schema are objects — recurse
65
+ coerceObjectsToPrimitivesBySchema(value, fieldSchema);
66
+ }
67
+ }
68
+
69
+ return data;
70
+ }
@@ -14,23 +14,112 @@ const isStandaloneIndex = (s?: string) => !!s && STANDALONE_INDEX_RE.test(s);
14
14
  // The regex matches any path ending with .length that has [] somewhere before it
15
15
  const DYNAMIC_LENGTH_RE = /\[\].*\.length$/;
16
16
 
17
+ // Cache for type string analysis to avoid repeated split/filter operations.
18
+ // These functions are called multiple times per path segment across thousands of paths.
19
+ const typeAnalysisCache = new Map<
20
+ string,
21
+ { isSkippable: boolean; baseType: string; isNullable: boolean }
22
+ >();
23
+
24
+ function getTypeAnalysis(t: string) {
25
+ const cached = typeAnalysisCache.get(t);
26
+ if (cached) return cached;
27
+ const parts = t.split('|').map((s) => s.trim());
28
+ const base = parts.filter((s) => s !== 'undefined' && s !== 'null');
29
+ const result = {
30
+ isSkippable:
31
+ base.length === 1 &&
32
+ (base[0] === 'object' ||
33
+ base[0] === 'array' ||
34
+ base[0] === 'function' ||
35
+ base[0] === 'unknown'),
36
+ baseType: base[0],
37
+ isNullable: parts.includes('undefined') || parts.includes('null'),
38
+ };
39
+ typeAnalysisCache.set(t, result);
40
+ return result;
41
+ }
42
+
17
43
  // Treat these as structural placeholders (don't commit them as concrete leaves)
18
44
  function isSkippableLeafType(t: string) {
19
- // 'unknown' by itself is a placeholder (but 'boolean | unknown' is not)
20
- return (
21
- t === 'object' ||
22
- t === 'array' ||
23
- t === 'function' ||
24
- t.trim() === 'unknown'
25
- );
45
+ return getTypeAnalysis(t).isSkippable;
46
+ }
47
+
48
+ // Extract the base structural type from a potentially nullable type string.
49
+ // e.g., 'object | undefined' → 'object', 'array | null' → 'array'
50
+ function getBaseSkippableType(t: string): string {
51
+ return getTypeAnalysis(t).baseType;
52
+ }
53
+
54
+ // Check if a type string has nullable annotations (| undefined or | null)
55
+ function isNullableType(t: string): boolean {
56
+ return getTypeAnalysis(t).isNullable;
57
+ }
58
+
59
+ // Matches paths containing [][] — e.g., "items[][]" or "items[][].text"
60
+ const DOUBLE_ARRAY_RE = /\[\]\[\]/;
61
+
62
+ // Matches a [].property segment — e.g., "items[].name" (but not "items[][]")
63
+ const ARRAY_OBJECT_PROPERTY_RE = /\[\]\.[^[\]]/;
64
+
65
+ /**
66
+ * When scope analysis produces both `prefix[].property` (array of objects) and
67
+ * `prefix[][]` (array of arrays) for the same prefix, there's a conflict about
68
+ * what the array elements are. Object-property paths are more specific and come
69
+ * from actual property access; double-array paths come from mixed iteration
70
+ * patterns in the scope analysis. Drop the double-array paths when both exist.
71
+ */
72
+ function resolveDoubleArrayConflicts(
73
+ schema: Record<string, string>,
74
+ ): Record<string, string> {
75
+ // Collect prefixes that end in [] and have object property children
76
+ const objectArrayPrefixes = new Set<string>();
77
+ for (const path of Object.keys(schema)) {
78
+ if (!ARRAY_OBJECT_PROPERTY_RE.test(path)) continue;
79
+ // Extract every "...[]" prefix that is followed by ".prop"
80
+ let idx = 0;
81
+ while ((idx = path.indexOf('[].', idx)) !== -1) {
82
+ objectArrayPrefixes.add(path.slice(0, idx + 2)); // includes the "[]"
83
+ idx += 3;
84
+ }
85
+ }
86
+
87
+ if (objectArrayPrefixes.size === 0) return schema;
88
+
89
+ // Check if any double-array paths actually conflict
90
+ let hasConflict = false;
91
+ for (const path of Object.keys(schema)) {
92
+ if (!DOUBLE_ARRAY_RE.test(path)) continue;
93
+ const idx = path.indexOf('[][]');
94
+ if (idx !== -1 && objectArrayPrefixes.has(path.slice(0, idx + 2))) {
95
+ hasConflict = true;
96
+ break;
97
+ }
98
+ }
99
+
100
+ if (!hasConflict) return schema;
101
+
102
+ // Filter out conflicting double-array paths
103
+ const resolved: Record<string, string> = {};
104
+ for (const [path, value] of Object.entries(schema)) {
105
+ if (DOUBLE_ARRAY_RE.test(path)) {
106
+ const idx = path.indexOf('[][]');
107
+ if (idx !== -1 && objectArrayPrefixes.has(path.slice(0, idx + 2))) {
108
+ continue; // drop this conflicting path
109
+ }
110
+ }
111
+ resolved[path] = value;
112
+ }
113
+ return resolved;
26
114
  }
27
115
 
28
116
  export default function convertDotNotation(
29
117
  schema: Record<string, string>,
30
118
  ): JsonTypeDefinition {
119
+ const resolved = resolveDoubleArrayConflicts(schema);
31
120
  const result: JsonTypeDefinition = {};
32
121
 
33
- for (const [rawPath, typ] of Object.entries(schema)) {
122
+ for (const [rawPath, typ] of Object.entries(resolved)) {
34
123
  // Skip paths with .length after array notation from dynamic iteration
35
124
  // e.g., metadata[].length, metadata[][].length
36
125
  if (DYNAMIC_LENGTH_RE.test(rawPath)) continue;
@@ -218,6 +307,17 @@ export default function convertDotNotation(
218
307
  // If the next segment after '[]' is another '[]' or a standalone index,
219
308
  // we need an array at cursor[key][0], not an object (for patterns like "key[][]" or "key[][0]")
220
309
  if (afterArray === '[]' || isStandaloneIndex(afterArray)) {
310
+ // But don't overwrite an existing populated object — object properties
311
+ // (from paths like key[].property) take precedence over double-array hints
312
+ // (from paths like key[][]) which come from mixed access patterns in scope analysis
313
+ if (
314
+ cursor[key][0] &&
315
+ typeof cursor[key][0] === 'object' &&
316
+ !Array.isArray(cursor[key][0]) &&
317
+ Object.keys(cursor[key][0]).length > 0
318
+ ) {
319
+ break;
320
+ }
221
321
  if (!Array.isArray(cursor[key][0])) cursor[key][0] = [];
222
322
  } else {
223
323
  // Default case: create an object
@@ -242,15 +342,41 @@ export default function convertDotNotation(
242
342
  cursor[key] = typ;
243
343
  } else {
244
344
  // Structural/placeholder terminal
245
- if (typ === 'array') {
345
+ const nullable = isNullableType(typ);
346
+ const baseType = getBaseSkippableType(typ);
347
+
348
+ if (baseType === 'array') {
246
349
  if (!Array.isArray(cursor[key])) cursor[key] = [];
350
+ if (nullable) {
351
+ (cursor[key] as any)._nullable = true;
352
+ }
247
353
  } else if (
248
- typ === 'object' ||
249
- typ === 'function' ||
250
- typ.trim() === 'unknown'
354
+ baseType === 'object' ||
355
+ baseType === 'function' ||
356
+ baseType === 'unknown'
251
357
  ) {
252
- if (cursor[key] === undefined) {
253
- cursor[key] = typ;
358
+ if (nullable) {
359
+ // Nullable object: ensure it's an actual object (not a string
360
+ // placeholder) so _nullable can be set and child paths can
361
+ // populate properties on it.
362
+ if (
363
+ cursor[key] === undefined ||
364
+ typeof cursor[key] === 'string'
365
+ ) {
366
+ cursor[key] = {};
367
+ }
368
+ if (
369
+ typeof cursor[key] === 'object' &&
370
+ cursor[key] !== null &&
371
+ !Array.isArray(cursor[key])
372
+ ) {
373
+ (cursor[key] as any)._nullable = true;
374
+ }
375
+ } else {
376
+ // Non-nullable: preserve existing behavior (string placeholder)
377
+ if (cursor[key] === undefined) {
378
+ cursor[key] = typ;
379
+ }
254
380
  }
255
381
  }
256
382
  }