@codeyam/codeyam-cli 0.1.0-staging.1669d45 → 0.1.0-staging.1a2737b

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 (654) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +19 -19
  4. package/analyzer-template/packages/ai/index.ts +16 -2
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +110 -52
  7. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  8. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +98 -9
  9. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +139 -23
  10. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  11. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +6 -126
  12. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +656 -28
  13. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  14. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +94 -7
  15. package/analyzer-template/packages/ai/src/lib/completionCall.ts +198 -34
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1331 -254
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +205 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +124 -17
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -97
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  32. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  33. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  34. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  35. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +936 -7
  36. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +35 -6
  37. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +515 -6
  38. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
  39. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +1540 -75
  40. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  41. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  42. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  43. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
  44. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  45. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  46. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  47. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  48. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +44 -7
  49. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  50. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +179 -45
  51. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +26 -4
  52. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  53. package/analyzer-template/packages/analyze/index.ts +2 -0
  54. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  55. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  56. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  57. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  58. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  59. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  60. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  61. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  62. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  63. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  64. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +99 -22
  65. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +19 -4
  66. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  67. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  68. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  69. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  70. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  71. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  72. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +193 -76
  73. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +87 -25
  74. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +269 -22
  75. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +118 -10
  76. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +647 -73
  77. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  78. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  79. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  80. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  81. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  82. package/analyzer-template/packages/aws/package.json +10 -10
  83. package/analyzer-template/packages/database/package.json +1 -1
  84. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  85. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  86. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  87. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  88. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  89. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  90. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  91. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  92. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  93. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  94. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  95. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  96. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  97. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  98. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  99. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  100. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  101. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  102. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  103. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  104. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  105. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  106. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  107. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  108. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  109. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  110. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  111. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  112. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  113. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  114. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  115. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  116. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  117. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  118. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  119. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  120. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  121. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  122. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  123. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  124. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  126. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  127. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  128. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  129. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  130. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  131. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  132. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  133. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  134. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  135. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  136. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  137. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  138. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  139. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  142. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  143. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  145. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  146. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  147. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  148. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  149. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  150. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  151. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  152. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  153. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  154. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  155. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  156. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  157. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  158. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  159. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  160. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  162. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  163. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  164. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  165. package/analyzer-template/packages/github/dist/types/index.d.ts +1 -1
  166. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  167. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  168. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +25 -1
  169. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  170. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  171. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  172. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  173. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  174. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +56 -6
  175. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  176. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  177. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  178. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  179. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  180. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  181. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  182. package/analyzer-template/packages/github/package.json +1 -1
  183. package/analyzer-template/packages/types/index.ts +1 -0
  184. package/analyzer-template/packages/types/src/types/Analysis.ts +25 -0
  185. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  186. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  187. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +70 -6
  188. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  189. package/analyzer-template/packages/utils/dist/types/index.d.ts +1 -1
  190. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  191. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  192. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +25 -1
  193. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  194. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  195. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  196. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  197. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  198. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +56 -6
  199. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  200. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  201. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  202. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  203. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  204. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  205. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  206. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  207. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  208. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  209. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  210. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  211. package/analyzer-template/playwright/capture.ts +20 -8
  212. package/analyzer-template/playwright/captureStatic.ts +1 -1
  213. package/analyzer-template/project/analyzeBaselineCommit.ts +5 -0
  214. package/analyzer-template/project/analyzeRegularCommit.ts +5 -0
  215. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  216. package/analyzer-template/project/constructMockCode.ts +436 -44
  217. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  218. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  219. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  220. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  221. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  222. package/analyzer-template/project/orchestrateCapture.ts +75 -7
  223. package/analyzer-template/project/reconcileMockDataKeys.ts +152 -9
  224. package/analyzer-template/project/runAnalysis.ts +4 -0
  225. package/analyzer-template/project/start.ts +35 -11
  226. package/analyzer-template/project/writeMockDataTsx.ts +295 -10
  227. package/analyzer-template/project/writeScenarioComponents.ts +237 -32
  228. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  229. package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
  230. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  231. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  232. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +5 -0
  233. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  234. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +5 -0
  235. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  236. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  237. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  238. package/background/src/lib/virtualized/project/constructMockCode.js +359 -14
  239. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  240. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  241. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  242. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  243. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  244. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  245. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  246. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  247. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  248. package/background/src/lib/virtualized/project/orchestrateCapture.js +62 -7
  249. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  250. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +126 -9
  251. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  252. package/background/src/lib/virtualized/project/runAnalysis.js +3 -0
  253. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  254. package/background/src/lib/virtualized/project/start.js +32 -11
  255. package/background/src/lib/virtualized/project/start.js.map +1 -1
  256. package/background/src/lib/virtualized/project/writeMockDataTsx.js +251 -6
  257. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  258. package/background/src/lib/virtualized/project/writeScenarioComponents.js +173 -30
  259. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  260. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  261. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  262. package/codeyam-cli/scripts/apply-setup.js +180 -0
  263. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  264. package/codeyam-cli/src/cli.js +32 -18
  265. package/codeyam-cli/src/cli.js.map +1 -1
  266. package/codeyam-cli/src/codeyam-cli.js +18 -2
  267. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  268. package/codeyam-cli/src/commands/analyze.js +4 -2
  269. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  270. package/codeyam-cli/src/commands/baseline.js +2 -0
  271. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  272. package/codeyam-cli/src/commands/debug.js +9 -5
  273. package/codeyam-cli/src/commands/debug.js.map +1 -1
  274. package/codeyam-cli/src/commands/default.js +31 -20
  275. package/codeyam-cli/src/commands/default.js.map +1 -1
  276. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  277. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  278. package/codeyam-cli/src/commands/init.js +49 -257
  279. package/codeyam-cli/src/commands/init.js.map +1 -1
  280. package/codeyam-cli/src/commands/memory.js +307 -0
  281. package/codeyam-cli/src/commands/memory.js.map +1 -0
  282. package/codeyam-cli/src/commands/recapture.js +2 -0
  283. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  284. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  285. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  286. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  287. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  288. package/codeyam-cli/src/commands/test-startup.js +2 -0
  289. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  290. package/codeyam-cli/src/commands/verify.js +14 -2
  291. package/codeyam-cli/src/commands/verify.js.map +1 -1
  292. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  293. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  294. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  295. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  296. package/codeyam-cli/src/utils/analysisRunner.js +21 -2
  297. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  298. package/codeyam-cli/src/utils/analyzer.js +7 -0
  299. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  300. package/codeyam-cli/src/utils/backgroundServer.js +90 -19
  301. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  302. package/codeyam-cli/src/utils/generateReport.js +2 -2
  303. package/codeyam-cli/src/utils/install-skills.js +77 -38
  304. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  305. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  306. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  307. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  308. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  309. package/codeyam-cli/src/utils/progress.js +7 -0
  310. package/codeyam-cli/src/utils/progress.js.map +1 -1
  311. package/codeyam-cli/src/utils/queue/job.js +5 -0
  312. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  313. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  314. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  315. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  316. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  317. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  318. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  319. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  320. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  321. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  322. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  323. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  324. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  325. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  326. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  327. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  328. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  329. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  330. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  331. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  332. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  333. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +116 -0
  334. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  335. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  336. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  337. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  338. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  339. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  340. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  341. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  342. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  343. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  344. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  345. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  346. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  347. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  348. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  349. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  350. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  351. package/codeyam-cli/src/utils/rules/index.js +6 -0
  352. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  353. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  354. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  355. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  356. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  357. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  358. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  359. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  360. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  361. package/codeyam-cli/src/utils/serverState.js +37 -10
  362. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  363. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  364. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  365. package/codeyam-cli/src/utils/simulationGateMiddleware.js +138 -0
  366. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  367. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  368. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  369. package/codeyam-cli/src/utils/versionInfo.js +25 -0
  370. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  371. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  372. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  373. package/codeyam-cli/src/webserver/app/lib/database.js +22 -6
  374. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  375. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  376. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  377. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  378. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  379. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  380. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
  382. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-COi5OvsN.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  383. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BwdQv49w.js → EntityTypeIcon-BH0XDim7.js} +1 -1
  384. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-CEleMv_j.js → InlineSpinner-EhOseatT.js} +1 -1
  385. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-D68KarMg.js → InteractivePreview-yjIHlOGa.js} +2 -2
  386. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-L75Wvqgw.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  387. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-C53WM8qn.js → LoadingDots-BvMu2i-g.js} +1 -1
  388. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-CrNkmy4i.js → LogViewer-kgBTLoJD.js} +1 -1
  389. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CQifa1n-.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  391. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-CyaBFX7l.js → ScenarioViewer-BX2Ny2Qj.js} +3 -13
  392. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-D36O1rzU.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  393. package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  397. package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
  398. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  399. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  402. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  403. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-DgTPh8H-.js → chevron-down-CG65viiV.js} +1 -1
  404. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-DdQKK6on.js → chunk-JZWAC4HX-DB3aFuEO.js} +12 -12
  405. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-Dmr2bb1R.js → circle-check-igfMr5DY.js} +1 -1
  406. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Do4ZLUYa.js → createLucideIcon-D1zB-pYc.js} +1 -1
  408. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
  409. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CbdFyxZh.js → entity._sha._-B0h9AqE6.js} +12 -12
  410. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-B4iCfs5M.js → entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js} +1 -1
  411. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-wDWZZO1W.js → entity._sha_.create-scenario-CtYowLOt.js} +1 -1
  412. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMbl7MeQ.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  413. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-5wRKRIH9.js → entry.client-I-Wo99C_.js} +1 -1
  414. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DD3SDH7t.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  415. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/{git-zXjT7J0G.js → git-BdHOxVfg.js} +8 -8
  417. package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +1 -0
  418. package/codeyam-cli/src/webserver/build/client/assets/{index-DLbXwndH.js → index-CUM5iXwc.js} +1 -1
  419. package/codeyam-cli/src/webserver/build/client/assets/{index-gPZ-lad1.js → index-_417gcQW.js} +1 -1
  420. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BsPXJ81F.js → loader-circle-TzRHMVog.js} +1 -1
  422. package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +1 -0
  423. package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +92 -0
  424. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  425. package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +62 -0
  426. package/codeyam-cli/src/webserver/build/client/assets/{search-P2FKIUql.js → search-DcAwD_Ln.js} +1 -1
  427. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  428. package/codeyam-cli/src/webserver/build/client/assets/{simulations-L18M6-kN.js → simulations-DVNJVQgD.js} +1 -1
  429. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  430. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BDz7kbVA.js → triangle-alert-CAD5b1o_.js} +1 -1
  431. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-29dDmbH8.js → useCustomSizes-BqgrAzs3.js} +1 -1
  432. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BUm0UVJm.js → useLastLogLine-DAFqfEDH.js} +1 -1
  433. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CkIOKTrZ.js → useReportContext-DZlYx2c4.js} +1 -1
  434. package/codeyam-cli/src/webserver/build/client/assets/{useToast-KKw5kTn-.js → useToast-ihdMtlf6.js} +1 -1
  435. package/codeyam-cli/src/webserver/build/server/assets/index-B3dE0r28.js +1 -0
  436. package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +273 -0
  437. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  438. package/codeyam-cli/src/webserver/build-info.json +5 -5
  439. package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +48 -4
  440. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  441. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  442. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  443. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  444. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  445. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  446. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  447. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  448. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  449. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  450. package/codeyam-cli/templates/rules-instructions.md +132 -0
  451. package/package.json +18 -15
  452. package/packages/ai/index.js +7 -3
  453. package/packages/ai/index.js.map +1 -1
  454. package/packages/ai/src/lib/analyzeScope.js +91 -30
  455. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  456. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  457. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  458. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +78 -8
  459. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  460. package/packages/ai/src/lib/astScopes/methodSemantics.js +109 -23
  461. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  462. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  463. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  464. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +1 -102
  465. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  466. package/packages/ai/src/lib/astScopes/processExpression.js +518 -28
  467. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  468. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  469. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  470. package/packages/ai/src/lib/completionCall.js +161 -30
  471. package/packages/ai/src/lib/completionCall.js.map +1 -1
  472. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1061 -174
  473. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  474. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  475. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  476. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +179 -0
  477. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  478. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  479. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  480. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  481. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  482. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  483. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  484. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  485. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  486. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +106 -13
  487. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  488. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  489. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  490. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  491. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  492. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  493. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  494. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  495. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  496. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -86
  497. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  498. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  499. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  500. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  501. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  502. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  503. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  504. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  505. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  506. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  507. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  508. package/packages/ai/src/lib/generateEntityScenarioData.js +734 -8
  509. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  510. package/packages/ai/src/lib/generateEntityScenarios.js +26 -2
  511. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  512. package/packages/ai/src/lib/generateExecutionFlows.js +376 -4
  513. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  514. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1124 -59
  515. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  516. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  517. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  518. package/packages/ai/src/lib/isolateScopes.js +39 -3
  519. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  520. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  521. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  522. package/packages/ai/src/lib/mergeStatements.js +70 -51
  523. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  524. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  525. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  526. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  527. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  528. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  529. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  530. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +30 -7
  531. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  532. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  533. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  534. package/packages/ai/src/lib/resolvePathToControllable.js +155 -41
  535. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
  536. package/packages/ai/src/lib/worker/SerializableDataStructure.js +7 -0
  537. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  538. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  539. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  540. package/packages/analyze/index.js +1 -0
  541. package/packages/analyze/index.js.map +1 -1
  542. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  543. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  544. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  545. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  546. package/packages/analyze/src/lib/analysisContext.js +30 -5
  547. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  548. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  549. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  550. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  551. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  552. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  553. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  554. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  555. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  556. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  557. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  558. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  559. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  560. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  561. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  562. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +72 -10
  563. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  564. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +17 -4
  565. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  566. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  567. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  568. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  569. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  570. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  571. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  572. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  573. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  574. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  575. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  576. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  577. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  578. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +164 -68
  579. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  580. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +75 -21
  581. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  582. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +185 -20
  583. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  584. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +57 -9
  585. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  586. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +542 -53
  587. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  588. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  589. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  590. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  591. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  592. package/packages/analyze/src/lib/index.js +1 -0
  593. package/packages/analyze/src/lib/index.js.map +1 -1
  594. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  595. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  596. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  597. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  598. package/packages/database/src/lib/analysisToDb.js +1 -1
  599. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  600. package/packages/database/src/lib/branchToDb.js +1 -1
  601. package/packages/database/src/lib/branchToDb.js.map +1 -1
  602. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  603. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  604. package/packages/database/src/lib/commitToDb.js +1 -1
  605. package/packages/database/src/lib/commitToDb.js.map +1 -1
  606. package/packages/database/src/lib/fileToDb.js +1 -1
  607. package/packages/database/src/lib/fileToDb.js.map +1 -1
  608. package/packages/database/src/lib/kysely/db.js +11 -1
  609. package/packages/database/src/lib/kysely/db.js.map +1 -1
  610. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  611. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  612. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  613. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  614. package/packages/database/src/lib/loadAnalyses.js +45 -2
  615. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  616. package/packages/database/src/lib/loadAnalysis.js +8 -0
  617. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  618. package/packages/database/src/lib/loadBranch.js +11 -1
  619. package/packages/database/src/lib/loadBranch.js.map +1 -1
  620. package/packages/database/src/lib/loadCommit.js +7 -0
  621. package/packages/database/src/lib/loadCommit.js.map +1 -1
  622. package/packages/database/src/lib/loadCommits.js +22 -1
  623. package/packages/database/src/lib/loadCommits.js.map +1 -1
  624. package/packages/database/src/lib/loadEntities.js +23 -4
  625. package/packages/database/src/lib/loadEntities.js.map +1 -1
  626. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  627. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  628. package/packages/database/src/lib/projectToDb.js +1 -1
  629. package/packages/database/src/lib/projectToDb.js.map +1 -1
  630. package/packages/database/src/lib/saveFiles.js +1 -1
  631. package/packages/database/src/lib/saveFiles.js.map +1 -1
  632. package/packages/database/src/lib/scenarioToDb.js +1 -1
  633. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  634. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  635. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  636. package/packages/types/index.js.map +1 -1
  637. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  638. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  639. package/packages/utils/src/lib/safeFileName.js +29 -3
  640. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  641. package/scripts/finalize-analyzer.cjs +8 -76
  642. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-vauWK972.js +0 -1
  643. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-DzJRkCkr.js +0 -11
  644. package/codeyam-cli/src/webserver/build/client/assets/_index-Be83mo_j.js +0 -11
  645. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BN6wu6Y-.js +0 -37
  646. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Bn6aCAy_.js +0 -1
  647. package/codeyam-cli/src/webserver/build/client/assets/files-DKyMFI90.js +0 -1
  648. package/codeyam-cli/src/webserver/build/client/assets/globals-DTTQ3gY7.css +0 -1
  649. package/codeyam-cli/src/webserver/build/client/assets/manifest-22590fcf.js +0 -1
  650. package/codeyam-cli/src/webserver/build/client/assets/root-BsAarjAM.js +0 -57
  651. package/codeyam-cli/src/webserver/build/client/assets/settings-B2eDuBj8.js +0 -1
  652. package/codeyam-cli/src/webserver/build/server/assets/index-BND5I5fv.js +0 -1
  653. package/codeyam-cli/src/webserver/build/server/assets/server-build-CFXnd7MG.js +0 -228
  654. package/codeyam-cli/templates/codeyam:diagnose.md +0 -625
