@codeyam/codeyam-cli 0.1.0-staging.76566f9 → 0.1.0-staging.790201e

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 (959) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +24 -21
  5. package/analyzer-template/packages/ai/index.ts +21 -5
  6. package/analyzer-template/packages/ai/package.json +3 -3
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  9. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +183 -10
  11. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  16. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  17. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1229 -30
  18. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  19. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  20. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  21. package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +2000 -341
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +296 -35
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +129 -20
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  34. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  35. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  36. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  37. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  38. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  39. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  40. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  41. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +33 -7
  42. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
  43. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  44. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1385 -67
  45. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  46. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +710 -0
  47. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  48. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  49. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  50. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  51. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  52. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  53. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  63. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  64. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  65. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  66. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  67. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  68. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  69. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  70. package/analyzer-template/packages/analyze/index.ts +2 -0
  71. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
  72. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  73. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  74. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  75. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  76. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  77. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  78. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  79. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  80. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  81. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  82. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  83. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +467 -283
  84. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +34 -1
  85. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  86. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  87. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  88. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  89. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  90. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  91. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  92. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  93. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  94. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +201 -46
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +304 -66
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +306 -20
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
  102. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +1 -0
  103. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  104. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +825 -71
  105. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  106. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  107. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  108. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  109. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  110. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  111. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  112. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  113. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  114. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  115. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  116. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  117. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  118. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  119. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  120. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  121. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  122. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  123. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  124. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  125. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  126. package/analyzer-template/packages/aws/package.json +10 -10
  127. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  128. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  129. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  130. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  131. package/analyzer-template/packages/database/package.json +1 -1
  132. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  133. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  134. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  135. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  136. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  137. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  138. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  139. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  140. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  141. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  142. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  143. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  144. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  145. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  146. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  147. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  148. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  149. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  150. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  151. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  152. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  153. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  154. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  155. package/analyzer-template/packages/generate/index.ts +3 -0
  156. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  157. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  158. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  159. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  160. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  163. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  166. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  167. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  168. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  169. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  170. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  171. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  172. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  173. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  175. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  176. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  177. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  178. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  179. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  181. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  182. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  184. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  186. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  187. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  188. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  189. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  190. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  191. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
  192. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  193. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  194. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  195. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  196. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  197. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  198. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  199. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  200. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  201. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  202. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  203. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  204. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  205. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  206. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  207. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  208. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  209. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  210. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  211. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  212. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  213. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  214. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  215. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  216. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  217. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  218. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  219. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  220. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  221. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  222. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  223. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  224. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  225. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  226. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  227. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  228. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  229. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  230. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  231. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  232. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  233. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  234. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  235. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  236. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  237. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  238. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  239. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  240. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  241. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  242. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  243. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  244. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  245. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  246. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  247. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  248. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  249. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  250. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  251. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  252. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  253. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  254. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  255. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  256. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  257. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  258. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  259. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  260. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  261. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  262. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  263. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  264. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  265. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  266. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +9 -54
  267. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  268. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  269. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  270. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  271. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  272. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  273. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  274. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  275. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  276. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  277. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  278. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  279. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  280. package/analyzer-template/packages/github/package.json +1 -1
  281. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  282. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  283. package/analyzer-template/packages/process/index.ts +2 -0
  284. package/analyzer-template/packages/process/package.json +12 -0
  285. package/analyzer-template/packages/process/tsconfig.json +8 -0
  286. package/analyzer-template/packages/types/index.ts +3 -6
  287. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  288. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  289. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  290. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  291. package/analyzer-template/packages/types/src/types/Scenario.ts +9 -77
  292. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  293. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  294. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  295. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  296. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  297. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  298. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  299. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  300. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  301. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  302. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  303. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  304. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  305. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  306. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  307. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +9 -54
  308. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  309. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  310. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  311. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  312. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  313. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  314. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  315. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  316. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  317. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  318. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  319. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  320. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  321. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  322. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  323. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  324. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  325. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  326. package/analyzer-template/playwright/capture.ts +57 -26
  327. package/analyzer-template/playwright/captureStatic.ts +1 -1
  328. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  329. package/analyzer-template/playwright/waitForServer.ts +21 -6
  330. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  331. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  332. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  333. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  334. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  335. package/analyzer-template/project/constructMockCode.ts +1037 -111
  336. package/analyzer-template/project/controller/startController.ts +16 -1
  337. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  338. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  339. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  340. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  341. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  342. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  343. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  344. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  345. package/analyzer-template/project/orchestrateCapture.ts +85 -10
  346. package/analyzer-template/project/reconcileMockDataKeys.ts +240 -0
  347. package/analyzer-template/project/runAnalysis.ts +11 -0
  348. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  349. package/analyzer-template/project/start.ts +51 -15
  350. package/analyzer-template/project/startScenarioCapture.ts +6 -0
  351. package/analyzer-template/project/writeMockDataTsx.ts +298 -11
  352. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  353. package/analyzer-template/project/writeScenarioComponents.ts +388 -54
  354. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  355. package/analyzer-template/project/writeSimpleRoot.ts +23 -13
  356. package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
  357. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  358. package/analyzer-template/tsconfig.json +2 -1
  359. package/background/src/lib/local/createLocalAnalyzer.js +2 -30
  360. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  361. package/background/src/lib/local/execAsync.js +1 -1
  362. package/background/src/lib/local/execAsync.js.map +1 -1
  363. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  364. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  365. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  366. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  367. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  368. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  369. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  370. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  371. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  372. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  373. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  374. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  375. package/background/src/lib/virtualized/project/constructMockCode.js +908 -75
  376. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  377. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  378. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  379. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  380. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  381. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  382. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  383. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  384. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  385. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  386. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  387. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  388. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  389. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  390. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  391. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  392. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  393. package/background/src/lib/virtualized/project/orchestrateCapture.js +69 -11
  394. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  395. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +199 -0
  396. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  397. package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
  398. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  399. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  400. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  401. package/background/src/lib/virtualized/project/start.js +47 -15
  402. package/background/src/lib/virtualized/project/start.js.map +1 -1
  403. package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
  404. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  405. package/background/src/lib/virtualized/project/writeMockDataTsx.js +255 -8
  406. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  407. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  408. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  409. package/background/src/lib/virtualized/project/writeScenarioComponents.js +301 -48
  410. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  411. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  412. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  413. package/background/src/lib/virtualized/project/writeSimpleRoot.js +23 -13
  414. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  415. package/codeyam-cli/scripts/apply-setup.js +180 -0
  416. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  417. package/codeyam-cli/src/cli.js +37 -18
  418. package/codeyam-cli/src/cli.js.map +1 -1
  419. package/codeyam-cli/src/codeyam-cli.js +18 -2
  420. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  421. package/codeyam-cli/src/commands/analyze.js +5 -3
  422. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  423. package/codeyam-cli/src/commands/baseline.js +176 -0
  424. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  425. package/codeyam-cli/src/commands/debug.js +37 -23
  426. package/codeyam-cli/src/commands/debug.js.map +1 -1
  427. package/codeyam-cli/src/commands/default.js +30 -34
  428. package/codeyam-cli/src/commands/default.js.map +1 -1
  429. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  430. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  431. package/codeyam-cli/src/commands/init.js +49 -257
  432. package/codeyam-cli/src/commands/init.js.map +1 -1
  433. package/codeyam-cli/src/commands/memory.js +307 -0
  434. package/codeyam-cli/src/commands/memory.js.map +1 -0
  435. package/codeyam-cli/src/commands/recapture.js +31 -18
  436. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  437. package/codeyam-cli/src/commands/report.js +46 -1
  438. package/codeyam-cli/src/commands/report.js.map +1 -1
  439. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  440. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  441. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  442. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  443. package/codeyam-cli/src/commands/start.js +8 -12
  444. package/codeyam-cli/src/commands/start.js.map +1 -1
  445. package/codeyam-cli/src/commands/status.js +23 -1
  446. package/codeyam-cli/src/commands/status.js.map +1 -1
  447. package/codeyam-cli/src/commands/test-startup.js +3 -1
  448. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  449. package/codeyam-cli/src/commands/verify.js +14 -2
  450. package/codeyam-cli/src/commands/verify.js.map +1 -1
  451. package/codeyam-cli/src/commands/wipe.js +108 -0
  452. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  453. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  454. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  455. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  456. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  457. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  458. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  459. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  460. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  461. package/codeyam-cli/src/utils/analyzer.js +7 -0
  462. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  463. package/codeyam-cli/src/utils/backgroundServer.js +102 -21
  464. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  465. package/codeyam-cli/src/utils/database.js +91 -5
  466. package/codeyam-cli/src/utils/database.js.map +1 -1
  467. package/codeyam-cli/src/utils/generateReport.js +4 -3
  468. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  469. package/codeyam-cli/src/utils/git.js +79 -0
  470. package/codeyam-cli/src/utils/git.js.map +1 -0
  471. package/codeyam-cli/src/utils/install-skills.js +76 -37
  472. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  473. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  474. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  475. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  476. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  477. package/codeyam-cli/src/utils/progress.js +7 -0
  478. package/codeyam-cli/src/utils/progress.js.map +1 -1
  479. package/codeyam-cli/src/utils/queue/job.js +109 -0
  480. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  481. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  482. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  483. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  484. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  485. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  486. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  487. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  488. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  489. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  490. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  491. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  492. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  493. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  494. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  495. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  496. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  497. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  498. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  499. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  500. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  501. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  502. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +116 -0
  503. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  504. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  505. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  506. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  507. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  508. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  509. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  510. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  511. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  512. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  513. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  514. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  515. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  516. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  517. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  518. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  519. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  520. package/codeyam-cli/src/utils/rules/index.js +6 -0
  521. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  522. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  523. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  524. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  525. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  526. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  527. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  528. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  529. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  530. package/codeyam-cli/src/utils/serverState.js +37 -10
  531. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  532. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  533. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  534. package/codeyam-cli/src/utils/simulationGateMiddleware.js +138 -0
  535. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  536. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  537. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  538. package/codeyam-cli/src/utils/versionInfo.js +67 -15
  539. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  540. package/codeyam-cli/src/utils/wipe.js +128 -0
  541. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  542. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  543. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  544. package/codeyam-cli/src/webserver/app/lib/database.js +88 -23
  545. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  546. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  547. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  548. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  549. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  550. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  551. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  552. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
  553. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  554. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BH0XDim7.js +41 -0
  555. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +34 -0
  556. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +25 -0
  557. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  558. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-BvMu2i-g.js} +1 -1
  559. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-kgBTLoJD.js} +1 -1
  560. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
  561. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  562. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BX2Ny2Qj.js +10 -0
  563. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  564. package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
  565. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
  566. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  567. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  568. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  569. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  570. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  571. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-CG65viiV.js} +1 -1
  572. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-DB3aFuEO.js +51 -0
  573. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-igfMr5DY.js} +1 -1
  574. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  575. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-D1zB-pYc.js} +1 -1
  576. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  577. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  578. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
  579. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Dt-SjPsw.js → entity._sha._-B0h9AqE6.js} +12 -12
  580. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +6 -0
  581. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +6 -0
  582. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  583. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-I-Wo99C_.js} +6 -6
  584. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  585. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  586. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
  587. package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-BdHOxVfg.js} +8 -8
  588. package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +1 -0
  589. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-CUM5iXwc.js} +1 -1
  590. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-_417gcQW.js} +1 -1
  591. package/codeyam-cli/src/webserver/build/client/assets/labs-DAvt-sy-.js +1 -0
  592. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-TzRHMVog.js} +1 -1
  593. package/codeyam-cli/src/webserver/build/client/assets/manifest-6947409c.js +1 -0
  594. package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +92 -0
  595. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  596. package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +62 -0
  597. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-DcAwD_Ln.js} +1 -1
  598. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  599. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +1 -0
  600. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  601. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-CAD5b1o_.js} +1 -1
  602. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +1 -0
  603. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-DAFqfEDH.js} +1 -1
  604. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +1 -0
  605. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-ihdMtlf6.js} +1 -1
  606. package/codeyam-cli/src/webserver/build/server/assets/index-mgnAFRsm.js +1 -0
  607. package/codeyam-cli/src/webserver/build/server/assets/server-build-YljqAnWW.js +273 -0
  608. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  609. package/codeyam-cli/src/webserver/build-info.json +5 -5
  610. package/codeyam-cli/src/webserver/server.js +35 -25
  611. package/codeyam-cli/src/webserver/server.js.map +1 -1
  612. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam-debug.md} +48 -4
  613. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  614. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  615. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  616. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  617. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam-setup.md} +13 -1
  618. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam-sim.md} +1 -1
  619. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam-test.md} +1 -1
  620. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam-verify.md} +1 -1
  621. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  622. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  623. package/codeyam-cli/templates/rules-instructions.md +132 -0
  624. package/package.json +20 -17
  625. package/packages/ai/index.js +8 -6
  626. package/packages/ai/index.js.map +1 -1
  627. package/packages/ai/src/lib/analyzeScope.js +179 -13
  628. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  629. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  630. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  631. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +138 -9
  632. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  633. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  634. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  635. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  636. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  637. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  638. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  639. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  640. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  641. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  642. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  643. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  644. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  645. package/packages/ai/src/lib/astScopes/processExpression.js +944 -30
  646. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  647. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  648. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  649. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  650. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  651. package/packages/ai/src/lib/completionCall.js +178 -31
  652. package/packages/ai/src/lib/completionCall.js.map +1 -1
  653. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1579 -189
  654. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  655. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  656. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  657. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +230 -23
  658. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  659. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  660. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  661. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  662. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  663. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  664. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  665. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  666. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  667. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +111 -14
  668. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  669. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  670. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  671. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  672. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  673. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  674. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  675. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  676. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  677. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  678. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  679. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  680. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  681. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  682. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  683. package/packages/ai/src/lib/deepEqual.js +32 -0
  684. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  685. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  686. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  687. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  688. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  689. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +21 -5
  690. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  691. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  692. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  693. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  694. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  695. package/packages/ai/src/lib/generateEntityScenarioData.js +1101 -62
  696. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  697. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  698. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  699. package/packages/ai/src/lib/generateExecutionFlows.js +495 -0
  700. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  701. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  702. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  703. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  704. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  705. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  706. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  707. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  708. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  709. package/packages/ai/src/lib/isolateScopes.js +270 -7
  710. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  711. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  712. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  713. package/packages/ai/src/lib/mergeStatements.js +88 -46
  714. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  715. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  716. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  717. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  718. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  719. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  720. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  721. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
  722. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  723. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  724. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  725. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  726. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  727. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  728. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  729. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  730. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  731. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  732. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  733. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  734. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  735. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  736. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  737. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  738. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  739. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  740. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  741. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  742. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  743. package/packages/analyze/index.js +1 -0
  744. package/packages/analyze/index.js.map +1 -1
  745. package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
  746. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  747. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  748. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  749. package/packages/analyze/src/lib/analysisContext.js +30 -5
  750. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  751. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  752. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  753. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  754. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  755. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  756. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  757. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  758. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  759. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  760. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  761. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  762. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  763. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  764. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  765. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  766. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  767. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  768. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  769. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +206 -57
  770. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  771. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -1
  772. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  773. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  774. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  775. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  776. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  777. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  778. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  779. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  780. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  781. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  782. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  783. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  784. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  785. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  786. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  787. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  788. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  789. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  790. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  791. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  792. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  793. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  794. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  795. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +170 -40
  796. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  797. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  798. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  799. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +253 -42
  800. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  801. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  802. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  803. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +218 -20
  804. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  805. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
  806. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  807. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +1 -0
  808. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  809. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  810. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  811. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +670 -53
  812. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  813. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  814. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  815. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  816. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  817. package/packages/analyze/src/lib/index.js +1 -0
  818. package/packages/analyze/src/lib/index.js.map +1 -1
  819. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  820. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  821. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  822. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  823. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  824. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  825. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  826. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  827. package/packages/database/src/lib/analysisToDb.js +1 -1
  828. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  829. package/packages/database/src/lib/branchToDb.js +1 -1
  830. package/packages/database/src/lib/branchToDb.js.map +1 -1
  831. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  832. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  833. package/packages/database/src/lib/commitToDb.js +1 -1
  834. package/packages/database/src/lib/commitToDb.js.map +1 -1
  835. package/packages/database/src/lib/fileToDb.js +1 -1
  836. package/packages/database/src/lib/fileToDb.js.map +1 -1
  837. package/packages/database/src/lib/kysely/db.js +11 -1
  838. package/packages/database/src/lib/kysely/db.js.map +1 -1
  839. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  840. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  841. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  842. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  843. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  844. package/packages/database/src/lib/loadAnalyses.js +45 -2
  845. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  846. package/packages/database/src/lib/loadAnalysis.js +8 -0
  847. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  848. package/packages/database/src/lib/loadBranch.js +11 -1
  849. package/packages/database/src/lib/loadBranch.js.map +1 -1
  850. package/packages/database/src/lib/loadCommit.js +7 -0
  851. package/packages/database/src/lib/loadCommit.js.map +1 -1
  852. package/packages/database/src/lib/loadCommits.js +22 -1
  853. package/packages/database/src/lib/loadCommits.js.map +1 -1
  854. package/packages/database/src/lib/loadEntities.js +23 -4
  855. package/packages/database/src/lib/loadEntities.js.map +1 -1
  856. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  857. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  858. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  859. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  860. package/packages/database/src/lib/projectToDb.js +1 -1
  861. package/packages/database/src/lib/projectToDb.js.map +1 -1
  862. package/packages/database/src/lib/saveFiles.js +1 -1
  863. package/packages/database/src/lib/saveFiles.js.map +1 -1
  864. package/packages/database/src/lib/scenarioToDb.js +1 -1
  865. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  866. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  867. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  868. package/packages/generate/index.js +3 -0
  869. package/packages/generate/index.js.map +1 -1
  870. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  871. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  872. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  873. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  874. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  875. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  876. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  877. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  878. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  879. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  880. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  881. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  882. package/packages/process/index.js +3 -0
  883. package/packages/process/index.js.map +1 -0
  884. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  885. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  886. package/packages/process/src/ProcessManager.js.map +1 -0
  887. package/packages/process/src/index.js.map +1 -0
  888. package/packages/process/src/managedExecAsync.js.map +1 -0
  889. package/packages/types/index.js +0 -1
  890. package/packages/types/index.js.map +1 -1
  891. package/packages/types/src/types/Scenario.js +1 -21
  892. package/packages/types/src/types/Scenario.js.map +1 -1
  893. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  894. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  895. package/packages/utils/src/lib/safeFileName.js +29 -3
  896. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  897. package/scripts/finalize-analyzer.cjs +8 -76
  898. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  899. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
  900. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
  901. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  902. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  903. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  904. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  905. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  906. package/analyzer-template/process/README.md +0 -507
  907. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  908. package/background/src/lib/process/ProcessManager.js.map +0 -1
  909. package/background/src/lib/process/index.js.map +0 -1
  910. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  911. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
  912. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
  913. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
  914. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
  915. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  916. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  917. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CVP_WGQ3.js +0 -32
  918. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  919. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  920. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
  921. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  922. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
  923. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
  924. package/codeyam-cli/src/webserver/build/client/assets/globals-C9s7Lhdl.css +0 -1
  925. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  926. package/codeyam-cli/src/webserver/build/client/assets/manifest-0d27da29.js +0 -1
  927. package/codeyam-cli/src/webserver/build/client/assets/root-B_wIKCIf.js +0 -56
  928. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
  929. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  930. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
  931. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
  932. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
  933. package/codeyam-cli/src/webserver/build/server/assets/index-CU58-Ttc.js +0 -1
  934. package/codeyam-cli/src/webserver/build/server/assets/server-build-D35o2uae.js +0 -175
  935. package/codeyam-cli/templates/debug-codeyam.md +0 -625
  936. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  937. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  938. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -298
  939. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  940. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
  941. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  942. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  943. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  944. package/packages/ai/src/lib/isFrontend.js +0 -5
  945. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  946. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  947. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  948. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  949. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  950. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  951. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  952. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  953. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  954. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  955. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
  956. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.labs-unlock-l0sNRNKZ.js} +0 -0
  957. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  958. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  959. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -596,10 +596,38 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
