@codeyam/codeyam-cli 0.1.0-staging.76566f9 → 0.1.0-staging.7baa6db

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 (951) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +15 -12
  5. package/analyzer-template/packages/ai/index.ts +21 -5
  6. package/analyzer-template/packages/ai/package.json +3 -3
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  9. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +183 -10
  11. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  16. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  17. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1229 -30
  18. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  19. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  20. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  21. package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1750 -318
  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/dataStructureChunking.ts +183 -0
  37. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  38. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  39. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  40. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +33 -7
  41. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
  42. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  43. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1385 -67
  44. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  45. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +710 -0
  46. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  47. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  48. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  49. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  50. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  51. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  52. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  53. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  63. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  64. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  65. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  66. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  67. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  68. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  69. package/analyzer-template/packages/analyze/index.ts +2 -0
  70. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
  71. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  72. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  73. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  74. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  75. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  76. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  77. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  78. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  79. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  80. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  81. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +467 -283
  82. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +34 -1
  83. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  84. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  85. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  86. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  87. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  88. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  89. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  90. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  91. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  92. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  93. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  94. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +201 -46
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +304 -66
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +306 -20
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +1 -0
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  102. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +825 -71
  103. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  104. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  105. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  106. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  107. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  108. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  109. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  110. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  111. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  112. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  113. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  114. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  115. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  116. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  117. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  118. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  119. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  120. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  121. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  122. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  123. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  124. package/analyzer-template/packages/aws/package.json +3 -3
  125. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  126. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  127. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  128. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  129. package/analyzer-template/packages/database/package.json +1 -1
  130. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  131. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  132. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  133. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  134. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  135. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  136. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  137. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  138. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  139. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  140. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  141. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  142. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  143. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  144. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  145. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  146. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  147. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  148. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  149. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  150. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  151. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  152. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  153. package/analyzer-template/packages/generate/index.ts +3 -0
  154. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  155. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  156. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  157. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  158. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  159. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  160. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  163. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  166. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  167. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  168. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  169. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  170. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  171. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  172. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  173. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  175. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  176. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  177. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  178. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  179. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  181. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  182. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  184. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  186. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  187. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  188. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  189. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
  190. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  192. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  193. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  194. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  195. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  196. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  197. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  198. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  199. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  200. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  201. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  202. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  203. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  204. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  205. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  206. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  207. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  208. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  209. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  210. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  211. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  212. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  213. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  214. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  215. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  216. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  217. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  218. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  219. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  220. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  221. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  222. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  223. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  224. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  225. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  226. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  227. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  228. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  229. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  230. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  231. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  232. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  233. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  234. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  235. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  236. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  237. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  238. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  239. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  240. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  241. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  242. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  243. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  244. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  245. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  246. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  247. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  248. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  249. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  250. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  251. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  252. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  253. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  254. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  255. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  256. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  257. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  258. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  259. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  260. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  261. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  262. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  263. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  264. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +9 -54
  265. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  266. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  267. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  268. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  269. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  270. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  271. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  272. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  273. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  274. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  275. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  276. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  277. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  278. package/analyzer-template/packages/github/package.json +1 -1
  279. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  280. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  281. package/analyzer-template/packages/process/index.ts +2 -0
  282. package/analyzer-template/packages/process/package.json +12 -0
  283. package/analyzer-template/packages/process/tsconfig.json +8 -0
  284. package/analyzer-template/packages/types/index.ts +3 -6
  285. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  286. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  287. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  288. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  289. package/analyzer-template/packages/types/src/types/Scenario.ts +9 -77
  290. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  291. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  292. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  293. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  294. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  295. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  296. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  297. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  298. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  299. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  300. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  301. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  302. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  303. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  304. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  305. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +9 -54
  306. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  307. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  308. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  309. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  310. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  311. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  312. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  313. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  314. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  315. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  316. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  317. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  318. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  319. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  320. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  321. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  322. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  323. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  324. package/analyzer-template/playwright/capture.ts +57 -26
  325. package/analyzer-template/playwright/captureStatic.ts +1 -1
  326. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  327. package/analyzer-template/playwright/waitForServer.ts +21 -6
  328. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  329. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  330. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  331. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  332. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  333. package/analyzer-template/project/constructMockCode.ts +1006 -107
  334. package/analyzer-template/project/controller/startController.ts +16 -1
  335. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  336. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  337. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  338. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  339. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  340. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  341. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  342. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  343. package/analyzer-template/project/orchestrateCapture.ts +81 -9
  344. package/analyzer-template/project/reconcileMockDataKeys.ts +240 -0
  345. package/analyzer-template/project/runAnalysis.ts +11 -0
  346. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  347. package/analyzer-template/project/start.ts +51 -15
  348. package/analyzer-template/project/startScenarioCapture.ts +6 -0
  349. package/analyzer-template/project/writeMockDataTsx.ts +298 -11
  350. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  351. package/analyzer-template/project/writeScenarioComponents.ts +326 -42
  352. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  353. package/analyzer-template/project/writeSimpleRoot.ts +23 -13
  354. package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
  355. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  356. package/analyzer-template/tsconfig.json +2 -1
  357. package/background/src/lib/local/createLocalAnalyzer.js +2 -30
  358. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  359. package/background/src/lib/local/execAsync.js +1 -1
  360. package/background/src/lib/local/execAsync.js.map +1 -1
  361. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  362. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  363. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  364. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  365. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  366. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  367. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  368. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  369. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  370. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  371. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  372. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  373. package/background/src/lib/virtualized/project/constructMockCode.js +881 -71
  374. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  375. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  376. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  377. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  378. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  379. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  380. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  381. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  382. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  383. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  384. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  385. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  386. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  387. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  388. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  389. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  390. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  391. package/background/src/lib/virtualized/project/orchestrateCapture.js +65 -10
  392. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  393. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +199 -0
  394. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  395. package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
  396. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  397. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  398. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  399. package/background/src/lib/virtualized/project/start.js +47 -15
  400. package/background/src/lib/virtualized/project/start.js.map +1 -1
  401. package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
  402. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  403. package/background/src/lib/virtualized/project/writeMockDataTsx.js +255 -8
  404. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  405. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  406. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  407. package/background/src/lib/virtualized/project/writeScenarioComponents.js +255 -41
  408. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  409. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  410. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  411. package/background/src/lib/virtualized/project/writeSimpleRoot.js +23 -13
  412. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  413. package/codeyam-cli/scripts/apply-setup.js +180 -0
  414. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  415. package/codeyam-cli/src/cli.js +9 -1
  416. package/codeyam-cli/src/cli.js.map +1 -1
  417. package/codeyam-cli/src/codeyam-cli.js +18 -2
  418. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  419. package/codeyam-cli/src/commands/analyze.js +5 -3
  420. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  421. package/codeyam-cli/src/commands/baseline.js +176 -0
  422. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  423. package/codeyam-cli/src/commands/debug.js +37 -23
  424. package/codeyam-cli/src/commands/debug.js.map +1 -1
  425. package/codeyam-cli/src/commands/default.js +30 -34
  426. package/codeyam-cli/src/commands/default.js.map +1 -1
  427. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  428. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  429. package/codeyam-cli/src/commands/init.js +49 -257
  430. package/codeyam-cli/src/commands/init.js.map +1 -1
  431. package/codeyam-cli/src/commands/memory.js +307 -0
  432. package/codeyam-cli/src/commands/memory.js.map +1 -0
  433. package/codeyam-cli/src/commands/recapture.js +31 -18
  434. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  435. package/codeyam-cli/src/commands/report.js +46 -1
  436. package/codeyam-cli/src/commands/report.js.map +1 -1
  437. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  438. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  439. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  440. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  441. package/codeyam-cli/src/commands/start.js +8 -12
  442. package/codeyam-cli/src/commands/start.js.map +1 -1
  443. package/codeyam-cli/src/commands/status.js +23 -1
  444. package/codeyam-cli/src/commands/status.js.map +1 -1
  445. package/codeyam-cli/src/commands/test-startup.js +3 -1
  446. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  447. package/codeyam-cli/src/commands/verify.js +14 -2
  448. package/codeyam-cli/src/commands/verify.js.map +1 -1
  449. package/codeyam-cli/src/commands/wipe.js +108 -0
  450. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  451. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  452. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  453. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  454. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  455. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  456. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  457. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  458. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  459. package/codeyam-cli/src/utils/analyzer.js +7 -0
  460. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  461. package/codeyam-cli/src/utils/backgroundServer.js +102 -21
  462. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  463. package/codeyam-cli/src/utils/database.js +91 -5
  464. package/codeyam-cli/src/utils/database.js.map +1 -1
  465. package/codeyam-cli/src/utils/generateReport.js +4 -3
  466. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  467. package/codeyam-cli/src/utils/git.js +79 -0
  468. package/codeyam-cli/src/utils/git.js.map +1 -0
  469. package/codeyam-cli/src/utils/install-skills.js +76 -37
  470. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  471. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  472. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  473. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  474. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  475. package/codeyam-cli/src/utils/progress.js +7 -0
  476. package/codeyam-cli/src/utils/progress.js.map +1 -1
  477. package/codeyam-cli/src/utils/queue/job.js +109 -0
  478. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  479. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  480. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  481. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  482. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  483. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  484. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  485. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  486. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  487. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  488. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  489. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  490. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  491. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  492. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  493. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  494. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  495. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  496. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  497. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  498. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  499. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  500. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +116 -0
  501. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  502. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  503. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  504. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  505. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  506. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  507. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  508. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  509. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  510. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  511. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  512. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  513. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  514. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  515. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  516. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  517. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  518. package/codeyam-cli/src/utils/rules/index.js +6 -0
  519. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  520. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  521. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  522. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  523. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  524. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  525. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  526. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  527. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  528. package/codeyam-cli/src/utils/serverState.js +37 -10
  529. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  530. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  531. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  532. package/codeyam-cli/src/utils/versionInfo.js +46 -15
  533. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  534. package/codeyam-cli/src/utils/wipe.js +128 -0
  535. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  536. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  537. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  538. package/codeyam-cli/src/webserver/app/lib/database.js +88 -23
  539. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  540. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  541. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  542. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  543. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  544. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  545. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  546. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
  547. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  548. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BH0XDim7.js +41 -0
  549. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +34 -0
  550. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +25 -0
  551. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  552. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-BvMu2i-g.js} +1 -1
  553. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-kgBTLoJD.js} +1 -1
  554. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
  555. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  556. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BX2Ny2Qj.js +10 -0
  557. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  558. package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
  559. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
  560. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  561. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  562. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  563. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  564. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  565. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-CG65viiV.js} +1 -1
  566. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-DB3aFuEO.js +51 -0
  567. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-igfMr5DY.js} +1 -1
  568. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  569. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-D1zB-pYc.js} +1 -1
  570. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  571. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  572. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
  573. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Dt-SjPsw.js → entity._sha._-B0h9AqE6.js} +12 -12
  574. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +6 -0
  575. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +6 -0
  576. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  577. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-I-Wo99C_.js} +6 -6
  578. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  579. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  580. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
  581. package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-BdHOxVfg.js} +8 -8
  582. package/codeyam-cli/src/webserver/build/client/assets/globals-OvbPxnso.css +1 -0
  583. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-CUM5iXwc.js} +1 -1
  584. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-_417gcQW.js} +1 -1
  585. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
  586. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-TzRHMVog.js} +1 -1
  587. package/codeyam-cli/src/webserver/build/client/assets/manifest-1dde4642.js +1 -0
  588. package/codeyam-cli/src/webserver/build/client/assets/memory-CSehFhoZ.js +92 -0
  589. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  590. package/codeyam-cli/src/webserver/build/client/assets/root-WysVEEJs.js +62 -0
  591. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-DcAwD_Ln.js} +1 -1
  592. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  593. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +1 -0
  594. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  595. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-CAD5b1o_.js} +1 -1
  596. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +1 -0
  597. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-DAFqfEDH.js} +1 -1
  598. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +1 -0
  599. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-ihdMtlf6.js} +1 -1
  600. package/codeyam-cli/src/webserver/build/server/assets/index-Bs3qItZt.js +1 -0
  601. package/codeyam-cli/src/webserver/build/server/assets/server-build-CqaV_Zaw.js +273 -0
  602. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  603. package/codeyam-cli/src/webserver/build-info.json +5 -5
  604. package/codeyam-cli/src/webserver/server.js +35 -25
  605. package/codeyam-cli/src/webserver/server.js.map +1 -1
  606. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam-debug.md} +48 -4
  607. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  608. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  609. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  610. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  611. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam-setup.md} +13 -1
  612. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam-sim.md} +1 -1
  613. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam-test.md} +1 -1
  614. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam-verify.md} +1 -1
  615. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  616. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  617. package/codeyam-cli/templates/rules-instructions.md +132 -0
  618. package/package.json +17 -14
  619. package/packages/ai/index.js +8 -6
  620. package/packages/ai/index.js.map +1 -1
  621. package/packages/ai/src/lib/analyzeScope.js +179 -13
  622. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  623. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  624. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  625. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +138 -9
  626. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  627. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  628. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  629. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  630. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  631. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  632. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  633. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  634. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  635. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  636. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  637. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  638. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  639. package/packages/ai/src/lib/astScopes/processExpression.js +944 -30
  640. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  641. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  642. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  643. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  644. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  645. package/packages/ai/src/lib/completionCall.js +178 -31
  646. package/packages/ai/src/lib/completionCall.js.map +1 -1
  647. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1367 -187
  648. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  649. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  650. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  651. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +230 -23
  652. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  653. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  654. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  655. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  656. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  657. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  658. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  659. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  660. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  661. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +111 -14
  662. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  663. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  664. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  665. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  666. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  667. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  668. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  669. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  670. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  671. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  672. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  673. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  674. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  675. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  676. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  677. package/packages/ai/src/lib/deepEqual.js +32 -0
  678. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  679. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  680. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  681. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  682. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  683. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +21 -5
  684. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  685. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  686. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  687. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  688. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  689. package/packages/ai/src/lib/generateEntityScenarioData.js +1101 -62
  690. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  691. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  692. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  693. package/packages/ai/src/lib/generateExecutionFlows.js +495 -0
  694. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  695. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  696. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  697. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  698. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  699. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  700. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  701. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  702. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  703. package/packages/ai/src/lib/isolateScopes.js +270 -7
  704. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  705. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  706. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  707. package/packages/ai/src/lib/mergeStatements.js +88 -46
  708. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  709. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  710. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  711. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  712. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  713. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  714. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  715. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
  716. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  717. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  718. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  719. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  720. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  721. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  722. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  723. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  724. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  725. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  726. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  727. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  728. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  729. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  730. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  731. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  732. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  733. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  734. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  735. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  736. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  737. package/packages/analyze/index.js +1 -0
  738. package/packages/analyze/index.js.map +1 -1
  739. package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
  740. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  741. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  742. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  743. package/packages/analyze/src/lib/analysisContext.js +30 -5
  744. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  745. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  746. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  747. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  748. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  749. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  750. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  751. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  752. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  753. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  754. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  755. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  756. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  757. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  758. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  759. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  760. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  761. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +206 -57
  762. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  763. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -1
  764. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  765. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  766. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  767. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  768. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  769. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  770. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  771. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  772. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  773. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  774. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  775. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  776. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  777. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  778. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  779. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  780. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  781. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  782. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  783. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  784. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  785. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  786. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  787. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +170 -40
  788. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  789. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  790. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  791. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +253 -42
  792. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  793. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  794. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  795. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +218 -20
  796. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  797. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
  798. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  799. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +1 -0
  800. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  801. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  802. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  803. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +670 -53
  804. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  805. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  806. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  807. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  808. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  809. package/packages/analyze/src/lib/index.js +1 -0
  810. package/packages/analyze/src/lib/index.js.map +1 -1
  811. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  812. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  813. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  814. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  815. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  816. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  817. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  818. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  819. package/packages/database/src/lib/analysisToDb.js +1 -1
  820. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  821. package/packages/database/src/lib/branchToDb.js +1 -1
  822. package/packages/database/src/lib/branchToDb.js.map +1 -1
  823. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  824. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  825. package/packages/database/src/lib/commitToDb.js +1 -1
  826. package/packages/database/src/lib/commitToDb.js.map +1 -1
  827. package/packages/database/src/lib/fileToDb.js +1 -1
  828. package/packages/database/src/lib/fileToDb.js.map +1 -1
  829. package/packages/database/src/lib/kysely/db.js +11 -1
  830. package/packages/database/src/lib/kysely/db.js.map +1 -1
  831. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  832. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  833. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  834. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  835. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  836. package/packages/database/src/lib/loadAnalyses.js +45 -2
  837. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  838. package/packages/database/src/lib/loadAnalysis.js +8 -0
  839. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  840. package/packages/database/src/lib/loadBranch.js +11 -1
  841. package/packages/database/src/lib/loadBranch.js.map +1 -1
  842. package/packages/database/src/lib/loadCommit.js +7 -0
  843. package/packages/database/src/lib/loadCommit.js.map +1 -1
  844. package/packages/database/src/lib/loadCommits.js +22 -1
  845. package/packages/database/src/lib/loadCommits.js.map +1 -1
  846. package/packages/database/src/lib/loadEntities.js +23 -4
  847. package/packages/database/src/lib/loadEntities.js.map +1 -1
  848. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  849. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  850. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  851. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  852. package/packages/database/src/lib/projectToDb.js +1 -1
  853. package/packages/database/src/lib/projectToDb.js.map +1 -1
  854. package/packages/database/src/lib/saveFiles.js +1 -1
  855. package/packages/database/src/lib/saveFiles.js.map +1 -1
  856. package/packages/database/src/lib/scenarioToDb.js +1 -1
  857. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  858. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  859. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  860. package/packages/generate/index.js +3 -0
  861. package/packages/generate/index.js.map +1 -1
  862. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  863. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  864. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  865. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  866. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  867. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  868. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  869. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  870. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  871. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  872. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  873. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  874. package/packages/process/index.js +3 -0
  875. package/packages/process/index.js.map +1 -0
  876. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  877. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  878. package/packages/process/src/ProcessManager.js.map +1 -0
  879. package/packages/process/src/index.js.map +1 -0
  880. package/packages/process/src/managedExecAsync.js.map +1 -0
  881. package/packages/types/index.js +0 -1
  882. package/packages/types/index.js.map +1 -1
  883. package/packages/types/src/types/Scenario.js +1 -21
  884. package/packages/types/src/types/Scenario.js.map +1 -1
  885. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  886. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  887. package/packages/utils/src/lib/safeFileName.js +29 -3
  888. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  889. package/scripts/finalize-analyzer.cjs +8 -76
  890. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  891. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
  892. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
  893. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  894. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  895. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  896. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  897. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  898. package/analyzer-template/process/README.md +0 -507
  899. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  900. package/background/src/lib/process/ProcessManager.js.map +0 -1
  901. package/background/src/lib/process/index.js.map +0 -1
  902. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  903. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
  904. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
  905. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
  906. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
  907. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  908. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  909. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CVP_WGQ3.js +0 -32
  910. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  911. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  912. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
  913. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  914. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
  915. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
  916. package/codeyam-cli/src/webserver/build/client/assets/globals-C9s7Lhdl.css +0 -1
  917. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  918. package/codeyam-cli/src/webserver/build/client/assets/manifest-0d27da29.js +0 -1
  919. package/codeyam-cli/src/webserver/build/client/assets/root-B_wIKCIf.js +0 -56
  920. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
  921. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  922. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
  923. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
  924. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
  925. package/codeyam-cli/src/webserver/build/server/assets/index-CU58-Ttc.js +0 -1
  926. package/codeyam-cli/src/webserver/build/server/assets/server-build-D35o2uae.js +0 -175
  927. package/codeyam-cli/templates/debug-codeyam.md +0 -625
  928. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  929. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  930. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -298
  931. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  932. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
  933. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  934. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  935. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  936. package/packages/ai/src/lib/isFrontend.js +0 -5
  937. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  938. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  939. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  940. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  941. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  942. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  943. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  944. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  945. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  946. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  947. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
  948. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.labs-unlock-l0sNRNKZ.js} +0 -0
  949. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  950. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  951. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -870,11 +870,42 @@ function addMockToContent(
870
870
 
871
871
  // Check if we have multiple calls with different variable names
872
872
  // This requires generating separate mock functions for each call site
873
+ //
874
+ // IMPORTANT: calls array may contain BOTH base hook calls (e.g., "useFetcher<Type>()")
875
+ // AND method chain usages (e.g., "useFetcher().functionCallReturnValue.submit(...)").
876
+ // We only want to count base hook calls for the length comparison with callVariableNames.
877
+ // A "base call" is one that ends with "()" possibly preceded by a type annotation,
878
+ // without any subsequent method chains like ".functionCallReturnValue" or ".submit(...)".
879
+ const baseHookCalls = importedExport.calls?.filter((call) => {
880
+ // Base hook calls match patterns like:
881
+ // - "useFetcher()"
882
+ // - "useFetcher<Type>()"
883
+ // - "useFetcher<{ complex: Type }>()"
884
+ // They end with "()" and don't have method chains after the call.
885
+ // Method chains contain ".functionCallReturnValue" or have property access after "()".
886
+ return (
887
+ call.endsWith('()') &&
888
+ !call.includes('.functionCallReturnValue') &&
889
+ // Also exclude method chains like "hook().something" or "hook().method()"
890
+ !call.match(/\(\)\.[a-zA-Z]/)
891
+ );
892
+ });
893
+
894
+ // Determine if we can generate unique mock functions for multiple variables.
895
+ // We need:
896
+ // 1. Multiple variable names (callVariableNames.length > 1)
897
+ // 2. Base hook calls to match them (baseHookCalls.length > 0)
898
+ // Note: We use min(baseHookCalls.length, callVariableNames.length) for iteration
899
+ // to handle cases where data might be slightly out of sync (stale entries).
873
900
  const hasMultipleCallsWithVariables =
874
- importedExport.calls &&
875
- importedExport.calls.length > 1 &&
901
+ baseHookCalls &&
902
+ baseHookCalls.length > 1 &&
876
903
  importedExport.callVariableNames &&
877
- importedExport.callVariableNames.length === importedExport.calls.length;
904
+ importedExport.callVariableNames.length > 1 &&
905
+ // Only proceed if we have at least as many base calls as variable names,
906
+ // OR they're close enough (within 1) to handle minor sync issues
907
+ Math.abs(baseHookCalls.length - importedExport.callVariableNames.length) <=
908
+ 1;
878
909
 
879
910
  let mockCode: string | undefined;
880
911
  const variableMockCodes: string[] = [];
@@ -898,7 +929,13 @@ function addMockToContent(
898
929
  // Track variable name occurrences for unique function naming
899
930
  const variableNameCounts: Record<string, number> = {};
900
931
 
901
- for (let i = 0; i < importedExport.calls!.length; i++) {
932
+ // Use the minimum of both array lengths to handle slight mismatches
933
+ // (e.g., stale data from previous analysis runs)
934
+ const iterationLimit = Math.min(
935
+ baseHookCalls!.length,
936
+ importedExport.callVariableNames!.length,
937
+ );
938
+ for (let i = 0; i < iterationLimit; i++) {
902
939
  const variableName = importedExport.callVariableNames![i];
903
940
  if (!variableName) continue;
904
941
 
@@ -917,18 +954,26 @@ function addMockToContent(
917
954
  // e.g., useFetcher_entityDiffFetcher, useFetcher_reportFetcher
918
955
  const mockFunctionName = `${importedExport.name}_${safeFunctionName}`;
919
956
 
920
- // Use the call signature from importedExport.calls[i] as the data key
957
+ // Use the call signature from baseHookCalls[i] as the data key
921
958
  // This matches what's stored in dataForMocks
922
- const callSignature = importedExport.calls![i];
959
+ const callSignature = baseHookCalls![i];
923
960
 
924
961
  // Generate mock code using the call signature directly
925
962
  // This prevents "symbol already declared" errors when multiple calls exist
963
+ // Check if this is a package import that won't have scenario copies
964
+ const isPackageImportForMock = importPath?.startsWith('@');
926
965
  const variableMockCode = constructMockCode(
927
966
  callSignature, // Use call signature format for data lookup
928
967
  dependencySchemas,
929
968
  importedExport.entityType,
930
969
  undefined, // No need for separate canonical key
931
- { uniqueFunctionSuffix: safeFunctionName }, // Use variable name for unique function naming
970
+ {
971
+ uniqueFunctionSuffix: safeFunctionName, // Use variable name for unique function naming
972
+ // For node_modules or package imports, skip spreading from __cyOriginal
973
+ // since those packages/files don't export *__cyOriginal variants
974
+ skipOriginalSpread:
975
+ importedExport.isNodeModule || isPackageImportForMock,
976
+ },
932
977
  );
933
978
 
934
979
  if (variableMockCode) {
@@ -942,10 +987,19 @@ function addMockToContent(
942
987
  /[.*+?^${}()|[\]\\]/g,
943
988
  '\\$&',
944
989
  );
945
- // Create regex that matches the call (with optional whitespace variations)
990
+ // Create regex that matches the call (with optional whitespace variations).
991
+ // TypeScript formatters commonly break type parameters across lines, e.g.:
992
+ // useLoaderData<
993
+ // typeof loader
994
+ // >()
995
+ // So we allow optional whitespace around < and > delimiters, not just
996
+ // where whitespace already exists in the call signature string.
946
997
  const callRegex = new RegExp(
947
- escapedCallSignature.replace(/\s+/g, '\\s*'),
948
- 'g',
998
+ escapedCallSignature
999
+ .replace(/\s+/g, '\\s*')
1000
+ .replace(/</g, '\\s*<\\s*')
1001
+ .replace(/>/g, '\\s*>\\s*'),
1002
+ 'gs',
949
1003
  );
950
1004
  fileContent = fileContent.replace(callRegex, `${mockFunctionName}()`);
951
1005
  }
@@ -967,13 +1021,29 @@ function addMockToContent(
967
1021
  rootAnalysis.metadata?.scenariosDataStructure?.dataForMocks;
968
1022
 
969
1023
  // Find matching call signature key in dataForMocks
1024
+ // IMPORTANT: First try exact match with type parameters (e.g., "useLoaderData<LoaderData>()")
1025
+ // to avoid picking the wrong variant (e.g., "useLoaderData<typeof loader>()" which may
1026
+ // have different properties). Fall back to base name matching only if exact match fails.
970
1027
  const hookBaseName = importedExport.name.split(/[<(]/)[0];
971
- const callSignatureKey = dataForMocks
972
- ? Object.keys(dataForMocks).find((key) => {
973
- const keyBaseName = key.split(/[<(]/)[0];
1028
+ const expectedKey = importedExport.calls?.[0];
1029
+ let callSignatureKey: string | undefined;
1030
+
1031
+ if (dataForMocks) {
1032
+ const keys = Object.keys(dataForMocks);
1033
+
1034
+ // First try exact match with the expected call signature
1035
+ if (expectedKey && keys.includes(expectedKey)) {
1036
+ callSignatureKey = expectedKey;
1037
+ } else {
1038
+ // Fall back to base name matching
1039
+ callSignatureKey = keys.find((key) => {
1040
+ // Split on ., <, or ( to get the true base name
1041
+ // This handles both "useFlags()" -> "useFlags" and "trpc.useUtils()" -> "trpc"
1042
+ const keyBaseName = key.split(/[.<(]/)[0];
974
1043
  return keyBaseName === hookBaseName;
975
- })
976
- : undefined;
1044
+ });
1045
+ }
1046
+ }
977
1047
 
978
1048
  // Use the call signature if found, otherwise construct it
979
1049
  const dataKey =
@@ -981,31 +1051,72 @@ function addMockToContent(
981
1051
  importedExport.calls?.[0] ??
982
1052
  `${importedExport.name}()`;
983
1053
 
1054
+ // IMPORTANT: If the dataKey is a method chain (e.g., "trpc.useUtils()"), we should
1055
+ // use the base name (e.g., "trpc") when calling constructMockCode. This ensures
1056
+ // constructMockCode generates a complete nested mock from the schema without
1057
+ // referencing __cyOriginal variables.
1058
+ const dataKeyBaseName = dataKey.split(/[.<(]/)[0];
1059
+ const isMethodChainDataKey =
1060
+ dataKeyBaseName === importedExport.name &&
1061
+ dataKey !== importedExport.name &&
1062
+ dataKey.includes('.');
1063
+ const mockNameToUse = isMethodChainDataKey
1064
+ ? importedExport.name
1065
+ : dataKey;
1066
+
984
1067
  // Keep the original function name since there's only one call
1068
+ // Check if this is a package import that won't have scenario copies
1069
+ const isPackageImportForSingleCall = importPath?.startsWith('@');
985
1070
  mockCode = constructMockCode(
986
- dataKey, // Use call signature format
1071
+ mockNameToUse,
987
1072
  dependencySchemas,
988
1073
  importedExport.entityType,
989
1074
  undefined,
990
- { keepOriginalFunctionName: true },
1075
+ {
1076
+ keepOriginalFunctionName: true,
1077
+ // For node_modules or package imports, skip spreading from __cyOriginal
1078
+ // since those packages/files don't export *__cyOriginal variants
1079
+ skipOriginalSpread:
1080
+ importedExport.isNodeModule || isPackageImportForSingleCall,
1081
+ },
991
1082
  );
992
1083
  // If constructMockCode didn't generate code, fall back to simple return
1084
+ // IMPORTANT: We inline scenarios().data() inside the function rather than
1085
+ // storing in a const - see comment in constructMockCode.ts for why.
993
1086
  if (!mockCode) {
994
- mockCode = `const ${importedExport.name}ReturnValue = scenarios().data()?.["${dataKey}"];
995
-
996
- function ${importedExport.name}() {
997
- return ${importedExport.name}ReturnValue;
1087
+ mockCode = `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)
1088
+ const _${importedExport.name}Ref = {
1089
+ current: null,
1090
+ };
1091
+ function ${importedExport.name}(...args) {
1092
+ if (!_${importedExport.name}Ref.current) {
1093
+ _${importedExport.name}Ref.current = scenarios().data()?.["${dataKey}"];
1094
+ }
1095
+ return _${importedExport.name}Ref.current;
998
1096
  }`;
999
1097
  }
1000
1098
  } else {
1001
1099
  // Helper to find matching call signature key from dataForMocks
1100
+ // IMPORTANT: First try exact match with type parameters (e.g., "useLoaderData<LoaderData>()")
1101
+ // to avoid picking the wrong variant. Fall back to base name matching only if needed.
1002
1102
  const hookBaseName = importedExport.name.split(/[<(]/)[0];
1103
+ const expectedKey = importedExport.calls?.[0];
1003
1104
  const findMatchingKey = (
1004
1105
  dataForMocks: Record<string, unknown> | undefined,
1005
1106
  ): string | undefined => {
1006
1107
  if (!dataForMocks) return undefined;
1007
- return Object.keys(dataForMocks).find((key) => {
1008
- const keyBaseName = key.split(/[<(]/)[0];
1108
+ const keys = Object.keys(dataForMocks);
1109
+
1110
+ // First try exact match with the expected call signature
1111
+ if (expectedKey && keys.includes(expectedKey)) {
1112
+ return expectedKey;
1113
+ }
1114
+
1115
+ // Fall back to base name matching
1116
+ return keys.find((key) => {
1117
+ // Split on ., <, or ( to get the true base name
1118
+ // This handles both "useFlags()" -> "useFlags" and "trpc.useUtils()" -> "trpc"
1119
+ const keyBaseName = key.split(/[.<(]/)[0];
1009
1120
  return keyBaseName === hookBaseName;
1010
1121
  });
1011
1122
  };
@@ -1027,23 +1138,49 @@ function ${importedExport.name}() {
1027
1138
  }
1028
1139
  }
1029
1140
 
1030
- // Use the data key if found, otherwise use call signature or function name
1031
- const mockNameToUse =
1032
- dataKey ?? importedExport.calls?.[0] ?? `${importedExport.name}()`;
1141
+ // Use the data key if found, otherwise use call signature or function name.
1142
+ // IMPORTANT: If the dataKey is a method chain (e.g., "trpc.useUtils()"), we should
1143
+ // use the base name (e.g., "trpc") when calling constructMockCode. This ensures
1144
+ // constructMockCode generates a complete nested mock from the schema without
1145
+ // referencing __cyOriginal variables. The __cyOriginal pattern is only needed
1146
+ // for partial mocking where we preserve some original methods, not for complete
1147
+ // method-chain mocks where we provide all implementations.
1148
+ const dataKeyBaseName = dataKey?.split(/[.<(]/)[0];
1149
+ const isMethodChainDataKey =
1150
+ dataKey &&
1151
+ dataKeyBaseName === importedExport.name &&
1152
+ dataKey !== importedExport.name &&
1153
+ dataKey.includes('.');
1154
+ const mockNameToUse = isMethodChainDataKey
1155
+ ? importedExport.name
1156
+ : (dataKey ?? importedExport.calls?.[0] ?? `${importedExport.name}()`);
1033
1157
 
1034
1158
  mockCode = constructMockCode(
1035
1159
  mockNameToUse,
1036
1160
  dependencySchemas,
1037
1161
  importedExport.entityType,
1038
1162
  undefined,
1039
- { keepOriginalFunctionName: true },
1163
+ {
1164
+ keepOriginalFunctionName: true,
1165
+ // For node_modules or package imports, skip spreading from __cyOriginal
1166
+ // since those packages/files don't export *__cyOriginal variants
1167
+ skipOriginalSpread:
1168
+ importedExport.isNodeModule || importPath?.startsWith('@'),
1169
+ },
1040
1170
  );
1041
1171
  // If constructMockCode didn't generate code, fall back to simple return
1172
+ // IMPORTANT: We inline scenarios().data() inside the function rather than
1173
+ // storing in a const - see comment in constructMockCode.ts for why.
1042
1174
  if (!mockCode && dataKey) {
1043
- mockCode = `const ${importedExport.name}ReturnValue = scenarios().data()?.["${dataKey}"];
1044
-
1045
- function ${importedExport.name}() {
1046
- return ${importedExport.name}ReturnValue;
1175
+ mockCode = `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)
1176
+ const _${importedExport.name}Ref = {
1177
+ current: null,
1178
+ };
1179
+ function ${importedExport.name}(...args) {
1180
+ if (!_${importedExport.name}Ref.current) {
1181
+ _${importedExport.name}Ref.current = scenarios().data()?.["${dataKey}"];
1182
+ }
1183
+ return _${importedExport.name}Ref.current;
1047
1184
  }`;
1048
1185
  }
1049
1186
  }
@@ -1075,12 +1212,39 @@ function ${importedExport.name}() {
1075
1212
  /[.*+?^${}()|[\]\\]/g,
1076
1213
  '\\$&',
1077
1214
  );
1215
+ // Use a simpler, more robust regex pattern that matches the fallback path.
1216
+ // Key improvements:
1217
+ // 1. Uses escapeRegExp(firstPart) to handle special characters in function names
1218
+ // 2. Uses word boundaries (\b) to prevent partial matches
1219
+ // 3. Handles comma BEFORE or AFTER the name: (?:,\s*|\s*,)?
1220
+ // 4. Matches specific import path (escapedImportPath)
1078
1221
  const importRegExp = new RegExp(
1079
- `(import(?:(?!${firstPart}|from|import)[\\s\\S])*?)${firstPart}(?:,\\s*)?((?:(?!import)[\\s\\S])*?from\\s+['"]${escapedImportPath}['"])`,
1222
+ `(import\\s*\\{[^}]*?)\\b${escapeRegExp(firstPart)}\\b(?:,\\s*|\\s*,)?((?:[^}]*\\}\\s*from\\s*['"]${escapedImportPath}['"];?))`,
1080
1223
  'm',
1081
1224
  );
1082
1225
 
1083
- if (importedExportNameParts.length > 1) {
1226
+ // Check if any call signature has multiple parts (e.g., "logger.error(error)")
1227
+ // If so, the mock code will spread from __cyOriginal, so we need to rename the import
1228
+ // EXCEPT:
1229
+ // 1. For node_module imports, the __cyOriginal pattern doesn't work because
1230
+ // the original package doesn't export *__cyOriginal variants.
1231
+ // 2. For package imports (starting with @), the __cyOriginal pattern doesn't work
1232
+ // because scenario copies aren't created for package files - they keep the
1233
+ // original import path which doesn't export *__cyOriginal.
1234
+ const anyCallHasMultipleParts = importedExport.calls?.some((call) => {
1235
+ const callParts = splitOutsideParenthesesAndArrays(call);
1236
+ return callParts.length > 1;
1237
+ });
1238
+
1239
+ // Package imports (starting with @) don't get scenario copies, so __cyOriginal won't exist
1240
+ const isPackageImport = importPath.startsWith('@');
1241
+
1242
+ const shouldRenameToOriginal =
1243
+ !importedExport.isNodeModule &&
1244
+ !isPackageImport &&
1245
+ (importedExportNameParts.length > 1 || anyCallHasMultipleParts);
1246
+
1247
+ if (shouldRenameToOriginal) {
1084
1248
  fileContent = fileContent.replace(
1085
1249
  importRegExp,
1086
1250
  `$1${firstPart}__cyOriginal$2`,
@@ -1089,6 +1253,21 @@ function ${importedExport.name}() {
1089
1253
  fileContent = fileContent.replace(importRegExp, '$1$2');
1090
1254
  }
1091
1255
 
1256
+ // Also handle namespace imports (import * as foo from '...')
1257
+ // These need to be renamed to foo__cyOriginal when the mock code spreads from the original.
1258
+ // Note: We match any path (not just escapedImportPath) because the import path may have
1259
+ // been rewritten by transitive import handling before this code runs.
1260
+ if (shouldRenameToOriginal) {
1261
+ const namespaceImportRegExp = new RegExp(
1262
+ `(import\\s+\\*\\s+as\\s+)${escapeRegExp(firstPart)}(\\s+from\\s+['"][^'"]*['"])`,
1263
+ 'm',
1264
+ );
1265
+ fileContent = fileContent.replace(
1266
+ namespaceImportRegExp,
1267
+ `$1${firstPart}__cyOriginal$2`,
1268
+ );
1269
+ }
1270
+
1092
1271
  // Remove empty imports entirely to avoid partial commenting issues with multiline imports
1093
1272
  // This handles both single-line and multiline empty imports
1094
1273
  fileContent = fileContent.replace(
@@ -1113,7 +1292,20 @@ function ${importedExport.name}() {
1113
1292
  'm',
1114
1293
  );
1115
1294
 
1116
- if (importedExportNameParts.length > 1) {
1295
+ // Check if any call signature has multiple parts (e.g., "logger.error(error)")
1296
+ // If so, the mock code will spread from __cyOriginal, so we need to rename the import
1297
+ // EXCEPT: For node_module imports, the __cyOriginal pattern doesn't work because
1298
+ // the original package doesn't export *__cyOriginal variants.
1299
+ const anyCallHasMultipleParts = importedExport.calls?.some((call) => {
1300
+ const callParts = splitOutsideParenthesesAndArrays(call);
1301
+ return callParts.length > 1;
1302
+ });
1303
+
1304
+ const shouldRenameToOriginal =
1305
+ !importedExport.isNodeModule &&
1306
+ (importedExportNameParts.length > 1 || anyCallHasMultipleParts);
1307
+
1308
+ if (shouldRenameToOriginal) {
1117
1309
  // Rename the import instead of removing (for destructured access patterns)
1118
1310
  fileContent = fileContent.replace(
1119
1311
  namedImportRegExp,
@@ -1569,9 +1761,16 @@ export default async function writeScenarioComponents({
1569
1761
  });
1570
1762
 
1571
1763
  let importedExportIndex = 0;
1764
+ const loopStartTime = Date.now();
1765
+ console.log(
1766
+ `[WriteScenario] Starting import loop for ${entity.name}: ${sortedImportedExports.length} imports`,
1767
+ );
1572
1768
  for (const importedExport of sortedImportedExports) {
1573
1769
  importedExportIndex++;
1574
1770
  if (importedExportIndex % 5 === 0 || importedExportIndex === 1) {
1771
+ console.log(
1772
+ `[WriteScenario] ${entity.name} import ${importedExportIndex}/${sortedImportedExports.length}: ${importedExport.name} elapsed=${Date.now() - loopStartTime}ms`,
1773
+ );
1575
1774
  debugLog(
1576
1775
  `Processing importedExport ${importedExportIndex}/${sortedImportedExports.length}`,
1577
1776
  {
@@ -1759,6 +1958,10 @@ export default async function writeScenarioComponents({
1759
1958
  importedExport.resolvedIsDefault === true &&
1760
1959
  importedExport.isDefault === false;
1761
1960
 
1961
+ console.log(
1962
+ `[WriteScenario] RECURSE START: ${entity.name} -> ${importedExportEntity.name}`,
1963
+ );
1964
+ const recurseStartTime = Date.now();
1762
1965
  debugLog(
1763
1966
  `Recursing into writeScenarioComponents for ${importedExportEntity.name}`,
1764
1967
  {
@@ -1790,7 +1993,10 @@ export default async function writeScenarioComponents({
1790
1993
  ? importedExport.name
1791
1994
  : undefined,
1792
1995
  }),
1793
- 60000, // 1 minute timeout for recursive calls
1996
+ 180000, // 3 minute timeout for recursive calls (complex components need more time)
1997
+ );
1998
+ console.log(
1999
+ `[WriteScenario] RECURSE END: ${entity.name} -> ${importedExportEntity.name} took ${Date.now() - recurseStartTime}ms`,
1794
2000
  );
1795
2001
  debugLog(
1796
2002
  `Completed recursive writeScenarioComponents for ${importedExportEntity.name}`,
@@ -2132,6 +2338,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2132
2338
  }
2133
2339
  }
2134
2340
 
2341
+ // Track post-import-loop timing
2342
+ const postLoopStartTime = Date.now();
2343
+ console.log(`[WriteScenario] POST-LOOP START: ${entity.name}`);
2344
+
2135
2345
  // Collect universal mocks BEFORE processing nodeModuleImports
2136
2346
  // This is needed to check if a node module import is handled by a universal mock
2137
2347
  const universalMocks = project.metadata?.universalMocks ?? [];
@@ -2191,6 +2401,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2191
2401
  );
2192
2402
  }
2193
2403
 
2404
+ console.log(
2405
+ `[WriteScenario] POST-LOOP ${entity.name}: node+universal mocks took ${Date.now() - postLoopStartTime}ms`,
2406
+ );
2407
+
2194
2408
  if (
2195
2409
  rootAnalysis.entitySha === entity.sha &&
2196
2410
  entity.metadata?.notExported &&
@@ -2269,6 +2483,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2269
2483
  );
2270
2484
  debugLog('Completed rewriteRelativeModuleImports');
2271
2485
 
2486
+ console.log(
2487
+ `[WriteScenario] POST-LOOP ${entity.name}: transformations took ${Date.now() - postLoopStartTime}ms`,
2488
+ );
2489
+
2272
2490
  /**
2273
2491
  * Recursively process a file's imports to create transitive copies with server-only stripped.
2274
2492
  * This handles chains of arbitrary depth: A -> B -> C -> D where each needs server-only removed.
@@ -2289,7 +2507,7 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2289
2507
  startTime: number = Date.now(),
2290
2508
  ): Promise<string> {
2291
2509
  // Global timeout for entire transitive processing
2292
- const GLOBAL_TIMEOUT_MS = 60000; // 1 minute max for all transitive processing
2510
+ const GLOBAL_TIMEOUT_MS = 180000; // 3 minutes max for all transitive processing (complex components need more time)
2293
2511
  const elapsed = Date.now() - startTime;
2294
2512
  if (elapsed > GLOBAL_TIMEOUT_MS) {
2295
2513
  throw new Error(
@@ -2298,6 +2516,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2298
2516
  }
2299
2517
 
2300
2518
  const importPaths = extractInternalImportPaths(content);
2519
+ // Always log to help debug timeout issues
2520
+ console.log(
2521
+ `[TransitiveImports] depth=${depth} file=${path.basename(sourceFilePath)} imports=${importPaths.length} visited=${visitedPaths.size} elapsed=${Date.now() - startTime}ms`,
2522
+ );
2301
2523
  debugLog(`processTransitiveImportsRecursively depth=${depth}`, {
2302
2524
  sourceFilePath,
2303
2525
  importCount: importPaths.length,
@@ -2352,8 +2574,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2352
2574
  );
2353
2575
  const extension = importFile.name.split('.').pop();
2354
2576
  const isIndex = isIndexPath(importFile.path);
2355
- const pathHash = safeFileName(importFile.path);
2356
- const transitiveFilePath = `${PROJECT_RELATIVE_PATH}/${basePath}/${pathHash}_${isIndex ? 'index_' : ''}transitive_${safeFileName(scenario.name)}.${extension}`;
2577
+ // Limit pathHash length to prevent ENAMETOOLONG errors on macOS (255 char limit)
2578
+ const pathHash = safeFileName(importFile.path, { maxLength: 80 });
2579
+ const scenarioSlug = safeFileName(scenario.name, { maxLength: 60 });
2580
+ const transitiveFilePath = `${PROJECT_RELATIVE_PATH}/${basePath}/${pathHash}_${isIndex ? 'index_' : ''}transitive_${scenarioSlug}.${extension}`;
2357
2581
 
2358
2582
  // Check if this is a circular import (we're already processing this file)
2359
2583
  const isCircularImport = visitedPaths.has(resolvedPath);
@@ -2477,6 +2701,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2477
2701
  return modifiedContent;
2478
2702
  }
2479
2703
 
2704
+ console.log(
2705
+ `[WriteScenario] POST-LOOP ${entity.name}: before remaining imports ${Date.now() - postLoopStartTime}ms`,
2706
+ );
2707
+
2480
2708
  // Process remaining internal imports that weren't in importedExports
2481
2709
  // This handles transitive dependencies: when the file content includes code (e.g., from
2482
2710
  // other functions in the same file) that imports from files with "server-only"
@@ -2505,6 +2733,20 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2505
2733
  debugLog(
2506
2734
  `[REMAINING LOOP] import ${remainingImportIndex}/${remainingImportPaths.length}: ${importPath}`,
2507
2735
  );
2736
+
2737
+ // Skip imports that point to generated CodeYam files (same skip logic as
2738
+ // rewriteRelativeModuleImports). Without this, MockData files from earlier
2739
+ // captures that get discovered by the TypeScript compiler would be treated as
2740
+ // regular imports, creating transitive copies with stale content.
2741
+ const scenarioFilePattern = /[a-f0-9]{64}_\w+_[A-Z]\w*$/;
2742
+ const mockDataPattern = /__codeyamMocks__\//;
2743
+ if (
2744
+ scenarioFilePattern.test(importPath) ||
2745
+ mockDataPattern.test(importPath)
2746
+ ) {
2747
+ continue;
2748
+ }
2749
+
2508
2750
  // Resolve the import path to a project file path
2509
2751
  const resolvedFilePath = resolveImportPath(importPath, file.path, project);
2510
2752
 
@@ -2552,8 +2794,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2552
2794
  );
2553
2795
  const targetFileExtension = targetFile.name.split('.').pop();
2554
2796
  const targetFileIsIndex = isIndexPath(targetFile.path);
2555
- const filePathHash = safeFileName(targetFile.path);
2556
- const transformedFilePath = `${PROJECT_RELATIVE_PATH}/${targetFileBasePath}/${filePathHash}_${targetFileIsIndex ? 'index_' : ''}transitive_${safeFileName(scenario.name)}.${targetFileExtension}`;
2797
+ // Limit path hash length to prevent ENAMETOOLONG errors
2798
+ const filePathHash = safeFileName(targetFile.path, { maxLength: 80 });
2799
+ const targetScenarioSlug = safeFileName(scenario.name, { maxLength: 60 });
2800
+ const transformedFilePath = `${PROJECT_RELATIVE_PATH}/${targetFileBasePath}/${filePathHash}_${targetFileIsIndex ? 'index_' : ''}transitive_${targetScenarioSlug}.${targetFileExtension}`;
2557
2801
 
2558
2802
  // Check if we've already processed this file as a transitive copy
2559
2803
  // Note: __data_file_written__ is for entity-specific scenario files with different naming,
@@ -2608,8 +2852,12 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2608
2852
  );
2609
2853
  const nestedExtension = nestedFile.name.split('.').pop();
2610
2854
  const nestedIsIndex = isIndexPath(nestedFile.path);
2611
- const nestedPathHash = safeFileName(nestedFile.path);
2612
- const nestedTransformedPath = `${PROJECT_RELATIVE_PATH}/${nestedBasePath}/${nestedPathHash}_${nestedIsIndex ? 'index_' : ''}transitive_${safeFileName(scenario.name)}.${nestedExtension}`;
2855
+ // Limit path hash length to prevent ENAMETOOLONG errors
2856
+ const nestedPathHash = safeFileName(nestedFile.path, { maxLength: 80 });
2857
+ const nestedScenarioSlug = safeFileName(scenario.name, {
2858
+ maxLength: 60,
2859
+ });
2860
+ const nestedTransformedPath = `${PROJECT_RELATIVE_PATH}/${nestedBasePath}/${nestedPathHash}_${nestedIsIndex ? 'index_' : ''}transitive_${nestedScenarioSlug}.${nestedExtension}`;
2613
2861
 
2614
2862
  // Check if already processed as a transitive file (we can rewrite to point to it)
2615
2863
  // Note: __data_file_written__ is for entity-specific scenario files with different naming,
@@ -2730,6 +2978,10 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2730
2978
  fileContent = fileContent.replace(importRegex, `$1${safeRelativePath}$2`);
2731
2979
  }
2732
2980
 
2981
+ console.log(
2982
+ `[WriteScenario] POST-LOOP ${entity.name}: remaining imports loop took ${Date.now() - postLoopStartTime}ms`,
2983
+ );
2984
+
2733
2985
  const scenarioComponentComment = `// This file is auto-generated by CodeYam. Do not edit this file manually.
2734
2986
  // This file contains content for a scenario component:
2735
2987
  // Analyses being written: ${JSON.stringify(fileAnalyses?.map((a) => ({ id: a.id, entityName: a.entityName })))}
@@ -2741,6 +2993,34 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2741
2993
  // Scenario: ${scenario.id} - ${scenario.name}
2742
2994
  `;
2743
2995
 
2996
+ // Final pass: Rename any namespace imports (import * as X from '...') that have
2997
+ // corresponding mock code using ...X__cyOriginal spread pattern.
2998
+ // This handles cases where:
2999
+ // 1. The import path was rewritten by transitive import handling
3000
+ // 2. The import wasn't caught by the earlier renaming logic
3001
+ // We scan for all __cyOriginal references in the mock code and ensure the imports are renamed.
3002
+ const cyOriginalReferences = fileContent.match(/\.\.\.(\w+)__cyOriginal/g);
3003
+ if (cyOriginalReferences) {
3004
+ const uniqueNames = [
3005
+ ...new Set(
3006
+ cyOriginalReferences.map((ref) =>
3007
+ ref.replace('...', '').replace('__cyOriginal', ''),
3008
+ ),
3009
+ ),
3010
+ ];
3011
+ for (const name of uniqueNames) {
3012
+ // Match namespace imports for this name that haven't been renamed yet
3013
+ const namespaceImportRegex = new RegExp(
3014
+ `(import\\s+\\*\\s+as\\s+)${escapeRegExp(name)}(\\s+from\\s+['"][^'"]*['"])`,
3015
+ 'g',
3016
+ );
3017
+ fileContent = fileContent.replace(
3018
+ namespaceImportRegex,
3019
+ `$1${name}__cyOriginal$2`,
3020
+ );
3021
+ }
3022
+ }
3023
+
2744
3024
  // Use the directive that was extracted at the beginning of processing
2745
3025
  // This ensures it stays at the very top even after imports are prepended
2746
3026
  // NOTE: We only preserve "use client" directives, NOT "use server" directives.
@@ -2762,5 +3042,9 @@ ${exportKeyword}const ${functionName} = new Proxy(() => scenarios().data()?.["${
2762
3042
  debugLog('Successfully wrote scenario file');
2763
3043
  scenarioComponentPaths.push(scenarioComponentPath);
2764
3044
 
3045
+ console.log(
3046
+ `[WriteScenario] POST-LOOP ${entity.name}: COMPLETE total=${Date.now() - postLoopStartTime}ms`,
3047
+ );
3048
+
2765
3049
  return { scenarioComponentPaths, writtenScenarioComponents };
2766
3050
  }
@@ -12,6 +12,7 @@ import writeLibComponent from './writeLibComponent';
12
12
  import writeMockDataTsx from './writeMockDataTsx';
13
13
  import writeScenarioComponents from './writeScenarioComponents';
14
14
  import writeScenarioPage from './writeScenarioPage';
15
+ import writeScenarioClientWrapper from './writeScenarioClientWrapper';
15
16
  import { LazyFileStore } from './LazyFileStore';
16
17
 
17
18
  export interface WriteSimulatorFilesArgs {
@@ -62,6 +63,31 @@ export default async function writeScenarioFiles({
62
63
  );
63
64
  generatedFiles.push(mockDataFilePath);
64
65
 
66
+ // Determine if entity is async (Server Component)
67
+ // First check metadata, then fall back to source code detection for existing analyses
68
+ let isAsync = entity.metadata?.isAsync;
69
+ if (isAsync === undefined) {
70
+ const fileAnalyzer = projectAnalyzer.getFileAnalyzerByPath(file.path);
71
+ if (fileAnalyzer) {
72
+ const localEntityName =
73
+ entity.name === 'default' ? 'default' : entity.name;
74
+ isAsync = fileAnalyzer.isEntityAsync(localEntityName);
75
+ }
76
+ }
77
+
78
+ // For async components (Server Components), write the client wrapper
79
+ // and update entity metadata so page generation knows to use Server Component format
80
+ if (isAsync) {
81
+ entity.metadata = entity.metadata || {};
82
+ entity.metadata.isAsync = true;
83
+
84
+ const clientWrapperPath = await writeScenarioClientWrapper(
85
+ scenario,
86
+ mocksDir,
87
+ );
88
+ generatedFiles.push(clientWrapperPath);
89
+ }
90
+
65
91
  // For library files create components that allow you to interact with them
66
92
  const libComponentPath = await writeLibComponent(
67
93
  project,