@@ -685,8 +685,17 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
685
685
  // e.g., useFetcher() -> useFetcher_reportFetcher()
686
686
  // Escape special regex characters in the call signature
687
687
  const escapedCallSignature = callSignature.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
688
- // Create regex that matches the call (with optional whitespace variations)
689
- const callRegex = new RegExp(escapedCallSignature.replace(/\s+/g, '\\s*'), 'g');
688
+ // Create regex that matches the call (with optional whitespace variations).
689
+ // TypeScript formatters commonly break type parameters across lines, e.g.:
690
+ // useLoaderData<
691
+ // typeof loader
692
+ // >()
693
+ // So we allow optional whitespace around < and > delimiters, not just
694
+ // where whitespace already exists in the call signature string.
695
+ const callRegex = new RegExp(escapedCallSignature
696
+ .replace(/\s+/g, '\\s*')
697
+ .replace(/</g, '\\s*<\\s*')
698
+ .replace(/>/g, '\\s*>\\s*'), 'gs');
690
699
  fileContent = fileContent.replace(callRegex, `${mockFunctionName}()`);
691
700
  }
692
701
  }
@@ -704,15 +713,28 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
704
713
  // For single variable assignments, use the call signature directly from dataForMocks
705
714
  const dataForMocks = rootAnalysis.metadata?.scenariosDataStructure?.dataForMocks;