596
596
  }
597
597
  // Check if we have multiple calls with different variable names
598
598
  // This requires generating separate mock functions for each call site
599
- const hasMultipleCallsWithVariables = importedExport.calls &&
600
- importedExport.calls.length > 1 &&
599
+ //
600
+ // IMPORTANT: calls array may contain BOTH base hook calls (e.g., "useFetcher<Type>()")
601
+ // AND method chain usages (e.g., "useFetcher().functionCallReturnValue.submit(...)").
602
+ // We only want to count base hook calls for the length comparison with callVariableNames.
603
+ // A "base call" is one that ends with "()" possibly preceded by a type annotation,
604
+ // without any subsequent method chains like ".functionCallReturnValue" or ".submit(...)".
605
+ const baseHookCalls = importedExport.calls?.filter((call) => {
606
+ // Base hook calls match patterns like:
607
+ // - "useFetcher()"
608
+ // - "useFetcher<Type>()"
609
+ // - "useFetcher<{ complex: Type }>()"
610
+ // They end with "()" and don't have method chains after the call.
611
+ // Method chains contain ".functionCallReturnValue" or have property access after "()".
612
+ return (call.endsWith('()') &&
613
+ !call.includes('.functionCallReturnValue') &&
614
+ // Also exclude method chains like "hook().something" or "hook().method()"
615
+ !call.match(/\(\)\.[a-zA-Z]/));
616
+ });
617
+ // Determine if we can generate unique mock functions for multiple variables.
618
+ // We need:
619
+ // 1. Multiple variable names (callVariableNames.length > 1)
620
+ // 2. Base hook calls to match them (baseHookCalls.length > 0)
621
+ // Note: We use min(baseHookCalls.length, callVariableNames.length) for iteration
622
+ // to handle cases where data might be slightly out of sync (stale entries).
623
+ const hasMultipleCallsWithVariables = baseHookCalls &&
624
+ baseHookCalls.length > 1 &&
601
625
  importedExport.callVariableNames &&
