@codeyam/codeyam-cli 0.1.0-staging.323686 → 0.1.0-staging.4684848

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 (451) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +6 -6
  4. package/analyzer-template/packages/ai/index.ts +7 -1
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +62 -18
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +67 -9
  8. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  9. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +409 -50
  10. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +21 -6
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +992 -249
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +31 -3
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +37 -15
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +367 -96
  23. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +33 -15
  24. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  25. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +315 -6
  26. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +9 -5
  27. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +49 -5
  28. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
  29. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +649 -142
  30. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +1 -1
  31. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  32. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  33. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
  34. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  35. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  36. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  37. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +25 -13
  38. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +4 -3
  39. package/analyzer-template/packages/analyze/index.ts +2 -0
  40. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  41. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  42. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  43. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  44. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  45. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  46. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  47. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  48. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +89 -9
  49. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +19 -4
  50. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  51. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +0 -3
  52. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  53. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  54. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  55. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +61 -13
  56. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +87 -25
  57. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +229 -19
  58. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +117 -9
  59. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +571 -74
  60. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  61. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  62. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  63. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  64. package/analyzer-template/packages/aws/package.json +1 -1
  65. package/analyzer-template/packages/database/package.json +1 -1
  66. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  67. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  68. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  69. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  70. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  71. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  72. package/analyzer-template/packages/database/src/lib/kysely/db.ts +6 -0
  73. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  74. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  75. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  76. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  77. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  78. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  79. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  80. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  82. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  83. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  84. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  86. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  87. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  92. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +3 -0
  94. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  95. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  96. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  97. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  98. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  99. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  100. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  102. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  103. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  105. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  107. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  108. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  109. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  110. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  111. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  112. package/analyzer-template/packages/github/package.json +1 -1
  113. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  114. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +6 -5
  115. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  116. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  117. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  118. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  119. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  120. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  121. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  122. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  123. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  124. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  125. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  126. package/analyzer-template/project/constructMockCode.ts +90 -10
  127. package/analyzer-template/project/writeMockDataTsx.ts +181 -8
  128. package/analyzer-template/project/writeScenarioComponents.ts +60 -12
  129. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  130. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  131. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  132. package/background/src/lib/virtualized/project/constructMockCode.js +75 -4
  133. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  134. package/background/src/lib/virtualized/project/writeMockDataTsx.js +162 -4
  135. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  136. package/background/src/lib/virtualized/project/writeScenarioComponents.js +60 -15
  137. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  138. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  139. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  140. package/codeyam-cli/scripts/apply-setup.js +180 -0
  141. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  142. package/codeyam-cli/src/cli.js +2 -0
  143. package/codeyam-cli/src/cli.js.map +1 -1
  144. package/codeyam-cli/src/codeyam-cli.js +18 -2
  145. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  146. package/codeyam-cli/src/commands/analyze.js +4 -2
  147. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  148. package/codeyam-cli/src/commands/baseline.js +2 -0
  149. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  150. package/codeyam-cli/src/commands/debug.js +9 -5
  151. package/codeyam-cli/src/commands/debug.js.map +1 -1
  152. package/codeyam-cli/src/commands/default.js +31 -20
  153. package/codeyam-cli/src/commands/default.js.map +1 -1
  154. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  155. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  156. package/codeyam-cli/src/commands/init.js +49 -257
  157. package/codeyam-cli/src/commands/init.js.map +1 -1
  158. package/codeyam-cli/src/commands/memory.js +17 -26
  159. package/codeyam-cli/src/commands/memory.js.map +1 -1
  160. package/codeyam-cli/src/commands/recapture.js +2 -0
  161. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  162. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  163. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  164. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  165. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  166. package/codeyam-cli/src/commands/test-startup.js +2 -0
  167. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  168. package/codeyam-cli/src/commands/verify.js +14 -2
  169. package/codeyam-cli/src/commands/verify.js.map +1 -1
  170. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -86
  171. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  172. package/codeyam-cli/src/utils/analyzer.js +7 -0
  173. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  174. package/codeyam-cli/src/utils/backgroundServer.js +9 -0
  175. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  176. package/codeyam-cli/src/utils/generateReport.js +2 -2
  177. package/codeyam-cli/src/utils/install-skills.js +70 -45
  178. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  179. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  180. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  181. package/codeyam-cli/src/utils/progress.js +7 -0
  182. package/codeyam-cli/src/utils/progress.js.map +1 -1
  183. package/codeyam-cli/src/utils/queue/job.js +4 -0
  184. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  185. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  186. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  187. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  188. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  189. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  190. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  191. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  192. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  193. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  194. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  195. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  196. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  197. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  198. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  199. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
  200. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  201. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +378 -0
  202. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  203. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +115 -0
  204. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  205. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  206. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  207. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  208. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  209. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  210. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  211. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  212. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  213. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  214. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  215. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  216. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  217. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  218. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  219. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  220. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  221. package/codeyam-cli/src/utils/rules/index.js +1 -0
  222. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  223. package/codeyam-cli/src/utils/rules/parser.js +2 -25
  224. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  225. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  226. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  227. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  228. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  229. package/codeyam-cli/src/utils/serverState.js +37 -10
  230. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  231. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -44
  232. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  233. package/codeyam-cli/src/webserver/app/lib/database.js +15 -3
  234. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  235. package/codeyam-cli/src/webserver/backgroundServer.js +24 -0
  236. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  237. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CQ-wF3Tv.js +1 -0
  238. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-HdckCi0m.js} +1 -1
  239. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-Dh5RJMOE.js} +1 -1
  240. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-BnjjBHJu.js} +1 -1
  241. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-C8lyxW9k.js → InlineSpinner-CUSfu6W5.js} +1 -1
  242. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-aht4aafF.js → InteractivePreview-Coll1aD6.js} +2 -2
  243. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-lYMY8h-y.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-ay8XeA59.js} +1 -1
  245. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-Dpul1_ik.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-CRBCfV2W.js} +3 -8
  247. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-DRTFDNFt.js} +1 -1
  248. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-d6PSFxhS.js} +2 -2
  249. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-DDEOQ6Iw.js} +1 -1
  250. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-CkziGg5F.js} +1 -1
  251. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-B2v1pm9w.js} +6 -11
  252. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-BXIaK8Md.js +11 -0
  253. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  254. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  255. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  256. package/codeyam-cli/src/webserver/build/client/assets/book-open-qbapxy6o.js +6 -0
  257. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-C-mKrwr1.js} +1 -1
  258. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-BAvUl1nT.js} +12 -12
  259. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-DlrT-SzI.js} +1 -1
  260. package/codeyam-cli/src/webserver/build/client/assets/copy-clIxnCqQ.js +11 -0
  261. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-B931Etud.js} +1 -1
  262. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-BBnGWYga.js → dev.empty-BoPM6KnE.js} +1 -1
  263. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-oVRMh9Hl.js +16 -0
  264. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js → entity._sha.scenarios._scenarioId.fullscreen-BjyzwQ7H.js} +1 -1
  265. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-D1T4TGjf.js → entity._sha_.create-scenario-DxuyDmZA.js} +1 -1
  266. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-DESSZGQp.js} +1 -1
  267. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-D5Yb90Ad.js} +1 -1
  268. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-DuObVYgh.js} +1 -1
  269. package/codeyam-cli/src/webserver/build/client/assets/{files-CJ6lTdTA.js → files-CDfz4Y-i.js} +1 -1
  270. package/codeyam-cli/src/webserver/build/client/assets/{git-CPTZZ-JZ.js → git-D6jOlDQw.js} +1 -1
  271. package/codeyam-cli/src/webserver/build/client/assets/globals-CKT08Djd.css +1 -0
  272. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-DvOt1KIt.js} +1 -1
  273. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-WfQFdoWK.js} +1 -1
  274. package/codeyam-cli/src/webserver/build/client/assets/labs-BbGyC1RY.js +1 -0
  275. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-Bb7Y9k5O.js} +1 -1
  276. package/codeyam-cli/src/webserver/build/client/assets/manifest-fd06e67a.js +1 -0
  277. package/codeyam-cli/src/webserver/build/client/assets/memory-BXebUPaL.js +78 -0
  278. package/codeyam-cli/src/webserver/build/client/assets/pause-DaAHX2on.js +11 -0
  279. package/codeyam-cli/src/webserver/build/client/assets/root-CvNE9MaT.js +62 -0
  280. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-DIqAPIrO.js} +1 -1
  281. package/codeyam-cli/src/webserver/build/client/assets/settings-DCIzBZM9.js +1 -0
  282. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DwFIBT09.js → simulations-C6n_fNQY.js} +1 -1
  283. package/codeyam-cli/src/webserver/build/client/assets/terminal-CmPsszJy.js +11 -0
  284. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-Beg-oV50.js} +1 -1
  285. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-C1v1PQzo.js → useCustomSizes-D7TLbP3M.js} +1 -1
  286. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-aSv48UbS.js → useLastLogLine-Ce5rnai3.js} +1 -1
  287. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DYxHZQuP.js → useReportContext-B4D3wj27.js} +1 -1
  288. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-BDt_-DnY.js} +1 -1
  289. package/codeyam-cli/src/webserver/build/server/assets/{index-DVzYx8PN.js → index-DDr9Cp9M.js} +1 -1
  290. package/codeyam-cli/src/webserver/build/server/assets/server-build-DjwiujaU.js +257 -0
  291. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  292. package/codeyam-cli/src/webserver/build-info.json +5 -5
  293. package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
  294. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  295. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  296. package/codeyam-cli/templates/codeyam-memory.md +392 -0
  297. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  298. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  299. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  300. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  301. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  302. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  303. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  304. package/codeyam-cli/templates/rules-instructions.md +132 -0
  305. package/package.json +10 -10
  306. package/packages/ai/index.js +3 -2
  307. package/packages/ai/index.js.map +1 -1
  308. package/packages/ai/src/lib/analyzeScope.js +50 -13
  309. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  310. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +54 -8
  311. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  312. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  313. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  314. package/packages/ai/src/lib/astScopes/processExpression.js +317 -44
  315. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  316. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  317. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  318. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +763 -171
  319. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  320. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  321. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  322. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  323. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  324. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  325. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  326. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +33 -3
  327. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  328. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +36 -11
  329. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  330. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  331. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  332. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  333. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  334. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  335. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  336. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  337. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  338. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +309 -84
  339. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  340. package/packages/ai/src/lib/dataStructureChunking.js +26 -11
  341. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  342. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  343. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  344. package/packages/ai/src/lib/generateEntityScenarioData.js +227 -4
  345. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  346. package/packages/ai/src/lib/generateEntityScenarios.js +7 -1
  347. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  348. package/packages/ai/src/lib/generateExecutionFlows.js +26 -4
  349. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  350. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +447 -80
  351. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  352. package/packages/ai/src/lib/isolateScopes.js +39 -3
  353. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  354. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  355. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  356. package/packages/ai/src/lib/mergeStatements.js +70 -51
  357. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  358. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  359. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  360. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  361. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  362. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  363. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  364. package/packages/ai/src/lib/resolvePathToControllable.js +24 -14
  365. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
  366. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  367. package/packages/analyze/index.js +1 -0
  368. package/packages/analyze/index.js.map +1 -1
  369. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  370. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  371. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  372. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  373. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  374. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  375. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  376. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  377. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  378. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  379. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  380. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  381. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  382. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  383. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  384. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  385. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +65 -7
  386. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  387. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +17 -4
  388. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  389. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  390. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  391. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +0 -3
  392. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  393. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  394. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  395. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  396. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  397. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  398. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  399. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +56 -10
  400. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  401. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +75 -21
  402. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  403. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +150 -17
  404. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  405. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +56 -8
  406. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  407. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +478 -54
  408. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  409. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  410. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  411. package/packages/analyze/src/lib/index.js +1 -0
  412. package/packages/analyze/src/lib/index.js.map +1 -1
  413. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  414. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  415. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  416. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  417. package/packages/database/src/lib/analysisToDb.js +1 -1
  418. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  419. package/packages/database/src/lib/branchToDb.js +1 -1
  420. package/packages/database/src/lib/branchToDb.js.map +1 -1
  421. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  422. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  423. package/packages/database/src/lib/commitToDb.js +1 -1
  424. package/packages/database/src/lib/commitToDb.js.map +1 -1
  425. package/packages/database/src/lib/fileToDb.js +1 -1
  426. package/packages/database/src/lib/fileToDb.js.map +1 -1
  427. package/packages/database/src/lib/kysely/db.js +3 -0
  428. package/packages/database/src/lib/kysely/db.js.map +1 -1
  429. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  430. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  431. package/packages/database/src/lib/projectToDb.js +1 -1
  432. package/packages/database/src/lib/projectToDb.js.map +1 -1
  433. package/packages/database/src/lib/saveFiles.js +1 -1
  434. package/packages/database/src/lib/saveFiles.js.map +1 -1
  435. package/packages/database/src/lib/scenarioToDb.js +1 -1
  436. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  437. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  438. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  439. package/scripts/finalize-analyzer.cjs +8 -76
  440. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  441. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-BJUiQqZF.js +0 -23
  442. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  443. package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +0 -1
  444. package/codeyam-cli/src/webserver/build/client/assets/manifest-7522edd4.js +0 -1
  445. package/codeyam-cli/src/webserver/build/client/assets/memory-yxFcrxBX.js +0 -92
  446. package/codeyam-cli/src/webserver/build/client/assets/root-eVAaavTS.js +0 -62
  447. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  448. package/codeyam-cli/src/webserver/build/server/assets/server-build-4Cr0uToj.js +0 -257
  449. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  450. package/codeyam-cli/templates/codeyam:memory.md +0 -462
  451. package/codeyam-cli/templates/codeyam:new-rule.md +0 -13