706
715
  // Find matching call signature key in dataForMocks
716
+ // IMPORTANT: First try exact match with type parameters (e.g., "useLoaderData<LoaderData>()")
717
+ // to avoid picking the wrong variant (e.g., "useLoaderData<typeof loader>()" which may
718
+ // have different properties). Fall back to base name matching only if exact match fails.
707
719
  const hookBaseName = importedExport.name.split(/[<(]/)[0];
708
- const callSignatureKey = dataForMocks
709
- ? Object.keys(dataForMocks).find((key) => {
710
- // Split on ., <, or ( to get the true base name
711
- // This handles both "useFlags()" -> "useFlags" and "trpc.useUtils()" -> "trpc"
712
- const keyBaseName = key.split(/[.<(]/)[0];
713
- return keyBaseName === hookBaseName;
714
- })
715
- : undefined;
720
+ const expectedKey = importedExport.calls?.[0];
721
+ let callSignatureKey;
722
+ if (dataForMocks) {
723
+ const keys = Object.keys(dataForMocks);
724
+ // First try exact match with the expected call signature
725
+ if (expectedKey && keys.includes(expectedKey)) {
726
+ callSignatureKey = expectedKey;
727
+ }
728
+ else {
729
+ // Fall back to base name matching
730
+ callSignatureKey = keys.find((key) => {
731
+ // Split on ., <, or ( to get the true base name
732
+ // This handles both "useFlags()" -> "useFlags" and "trpc.useUtils()" -> "trpc"
733
+ const keyBaseName = key.split(/[.<(]/)[0];
734
+ return keyBaseName === hookBaseName;
735
+ });
736
+ }
737
+ }
716
738
  // Use the call signature if found, otherwise construct it
717
739
  const dataKey = callSignatureKey ??
718
740
  importedExport.calls?.[0] ??
@@ -741,18 +763,34 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
741
763
  // IMPORTANT: We inline scenarios().data() inside the function rather than
742
764
  // storing in a const - see comment in constructMockCode.ts for why.
743
765
  if (!mockCode) {
744
- mockCode = `function ${importedExport.name}(...args) {
745
- return scenarios().data()?.["${dataKey}"];
766
+ mockCode = `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)
767
+ const _${importedExport.name}Ref = {
768
+ current: null,
769
+ };
770
+ function ${importedExport.name}(...args) {
771
+ if (!_${importedExport.name}Ref.current) {
772
+ _${importedExport.name}Ref.current = scenarios().data()?.["${dataKey}"];
773
+ }
774
+ return _${importedExport.name}Ref.current;
746
775
  }`;
747
776
  }
748
777
  }
749
778
  else {
750
779
  // Helper to find matching call signature key from dataForMocks
780
+ // IMPORTANT: First try exact match with type parameters (e.g., "useLoaderData<LoaderData>()")
781
+ // to avoid picking the wrong variant. Fall back to base name matching only if needed.
751
782
  const hookBaseName = importedExport.name.split(/[<(]/)[0];
783
+ const expectedKey = importedExport.calls?.[0];
752
784
  const findMatchingKey = (dataForMocks) => {
753
785
  if (!dataForMocks)
754
786
  return undefined;
755
- return Object.keys(dataForMocks).find((key) => {
787
+ const keys = Object.keys(dataForMocks);
788
+ // First try exact match with the expected call signature
789
+ if (expectedKey && keys.includes(expectedKey)) {
790
+ return expectedKey;
791
+ }
792
+ // Fall back to base name matching
793
+ return keys.find((key) => {
756
794
  // Split on ., <, or ( to get the true base name
757
795
  // This handles both "useFlags()" -> "useFlags" and "trpc.useUtils()" -> "trpc"
758
796
  const keyBaseName = key.split(/[.<(]/)[0];
@@ -796,8 +834,15 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
796
834
  // IMPORTANT: We inline scenarios().data() inside the function rather than
797
835
  // storing in a const - see comment in constructMockCode.ts for why.
798
836
  if (!mockCode && dataKey) {
799
- mockCode = `function ${importedExport.name}(...args) {
800
- return scenarios().data()?.["${dataKey}"];
837
+ mockCode = `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)
838
+ const _${importedExport.name}Ref = {
839
+ current: null,
840
+ };
841
+ function ${importedExport.name}(...args) {
842
+ if (!_${importedExport.name}Ref.current) {
843
+ _${importedExport.name}Ref.current = scenarios().data()?.["${dataKey}"];
844
+ }
845
+ return _${importedExport.name}Ref.current;
801
846
  }`;
802
847
  }
803
848
  }
@@ -847,6 +892,14 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
847
892
  else {
848
893
  fileContent = fileContent.replace(importRegExp, '$1$2');
849
894
  }
895
+ // Also handle namespace imports (import * as foo from '...')
896
+ // These need to be renamed to foo__cyOriginal when the mock code spreads from the original.
897
+ // Note: We match any path (not just escapedImportPath) because the import path may have
898
+ // been rewritten by transitive import handling before this code runs.
899
+ if (shouldRenameToOriginal) {
900
+ const namespaceImportRegExp = new RegExp(`(import\\s+\\*\\s+as\\s+)${escapeRegExp(firstPart)}(\\s+from\\s+['"][^'"]*['"])`, 'm');
901
+ fileContent = fileContent.replace(namespaceImportRegExp, `$1${firstPart}__cyOriginal$2`);
902
+ }
850
903
  // Remove empty imports entirely to avoid partial commenting issues with multiline imports
851
904
  // This handles both single-line and multiline empty imports
852
905
  fileContent = fileContent.replace(/import\s*\{\s*\}\s*from\s+['"][^'"]*['"];?\s*\n?/g, '');
@@ -1205,9 +1258,12 @@ export default async function writeScenarioComponents({ project, file, entity, r
1205
1258
  fileContentLength: fileContent.length,
1206
1259
  });
1207
1260
  let importedExportIndex = 0;
1261
+ const loopStartTime = Date.now();
1262
+ console.log(`[WriteScenario] Starting import loop for ${entity.name}: ${sortedImportedExports.length} imports`);
1208
1263
  for (const importedExport of sortedImportedExports) {
1209
1264
  importedExportIndex++;
1210
1265
  if (importedExportIndex % 5 === 0 || importedExportIndex === 1) {
1266
+ console.log(`[WriteScenario] ${entity.name} import ${importedExportIndex}/${sortedImportedExports.length}: ${importedExport.name} elapsed=${Date.now() - loopStartTime}ms`);
1211
1267
  debugLog(`Processing importedExport ${importedExportIndex}/${sortedImportedExports.length}`, {
1212
1268
  name: importedExport.name,
1213
1269
  filePath: importedExport.filePath,
@@ -1340,6 +1396,8 @@ export default async function writeScenarioComponents({ project, file, entity, r
1340
1396
  // e.g., if file has `export default X` but parent does `import { X } from '...'`
1341
1397
  const needsNamedReExport = importedExport.resolvedIsDefault === true &&
1342
1398
  importedExport.isDefault === false;
1399
+ console.log(`[WriteScenario] RECURSE START: ${entity.name} -> ${importedExportEntity.name}`);
1400
+ const recurseStartTime = Date.now();
1343
1401
  debugLog(`Recursing into writeScenarioComponents for ${importedExportEntity.name}`, {
1344
1402
  entityName: importedExportEntity.name,
1345
1403
  filePath: fileNotMocked.path,
@@ -1362,7 +1420,8 @@ export default async function writeScenarioComponents({ project, file, entity, r
1362
1420
  exportAsNamed: needsNamedReExport
1363
1421
  ? importedExport.name
1364
1422
  : undefined,
1365
- }), 60000);
1423
+ }), 180000);
1424
+ console.log(`[WriteScenario] RECURSE END: ${entity.name} -> ${importedExportEntity.name} took ${Date.now() - recurseStartTime}ms`);
1366
1425
  debugLog(`Completed recursive writeScenarioComponents for ${importedExportEntity.name}`);
1367
1426
  writtenScenarioComponents = updatedWrittenScenarioComponents;
1368
1427
  scenarioComponentPaths.push(...newScenarioComponentPaths);
@@ -1381,13 +1440,22 @@ export default async function writeScenarioComponents({ project, file, entity, r
1381
1440
  // Data and type entities should be preserved - they're not callable and may have methods
1382
1441
  // that stubbing would break (e.g., Zod schemas with .superRefine())
1383
1442
  const isDataEntity = entityType === 'data' || entityType === 'type';
1384
- // Heuristic: Zod schemas are often misclassified as 'library' but should be preserved
1385
- // Detect by: name starts with Z + uppercase letter, AND has Zod method calls
1386
- const looksLikeZodSchema = entityType === 'library' &&
1387
- /^Z[A-Z]/.test(importedExport.name) &&
1388
- importedExport.calls?.some((call) => /\.(superRefine|refine|transform|default|optional|nullable|array|object|string|number|boolean|parse|safeParse)\s*\(/.test(call));
1389
- // Callable entities can be safely stubbed (but not Zod schemas)
1390
- const isCallable = !isDataEntity && !looksLikeZodSchema && entityType !== undefined;
1443
+ // If calls data shows the entity is only accessed via properties/methods
1444
+ // (e.g., formValidator.validate(), schema.superRefine()) and never directly
1445
+ // invoked (e.g., getInitialProps()), it's used as an object and should be
1446
+ // preserved rather than replaced with a Proxy stub.
1447
+ const onlyPropertyAccessed = importedExport.calls?.length > 0 &&
1448
+ !importedExport.calls.some((call) => {
1449
+ const afterName = call.slice(importedExport.name.length);
1450
+ return afterName.startsWith('(') || afterName.startsWith('<');
1451
+ });
1452
+ // Callable entities can be safely stubbed. Entities that are only
1453
+ // property-accessed should be preserved (their methods need to work).
1454
+ // 'other' entities are unknown types — safer to preserve than stub.
1455
+ const isCallable = !isDataEntity &&
1456
+ !onlyPropertyAccessed &&
1457
+ entityType !== undefined &&
1458
+ entityType !== 'other';
1391
1459
  // Determine what action to take
1392
1460
  const shouldStripAndReplace = hasMock;
1393
1461
  const shouldStripAndStub = !hasMock && importedExport.isMocked && isCallable;
@@ -1624,6 +1692,9 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1624
1692
  }
1625
1693
  }
1626
1694
  }
1695
+ // Track post-import-loop timing
1696
+ const postLoopStartTime = Date.now();
1697
+ console.log(`[WriteScenario] POST-LOOP START: ${entity.name}`);
1627
1698
  // Collect universal mocks BEFORE processing nodeModuleImports
1628
1699
  // This is needed to check if a node module import is handled by a universal mock
1629
1700
  const universalMocks = project.metadata?.universalMocks ?? [];
@@ -1657,6 +1728,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1657
1728
  const importRegex = new RegExp(`(import\\s+(?:\\{[^}]*\\}|\\*\\s+as\\s+\\w+|\\w+)\\s+from\\s+)['"]${originalPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}['"]`, 'g');
1658
1729
  fileContent = fileContent.replace(importRegex, `$1'${mockFileRelativePath}'`);
1659
1730
  }
1731
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: node+universal mocks took ${Date.now() - postLoopStartTime}ms`);
1660
1732
  if (rootAnalysis.entitySha === entity.sha &&
1661
1733
  entity.metadata?.notExported &&
1662
1734
  entity.name !== 'default') {
@@ -1716,6 +1788,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1716
1788
  debugLog('Starting rewriteRelativeModuleImports');
1717
1789
  fileContent = rewriteRelativeModuleImports(fileContent, `${PROJECT_RELATIVE_PATH}/${file.path}`, scenarioComponentPath);
1718
1790
  debugLog('Completed rewriteRelativeModuleImports');
1791
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: transformations took ${Date.now() - postLoopStartTime}ms`);
1719
1792
  /**
1720
1793
  * Recursively process a file's imports to create transitive copies with server-only stripped.
1721
1794
  * This handles chains of arbitrary depth: A -> B -> C -> D where each needs server-only removed.
@@ -1729,12 +1802,14 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1729
1802
  */
1730
1803
  async function processTransitiveImportsRecursively(content, sourceFilePath, targetFilePath, visitedPaths = new Set(), depth = 0, startTime = Date.now()) {
1731
1804
  // Global timeout for entire transitive processing
1732
- const GLOBAL_TIMEOUT_MS = 60000; // 1 minute max for all transitive processing
1805
+ const GLOBAL_TIMEOUT_MS = 180000; // 3 minutes max for all transitive processing (complex components need more time)
1733
1806
  const elapsed = Date.now() - startTime;
1734
1807
  if (elapsed > GLOBAL_TIMEOUT_MS) {
1735
1808
  throw new Error(`processTransitiveImportsRecursively exceeded ${GLOBAL_TIMEOUT_MS}ms (elapsed: ${elapsed}ms) at depth=${depth} for ${sourceFilePath}`);
1736
1809
  }
1737
1810
  const importPaths = extractInternalImportPaths(content);
1811
+ // Always log to help debug timeout issues
1812
+ console.log(`[TransitiveImports] depth=${depth} file=${path.basename(sourceFilePath)} imports=${importPaths.length} visited=${visitedPaths.size} elapsed=${Date.now() - startTime}ms`);
1738
1813
  debugLog(`processTransitiveImportsRecursively depth=${depth}`, {
1739
1814
  sourceFilePath,
1740
1815
  importCount: importPaths.length,
@@ -1771,8 +1846,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1771
1846
  const basePath = safeFolder(importFile.path.split('/').slice(0, -1).join('/'));
1772
1847
  const extension = importFile.name.split('.').pop();
1773
1848
  const isIndex = isIndexPath(importFile.path);
1774
- const pathHash = safeFileName(importFile.path);
1775
- const transitiveFilePath = `${PROJECT_RELATIVE_PATH}/${basePath}/${pathHash}_${isIndex ? 'index_' : ''}transitive_${safeFileName(scenario.name)}.${extension}`;
1849
+ // Limit pathHash length to prevent ENAMETOOLONG errors on macOS (255 char limit)
1850
+ const pathHash = safeFileName(importFile.path, { maxLength: 80 });
1851
+ const scenarioSlug = safeFileName(scenario.name, { maxLength: 60 });
1852
+ const transitiveFilePath = `${PROJECT_RELATIVE_PATH}/${basePath}/${pathHash}_${isIndex ? 'index_' : ''}transitive_${scenarioSlug}.${extension}`;
1776
1853
  // Check if this is a circular import (we're already processing this file)
1777
1854
  const isCircularImport = visitedPaths.has(resolvedPath);
1778
1855
  // Check if already processed
@@ -1850,6 +1927,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1850
1927
  debugLog(`Returning from processTransitiveImportsRecursively depth=${depth}`);
1851
1928
  return modifiedContent;
1852
1929
  }
1930
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: before remaining imports ${Date.now() - postLoopStartTime}ms`);
1853
1931
  // Process remaining internal imports that weren't in importedExports
1854
1932
  // This handles transitive dependencies: when the file content includes code (e.g., from
1855
1933
  // other functions in the same file) that imports from files with "server-only"
@@ -1869,6 +1947,16 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1869
1947
  for (const importPath of remainingImportPaths) {
1870
1948
  remainingImportIndex++;
1871
1949
  debugLog(`[REMAINING LOOP] import ${remainingImportIndex}/${remainingImportPaths.length}: ${importPath}`);
1950
+ // Skip imports that point to generated CodeYam files (same skip logic as
1951
+ // rewriteRelativeModuleImports). Without this, MockData files from earlier
1952
+ // captures that get discovered by the TypeScript compiler would be treated as
1953
+ // regular imports, creating transitive copies with stale content.
1954
+ const scenarioFilePattern = /[a-f0-9]{64}_\w+_[A-Z]\w*$/;
1955
+ const mockDataPattern = /__codeyamMocks__\//;
1956
+ if (scenarioFilePattern.test(importPath) ||
1957
+ mockDataPattern.test(importPath)) {
1958
+ continue;
1959
+ }
1872
1960
  // Resolve the import path to a project file path
1873
1961
  const resolvedFilePath = resolveImportPath(importPath, file.path, project);
1874
1962
  if (!resolvedFilePath) {
@@ -1907,8 +1995,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1907
1995
  const targetFileBasePath = safeFolder(targetFile.path.split('/').slice(0, -1).join('/'));
1908
1996
  const targetFileExtension = targetFile.name.split('.').pop();
1909
1997
  const targetFileIsIndex = isIndexPath(targetFile.path);
1910
- const filePathHash = safeFileName(targetFile.path);
1911
- const transformedFilePath = `${PROJECT_RELATIVE_PATH}/${targetFileBasePath}/${filePathHash}_${targetFileIsIndex ? 'index_' : ''}transitive_${safeFileName(scenario.name)}.${targetFileExtension}`;
1998
+ // Limit path hash length to prevent ENAMETOOLONG errors
1999
+ const filePathHash = safeFileName(targetFile.path, { maxLength: 80 });
2000
+ const targetScenarioSlug = safeFileName(scenario.name, { maxLength: 60 });
2001
+ const transformedFilePath = `${PROJECT_RELATIVE_PATH}/${targetFileBasePath}/${filePathHash}_${targetFileIsIndex ? 'index_' : ''}transitive_${targetScenarioSlug}.${targetFileExtension}`;
1912
2002
  // Check if we've already processed this file as a transitive copy
1913
2003
  // Note: __data_file_written__ is for entity-specific scenario files with different naming,
1914
2004
  // but we still need transitive copies for server-only stripping. Data entity files may
@@ -1947,8 +2037,12 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1947
2037
  const nestedBasePath = safeFolder(nestedFile.path.split('/').slice(0, -1).join('/'));
1948
2038
  const nestedExtension = nestedFile.name.split('.').pop();
1949
2039
  const nestedIsIndex = isIndexPath(nestedFile.path);
1950
- const nestedPathHash = safeFileName(nestedFile.path);
1951
- const nestedTransformedPath = `${PROJECT_RELATIVE_PATH}/${nestedBasePath}/${nestedPathHash}_${nestedIsIndex ? 'index_' : ''}transitive_${safeFileName(scenario.name)}.${nestedExtension}`;
2040
+ // Limit path hash length to prevent ENAMETOOLONG errors
2041
+ const nestedPathHash = safeFileName(nestedFile.path, { maxLength: 80 });
2042
+ const nestedScenarioSlug = safeFileName(scenario.name, {
2043
+ maxLength: 60,
2044
+ });
2045
+ const nestedTransformedPath = `${PROJECT_RELATIVE_PATH}/${nestedBasePath}/${nestedPathHash}_${nestedIsIndex ? 'index_' : ''}transitive_${nestedScenarioSlug}.${nestedExtension}`;
1952
2046
  // Check if already processed as a transitive file (we can rewrite to point to it)
1953
2047
  // Note: __data_file_written__ is for entity-specific scenario files with different naming,
1954
2048
  // but we still need transitive copies for server-only stripping in the import chain
@@ -2014,6 +2108,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2014
2108
  const importRegex = new RegExp(`(from\\s*["'])${escapedImportPath}(["'])`, 'g');
2015
2109
  fileContent = fileContent.replace(importRegex, `$1${safeRelativePath}$2`);
2016
2110
  }
2111
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: remaining imports loop took ${Date.now() - postLoopStartTime}ms`);
2017
2112
  const scenarioComponentComment = `// This file is auto-generated by CodeYam. Do not edit this file manually.
2018
2113
  // This file contains content for a scenario component:
2019
2114
  // Analyses being written: ${JSON.stringify(fileAnalyses?.map((a) => ({ id: a.id, entityName: a.entityName })))}
@@ -2024,6 +2119,53 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2024
2119
  // Entity: ${rootAnalysis.entitySha} ${rootAnalysis.entityName}
2025
2120
  // Scenario: ${scenario.id} - ${scenario.name}
2026
2121
  `;
2122
+ // Final pass: Rename any namespace imports (import * as X from '...') that have
2123
+ // corresponding mock code using ...X__cyOriginal spread pattern.
2124
+ // This handles cases where:
2125
+ // 1. The import path was rewritten by transitive import handling
2126
+ // 2. The import wasn't caught by the earlier renaming logic
2127
+ // We scan for all __cyOriginal references in the mock code and ensure the imports are renamed.
2128
+ const cyOriginalReferences = fileContent.match(/\.\.\.(\w+)__cyOriginal/g);
2129
+ if (cyOriginalReferences) {
2130
+ const uniqueNames = [
2131
+ ...new Set(cyOriginalReferences.map((ref) => ref.replace('...', '').replace('__cyOriginal', ''))),
2132
+ ];
2133
+ for (const name of uniqueNames) {
2134
+ // Match namespace imports for this name that haven't been renamed yet
2135
+ const namespaceImportRegex = new RegExp(`(import\\s+\\*\\s+as\\s+)${escapeRegExp(name)}(\\s+from\\s+['"][^'"]*['"])`, 'g');
2136
+ fileContent = fileContent.replace(namespaceImportRegex, `$1${name}__cyOriginal$2`);
2137
+ }
2138
+ }
2139
+ // For route components (page.tsx, layout.tsx), the component IS the Next.js page.
2140
+ // There's no wrapper page to inject argumentsData as props (unlike non-route components
2141
+ // which get a scenarioComponent wrapper). We need to wrap the default export so that
2142
+ // the scenario's argumentsData is passed as props to the component.
2143
+ if (isFrameworkRoute(file, entity, framework, file === rootFile) &&
2144
+ rootAnalysis.metadata?.scenariosDataStructure?.arguments?.length > 0) {
2145
+ const positionalArguments = rootAnalysis.metadata.scenariosDataStructure.arguments;
2146
+ const hasNamedArgs = positionalArguments.length === 1 &&
2147
+ typeof positionalArguments[0] === 'object';
2148
+ if (hasNamedArgs) {
2149
+ // Match: export default function Name(
2150
+ // Also: export default async function Name(
2151
+ const defaultExportMatch = fileContent.match(/export\s+default\s+(async\s+)?function\s+(\w+)\s*\(/);
2152
+ if (defaultExportMatch) {
2153
+ const funcName = defaultExportMatch[2];
2154
+ // Remove "export default" from the original function declaration
2155
+ fileContent = fileContent.replace(/export\s+default\s+(async\s+)?function\s+(\w+)\s*\(/, '$1function $2(');
2156
+ // Ensure scenarios import is present
2157
+ const mockDataPath = `${relativeMocksDir}/MockData_${safeFileName(scenario.name)}`;
2158
+ if (fileContent.indexOf('import { scenarios } from') === -1) {
2159
+ fileContent = `import { scenarios } from "${mockDataPath}";\n\n${fileContent}`;
2160
+ }
2161
+ // Add wrapper default export that injects argumentsData as props
2162
+ fileContent += `\n\nexport default function _CYRouteWrapper(props: any) {
2163
+ const _cyArgs = scenarios().data()?.['arguments']?.[0] ?? {};
2164
+ return <${funcName} {...props} {..._cyArgs} />;
2165
+ }\n`;
2166
+ }
2167
+ }
2168
+ }
2027
2169
  // Use the directive that was extracted at the beginning of processing
2028
2170
  // This ensures it stays at the very top even after imports are prepended
2029
2171
  // NOTE: We only preserve "use client" directives, NOT "use server" directives.
@@ -2044,6 +2186,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2044
2186
  await writeFile(scenarioComponentPath, finalContent);
2045
2187
  debugLog('Successfully wrote scenario file');
2046
2188
  scenarioComponentPaths.push(scenarioComponentPath);
2189
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: COMPLETE total=${Date.now() - postLoopStartTime}ms`);
2047
2190
  return { scenarioComponentPaths, writtenScenarioComponents };
2048
2191
  }
2049
2192
  //# sourceMappingURL=writeScenarioComponents.js.map