602
- importedExport.callVariableNames.length === importedExport.calls.length;
626
+ importedExport.callVariableNames.length > 1 &&
627
+ // Only proceed if we have at least as many base calls as variable names,
628
+ // OR they're close enough (within 1) to handle minor sync issues
629
+ Math.abs(baseHookCalls.length - importedExport.callVariableNames.length) <=
630
+ 1;
603
631
  let mockCode;
604
632
  const variableMockCodes = [];
605
633
  if (hasMultipleCallsWithVariables) {
@@ -617,7 +645,10 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
617
645
  : [];
618
646
  // Track variable name occurrences for unique function naming
619
647
  const variableNameCounts = {};
620
- for (let i = 0; i < importedExport.calls.length; i++) {
648
+ // Use the minimum of both array lengths to handle slight mismatches
649
+ // (e.g., stale data from previous analysis runs)
650
+ const iterationLimit = Math.min(baseHookCalls.length, importedExport.callVariableNames.length);
651
+ for (let i = 0; i < iterationLimit; i++) {
621
652
  const variableName = importedExport.callVariableNames[i];
622
653
  if (!variableName)
623
654
  continue;
@@ -632,14 +663,21 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
632
663
  // Compute unique mock function name for call site replacement
633
664
  // e.g., useFetcher_entityDiffFetcher, useFetcher_reportFetcher
634
665
  const mockFunctionName = `${importedExport.name}_${safeFunctionName}`;
635
- // Use the call signature from importedExport.calls[i] as the data key
666
+ // Use the call signature from baseHookCalls[i] as the data key
636
667
  // This matches what's stored in dataForMocks
637
- const callSignature = importedExport.calls[i];
668
+ const callSignature = baseHookCalls[i];
638
669
  // Generate mock code using the call signature directly
639
670
  // This prevents "symbol already declared" errors when multiple calls exist
671
+ // Check if this is a package import that won't have scenario copies
672
+ const isPackageImportForMock = importPath?.startsWith('@');
640
673
  const variableMockCode = constructMockCode(callSignature, // Use call signature format for data lookup
641
674
  dependencySchemas, importedExport.entityType, undefined, // No need for separate canonical key
642
- { uniqueFunctionSuffix: safeFunctionName });
675
+ {
676
+ uniqueFunctionSuffix: safeFunctionName, // Use variable name for unique function naming
677
+ // For node_modules or package imports, skip spreading from __cyOriginal
678
+ // since those packages/files don't export *__cyOriginal variants
679
+ skipOriginalSpread: importedExport.isNodeModule || isPackageImportForMock,
680
+ });
643
681
  if (variableMockCode) {
644
682
  variableMockCodes.push(variableMockCode);
645
683
  // Replace the call site with the variable-specific mock function
@@ -647,8 +685,17 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
647
685
  // e.g., useFetcher() -> useFetcher_reportFetcher()
648
686
  // Escape special regex characters in the call signature
649
687
  const escapedCallSignature = callSignature.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
650
- // Create regex that matches the call (with optional whitespace variations)
651
- 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');
652
699
  fileContent = fileContent.replace(callRegex, `${mockFunctionName}()`);
653
700
  }
654
701
  }
@@ -666,37 +713,87 @@ function addMockToContent(fileContent, importedExport, fileAnalyses, rootAnalysi
666
713
  // For single variable assignments, use the call signature directly from dataForMocks
667
714
  const dataForMocks = rootAnalysis.metadata?.scenariosDataStructure?.dataForMocks;
668
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.
669
719
  const hookBaseName = importedExport.name.split(/[<(]/)[0];
670
- const callSignatureKey = dataForMocks
671
- ? Object.keys(dataForMocks).find((key) => {
672
- const keyBaseName = key.split(/[<(]/)[0];
673
- return keyBaseName === hookBaseName;
674
- })
675
- : 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
+ }
676
738
  // Use the call signature if found, otherwise construct it
677
739
  const dataKey = callSignatureKey ??
678
740
  importedExport.calls?.[0] ??
679
741
  `${importedExport.name}()`;
742
+ // IMPORTANT: If the dataKey is a method chain (e.g., "trpc.useUtils()"), we should
743
+ // use the base name (e.g., "trpc") when calling constructMockCode. This ensures
744
+ // constructMockCode generates a complete nested mock from the schema without
745
+ // referencing __cyOriginal variables.
746
+ const dataKeyBaseName = dataKey.split(/[.<(]/)[0];
747
+ const isMethodChainDataKey = dataKeyBaseName === importedExport.name &&
748
+ dataKey !== importedExport.name &&
749
+ dataKey.includes('.');
750
+ const mockNameToUse = isMethodChainDataKey
751
+ ? importedExport.name
752
+ : dataKey;
680
753
  // Keep the original function name since there's only one call
681
- mockCode = constructMockCode(dataKey, // Use call signature format
682
- dependencySchemas, importedExport.entityType, undefined, { keepOriginalFunctionName: true });
754
+ // Check if this is a package import that won't have scenario copies
755
+ const isPackageImportForSingleCall = importPath?.startsWith('@');
756
+ mockCode = constructMockCode(mockNameToUse, dependencySchemas, importedExport.entityType, undefined, {
757
+ keepOriginalFunctionName: true,
758
+ // For node_modules or package imports, skip spreading from __cyOriginal
759
+ // since those packages/files don't export *__cyOriginal variants
760
+ skipOriginalSpread: importedExport.isNodeModule || isPackageImportForSingleCall,
761
+ });
683
762
  // If constructMockCode didn't generate code, fall back to simple return
763
+ // IMPORTANT: We inline scenarios().data() inside the function rather than
764
+ // storing in a const - see comment in constructMockCode.ts for why.
684
765
  if (!mockCode) {
685
- mockCode = `const ${importedExport.name}ReturnValue = scenarios().data()?.["${dataKey}"];
686
-
687
- function ${importedExport.name}() {
688
- return ${importedExport.name}ReturnValue;
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;
689
775
  }`;
690
776
  }
691
777
  }
692
778
  else {
693
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.
694
782
  const hookBaseName = importedExport.name.split(/[<(]/)[0];
783
+ const expectedKey = importedExport.calls?.[0];
695
784
  const findMatchingKey = (dataForMocks) => {
696
785
  if (!dataForMocks)
697
786
  return undefined;
698
- return Object.keys(dataForMocks).find((key) => {
699
- const keyBaseName = key.split(/[<(]/)[0];
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) => {
794
+ // Split on ., <, or ( to get the true base name
795
+ // This handles both "useFlags()" -> "useFlags" and "trpc.useUtils()" -> "trpc"
796
+ const keyBaseName = key.split(/[.<(]/)[0];
700
797
  return keyBaseName === hookBaseName;
701
798
  });
702
799
  };
@@ -712,15 +809,40 @@ function ${importedExport.name}() {
712
809
  break;
713
810
  }
714
811
  }
715
- // Use the data key if found, otherwise use call signature or function name
716
- const mockNameToUse = dataKey ?? importedExport.calls?.[0] ?? `${importedExport.name}()`;
717
- mockCode = constructMockCode(mockNameToUse, dependencySchemas, importedExport.entityType, undefined, { keepOriginalFunctionName: true });
812
+ // Use the data key if found, otherwise use call signature or function name.
813
+ // IMPORTANT: If the dataKey is a method chain (e.g., "trpc.useUtils()"), we should
814
+ // use the base name (e.g., "trpc") when calling constructMockCode. This ensures
815
+ // constructMockCode generates a complete nested mock from the schema without
816
+ // referencing __cyOriginal variables. The __cyOriginal pattern is only needed
817
+ // for partial mocking where we preserve some original methods, not for complete
818
+ // method-chain mocks where we provide all implementations.
819
+ const dataKeyBaseName = dataKey?.split(/[.<(]/)[0];
820
+ const isMethodChainDataKey = dataKey &&
821
+ dataKeyBaseName === importedExport.name &&
822
+ dataKey !== importedExport.name &&
823
+ dataKey.includes('.');
824
+ const mockNameToUse = isMethodChainDataKey
825
+ ? importedExport.name
826
+ : (dataKey ?? importedExport.calls?.[0] ?? `${importedExport.name}()`);
827
+ mockCode = constructMockCode(mockNameToUse, dependencySchemas, importedExport.entityType, undefined, {
828
+ keepOriginalFunctionName: true,
829
+ // For node_modules or package imports, skip spreading from __cyOriginal
830
+ // since those packages/files don't export *__cyOriginal variants
831
+ skipOriginalSpread: importedExport.isNodeModule || importPath?.startsWith('@'),
832
+ });
718
833
  // If constructMockCode didn't generate code, fall back to simple return
834
+ // IMPORTANT: We inline scenarios().data() inside the function rather than
835
+ // storing in a const - see comment in constructMockCode.ts for why.
719
836
  if (!mockCode && dataKey) {
720
- mockCode = `const ${importedExport.name}ReturnValue = scenarios().data()?.["${dataKey}"];
721
-
722
- function ${importedExport.name}() {
723
- return ${importedExport.name}ReturnValue;
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;
724
846
  }`;
725
847
  }
726
848
  }
@@ -740,13 +862,44 @@ function ${importedExport.name}() {
740
862
  else {
741
863
  // Escape regex special characters in importPath (e.g., brackets in [environmentId])
742
864
  const escapedImportPath = importPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
743
- const importRegExp = new RegExp(`(import(?:(?!${firstPart}|from|import)[\\s\\S])*?)${firstPart}(?:,\\s*)?((?:(?!import)[\\s\\S])*?from\\s+['"]${escapedImportPath}['"])`, 'm');
744
- if (importedExportNameParts.length > 1) {
865
+ // Use a simpler, more robust regex pattern that matches the fallback path.
866
+ // Key improvements:
867
+ // 1. Uses escapeRegExp(firstPart) to handle special characters in function names
868
+ // 2. Uses word boundaries (\b) to prevent partial matches
869
+ // 3. Handles comma BEFORE or AFTER the name: (?:,\s*|\s*,)?
870
+ // 4. Matches specific import path (escapedImportPath)
871
+ const importRegExp = new RegExp(`(import\\s*\\{[^}]*?)\\b${escapeRegExp(firstPart)}\\b(?:,\\s*|\\s*,)?((?:[^}]*\\}\\s*from\\s*['"]${escapedImportPath}['"];?))`, 'm');
872
+ // Check if any call signature has multiple parts (e.g., "logger.error(error)")
873
+ // If so, the mock code will spread from __cyOriginal, so we need to rename the import
874
+ // EXCEPT:
875
+ // 1. For node_module imports, the __cyOriginal pattern doesn't work because
876
+ // the original package doesn't export *__cyOriginal variants.
877
+ // 2. For package imports (starting with @), the __cyOriginal pattern doesn't work
878
+ // because scenario copies aren't created for package files - they keep the
879
+ // original import path which doesn't export *__cyOriginal.
880
+ const anyCallHasMultipleParts = importedExport.calls?.some((call) => {
881
+ const callParts = splitOutsideParenthesesAndArrays(call);
882
+ return callParts.length > 1;
883
+ });
884
+ // Package imports (starting with @) don't get scenario copies, so __cyOriginal won't exist
885
+ const isPackageImport = importPath.startsWith('@');
886
+ const shouldRenameToOriginal = !importedExport.isNodeModule &&
887
+ !isPackageImport &&
888
+ (importedExportNameParts.length > 1 || anyCallHasMultipleParts);
889
+ if (shouldRenameToOriginal) {
745
890
  fileContent = fileContent.replace(importRegExp, `$1${firstPart}__cyOriginal$2`);
746
891
  }
747
892
  else {
748
893
  fileContent = fileContent.replace(importRegExp, '$1$2');
749
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
+ }
750
903
  // Remove empty imports entirely to avoid partial commenting issues with multiline imports
751
904
  // This handles both single-line and multiline empty imports
752
905
  fileContent = fileContent.replace(/import\s*\{\s*\}\s*from\s+['"][^'"]*['"];?\s*\n?/g, '');
@@ -762,7 +915,17 @@ function ${importedExport.name}() {
762
915
  // This handles imports like: import { useEnvironment, otherThing } from "any/path"
763
916
  // Removes useEnvironment but keeps otherThing
764
917
  const namedImportRegExp = new RegExp(`(import\\s*\\{[^}]*?)\\b${escapeRegExp(firstPart)}\\b(?:,\\s*|\\s*,)?((?:[^}]*\\}\\s*from\\s*['"][^'"]*['"];?))`, 'm');
765
- if (importedExportNameParts.length > 1) {
918
+ // Check if any call signature has multiple parts (e.g., "logger.error(error)")
919
+ // If so, the mock code will spread from __cyOriginal, so we need to rename the import
920
+ // EXCEPT: For node_module imports, the __cyOriginal pattern doesn't work because
921
+ // the original package doesn't export *__cyOriginal variants.
922
+ const anyCallHasMultipleParts = importedExport.calls?.some((call) => {
923
+ const callParts = splitOutsideParenthesesAndArrays(call);
924
+ return callParts.length > 1;
925
+ });
926
+ const shouldRenameToOriginal = !importedExport.isNodeModule &&
927
+ (importedExportNameParts.length > 1 || anyCallHasMultipleParts);
928
+ if (shouldRenameToOriginal) {
766
929
  // Rename the import instead of removing (for destructured access patterns)
767
930
  fileContent = fileContent.replace(namedImportRegExp, `$1${firstPart}__cyOriginal$2`);
768
931
  }
@@ -1095,9 +1258,12 @@ export default async function writeScenarioComponents({ project, file, entity, r
1095
1258
  fileContentLength: fileContent.length,
1096
1259
  });
1097
1260
  let importedExportIndex = 0;
1261
+ const loopStartTime = Date.now();
1262
+ console.log(`[WriteScenario] Starting import loop for ${entity.name}: ${sortedImportedExports.length} imports`);
1098
1263
  for (const importedExport of sortedImportedExports) {
1099
1264
  importedExportIndex++;
1100
1265
  if (importedExportIndex % 5 === 0 || importedExportIndex === 1) {
1266
+ console.log(`[WriteScenario] ${entity.name} import ${importedExportIndex}/${sortedImportedExports.length}: ${importedExport.name} elapsed=${Date.now() - loopStartTime}ms`);
1101
1267
  debugLog(`Processing importedExport ${importedExportIndex}/${sortedImportedExports.length}`, {
1102
1268
  name: importedExport.name,
1103
1269
  filePath: importedExport.filePath,
@@ -1230,6 +1396,8 @@ export default async function writeScenarioComponents({ project, file, entity, r
1230
1396
  // e.g., if file has `export default X` but parent does `import { X } from '...'`
1231
1397
  const needsNamedReExport = importedExport.resolvedIsDefault === true &&
1232
1398
  importedExport.isDefault === false;
1399
+ console.log(`[WriteScenario] RECURSE START: ${entity.name} -> ${importedExportEntity.name}`);
1400
+ const recurseStartTime = Date.now();
1233
1401
  debugLog(`Recursing into writeScenarioComponents for ${importedExportEntity.name}`, {
1234
1402
  entityName: importedExportEntity.name,
1235
1403
  filePath: fileNotMocked.path,
@@ -1252,7 +1420,8 @@ export default async function writeScenarioComponents({ project, file, entity, r
1252
1420
  exportAsNamed: needsNamedReExport
1253
1421
  ? importedExport.name
1254
1422
  : undefined,
1255
- }), 60000);
1423
+ }), 180000);
1424
+ console.log(`[WriteScenario] RECURSE END: ${entity.name} -> ${importedExportEntity.name} took ${Date.now() - recurseStartTime}ms`);
1256
1425
  debugLog(`Completed recursive writeScenarioComponents for ${importedExportEntity.name}`);
1257
1426
  writtenScenarioComponents = updatedWrittenScenarioComponents;
1258
1427
  scenarioComponentPaths.push(...newScenarioComponentPaths);
@@ -1271,13 +1440,22 @@ export default async function writeScenarioComponents({ project, file, entity, r
1271
1440
  // Data and type entities should be preserved - they're not callable and may have methods
1272
1441
  // that stubbing would break (e.g., Zod schemas with .superRefine())
1273
1442
  const isDataEntity = entityType === 'data' || entityType === 'type';
1274
- // Heuristic: Zod schemas are often misclassified as 'library' but should be preserved
1275
- // Detect by: name starts with Z + uppercase letter, AND has Zod method calls
1276
- const looksLikeZodSchema = entityType === 'library' &&
1277
- /^Z[A-Z]/.test(importedExport.name) &&
1278
- importedExport.calls?.some((call) => /\.(superRefine|refine|transform|default|optional|nullable|array|object|string|number|boolean|parse|safeParse)\s*\(/.test(call));
1279
- // Callable entities can be safely stubbed (but not Zod schemas)
1280
- 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';
1281
1459
  // Determine what action to take
1282
1460
  const shouldStripAndReplace = hasMock;
1283
1461
  const shouldStripAndStub = !hasMock && importedExport.isMocked && isCallable;
@@ -1514,6 +1692,9 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1514
1692
  }
1515
1693
  }
1516
1694
  }
1695
+ // Track post-import-loop timing
1696
+ const postLoopStartTime = Date.now();
1697
+ console.log(`[WriteScenario] POST-LOOP START: ${entity.name}`);
1517
1698
  // Collect universal mocks BEFORE processing nodeModuleImports
1518
1699
  // This is needed to check if a node module import is handled by a universal mock
1519
1700
  const universalMocks = project.metadata?.universalMocks ?? [];
@@ -1547,6 +1728,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1547
1728
  const importRegex = new RegExp(`(import\\s+(?:\\{[^}]*\\}|\\*\\s+as\\s+\\w+|\\w+)\\s+from\\s+)['"]${originalPath.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')}['"]`, 'g');
1548
1729
  fileContent = fileContent.replace(importRegex, `$1'${mockFileRelativePath}'`);
1549
1730
  }
1731
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: node+universal mocks took ${Date.now() - postLoopStartTime}ms`);
1550
1732
  if (rootAnalysis.entitySha === entity.sha &&
1551
1733
  entity.metadata?.notExported &&
1552
1734
  entity.name !== 'default') {
@@ -1606,6 +1788,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1606
1788
  debugLog('Starting rewriteRelativeModuleImports');
1607
1789
  fileContent = rewriteRelativeModuleImports(fileContent, `${PROJECT_RELATIVE_PATH}/${file.path}`, scenarioComponentPath);
1608
1790
  debugLog('Completed rewriteRelativeModuleImports');
1791
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: transformations took ${Date.now() - postLoopStartTime}ms`);
1609
1792
  /**
1610
1793
  * Recursively process a file's imports to create transitive copies with server-only stripped.
1611
1794
  * This handles chains of arbitrary depth: A -> B -> C -> D where each needs server-only removed.
@@ -1619,12 +1802,14 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1619
1802
  */
1620
1803
  async function processTransitiveImportsRecursively(content, sourceFilePath, targetFilePath, visitedPaths = new Set(), depth = 0, startTime = Date.now()) {
1621
1804
  // Global timeout for entire transitive processing
1622
- 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)
1623
1806
  const elapsed = Date.now() - startTime;
1624
1807
  if (elapsed > GLOBAL_TIMEOUT_MS) {
1625
1808
  throw new Error(`processTransitiveImportsRecursively exceeded ${GLOBAL_TIMEOUT_MS}ms (elapsed: ${elapsed}ms) at depth=${depth} for ${sourceFilePath}`);
1626
1809
  }
1627
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`);
1628
1813
  debugLog(`processTransitiveImportsRecursively depth=${depth}`, {
1629
1814
  sourceFilePath,
1630
1815
  importCount: importPaths.length,
@@ -1661,8 +1846,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1661
1846
  const basePath = safeFolder(importFile.path.split('/').slice(0, -1).join('/'));
1662
1847
  const extension = importFile.name.split('.').pop();
1663
1848
  const isIndex = isIndexPath(importFile.path);
1664
- const pathHash = safeFileName(importFile.path);
1665
- 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}`;
1666
1853
  // Check if this is a circular import (we're already processing this file)
1667
1854
  const isCircularImport = visitedPaths.has(resolvedPath);
1668
1855
  // Check if already processed
@@ -1740,6 +1927,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1740
1927
  debugLog(`Returning from processTransitiveImportsRecursively depth=${depth}`);
1741
1928
  return modifiedContent;
1742
1929
  }
1930
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: before remaining imports ${Date.now() - postLoopStartTime}ms`);
1743
1931
  // Process remaining internal imports that weren't in importedExports
1744
1932
  // This handles transitive dependencies: when the file content includes code (e.g., from
1745
1933
  // other functions in the same file) that imports from files with "server-only"
@@ -1759,6 +1947,16 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1759
1947
  for (const importPath of remainingImportPaths) {
1760
1948
  remainingImportIndex++;
1761
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
+ }
1762
1960
  // Resolve the import path to a project file path
1763
1961
  const resolvedFilePath = resolveImportPath(importPath, file.path, project);
1764
1962
  if (!resolvedFilePath) {
@@ -1797,8 +1995,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1797
1995
  const targetFileBasePath = safeFolder(targetFile.path.split('/').slice(0, -1).join('/'));
1798
1996
  const targetFileExtension = targetFile.name.split('.').pop();
1799
1997
  const targetFileIsIndex = isIndexPath(targetFile.path);
1800
- const filePathHash = safeFileName(targetFile.path);
1801
- 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}`;
1802
2002
  // Check if we've already processed this file as a transitive copy
1803
2003
  // Note: __data_file_written__ is for entity-specific scenario files with different naming,
1804
2004
  // but we still need transitive copies for server-only stripping. Data entity files may
@@ -1837,8 +2037,12 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1837
2037
  const nestedBasePath = safeFolder(nestedFile.path.split('/').slice(0, -1).join('/'));
1838
2038
  const nestedExtension = nestedFile.name.split('.').pop();
1839
2039
  const nestedIsIndex = isIndexPath(nestedFile.path);
1840
- const nestedPathHash = safeFileName(nestedFile.path);
1841
- 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}`;
1842
2046
  // Check if already processed as a transitive file (we can rewrite to point to it)
1843
2047
  // Note: __data_file_written__ is for entity-specific scenario files with different naming,
1844
2048
  // but we still need transitive copies for server-only stripping in the import chain
@@ -1904,6 +2108,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1904
2108
  const importRegex = new RegExp(`(from\\s*["'])${escapedImportPath}(["'])`, 'g');
1905
2109
  fileContent = fileContent.replace(importRegex, `$1${safeRelativePath}$2`);
1906
2110
  }
2111
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: remaining imports loop took ${Date.now() - postLoopStartTime}ms`);
1907
2112
  const scenarioComponentComment = `// This file is auto-generated by CodeYam. Do not edit this file manually.
1908
2113
  // This file contains content for a scenario component:
1909
2114
  // Analyses being written: ${JSON.stringify(fileAnalyses?.map((a) => ({ id: a.id, entityName: a.entityName })))}
@@ -1914,6 +2119,53 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1914
2119
  // Entity: ${rootAnalysis.entitySha} ${rootAnalysis.entityName}
1915
2120
  // Scenario: ${scenario.id} - ${scenario.name}
1916
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
+ }
1917
2169
  // Use the directive that was extracted at the beginning of processing
1918
2170
  // This ensures it stays at the very top even after imports are prepended
1919
2171
  // NOTE: We only preserve "use client" directives, NOT "use server" directives.
@@ -1934,6 +2186,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
1934
2186
  await writeFile(scenarioComponentPath, finalContent);
1935
2187
  debugLog('Successfully wrote scenario file');
1936
2188
  scenarioComponentPaths.push(scenarioComponentPath);
2189
+ console.log(`[WriteScenario] POST-LOOP ${entity.name}: COMPLETE total=${Date.now() - postLoopStartTime}ms`);
1937
2190
  return { scenarioComponentPaths, writtenScenarioComponents };
1938
2191
  }
1939
2192
  //# sourceMappingURL=writeScenarioComponents.js.map