@@ -14,8 +14,8 @@ export interface ConditionalUsage {
14
14
  conditionType: 'truthiness' | 'comparison' | 'switch';
15
15
  /** For comparison conditions, the literal values being compared against */
16
16
  comparedValues?: string[];
17
- /** Where this conditional usage occurs */
18
- location: 'if' | 'ternary' | 'logical-and' | 'switch';
17
+ /** Where this conditional usage occurs. 'unconditional' is for always-rendered children with data props. */
18
+ location: 'if' | 'ternary' | 'logical-and' | 'switch' | 'unconditional';
19
19
  /** Source location information for this conditional usage */
20
20
  sourceLocation?: {
21
21
  /** Line number (1-based) */
@@ -91,8 +91,8 @@ export interface CompoundConditional {
91
91
  /** Required value for this condition to be true */
92
92
  requiredValue?: string | boolean;
93
93
  }[];
94
- /** Where this compound conditional occurs */
95
- location: 'if' | 'ternary' | 'logical-and' | 'switch';
94
+ /** Where this compound conditional occurs. 'unconditional' is for always-rendered children. */
95
+ location: 'if' | 'ternary' | 'logical-and' | 'switch' | 'unconditional';
96
96
  /** Source location for the entire compound expression */
97
97
  sourceLocation: {
98
98
  lineNumber: number;
@@ -175,7 +175,7 @@ export interface DataStructure {
175
175
  [key: string]: string;
176
176
  };
177
177
  equivalentSignatureVariables: {
178
- [key: string]: string;
178
+ [key: string]: string | string[];
179
179
  };
180
180
  usageEquivalencies?: {
181
181
  [key: string]: {
@@ -1 +1 @@
1
- {"version":3,"file":"ScenariosDataStructure.d.ts","sourceRoot":"","sources":["../../../../../types/src/types/ScenariosDataStructure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ScenariosDataStructure.d.ts","sourceRoot":"","sources":["../../../../../types/src/types/ScenariosDataStructure.ts"],"names":[],"mappings":"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"}
@@ -4,8 +4,13 @@ export interface ScopeAnalysis {
4
4
  isolatedStructure: {
5
5
  [key: string]: string;
6
6
  };
7
+ /**
8
+ * Maps variable names to their equivalent paths.
9
+ * Supports multiple equivalencies per key (e.g., for OR expressions like `x = a || b`
10
+ * where x is equivalent to both a and b).
11
+ */
7
12
  isolatedEquivalentVariables: {
8
- [key: string]: string;
13
+ [key: string]: string | string[];
9
14
  };
10
15
  llmCalls: LlmCall[];
11
16
  environmentVariables: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"ScopeAnalysis.d.ts","sourceRoot":"","sources":["../../../../../types/src/types/ScopeAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C,2BAA2B,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IACvD,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC"}
1
+ {"version":3,"file":"ScopeAnalysis.d.ts","sourceRoot":"","sources":["../../../../../types/src/types/ScopeAnalysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,WAAW,aAAa;IAC5B,qBAAqB,EAAE,MAAM,EAAE,CAAC;IAChC,iBAAiB,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAC;IAC7C;;;;OAIG;IACH,2BAA2B,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,EAAE,CAAA;KAAE,CAAC;IAClE,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,oBAAoB,EAAE,MAAM,EAAE,CAAC;CAChC"}
@@ -1 +1 @@
1
- {"version":3,"file":"rsyncCopy.d.ts","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAEA,wBAA8B,SAAS,CAAC,EACtC,UAAU,EACV,eAAe,EACf,QAAa,EACb,YAAoB,EACpB,MAAc,EACd,SAAc,GACf,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CA+ChB"}
1
+ {"version":3,"file":"rsyncCopy.d.ts","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAqFA,wBAA8B,SAAS,CAAC,EACtC,UAAU,EACV,eAAe,EACf,QAAa,EACb,YAAoB,EACpB,MAAc,EACd,SAAc,GACf,EAAE;IACD,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB,GAAG,OAAO,CAAC,IAAI,CAAC,CAsEhB"}
@@ -1,5 +1,97 @@
1
- import { spawn } from 'child_process';
1
+ import { spawn, execSync } from 'child_process';
2
+ import { existsSync, readdirSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+ /**
5
+ * Try to use APFS copy-on-write clones on macOS for near-instant directory copies.
6
+ * Falls back to rsync on non-macOS or if the clone fails.
7
+ *
8
+ * Returns true if the clone succeeded (caller can skip rsync).
9
+ */
10
+ function tryApfsClone({ sourcePath, destinationPath, excludes, silent, }) {
11
+ if (process.platform !== 'darwin')
12
+ return false;
13
+ // APFS clone requires the destination to not exist.
14
+ // If it exists and is empty, remove it so we can clone into it.
15
+ if (existsSync(destinationPath)) {
16
+ try {
17
+ const contents = readdirSync(destinationPath);
18
+ if (contents.length > 0) {
19
+ // Destination is non-empty — can't use clone, fall back to rsync
20
+ return false;
21
+ }
22
+ rmSync(destinationPath, { recursive: true });
23
+ }
24
+ catch {
25
+ return false;
26
+ }
27
+ }
28
+ try {
29
+ // cp -c -R: APFS copy-on-write clone (faster than rsync, avoids data copy)
30
+ execSync(`cp -c -R "${sourcePath}" "${destinationPath}"`, {
31
+ stdio: 'pipe',
32
+ timeout: 300000, // 5 min safety timeout
33
+ });
34
+ // Remove excluded items from the clone
35
+ for (const exclude of excludes) {
36
+ if (exclude.includes('*')) {
37
+ // Glob pattern — use shell expansion
38
+ try {
39
+ execSync(`rm -rf "${join(destinationPath, exclude)}"`, {
40
+ stdio: 'pipe',
41
+ shell: '/bin/sh',
42
+ });
43
+ }
44
+ catch {
45
+ // Glob matched nothing — fine
46
+ }
47
+ }
48
+ else {
49
+ const excludePath = join(destinationPath, exclude);
50
+ if (existsSync(excludePath)) {
51
+ rmSync(excludePath, { recursive: true, force: true });
52
+ }
53
+ }
54
+ }
55
+ if (!silent) {
56
+ console.log(`Directory cloned (APFS CoW) from ${sourcePath} to ${destinationPath}`);
57
+ }
58
+ return true;
59
+ }
60
+ catch {
61
+ // Clone failed (cross-volume, non-APFS, etc.) — fall back to rsync
62
+ // Clean up any partial clone
63
+ if (existsSync(destinationPath)) {
64
+ try {
65
+ rmSync(destinationPath, { recursive: true });
66
+ }
67
+ catch {
68
+ // Best effort cleanup
69
+ }
70
+ }
71
+ return false;
72
+ }
73
+ }
2
74
  export default async function rsyncCopy({ sourcePath, destinationPath, excludes = [], keepExisting = false, silent = false, extraArgs = [], }) {
75
+ const startTime = Date.now();
76
+ // On macOS, try APFS copy-on-write clone first (near-instant).
77
+ // Skip when extraArgs are provided since those are rsync-specific flags
78
+ // that the clone path can't honor.
79
+ if (!keepExisting && extraArgs.length === 0) {
80
+ const cloned = tryApfsClone({
81
+ sourcePath,
82
+ destinationPath,
83
+ excludes,
84
+ silent,
85
+ });
86
+ if (cloned) {
87
+ if (!silent) {
88
+ const duration = ((Date.now() - startTime) / 1000).toFixed(1);
89
+ console.log(`Directory synced from ${sourcePath} to ${destinationPath} [Time: ${duration}s]`);
90
+ }
91
+ return;
92
+ }
93
+ }
94
+ // Fall back to rsync
3
95
  return new Promise((resolve, reject) => {
4
96
  const source = sourcePath.endsWith('/') ? sourcePath : `${sourcePath}/`;
5
97
  const dest = destinationPath.endsWith('/')
@@ -16,7 +108,6 @@ export default async function rsyncCopy({ sourcePath, destinationPath, excludes
16
108
  rsyncArgs.push(`--exclude=${exclude}`);
17
109
  }
18
110
  rsyncArgs.push(source, dest);
19
- const startTime = Date.now();
20
111
  const rsyncProcess = spawn('rsync', rsyncArgs);
21
112
  rsyncProcess.on('exit', (code) => {
22
113
  if (code === 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEtC,MAAM,CAAC,OAAO,CAAC,KAAK,UAAU,SAAS,CAAC,EACtC,UAAU,EACV,eAAe,EACf,QAAQ,GAAG,EAAE,EACb,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,KAAK,EACd,SAAS,GAAG,EAAE,GAQf;IACC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,UAAU,GAAG,CAAC;QACxE,MAAM,IAAI,GAAG,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;YACxC,CAAC,CAAC,eAAe;YACjB,CAAC,CAAC,GAAG,eAAe,GAAG,CAAC;QAE1B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,CAAC;QAEzB,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACxC,CAAC;QAED,wCAAwC;QACxC,SAAS,CAAC,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;QAE7B,8BAA8B;QAC9B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,aAAa,OAAO,EAAE,CAAC,CAAC;QACzC,CAAC;QAED,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE7B,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAE/C,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;YAC/B,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9D,OAAO,CAAC,GAAG,CACT,yBAAyB,UAAU,OAAO,eAAe,WAAW,QAAQ,IAAI,CACjF,CAAC;gBACJ,CAAC;gBACD,OAAO,EAAE,CAAC;YACZ,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,IAAI,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACZ,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;YACxC,CAAC;YACD,MAAM,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"rsyncCopy.js","sourceRoot":"","sources":["../../../../../src/lib/fs/rsyncCopy.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,87 @@
1
- import { spawn } from 'child_process';
1
+ import { spawn, execSync } from 'child_process';
2
+ import { existsSync, readdirSync, rmSync } from 'fs';
3
+ import { join } from 'path';
4
+
5
+ /**
6
+ * Try to use APFS copy-on-write clones on macOS for near-instant directory copies.
7
+ * Falls back to rsync on non-macOS or if the clone fails.
8
+ *
9
+ * Returns true if the clone succeeded (caller can skip rsync).
10
+ */
11
+ function tryApfsClone({
12
+ sourcePath,
13
+ destinationPath,
14
+ excludes,
15
+ silent,
16
+ }: {
17
+ sourcePath: string;
18
+ destinationPath: string;
19
+ excludes: string[];
20
+ silent: boolean;
21
+ }): boolean {
22
+ if (process.platform !== 'darwin') return false;
23
+
24
+ // APFS clone requires the destination to not exist.
25
+ // If it exists and is empty, remove it so we can clone into it.
26
+ if (existsSync(destinationPath)) {
27
+ try {
28
+ const contents = readdirSync(destinationPath);
29
+ if (contents.length > 0) {
30
+ // Destination is non-empty — can't use clone, fall back to rsync
31
+ return false;
32
+ }
33
+ rmSync(destinationPath, { recursive: true });
34
+ } catch {
35
+ return false;
36
+ }
37
+ }
38
+
39
+ try {
40
+ // cp -c -R: APFS copy-on-write clone (faster than rsync, avoids data copy)
41
+ execSync(`cp -c -R "${sourcePath}" "${destinationPath}"`, {
42
+ stdio: 'pipe',
43
+ timeout: 300_000, // 5 min safety timeout
44
+ });
45
+
46
+ // Remove excluded items from the clone
47
+ for (const exclude of excludes) {
48
+ if (exclude.includes('*')) {
49
+ // Glob pattern — use shell expansion
50
+ try {
51
+ execSync(`rm -rf "${join(destinationPath, exclude)}"`, {
52
+ stdio: 'pipe',
53
+ shell: '/bin/sh',
54
+ });
55
+ } catch {
56
+ // Glob matched nothing — fine
57
+ }
58
+ } else {
59
+ const excludePath = join(destinationPath, exclude);
60
+ if (existsSync(excludePath)) {
61
+ rmSync(excludePath, { recursive: true, force: true });
62
+ }
63
+ }
64
+ }
65
+
66
+ if (!silent) {
67
+ console.log(
68
+ `Directory cloned (APFS CoW) from ${sourcePath} to ${destinationPath}`,
69
+ );
70
+ }
71
+ return true;
72
+ } catch {
73
+ // Clone failed (cross-volume, non-APFS, etc.) — fall back to rsync
74
+ // Clean up any partial clone
75
+ if (existsSync(destinationPath)) {
76
+ try {
77
+ rmSync(destinationPath, { recursive: true });
78
+ } catch {
79
+ // Best effort cleanup
80
+ }
81
+ }
82
+ return false;
83
+ }
84
+ }
2
85
 
3
86
  export default async function rsyncCopy({
4
87
  sourcePath,
@@ -15,6 +98,30 @@ export default async function rsyncCopy({
15
98
  silent?: boolean;
16
99
  extraArgs?: string[];
17
100
  }): Promise<void> {
101
+ const startTime = Date.now();
102
+
103
+ // On macOS, try APFS copy-on-write clone first (near-instant).
104
+ // Skip when extraArgs are provided since those are rsync-specific flags
105
+ // that the clone path can't honor.
106
+ if (!keepExisting && extraArgs.length === 0) {
107
+ const cloned = tryApfsClone({
108
+ sourcePath,
109
+ destinationPath,
110
+ excludes,
111
+ silent,
112
+ });
113
+ if (cloned) {
114
+ if (!silent) {
115
+ const duration = ((Date.now() - startTime) / 1000).toFixed(1);
116
+ console.log(
117
+ `Directory synced from ${sourcePath} to ${destinationPath} [Time: ${duration}s]`,
118
+ );
119
+ }
120
+ return;
121
+ }
122
+ }
123
+
124
+ // Fall back to rsync
18
125
  return new Promise((resolve, reject) => {
19
126
  const source = sourcePath.endsWith('/') ? sourcePath : `${sourcePath}/`;
20
127
  const dest = destinationPath.endsWith('/')
@@ -37,7 +144,6 @@ export default async function rsyncCopy({
37
144
 
38
145
  rsyncArgs.push(source, dest);
39
146
 
40
- const startTime = Date.now();
41
147
  const rsyncProcess = spawn('rsync', rsyncArgs);
42
148
 
43
149
  rsyncProcess.on('exit', (code) => {
@@ -1189,11 +1189,20 @@ export default function constructMockCode(
1189
1189
  // Valid patterns where arrow function is NOT bare:
1190
1190
  // 1. Property value: "key: (arg) => ..." - ends with ':'
1191
1191
  // 2. Function argument: ".map((arg) => ..." - ends with '('
1192
+ // 3. Method call: "?.map" followed directly by the arrow function
1193
+ // In this case, the '(' is consumed by the arrow function regex match,
1194
+ // so beforeTrimmed ends with the method name (e.g., 'map'), not '('.
1195
+ // We detect this by checking if beforeTrimmed ends with an identifier
1196
+ // that could be a method name (preceded by '.' or '?.').
1192
1197
  // NOTE: We don't include ',' because "{ prop, () => {} }" is invalid
1193
1198
  // (can't distinguish function argument from object property context)
1194
1199
  const isPropertyValue = beforeTrimmed.endsWith(':');
1195
1200
  const isFunctionArg = beforeTrimmed.endsWith('(');
1196
- const hasPropertyName = isPropertyValue || isFunctionArg;
1201
+ // Check if before ends with a method call pattern like ".map" or "?.map"
1202
+ // The '(' after the method name is consumed by the arrow function regex
1203
+ const isMethodCallArg = /\??\.\w+$/.test(beforeTrimmed);
1204
+ const hasPropertyName =
1205
+ isPropertyValue || isFunctionArg || isMethodCallArg;
1197
1206
 
1198
1207
  if (!hasPropertyName) {
1199
1208
  // This is a bare arrow function - filter it out
@@ -1404,6 +1413,17 @@ export default function constructMockCode(
1404
1413
  .replace(/,\s*$/, '');
1405
1414
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => (\n${indent(trimmedContent)}\n))`;
1406
1415
  } else {
1416
+ // When generating object-wrapped .map(), ensure original item data is preserved.
1417
+ // If no data spread was included (e.g., because this is a plain array property,
1418
+ // not a function return), add ...__item__ to spread the original item properties.
1419
+ // Without this, the .map() would create new objects with only nested function
1420
+ // properties, losing data like filePath, frontmatter, body, etc.
1421
+ const hasDataSpread =
1422
+ mappedContents.includes('...scenarios()') ||
1423
+ mappedContents.includes('...__item__');
1424
+ if (!hasDataSpread) {
1425
+ mappedContents = `...__item__,\n${mappedContents}`;
1426
+ }
1407
1427
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => ({\n${indent(mappedContents)}\n}))`;
1408
1428
  }
1409
1429
  } // Close the empty content check else block
@@ -1470,6 +1490,17 @@ export default function constructMockCode(
1470
1490
  mappedContents = filterOutArrowFunctions(mappedContents);
1471
1491
  mappedContents = filterOutBareObjects(mappedContents, true);
1472
1492
  mappedContents = cleanupContent(mappedContents);
1493
+ // Same as needsWrapper branch: ensure item data is preserved in .map()
1494
+ const hasDataSpreadInner =
1495
+ mappedContents.includes('...scenarios()') ||
1496
+ mappedContents.includes('...__item__');
1497
+ if (!hasDataSpreadInner && mappedContents.trim().length > 0) {
1498
+ // Insert ...__item__ after the opening brace
1499
+ mappedContents = mappedContents.replace(
1500
+ /^\s*\{/,
1501
+ '{\n...__item__,',
1502
+ );
1503
+ }
1473
1504
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => (\n${indent(mappedContents)}\n))`;
1474
1505
  }
1475
1506
  } else {
@@ -1693,6 +1724,42 @@ export default function constructMockCode(
1693
1724
  return 0;
1694
1725
  });
1695
1726
 
1727
+ // OPTIMIZATION: Pre-compute prefix indexes for O(1) lookups instead of O(n) scans.
1728
+ // This reduces complexity from O(n²) to O(n) for large schemas (9k+ keys).
1729
+ //
1730
+ // 1. extendedReturnValuePrefixes: Set of all path prefixes that have a .functionCallReturnValue extension
1731
+ // Used by hasExtendedFunctionCallReturnValue check at line ~1754
1732
+ // 2. functionCallsWithReturnValue: Set of function call paths where .functionCallReturnValue IMMEDIATELY follows
1733
+ // Used by hasProperFunctionCallPath check at line ~1787
1734
+ // IMPORTANT: Only includes paths where the function call is directly followed by .functionCallReturnValue
1735
+ // e.g., "a.b().functionCallReturnValue" -> adds "a.b()" but NOT "a" even if "a" ends with ")"
1736
+ const extendedReturnValuePrefixes = new Set<string>();
1737
+ const functionCallsWithReturnValue = new Set<string>();
1738
+
1739
+ for (const k of relevantKeys) {
1740
+ const parts = splitOutsideParenthesesAndArrays(k);
1741
+ const returnValueIndex = parts.findIndex((part) =>
1742
+ part.startsWith(RETURN_VALUE),
1743
+ );
1744
+ if (returnValueIndex !== -1) {
1745
+ // Add all prefixes of k up to (but not including) functionCallReturnValue
1746
+ const prefix = joinParenthesesAndArrays(parts.slice(0, returnValueIndex));
1747
+ extendedReturnValuePrefixes.add(prefix);
1748
+
1749
+ // ONLY add to functionCallsWithReturnValue if functionCallReturnValue IMMEDIATELY follows
1750
+ if (prefix.endsWith(')')) {
1751
+ functionCallsWithReturnValue.add(prefix);
1752
+ }
1753
+
1754
+ // Also add intermediate prefixes for nested paths to extendedReturnValuePrefixes
1755
+ // This helps hasExtendedFunctionCallReturnValue which checks key + '.'
1756
+ for (let i = 1; i < returnValueIndex; i++) {
1757
+ const partialPrefix = joinParenthesesAndArrays(parts.slice(0, i));
1758
+ extendedReturnValuePrefixes.add(partialPrefix);
1759
+ }
1760
+ }
1761
+ }
1762
+
1696
1763
  for (const key of sortedKeys) {
1697
1764
  const value = relevantReturnValueSchema[key];
1698
1765
  const parts = splitOutsideParenthesesAndArrays(key);
@@ -1749,9 +1816,10 @@ export default function constructMockCode(
1749
1816
  // nested inside (e.g., methods on array elements passed as arguments).
1750
1817
  if (hasSignaturePath) continue;
1751
1818
 
1752
- const hasExtendedFunctionCallReturnValue = Object.keys(
1753
- relevantReturnValueSchema,
1754
- ).some((k) => k.startsWith(key + '.') && k.includes(`.${RETURN_VALUE}`));
1819
+ // OPTIMIZATION: Use pre-computed index instead of O(n) scan
1820
+ // Old code: Object.keys(relevantReturnValueSchema).some((k) => k.startsWith(key + '.') && k.includes('.functionCallReturnValue'))
1821
+ const hasExtendedFunctionCallReturnValue =
1822
+ extendedReturnValuePrefixes.has(key);
1755
1823
 
1756
1824
  // Skip JSX components - they look like function calls (e.g., Context.Provider())
1757
1825
  // but they're React components used in JSX, not functions that need mocking
@@ -1780,11 +1848,10 @@ export default function constructMockCode(
1780
1848
  const functionCallPath = joinParenthesesAndArrays(
1781
1849
  parts.slice(0, i + 1),
1782
1850
  );
1783
- const hasProperFunctionCallPath = Object.keys(
1784
- relevantReturnValueSchema,
1785
- ).some((k) =>
1786
- k.startsWith(functionCallPath + '.functionCallReturnValue'),
1787
- );
1851
+ // OPTIMIZATION: Use pre-computed index instead of O(n) scan
1852
+ // Old code: Object.keys(relevantReturnValueSchema).some((k) => k.startsWith(functionCallPath + '.functionCallReturnValue'))
1853
+ const hasProperFunctionCallPath =
1854
+ functionCallsWithReturnValue.has(functionCallPath);
1788
1855
  if (hasProperFunctionCallPath) {
1789
1856
  // Skip this path - the .functionCallReturnValue path will handle it correctly
1790
1857
  shouldSkipKey = true;
@@ -2383,7 +2450,20 @@ export default function constructMockCode(
2383
2450
  const safeReturnValue = isSimpleDataPath
2384
2451
  ? `${returnValue} ?? {}`
2385
2452
  : returnValue;
2386
- return `${isRootAsyncFunction ? 'async ' : ''}function ${safeFunctionName}(...args) {\n${indent(`return ${safeReturnValue};`)}\n}`;
2453
+ const refName = `_${safeFunctionName}Ref`;
2454
+ const assignment = `${refName}.current = ${safeReturnValue};`;
2455
+ const ifBlock = `if (!${refName}.current) {\n${indent(assignment)}\n}`;
2456
+ const body = `${ifBlock}\nreturn ${refName}.current;`;
2457
+
2458
+ return [
2459
+ `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)`,
2460
+ `const ${refName} = {`,
2461
+ ` current: null,`,
2462
+ `};`,
2463
+ `${isRootAsyncFunction ? 'async ' : ''}function ${safeFunctionName}(...args) {`,
2464
+ indent(body),
2465
+ `}`,
2466
+ ].join('\n');
2387
2467
  } else {
2388
2468
  // Generate safe const name:
2389
2469
  // 1. For call signatures: use derivedFunctionName