@codeyam/codeyam-cli 0.1.0-staging.842873f → 0.1.0-staging.8778565

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 (1377) 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 +37 -33
  5. package/analyzer-template/packages/ai/index.ts +21 -5
  6. package/analyzer-template/packages/ai/package.json +5 -5
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +228 -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 +239 -13
  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 +38 -1
  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 +1619 -125
  18. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  19. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +324 -5
  20. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  21. package/analyzer-template/packages/ai/src/lib/completionCall.ts +247 -66
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +2788 -390
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +21 -4
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +976 -0
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +243 -77
  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 +71 -2
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +161 -19
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +163 -14
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.ts +98 -0
  34. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  35. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  36. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +441 -82
  37. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  38. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  39. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  40. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  41. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  42. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  43. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +74 -7
  44. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +89 -112
  45. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +63 -2
  46. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1497 -92
  47. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +216 -109
  48. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +677 -0
  49. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  50. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  51. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  52. package/analyzer-template/packages/ai/src/lib/getConditionalUsagesFromCode.ts +143 -31
  53. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +8 -2
  54. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  55. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  56. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +17 -7
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -102
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  63. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  64. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -53
  65. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  66. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +28 -2
  67. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  68. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  69. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  70. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  71. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +127 -3
  72. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +121 -2
  73. package/analyzer-template/packages/analyze/index.ts +2 -0
  74. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
  75. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +132 -33
  76. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  77. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  78. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  79. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  80. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  81. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  82. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  83. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  84. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  85. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  86. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  87. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +570 -180
  88. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +62 -1
  89. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +15 -0
  90. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  91. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  92. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  93. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  94. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  95. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  96. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  97. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +22 -13
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +313 -0
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +689 -89
  102. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.ts +1 -1
  103. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  104. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +633 -137
  105. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +166 -0
  106. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +78 -83
  107. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +4 -8
  108. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1087 -168
  109. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  110. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  111. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  112. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  113. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  114. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  115. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  116. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  117. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  118. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  119. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  120. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  121. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  122. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  123. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  124. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  125. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  126. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  127. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts +15 -0
  128. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.d.ts.map +1 -0
  129. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js +31 -0
  130. package/analyzer-template/packages/aws/dist/src/lib/s3/checkS3ObjectExists.js.map +1 -0
  131. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  132. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  133. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  134. package/analyzer-template/packages/aws/package.json +10 -10
  135. package/analyzer-template/packages/aws/s3/index.ts +1 -0
  136. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  137. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  138. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  139. package/analyzer-template/packages/aws/src/lib/s3/checkS3ObjectExists.ts +47 -0
  140. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  141. package/analyzer-template/packages/database/index.ts +1 -0
  142. package/analyzer-template/packages/database/package.json +4 -4
  143. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  144. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  145. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  146. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  147. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  148. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  149. package/analyzer-template/packages/database/src/lib/kysely/db.ts +26 -5
  150. package/analyzer-template/packages/database/src/lib/kysely/tableRelations.ts +2 -2
  151. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  152. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +36 -9
  153. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +82 -0
  154. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  155. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  156. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  157. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  158. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  159. package/analyzer-template/packages/database/src/lib/loadCommits.ts +58 -19
  160. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  161. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  162. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +25 -5
  163. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  164. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  165. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  166. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +153 -144
  167. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  168. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  169. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  170. package/analyzer-template/packages/generate/index.ts +3 -0
  171. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  172. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +221 -0
  173. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  174. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +42 -9
  175. package/analyzer-template/packages/generate/src/lib/deepMerge.ts +26 -1
  176. package/analyzer-template/packages/generate/src/lib/directExecutionScript.ts +17 -2
  177. package/analyzer-template/packages/generate/src/lib/getComponentScenarioPath.ts +8 -3
  178. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  179. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  180. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  181. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  182. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  184. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  186. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  187. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  188. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  189. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  190. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  192. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  193. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  194. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  195. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +6 -2
  196. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  197. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +18 -3
  198. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  199. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tableRelations.d.ts +2 -2
  200. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -11
  201. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  202. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  203. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  204. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  205. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  206. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +30 -7
  207. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  208. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  209. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  210. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +24 -0
  211. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  212. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +65 -0
  213. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  214. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  215. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  216. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  217. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  218. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  219. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  220. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +7 -6
  221. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  222. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  223. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  224. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  225. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  226. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  227. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  228. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  229. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  230. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  231. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  232. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  233. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  234. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  235. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  236. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +45 -14
  237. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  238. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  239. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  240. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  241. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  242. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  243. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  244. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  245. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  246. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +20 -5
  247. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  248. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  249. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  250. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  251. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  252. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  253. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  254. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  255. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  256. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -88
  257. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  258. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  259. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  260. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  261. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  262. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  263. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  264. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  265. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  266. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  267. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  268. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  269. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  270. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  271. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  272. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  273. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +217 -0
  274. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  275. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  276. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  277. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  278. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  279. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  280. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +41 -9
  281. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  282. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.d.ts.map +1 -1
  283. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js +27 -1
  284. package/analyzer-template/packages/github/dist/generate/src/lib/deepMerge.js.map +1 -1
  285. package/analyzer-template/packages/github/dist/generate/src/lib/directExecutionScript.d.ts.map +1 -1
  286. package/analyzer-template/packages/github/dist/generate/src/lib/directExecutionScript.js +10 -1
  287. package/analyzer-template/packages/github/dist/generate/src/lib/directExecutionScript.js.map +1 -1
  288. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.d.ts.map +1 -1
  289. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js +7 -3
  290. package/analyzer-template/packages/github/dist/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  291. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  292. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  293. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  294. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  295. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  296. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  297. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  298. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  299. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  300. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  301. package/analyzer-template/packages/github/dist/types/index.d.ts +2 -2
  302. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  303. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  304. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  305. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  306. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  307. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  308. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +87 -13
  309. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  310. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  311. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  312. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  313. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  314. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  315. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  316. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +21 -6
  317. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  318. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +199 -3
  319. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  320. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  321. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  322. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  323. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  324. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  325. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  326. package/analyzer-template/packages/github/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  327. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  328. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  329. package/analyzer-template/packages/github/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  330. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  331. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  332. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  333. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  334. package/analyzer-template/packages/github/package.json +2 -2
  335. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  336. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  337. package/analyzer-template/packages/process/index.ts +2 -0
  338. package/analyzer-template/packages/process/package.json +12 -0
  339. package/analyzer-template/packages/process/tsconfig.json +8 -0
  340. package/analyzer-template/packages/types/index.ts +5 -0
  341. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  342. package/analyzer-template/packages/types/src/types/Analysis.ts +104 -13
  343. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  344. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  345. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  346. package/analyzer-template/packages/types/src/types/Scenario.ts +21 -10
  347. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +228 -3
  348. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  349. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  350. package/analyzer-template/packages/ui-components/package.json +5 -5
  351. package/analyzer-template/packages/ui-components/src/components/ScenarioDetailInteractiveView.tsx +23 -7
  352. package/analyzer-template/packages/utils/dist/types/index.d.ts +2 -2
  353. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  354. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  355. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  356. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  357. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  358. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  359. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +87 -13
  360. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  361. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  362. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  363. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  364. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  365. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  366. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  367. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +21 -6
  368. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  369. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +199 -3
  370. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  371. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  372. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  373. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  374. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  375. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.d.ts.map +1 -1
  376. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js +26 -2
  377. package/analyzer-template/packages/utils/dist/utils/src/lib/applyUniversalMocks.js.map +1 -1
  378. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  379. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  380. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  381. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.d.ts.map +1 -1
  382. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js +25 -0
  383. package/analyzer-template/packages/utils/dist/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  384. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  385. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  386. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  387. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  388. package/analyzer-template/packages/utils/src/lib/applyUniversalMocks.ts +28 -2
  389. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  390. package/analyzer-template/packages/utils/src/lib/lightweightEntityExtractor.ts +27 -0
  391. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  392. package/analyzer-template/playwright/capture.ts +57 -26
  393. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  394. package/analyzer-template/playwright/captureStatic.ts +1 -1
  395. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  396. package/analyzer-template/playwright/takeElementScreenshot.ts +26 -11
  397. package/analyzer-template/playwright/takeScreenshot.ts +9 -7
  398. package/analyzer-template/playwright/waitForServer.ts +21 -6
  399. package/analyzer-template/project/TESTING.md +83 -0
  400. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  401. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  402. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  403. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  404. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  405. package/analyzer-template/project/constructMockCode.ts +1454 -188
  406. package/analyzer-template/project/controller/startController.ts +16 -1
  407. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  408. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  409. package/analyzer-template/project/loadReadyToBeCaptured.ts +82 -42
  410. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  411. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  412. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +13 -9
  413. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +93 -42
  414. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  415. package/analyzer-template/project/orchestrateCapture.ts +88 -11
  416. package/analyzer-template/project/reconcileMockDataKeys.ts +251 -3
  417. package/analyzer-template/project/runAnalysis.ts +11 -0
  418. package/analyzer-template/project/runMultiScenarioServer.ts +11 -10
  419. package/analyzer-template/project/serverOnlyModules.ts +413 -0
  420. package/analyzer-template/project/start.ts +64 -15
  421. package/analyzer-template/project/startScenarioCapture.ts +88 -41
  422. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  423. package/analyzer-template/project/writeMockDataTsx.ts +471 -67
  424. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  425. package/analyzer-template/project/writeScenarioComponents.ts +1529 -237
  426. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  427. package/analyzer-template/project/writeSimpleRoot.ts +56 -22
  428. package/analyzer-template/project/writeUniversalMocks.ts +32 -11
  429. package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
  430. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  431. package/analyzer-template/tsconfig.json +14 -1
  432. package/background/src/lib/local/createLocalAnalyzer.js +2 -30
  433. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  434. package/background/src/lib/local/execAsync.js +1 -1
  435. package/background/src/lib/local/execAsync.js.map +1 -1
  436. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  437. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  438. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  439. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  440. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  441. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  442. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  443. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  444. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  445. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  446. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  447. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  448. package/background/src/lib/virtualized/project/constructMockCode.js +1284 -143
  449. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  450. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  451. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  452. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  453. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  454. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  455. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  456. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +34 -9
  457. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  458. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  459. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  460. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  461. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  462. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +12 -6
  463. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  464. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +73 -36
  465. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  466. package/background/src/lib/virtualized/project/orchestrateCapture.js +72 -12
  467. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  468. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +211 -3
  469. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  470. package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
  471. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  472. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +11 -9
  473. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  474. package/background/src/lib/virtualized/project/serverOnlyModules.js +338 -0
  475. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -0
  476. package/background/src/lib/virtualized/project/start.js +55 -15
  477. package/background/src/lib/virtualized/project/start.js.map +1 -1
  478. package/background/src/lib/virtualized/project/startScenarioCapture.js +66 -31
  479. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  480. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  481. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  482. package/background/src/lib/virtualized/project/writeMockDataTsx.js +404 -56
  483. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  484. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  485. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  486. package/background/src/lib/virtualized/project/writeScenarioComponents.js +1129 -161
  487. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  488. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  489. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  490. package/background/src/lib/virtualized/project/writeSimpleRoot.js +57 -20
  491. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  492. package/background/src/lib/virtualized/project/writeUniversalMocks.js +27 -12
  493. package/background/src/lib/virtualized/project/writeUniversalMocks.js.map +1 -1
  494. package/codeyam-cli/scripts/apply-setup.js +386 -9
  495. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  496. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  497. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  498. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  499. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  500. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  501. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  502. package/codeyam-cli/src/cli.js +39 -22
  503. package/codeyam-cli/src/cli.js.map +1 -1
  504. package/codeyam-cli/src/codeyam-cli.js +18 -2
  505. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  506. package/codeyam-cli/src/commands/analyze.js +22 -10
  507. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  508. package/codeyam-cli/src/commands/baseline.js +176 -0
  509. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  510. package/codeyam-cli/src/commands/debug.js +44 -18
  511. package/codeyam-cli/src/commands/debug.js.map +1 -1
  512. package/codeyam-cli/src/commands/default.js +43 -35
  513. package/codeyam-cli/src/commands/default.js.map +1 -1
  514. package/codeyam-cli/src/commands/editor.js +2787 -0
  515. package/codeyam-cli/src/commands/editor.js.map +1 -0
  516. package/codeyam-cli/src/commands/init.js +81 -260
  517. package/codeyam-cli/src/commands/init.js.map +1 -1
  518. package/codeyam-cli/src/commands/memory.js +278 -0
  519. package/codeyam-cli/src/commands/memory.js.map +1 -0
  520. package/codeyam-cli/src/commands/recapture.js +228 -0
  521. package/codeyam-cli/src/commands/recapture.js.map +1 -0
  522. package/codeyam-cli/src/commands/report.js +72 -24
  523. package/codeyam-cli/src/commands/report.js.map +1 -1
  524. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  525. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  526. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  527. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  528. package/codeyam-cli/src/commands/start.js +8 -12
  529. package/codeyam-cli/src/commands/start.js.map +1 -1
  530. package/codeyam-cli/src/commands/status.js +23 -1
  531. package/codeyam-cli/src/commands/status.js.map +1 -1
  532. package/codeyam-cli/src/commands/test-startup.js +3 -1
  533. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  534. package/codeyam-cli/src/commands/verify.js +14 -2
  535. package/codeyam-cli/src/commands/verify.js.map +1 -1
  536. package/codeyam-cli/src/commands/wipe.js +108 -0
  537. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  538. package/codeyam-cli/src/data/techStacks.js +77 -0
  539. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  540. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  541. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  542. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  543. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  544. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +127 -0
  545. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  546. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +635 -0
  547. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  548. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  549. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  550. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  551. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  552. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +121 -0
  553. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  554. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  555. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  556. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  557. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  558. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +393 -0
  559. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  560. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  561. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  562. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  563. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  564. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +266 -0
  565. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  566. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +107 -0
  567. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  568. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  569. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  570. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  571. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  572. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +275 -0
  573. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  574. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +213 -0
  575. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  576. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1737 -0
  577. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  578. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  579. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  580. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  581. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  582. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  583. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  584. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +101 -0
  585. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  586. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  587. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  588. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  589. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  590. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  591. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  592. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +246 -0
  593. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  594. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  595. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  596. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +174 -82
  597. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  598. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  599. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  600. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  601. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  602. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  603. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  604. package/codeyam-cli/src/utils/analyzer.js +7 -0
  605. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  606. package/codeyam-cli/src/utils/backgroundServer.js +210 -31
  607. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  608. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  609. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  610. package/codeyam-cli/src/utils/database.js +91 -5
  611. package/codeyam-cli/src/utils/database.js.map +1 -1
  612. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  613. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  614. package/codeyam-cli/src/utils/devServerState.js +71 -0
  615. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  616. package/codeyam-cli/src/utils/editorApi.js +73 -0
  617. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  618. package/codeyam-cli/src/utils/editorAudit.js +159 -0
  619. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  620. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  621. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  622. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  623. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  624. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  625. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  626. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  627. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  628. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  629. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  630. package/codeyam-cli/src/utils/editorLoaderHelpers.js +81 -0
  631. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  632. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  633. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  634. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  635. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  636. package/codeyam-cli/src/utils/editorPreview.js +106 -0
  637. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  638. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  639. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  640. package/codeyam-cli/src/utils/editorScenarios.js +126 -0
  641. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  642. package/codeyam-cli/src/utils/editorSeedAdapter.js +173 -0
  643. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  644. package/codeyam-cli/src/utils/entityChangeStatus.js +347 -0
  645. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  646. package/codeyam-cli/src/utils/entityChangeStatus.server.js +158 -0
  647. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  648. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  649. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  650. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  651. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  652. package/codeyam-cli/src/utils/generateReport.js +253 -106
  653. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  654. package/codeyam-cli/src/utils/git.js +182 -0
  655. package/codeyam-cli/src/utils/git.js.map +1 -0
  656. package/codeyam-cli/src/utils/install-skills.js +120 -44
  657. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  658. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  659. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  660. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  661. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  662. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  663. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  664. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  665. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  666. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  667. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  668. package/codeyam-cli/src/utils/progress.js +7 -0
  669. package/codeyam-cli/src/utils/progress.js.map +1 -1
  670. package/codeyam-cli/src/utils/project.js +15 -5
  671. package/codeyam-cli/src/utils/project.js.map +1 -1
  672. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  673. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  674. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +60 -0
  675. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  676. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  677. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  678. package/codeyam-cli/src/utils/queue/job.js +319 -17
  679. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  680. package/codeyam-cli/src/utils/queue/manager.js +104 -7
  681. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  682. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  683. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  684. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  685. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  686. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  687. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  688. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  689. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  690. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  691. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  692. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  693. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  694. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  695. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  696. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  697. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  698. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  699. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  700. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  701. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  702. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  703. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  704. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  705. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  706. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  707. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  708. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  709. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  710. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  711. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  712. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  713. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  714. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  715. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  716. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  717. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  718. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  719. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  720. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  721. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  722. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  723. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  724. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  725. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  726. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  727. package/codeyam-cli/src/utils/rules/index.js +7 -0
  728. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  729. package/codeyam-cli/src/utils/rules/parser.js +93 -0
  730. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  731. package/codeyam-cli/src/utils/rules/pathMatcher.js +49 -0
  732. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  733. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  734. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  735. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  736. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  737. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  738. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  739. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  740. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  741. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  742. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  743. package/codeyam-cli/src/utils/scenariosManifest.js +112 -0
  744. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  745. package/codeyam-cli/src/utils/serverState.js +94 -12
  746. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  747. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +95 -45
  748. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  749. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  750. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  751. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  752. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  753. package/codeyam-cli/src/utils/testRunner.js +158 -0
  754. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  755. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  756. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  757. package/codeyam-cli/src/utils/versionInfo.js +67 -15
  758. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  759. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  760. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  761. package/codeyam-cli/src/utils/wipe.js +128 -0
  762. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  763. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  764. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  765. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +410 -0
  766. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  767. package/codeyam-cli/src/webserver/app/lib/database.js +159 -33
  768. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  769. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  770. package/codeyam-cli/src/webserver/app/lib/git.js +396 -0
  771. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  772. package/codeyam-cli/src/webserver/backgroundServer.js +171 -26
  773. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  774. package/codeyam-cli/src/webserver/bootstrap.js +60 -0
  775. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -0
  776. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-BPXZwM4t.js +1 -0
  777. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BcgbViKV.js +11 -0
  778. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-kykTbcnD.js → EntityTypeBadge-g3saevPb.js} +1 -1
  779. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CQIG2qda.js +41 -0
  780. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  781. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +25 -0
  782. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +3 -0
  783. package/codeyam-cli/src/webserver/build/client/assets/LoadingDots-BU_OAEMP.js +6 -0
  784. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-ceAyBX-H.js +3 -0
  785. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzHcG7SE.js +11 -0
  786. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +1 -0
  787. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-0DY_NKil.js +10 -0
  788. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  789. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-C06nsHKY.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  790. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +1 -0
  791. package/codeyam-cli/src/webserver/build/client/assets/_index-DLxKhri3.js +11 -0
  792. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-BcY3q6nt.js +27 -0
  793. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  794. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  795. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  796. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  797. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Bni3iiUj.js +22 -0
  798. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  799. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  800. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  801. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  802. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  803. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  804. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  805. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  806. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  807. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  808. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  809. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  810. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  811. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  812. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  813. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  814. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  815. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  816. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  817. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  818. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  819. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  820. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  821. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  822. package/codeyam-cli/src/webserver/build/client/assets/api.health-l0sNRNKZ.js +1 -0
  823. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  824. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  825. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  826. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  827. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  828. package/codeyam-cli/src/webserver/build/client/assets/book-open-BYOypzCa.js +6 -0
  829. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-C_Pmso5S.js +6 -0
  830. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-C4pqxYJB.js +51 -0
  831. package/codeyam-cli/src/webserver/build/client/assets/circle-check-BVMi9VA5.js +6 -0
  832. package/codeyam-cli/src/webserver/build/client/assets/copy-n2FB0_Sw.js +11 -0
  833. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CC6AbExI.js +41 -0
  834. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  835. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  836. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Csi0_PMl.js +1 -0
  837. package/codeyam-cli/src/webserver/build/client/assets/editor-DgN1LTTt.js +10 -0
  838. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-BLQMSKZa.js +41 -0
  839. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CYqBrC9s.js → entity._sha._-BF4oLwaE.js} +22 -15
  840. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C7YX6r3H.js +6 -0
  841. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CF164ouH.js +6 -0
  842. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  843. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-BMvVHNXU.js +5 -0
  844. package/codeyam-cli/src/webserver/build/client/assets/entry.client-DTvKq3TY.js +29 -0
  845. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  846. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +1 -0
  847. package/codeyam-cli/src/webserver/build/client/assets/files-BZrlFE1F.js +1 -0
  848. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +1 -0
  849. package/codeyam-cli/src/webserver/build/client/assets/globals-BkWJ_UNc.css +1 -0
  850. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-fmIEn3Bc.js +9 -0
  851. package/codeyam-cli/src/webserver/build/client/assets/index-10oVnAAH.js +9 -0
  852. package/codeyam-cli/src/webserver/build/client/assets/index-BcvgDzbZ.js +3 -0
  853. package/codeyam-cli/src/webserver/build/client/assets/index-yHOVb4rc.js +15 -0
  854. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  855. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-DaAZ_H2w.js +6 -0
  856. package/codeyam-cli/src/webserver/build/client/assets/manifest-c26eb85b.js +1 -0
  857. package/codeyam-cli/src/webserver/build/client/assets/memory-Bl2rpw8u.js +96 -0
  858. package/codeyam-cli/src/webserver/build/client/assets/pause-f5-1lKBt.js +11 -0
  859. package/codeyam-cli/src/webserver/build/client/assets/preload-helper-ckwbz45p.js +1 -0
  860. package/codeyam-cli/src/webserver/build/client/assets/root-ClvYBUSA.js +67 -0
  861. package/codeyam-cli/src/webserver/build/client/assets/scenarioStatus-B_8jpV3e.js +1 -0
  862. package/codeyam-cli/src/webserver/build/client/assets/search-Di64LWVb.js +6 -0
  863. package/codeyam-cli/src/webserver/build/client/assets/settings-0OrEMU6J.js +1 -0
  864. package/codeyam-cli/src/webserver/build/client/assets/simulations-DWT-CvLy.js +1 -0
  865. package/codeyam-cli/src/webserver/build/client/assets/terminal-Br7MOqts.js +11 -0
  866. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BLdiCuG-.js +6 -0
  867. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-CrAK28Bc.js +1 -0
  868. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  869. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +1 -0
  870. package/codeyam-cli/src/webserver/build/client/assets/{useToast-Bbf4Hokd.js → useToast-9FIWuYfK.js} +1 -1
  871. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  872. package/codeyam-cli/src/webserver/build/server/assets/index-DflIr5SD.js +1 -0
  873. package/codeyam-cli/src/webserver/build/server/assets/server-build-OhKy839M.js +416 -0
  874. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  875. package/codeyam-cli/src/webserver/build-info.json +5 -5
  876. package/codeyam-cli/src/webserver/devServer.js +40 -8
  877. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  878. package/codeyam-cli/src/webserver/editorProxy.js +785 -0
  879. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  880. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  881. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  882. package/codeyam-cli/src/webserver/server.js +293 -26
  883. package/codeyam-cli/src/webserver/server.js.map +1 -1
  884. package/codeyam-cli/src/webserver/terminalServer.js +726 -0
  885. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  886. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  887. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  888. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  889. package/codeyam-cli/templates/chrome-extension-react/package.json +26 -0
  890. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  891. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  892. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  893. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  894. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  895. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  896. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  897. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  898. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  899. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  900. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  901. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  902. package/codeyam-cli/templates/editor-step-hook.py +231 -0
  903. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  904. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  905. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  906. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  907. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  908. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  909. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  910. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  911. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  912. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  913. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  914. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  915. package/codeyam-cli/templates/expo-react-native/package.json +37 -0
  916. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  917. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  918. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  919. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  920. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  921. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  922. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  923. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  924. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  925. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  926. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  927. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +112 -0
  928. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  929. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  930. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  931. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  932. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  933. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  934. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  935. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  936. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  937. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  938. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  939. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +38 -0
  940. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  941. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  942. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  943. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  944. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +92 -0
  945. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  946. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  947. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  948. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  949. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  950. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  951. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  952. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  953. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  954. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  955. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  956. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  957. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  958. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +36 -0
  959. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  960. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  961. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  962. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  963. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  964. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  965. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  966. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  967. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  968. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  969. package/codeyam-cli/templates/rule-reflection-hook.py +647 -0
  970. package/codeyam-cli/templates/rules-instructions.md +78 -0
  971. package/codeyam-cli/templates/{codeyam-debug-skill.md → skills/codeyam-debug/SKILL.md} +48 -4
  972. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  973. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +145 -0
  974. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  975. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  976. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  977. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  978. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  979. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  980. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  981. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  982. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  983. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  984. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  985. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  986. package/codeyam-cli/templates/{codeyam-setup-skill.md → skills/codeyam-setup/SKILL.md} +151 -4
  987. package/codeyam-cli/templates/{codeyam-sim-skill.md → skills/codeyam-sim/SKILL.md} +1 -1
  988. package/codeyam-cli/templates/{codeyam-test-skill.md → skills/codeyam-test/SKILL.md} +1 -1
  989. package/codeyam-cli/templates/{codeyam-verify-skill.md → skills/codeyam-verify/SKILL.md} +1 -1
  990. package/package.json +39 -29
  991. package/packages/ai/index.js +8 -6
  992. package/packages/ai/index.js.map +1 -1
  993. package/packages/ai/src/lib/analyzeScope.js +181 -13
  994. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  995. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  996. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  997. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +176 -13
  998. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  999. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  1000. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  1001. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  1002. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  1003. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  1004. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  1005. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  1006. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  1007. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +23 -0
  1008. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  1009. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  1010. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  1011. package/packages/ai/src/lib/astScopes/processExpression.js +1235 -104
  1012. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  1013. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  1014. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  1015. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  1016. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  1017. package/packages/ai/src/lib/completionCall.js +188 -38
  1018. package/packages/ai/src/lib/completionCall.js.map +1 -1
  1019. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +2192 -224
  1020. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  1021. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +19 -4
  1022. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  1023. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +661 -0
  1024. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -0
  1025. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +180 -56
  1026. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  1027. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  1028. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  1029. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  1030. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  1031. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +66 -2
  1032. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  1033. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +139 -13
  1034. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  1035. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  1036. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  1037. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  1038. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  1039. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +142 -12
  1040. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  1041. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js +86 -0
  1042. package/packages/ai/src/lib/dataStructure/helpers/convertNullToUndefinedBySchema.js.map +1 -0
  1043. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  1044. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  1045. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  1046. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  1047. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +371 -73
  1048. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  1049. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  1050. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  1051. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  1052. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  1053. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  1054. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  1055. package/packages/ai/src/lib/deepEqual.js +32 -0
  1056. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  1057. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  1058. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  1059. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  1060. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  1061. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +62 -5
  1062. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  1063. package/packages/ai/src/lib/generateChangesEntityScenarios.js +81 -90
  1064. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  1065. package/packages/ai/src/lib/generateEntityDataStructure.js +50 -1
  1066. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  1067. package/packages/ai/src/lib/generateEntityScenarioData.js +1183 -85
  1068. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  1069. package/packages/ai/src/lib/generateEntityScenarios.js +193 -83
  1070. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  1071. package/packages/ai/src/lib/generateExecutionFlows.js +484 -0
  1072. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  1073. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  1074. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  1075. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  1076. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  1077. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  1078. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  1079. package/packages/ai/src/lib/getConditionalUsagesFromCode.js +84 -14
  1080. package/packages/ai/src/lib/getConditionalUsagesFromCode.js.map +1 -1
  1081. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -1
  1082. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  1083. package/packages/ai/src/lib/isolateScopes.js +270 -7
  1084. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  1085. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  1086. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  1087. package/packages/ai/src/lib/mergeStatements.js +88 -46
  1088. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  1089. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  1090. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  1091. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +16 -4
  1092. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  1093. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  1094. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  1095. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -64
  1096. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  1097. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  1098. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  1099. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  1100. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  1101. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -34
  1102. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  1103. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  1104. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  1105. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +16 -3
  1106. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  1107. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  1108. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  1109. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  1110. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  1111. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  1112. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  1113. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  1114. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  1115. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +98 -1
  1116. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  1117. package/packages/analyze/index.js +1 -0
  1118. package/packages/analyze/index.js.map +1 -1
  1119. package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
  1120. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  1121. package/packages/analyze/src/lib/ProjectAnalyzer.js +109 -30
  1122. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  1123. package/packages/analyze/src/lib/analysisContext.js +30 -5
  1124. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  1125. package/packages/analyze/src/lib/asts/index.js +4 -2
  1126. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  1127. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  1128. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  1129. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  1130. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  1131. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  1132. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  1133. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  1134. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  1135. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  1136. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  1137. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  1138. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  1139. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  1140. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  1141. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  1142. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  1143. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  1144. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  1145. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +428 -123
  1146. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  1147. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +49 -1
  1148. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  1149. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +11 -0
  1150. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  1151. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  1152. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  1153. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  1154. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  1155. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  1156. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  1157. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  1158. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  1159. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  1160. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  1161. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  1162. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  1163. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  1164. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  1165. package/packages/analyze/src/lib/files/getImportedExports.js +17 -8
  1166. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  1167. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  1168. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  1169. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +255 -0
  1170. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -0
  1171. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  1172. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  1173. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +536 -73
  1174. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  1175. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js +1 -1
  1176. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarioData.js.map +1 -1
  1177. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  1178. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  1179. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +469 -85
  1180. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  1181. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +104 -0
  1182. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  1183. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +56 -69
  1184. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  1185. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +4 -8
  1186. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  1187. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +891 -143
  1188. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  1189. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  1190. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  1191. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  1192. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  1193. package/packages/analyze/src/lib/index.js +1 -0
  1194. package/packages/analyze/src/lib/index.js.map +1 -1
  1195. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  1196. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  1197. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  1198. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  1199. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  1200. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  1201. package/packages/database/index.js +1 -0
  1202. package/packages/database/index.js.map +1 -1
  1203. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  1204. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  1205. package/packages/database/src/lib/analysisToDb.js +1 -1
  1206. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  1207. package/packages/database/src/lib/branchToDb.js +1 -1
  1208. package/packages/database/src/lib/branchToDb.js.map +1 -1
  1209. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  1210. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  1211. package/packages/database/src/lib/commitToDb.js +1 -1
  1212. package/packages/database/src/lib/commitToDb.js.map +1 -1
  1213. package/packages/database/src/lib/fileToDb.js +1 -1
  1214. package/packages/database/src/lib/fileToDb.js.map +1 -1
  1215. package/packages/database/src/lib/kysely/db.js +18 -3
  1216. package/packages/database/src/lib/kysely/db.js.map +1 -1
  1217. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  1218. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  1219. package/packages/database/src/lib/kysely/tables/debugReportsTable.js +9 -3
  1220. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  1221. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +65 -0
  1222. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  1223. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  1224. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  1225. package/packages/database/src/lib/loadAnalyses.js +45 -2
  1226. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  1227. package/packages/database/src/lib/loadAnalysis.js +8 -0
  1228. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  1229. package/packages/database/src/lib/loadBranch.js +11 -1
  1230. package/packages/database/src/lib/loadBranch.js.map +1 -1
  1231. package/packages/database/src/lib/loadCommit.js +7 -0
  1232. package/packages/database/src/lib/loadCommit.js.map +1 -1
  1233. package/packages/database/src/lib/loadCommits.js +45 -14
  1234. package/packages/database/src/lib/loadCommits.js.map +1 -1
  1235. package/packages/database/src/lib/loadEntities.js +23 -4
  1236. package/packages/database/src/lib/loadEntities.js.map +1 -1
  1237. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  1238. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  1239. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +20 -5
  1240. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  1241. package/packages/database/src/lib/projectToDb.js +1 -1
  1242. package/packages/database/src/lib/projectToDb.js.map +1 -1
  1243. package/packages/database/src/lib/saveFiles.js +1 -1
  1244. package/packages/database/src/lib/saveFiles.js.map +1 -1
  1245. package/packages/database/src/lib/scenarioToDb.js +1 -1
  1246. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  1247. package/packages/database/src/lib/updateCommitMetadata.js +100 -88
  1248. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  1249. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  1250. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  1251. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  1252. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  1253. package/packages/generate/index.js +3 -0
  1254. package/packages/generate/index.js.map +1 -1
  1255. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  1256. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  1257. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +217 -0
  1258. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  1259. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  1260. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  1261. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +41 -9
  1262. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  1263. package/packages/generate/src/lib/deepMerge.js +27 -1
  1264. package/packages/generate/src/lib/deepMerge.js.map +1 -1
  1265. package/packages/generate/src/lib/directExecutionScript.js +10 -1
  1266. package/packages/generate/src/lib/directExecutionScript.js.map +1 -1
  1267. package/packages/generate/src/lib/getComponentScenarioPath.js +7 -3
  1268. package/packages/generate/src/lib/getComponentScenarioPath.js.map +1 -1
  1269. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  1270. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  1271. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  1272. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  1273. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  1274. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  1275. package/packages/process/index.js +3 -0
  1276. package/packages/process/index.js.map +1 -0
  1277. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  1278. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  1279. package/packages/process/src/ProcessManager.js.map +1 -0
  1280. package/packages/process/src/index.js.map +1 -0
  1281. package/packages/process/src/managedExecAsync.js.map +1 -0
  1282. package/packages/types/index.js.map +1 -1
  1283. package/packages/types/src/enums/ProjectFramework.js +2 -0
  1284. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  1285. package/packages/utils/src/lib/applyUniversalMocks.js +26 -2
  1286. package/packages/utils/src/lib/applyUniversalMocks.js.map +1 -1
  1287. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  1288. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  1289. package/packages/utils/src/lib/lightweightEntityExtractor.js +25 -0
  1290. package/packages/utils/src/lib/lightweightEntityExtractor.js.map +1 -1
  1291. package/packages/utils/src/lib/safeFileName.js +29 -3
  1292. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  1293. package/scripts/npm-post-install.cjs +34 -0
  1294. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  1295. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -197
  1296. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -271
  1297. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -294
  1298. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  1299. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -115
  1300. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  1301. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  1302. package/analyzer-template/process/README.md +0 -507
  1303. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  1304. package/background/src/lib/process/ProcessManager.js.map +0 -1
  1305. package/background/src/lib/process/index.js.map +0 -1
  1306. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  1307. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js +0 -238
  1308. package/codeyam-cli/scripts/fixtures/cal.com/universal-mocks/packages/prisma/index.js.map +0 -1
  1309. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  1310. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  1311. package/codeyam-cli/src/commands/list.js +0 -31
  1312. package/codeyam-cli/src/commands/list.js.map +0 -1
  1313. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  1314. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  1315. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  1316. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  1317. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-D4htqD-x.js +0 -1
  1318. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-Catz6XEN.js +0 -1
  1319. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-TlHocYno.js +0 -26
  1320. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CVMmGuIc.js +0 -3
  1321. package/codeyam-cli/src/webserver/build/client/assets/LogViewer-JkfQ-VaI.js +0 -3
  1322. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-CVZ0H4BL.js +0 -1
  1323. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BrMAP1nP.js +0 -1
  1324. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CJhE4cCv.js +0 -5
  1325. package/codeyam-cli/src/webserver/build/client/assets/_index-faVIcr_i.js +0 -1
  1326. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CLMa2sgx.js +0 -7
  1327. package/codeyam-cli/src/webserver/build/client/assets/chevron-down-DwYjrK_h.js +0 -1
  1328. package/codeyam-cli/src/webserver/build/client/assets/chunk-WWGJGFF6-CgXbbZRx.js +0 -26
  1329. package/codeyam-cli/src/webserver/build/client/assets/circle-check-B2oHQ-zo.js +0 -1
  1330. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BBYuR56H.js +0 -1
  1331. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CT0Q5lVu.js +0 -1
  1332. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-Bj5GHkhb.js +0 -1
  1333. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.edit._scenarioId-eW5z9AyZ.js +0 -5
  1334. package/codeyam-cli/src/webserver/build/client/assets/entry.client-B9tSboXM.js +0 -5
  1335. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-CmO-EZAB.js +0 -1
  1336. package/codeyam-cli/src/webserver/build/client/assets/files-DLinnTOx.js +0 -1
  1337. package/codeyam-cli/src/webserver/build/client/assets/git-CIxwBQvb.js +0 -12
  1338. package/codeyam-cli/src/webserver/build/client/assets/globals-xPz593l2.css +0 -1
  1339. package/codeyam-cli/src/webserver/build/client/assets/html2canvas-pro.esm-XQCGvadH.js +0 -5
  1340. package/codeyam-cli/src/webserver/build/client/assets/index-_LjBsTxX.js +0 -8
  1341. package/codeyam-cli/src/webserver/build/client/assets/loader-circle-D_EGChhq.js +0 -1
  1342. package/codeyam-cli/src/webserver/build/client/assets/manifest-ca438c41.js +0 -1
  1343. package/codeyam-cli/src/webserver/build/client/assets/root-CHHYHuzL.js +0 -16
  1344. package/codeyam-cli/src/webserver/build/client/assets/search-DY8yoDpH.js +0 -1
  1345. package/codeyam-cli/src/webserver/build/client/assets/server-build-CMKNK2uU.css +0 -1
  1346. package/codeyam-cli/src/webserver/build/client/assets/settings-BT6wVHd5.js +0 -1
  1347. package/codeyam-cli/src/webserver/build/client/assets/simulations-gv3H7JV7.js +0 -1
  1348. package/codeyam-cli/src/webserver/build/client/assets/triangle-alert-BthANBVv.js +0 -1
  1349. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-Blr5oZDE.js +0 -2
  1350. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CANr3QJ5.js +0 -1
  1351. package/codeyam-cli/src/webserver/build/server/assets/index-BtBPtyHx.js +0 -1
  1352. package/codeyam-cli/src/webserver/build/server/assets/server-build-N2cTnejq.js +0 -166
  1353. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  1354. package/codeyam-cli/templates/debug-command.md +0 -141
  1355. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  1356. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  1357. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -136
  1358. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  1359. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -220
  1360. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  1361. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -241
  1362. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  1363. package/packages/ai/src/lib/isFrontend.js +0 -5
  1364. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  1365. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  1366. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  1367. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -72
  1368. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  1369. package/scripts/finalize-analyzer.cjs +0 -79
  1370. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  1371. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  1372. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  1373. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  1374. /package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-CMKNK2uU.css → styles-CMKNK2uU.css} +0 -0
  1375. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  1376. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  1377. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -1,8 +1,10 @@
1
- // import { writeFile } from 'fs/promises';
2
1
  import {
3
2
  convertDotNotation,
4
3
  fillInDirectSchemaGapsAndUnknowns,
4
+ buildSchemaIndexes,
5
+ type SchemaIndexes,
5
6
  joinParenthesesAndArrays,
7
+ mergeJsonTypeDefinitions,
6
8
  splitOutsideParenthesesAndArrays,
7
9
  } from '~codeyam/ai';
8
10
  import { DataStructure, JsonTypeDefinition } from '~codeyam/types';
@@ -15,6 +17,65 @@ function cleanFunctionName(name: string): string {
15
17
  return name?.split('<')[0];
16
18
  }
17
19
 
20
+ /**
21
+ * Escapes special regex characters in a string.
22
+ */
23
+ function escapeRegExp(str: string): string {
24
+ return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
25
+ }
26
+
27
+ /**
28
+ * Counts only DIRECT function calls, excluding method chains on return values.
29
+ *
30
+ * When a hook returns an object with methods that are later called, the analysis
31
+ * tracks those as call signatures like 'useAuth().functionCallReturnValue.signOut()'.
32
+ * These are NOT separate calls to useAuth - they're method invocations on the return value.
33
+ *
34
+ * This function filters out such method chains to get the true count of direct calls.
35
+ *
36
+ * @example
37
+ * // One direct call, one method on return value
38
+ * countDirectCalls(['useAuth()', 'useAuth().functionCallReturnValue.signOut()']) // => 1
39
+ *
40
+ * // Two direct calls
41
+ * countDirectCalls(['useFetcher()', 'useFetcher()']) // => 2
42
+ */
43
+ function countDirectCalls(calls: string[]): number {
44
+ return calls.filter((sig) => !sig.includes('.functionCallReturnValue.'))
45
+ .length;
46
+ }
47
+
48
+ /**
49
+ * Checks if all direct calls (non-method-chain calls) are identical.
50
+ * This happens when destructuring a hook call:
51
+ * const { authLoading, signOut } = useAuth();
52
+ * produces calls: ['useAuth()', 'useAuth()'] (same signature repeated)
53
+ *
54
+ * In this case, we should use the full unqualified schema since there's
55
+ * really only ONE function call, not multiple different calls.
56
+ *
57
+ * @example
58
+ * // Same call repeated (from destructuring)
59
+ * allDirectCallsIdentical(['useAuth()', 'useAuth()']) // => true
60
+ *
61
+ * // Different calls
62
+ * allDirectCallsIdentical(['useFetcher<User>()', 'useFetcher<Report>()']) // => false
63
+ *
64
+ * // Single call
65
+ * allDirectCallsIdentical(['useAuth()']) // => true
66
+ *
67
+ * // With method chain (method chain is ignored)
68
+ * allDirectCallsIdentical(['useAuth()', 'useAuth().functionCallReturnValue.signOut()']) // => true
69
+ */
70
+ function allDirectCallsIdentical(calls: string[]): boolean {
71
+ const directCalls = calls.filter(
72
+ (sig) => !sig.includes('.functionCallReturnValue.'),
73
+ );
74
+ if (directCalls.length === 0) return true;
75
+ const firstCall = directCalls[0];
76
+ return directCalls.every((call) => call === firstCall);
77
+ }
78
+
18
79
  /**
19
80
  * Preprocesses the schema to:
20
81
  * 1. Filter out all signature paths
@@ -68,6 +129,18 @@ function preprocessSchemaForMocks(
68
129
  return result;
69
130
  }
70
131
 
132
+ /**
133
+ * Options for gatherDataForMocks
134
+ */
135
+ export interface GatherDataForMocksOptions {
136
+ /**
137
+ * When provided, generates canonical keys in format `EntityName::hookName::index`.
138
+ * This ensures consistent keys across scenarios regardless of variable names
139
+ * chosen during analysis.
140
+ */
141
+ entityName?: string;
142
+ }
143
+
71
144
  /**
72
145
  * Processes a single call (with optional variable name) and returns the mock data entry.
73
146
  * Returns null if no valid schema is found.
@@ -78,6 +151,8 @@ function preprocessSchemaForMocks(
78
151
  * @param variableNameOccurrence - When a variable name is reused, this is the occurrence index
79
152
  * (e.g., first 'data' = 0, second 'data' = 1)
80
153
  * Used to disambiguate keys when the same variable is reused.
154
+ * @param options - Additional options including entityName for canonical key generation
155
+ * @param hookCallIndex - The global index of this hook call for canonical key generation
81
156
  */
82
157
  function processCall(
83
158
  importedExport: {
@@ -89,31 +164,194 @@ function processCall(
89
164
  },
90
165
  dependencySchemas: DataStructure['dependencySchemas'],
91
166
  callIndex: number,
92
- variableNameOccurrence?: number,
167
+ variableNameOccurrence: number | undefined,
168
+ options: GatherDataForMocksOptions | undefined,
169
+ hookCallIndex: number,
170
+ prebuiltIndexes?: SchemaIndexes,
93
171
  ): { key: string; value: JsonTypeDefinition } | null {
94
172
  const callName = importedExport.calls?.[callIndex] ?? importedExport.name;
95
- const variableName = importedExport.callVariableNames?.[callIndex];
173
+
174
+ // Determine if we should use variable-qualified schema or base schema.
175
+ // Use variable-qualified schema when:
176
+ // 1. variableNameOccurrence is defined (we're processing multiple DISTINCT calls), OR
177
+ // 2. Single call with single variable name (directCallCount === 1 && varNamesLength === 1)
178
+ // Use base schema when:
179
+ // - Multiple calls that are all identical (destructuring case: const { a, b } = useHook())
180
+ // - directCallCount !== varNamesLength (rest spread or method chain case)
181
+ // This is important for rest spread destructuring like: const { x, y, ...data } = useLoaderData()
182
+ // where data.queueState.jobs should come from the base schema, not from a variable-qualified schema.
183
+ // Also important: method chains like useAuth().functionCallReturnValue.signOut() should NOT count
184
+ // as separate calls - only direct hook calls count.
185
+ const directCallCount = countDirectCalls(importedExport.calls ?? []);
186
+ const varNamesLength = importedExport.callVariableNames?.length ?? 0;
187
+ const shouldUseVariableQualifiedSchema =
188
+ variableNameOccurrence !== undefined ||
189
+ (directCallCount === 1 && varNamesLength === 1);
190
+ const variableName = shouldUseVariableQualifiedSchema
191
+ ? importedExport.callVariableNames?.[callIndex]
192
+ : undefined;
96
193
 
97
194
  // Build the schema lookup key - use variable-qualified key if available
98
- const schemaLookupKey = variableName
99
- ? `${importedExport.name}::${variableName}`
100
- : importedExport.name;
195
+ // When the same variable name is reused (variableNameOccurrence > 0), try indexed lookup first
196
+ // e.g., "useFetcher::fetcher[1]" for the second use of "fetcher"
197
+ const indexedVariableName =
198
+ variableName &&
199
+ variableNameOccurrence !== undefined &&
200
+ variableNameOccurrence > 0
201
+ ? `${variableName}[${variableNameOccurrence}]`
202
+ : variableName;
203
+
204
+ // Schema lookup order (most specific to least specific):
205
+ // 1. Call signature (e.g., 'useLoaderData<typeof loader>()')
206
+ // 2. Variable-qualified key with index (e.g., 'useFetcher::fetcher[1]')
207
+ // 3. Variable-qualified key without index (e.g., 'useFetcher::fetcher')
208
+ // 4. Base name (e.g., 'useLoaderData')
209
+
210
+ let rawSchema: Record<string, string> = {};
211
+
212
+ // 1. Try call signature first (most specific - new format)
213
+ if (callName !== importedExport.name) {
214
+ rawSchema =
215
+ dependencySchemas?.[importedExport.filePath]?.[callName]
216
+ ?.returnValueSchema ?? {};
217
+ }
218
+
219
+ // 2. Try variable-qualified key with index
220
+ if (Object.keys(rawSchema).length === 0 && indexedVariableName) {
221
+ const indexedKey = `${importedExport.name}::${indexedVariableName}`;
222
+ rawSchema =
223
+ dependencySchemas?.[importedExport.filePath]?.[indexedKey]
224
+ ?.returnValueSchema ?? {};
225
+ }
101
226
 
102
- const rawSchema =
103
- dependencySchemas?.[importedExport.filePath]?.[schemaLookupKey]
227
+ // 3. Try variable-qualified key without index (fallback for indexed lookup)
228
+ if (
229
+ Object.keys(rawSchema).length === 0 &&
230
+ variableNameOccurrence !== undefined &&
231
+ variableNameOccurrence > 0 &&
232
+ variableName
233
+ ) {
234
+ const nonIndexedKey = `${importedExport.name}::${variableName}`;
235
+ rawSchema =
236
+ dependencySchemas?.[importedExport.filePath]?.[nonIndexedKey]
237
+ ?.returnValueSchema ?? {};
238
+ }
239
+
240
+ // 4. Get base name schema and merge with call-specific schema
241
+ // The base schema often has more complete array element details that the
242
+ // call-specific schema might be missing. Instead of using as fallback only
243
+ // when empty, MERGE both schemas so we get the most complete picture.
244
+ //
245
+ // HOWEVER: For type-parameterized calls where the base schema contains paths
246
+ // from MULTIPLE DIFFERENT type parameters, DON'T merge to avoid contamination.
247
+ // The call-specific schema (rawSchema) is already isolated and complete.
248
+ const baseSchema =
249
+ dependencySchemas?.[importedExport.filePath]?.[importedExport.name]
104
250
  ?.returnValueSchema ?? {};
105
251
 
106
- // If no schema found with variable-qualified key, fall back to base name
107
- const fallbackSchema =
108
- Object.keys(rawSchema).length === 0
109
- ? (dependencySchemas?.[importedExport.filePath]?.[importedExport.name]
110
- ?.returnValueSchema ?? {})
111
- : rawSchema;
252
+ // Check if this is a type-parameterized call with a call-specific schema
253
+ const hasTypeParams = callName.includes('<') && callName.includes('>');
254
+ const hasCallSpecificSchema = Object.keys(rawSchema).length > 0;
112
255
 
113
- // Preprocess to filter signatures and extract functionCallReturnValue
114
- let preprocessedSchema = preprocessSchemaForMocks(fallbackSchema);
256
+ // Check if the base schema has multiple DIFFERENT type parameter variants
257
+ // If so, merging would bring in wrong fields from other variants
258
+ let baseHasMultipleTypeParamVariants = false;
259
+ if (hasTypeParams && hasCallSpecificSchema) {
260
+ const baseFunctionName = cleanFunctionName(callName.split('(')[0]);
261
+ const typeParamVariantsInBase = new Set<string>();
262
+
263
+ for (const path of Object.keys(baseSchema)) {
264
+ // Look for paths like "useFetcher<TypeA>(...)" or "useFetcher<TypeB>(...)"
265
+ const match = path.match(
266
+ new RegExp(`^${escapeRegExp(baseFunctionName)}<([^>]+)>\\(`),
267
+ );
268
+ if (match) {
269
+ typeParamVariantsInBase.add(match[1]);
270
+ }
271
+ }
272
+ baseHasMultipleTypeParamVariants = typeParamVariantsInBase.size > 1;
273
+ }
115
274
 
116
- const functionNames: string[] = [];
275
+ // For type-parameterized calls where we have a call-specific schema, we need to
276
+ // be careful about merging with the base schema. The base schema may contain
277
+ // merged data from ALL type parameter variants, which would pollute the result.
278
+ let mergedSchema: Record<string, string>;
279
+ if (hasCallSpecificSchema && hasTypeParams) {
280
+ if (baseHasMultipleTypeParamVariants) {
281
+ // Base schema has paths with different type parameters - filter to only
282
+ // include paths matching the current type parameter.
283
+ const typeParamMatch = callName.match(/<([^>]+)>/);
284
+ const currentTypeParam = typeParamMatch ? typeParamMatch[1] : null;
285
+ const baseFunctionName = cleanFunctionName(callName.split('(')[0]);
286
+
287
+ if (currentTypeParam) {
288
+ // Filter base schema to only include paths that:
289
+ // 1. Match current type param (e.g., useLoaderData<LoaderData>())
290
+ // 2. OR don't have any type param (generic paths like useLoaderData())
291
+ const filteredBaseSchema: Record<string, string> = {};
292
+ for (const [path, type] of Object.entries(baseSchema)) {
293
+ // Check if path has a type parameter for this function
294
+ const pathTypeParamMatch = path.match(
295
+ new RegExp(`^${escapeRegExp(baseFunctionName)}<([^>]+)>\\(`),
296
+ );
297
+ if (pathTypeParamMatch) {
298
+ // Path has a type param - only include if it matches current
299
+ if (pathTypeParamMatch[1] === currentTypeParam) {
300
+ filteredBaseSchema[path] = type;
301
+ }
302
+ // Otherwise skip (it's for a different type param variant)
303
+ } else {
304
+ // Path doesn't have a type param for this function - include it
305
+ // (could be generic paths or paths for other functions)
306
+ filteredBaseSchema[path] = type;
307
+ }
308
+ }
309
+ mergedSchema = { ...filteredBaseSchema, ...rawSchema };
310
+ } else {
311
+ // Couldn't extract type param - fall back to rawSchema only
312
+ mergedSchema = rawSchema;
313
+ }
314
+ } else {
315
+ // Base schema has zero or one type-parameterized variant.
316
+ // When there's only one variant, the base schema paths are safe to merge
317
+ // (no contamination from other variants). This is important for cases like:
318
+ // - Array element details (gitStatus[].path) that are in base but not call-specific
319
+ // - Enriched paths that should be preserved
320
+ // Filter to only include paths matching current type param or generic paths.
321
+ const typeParamMatch = callName.match(/<([^>]+)>/);
322
+ const currentTypeParam = typeParamMatch ? typeParamMatch[1] : null;
323
+ const baseFunctionName = cleanFunctionName(callName.split('(')[0]);
324
+
325
+ if (currentTypeParam) {
326
+ const filteredBaseSchema: Record<string, string> = {};
327
+ for (const [path, type] of Object.entries(baseSchema)) {
328
+ const pathTypeParamMatch = path.match(
329
+ new RegExp(`^${escapeRegExp(baseFunctionName)}<([^>]+)>\\(`),
330
+ );
331
+ if (pathTypeParamMatch) {
332
+ // Path has a type param - only include if it matches current
333
+ if (pathTypeParamMatch[1] === currentTypeParam) {
334
+ filteredBaseSchema[path] = type;
335
+ }
336
+ } else {
337
+ // Path doesn't have a type param - include generic paths
338
+ filteredBaseSchema[path] = type;
339
+ }
340
+ }
341
+ mergedSchema = { ...filteredBaseSchema, ...rawSchema };
342
+ } else {
343
+ // No type param to extract - merge normally
344
+ mergedSchema = { ...baseSchema, ...rawSchema };
345
+ }
346
+ }
347
+ } else if (Object.keys(rawSchema).length === 0) {
348
+ mergedSchema = baseSchema;
349
+ } else {
350
+ mergedSchema = { ...baseSchema, ...rawSchema };
351
+ }
352
+
353
+ // Preprocess to filter signatures and extract functionCallReturnValue
354
+ let preprocessedSchema = preprocessSchemaForMocks(mergedSchema);
117
355
 
118
356
  const isFunctionNameWithoutFunction = (
119
357
  path: string,
@@ -169,26 +407,28 @@ function processCall(
169
407
  if (callName.includes('(') && !callName.includes('<')) {
170
408
  // Extract the base function name and create generic call
171
409
  const baseFunctionName = callName.split('(')[0];
172
- const genericCall = variableName
173
- ? `${baseFunctionName}()::${variableName}`
174
- : baseFunctionName + '()';
175
410
 
176
- // Build the actual callName with variable qualifier if present
177
- const actualCallName = variableName
178
- ? `${callName}::${variableName}`
179
- : callName;
411
+ // For path matching, use non-qualified call names since schema paths don't include
412
+ // variable qualifiers. Variable qualifiers are only for schema lookup, not path matching.
413
+ const genericCallForMatching = baseFunctionName + '()';
414
+ const specificCallForMatching = callName;
180
415
 
181
416
  // Only merge if the callName has arguments (not just empty parens)
182
- if (actualCallName !== genericCall) {
417
+ if (specificCallForMatching !== genericCallForMatching) {
183
418
  const mergedSchema: Record<string, string> = {
184
419
  ...preprocessedSchema,
185
420
  };
186
421
  for (const path of Object.keys(preprocessedSchema)) {
187
- if (path.startsWith(genericCall)) {
422
+ if (path.startsWith(genericCallForMatching)) {
188
423
  // Create corresponding specific path
189
- const specificPath = actualCallName + path.slice(genericCall.length);
190
- // Only add if the specific path doesn't already exist
191
- if (!mergedSchema[specificPath]) {
424
+ const specificPath =
425
+ specificCallForMatching + path.slice(genericCallForMatching.length);
426
+ // Add if the specific path doesn't exist, OR if it exists but is "unknown"
427
+ // The generic call's schema often has more precise type info than the specific call
428
+ if (
429
+ !mergedSchema[specificPath] ||
430
+ mergedSchema[specificPath] === 'unknown'
431
+ ) {
192
432
  mergedSchema[specificPath] = preprocessedSchema[path];
193
433
  }
194
434
  }
@@ -197,38 +437,66 @@ function processCall(
197
437
  }
198
438
  }
199
439
 
200
- const relevantMergedDependencySchema = Object.keys(preprocessedSchema).reduce(
201
- (acc, path) => {
202
- if (path.endsWith(')')) {
203
- const pathParts = splitOutsideParenthesesAndArrays(path);
204
- const functionName = joinParenthesesAndArrays([
205
- ...pathParts.slice(0, -1),
206
- pathParts[pathParts.length - 1].split('(')[0],
207
- ]);
208
- functionNames.push(functionName);
209
- for (const existingPath in acc) {
210
- if (isFunctionNameWithoutFunction(existingPath, functionName)) {
211
- delete acc[existingPath];
212
- }
213
- }
214
- }
440
+ // Two-pass function name filtering to avoid O() retroactive deletion.
441
+ // Pass 1: Discover all unique function names from paths ending with ')'
442
+ const functionNameSet = new Set<string>();
443
+ const schemaKeys = Object.keys(preprocessedSchema);
444
+ for (const path of schemaKeys) {
445
+ if (path.endsWith(')')) {
446
+ const pathParts = splitOutsideParenthesesAndArrays(path);
447
+ const functionName = joinParenthesesAndArrays([
448
+ ...pathParts.slice(0, -1),
449
+ pathParts[pathParts.length - 1].split('(')[0],
450
+ ]);
451
+ functionNameSet.add(functionName);
452
+ }
453
+ }
215
454
 
216
- if (functionNames.some((fn) => isFunctionNameWithoutFunction(path, fn))) {
217
- return acc;
218
- }
455
+ // Index function names by first segment for O(1) bucket lookup instead of
456
+ // checking all function names for every path. Most paths only need to check
457
+ // 1-2 function names instead of all F.
458
+ const fnByFirstSegment = new Map<string, string[]>();
459
+ for (const fn of functionNameSet) {
460
+ const dotIdx = fn.indexOf('.');
461
+ const firstSeg = dotIdx >= 0 ? fn.slice(0, dotIdx) : fn;
462
+ let bucket = fnByFirstSegment.get(firstSeg);
463
+ if (!bucket) {
464
+ bucket = [];
465
+ fnByFirstSegment.set(firstSeg, bucket);
466
+ }
467
+ bucket.push(fn);
468
+ }
219
469
 
220
- acc[path] = preprocessedSchema[path];
221
- return acc;
222
- },
223
- {} as Record<string, string>,
224
- );
470
+ // Pass 2: Filter paths that match any discovered function name prefix.
471
+ // Use indexed lookup: extract path's first segment, check only matching function names.
472
+ const relevantMergedDependencySchema: Record<string, string> = {};
473
+ for (const path of schemaKeys) {
474
+ // Extract first segment of path (before first '.', '(', or '<')
475
+ const dotIdx = path.indexOf('.');
476
+ const parenIdx = path.indexOf('(');
477
+ const angleIdx = path.indexOf('<');
478
+ let minIdx = path.length;
479
+ if (dotIdx >= 0 && dotIdx < minIdx) minIdx = dotIdx;
480
+ if (parenIdx >= 0 && parenIdx < minIdx) minIdx = parenIdx;
481
+ if (angleIdx >= 0 && angleIdx < minIdx) minIdx = angleIdx;
482
+ const firstSeg = path.slice(0, minIdx);
483
+
484
+ const candidates = fnByFirstSegment.get(firstSeg);
485
+ if (
486
+ !candidates ||
487
+ !candidates.some((fn) => isFunctionNameWithoutFunction(path, fn))
488
+ ) {
489
+ relevantMergedDependencySchema[path] = preprocessedSchema[path];
490
+ }
491
+ }
225
492
 
226
- const schema = convertDotNotation(
227
- fillInDirectSchemaGapsAndUnknowns({
228
- scopeName: importedExport.name,
229
- schema: relevantMergedDependencySchema,
230
- }),
231
- );
493
+ const filledSchema = fillInDirectSchemaGapsAndUnknowns({
494
+ scopeName: importedExport.name,
495
+ schema: relevantMergedDependencySchema,
496
+ prebuiltIndexes,
497
+ });
498
+
499
+ const schema = convertDotNotation(filledSchema);
232
500
 
233
501
  // Determine if this is an object-style or hook-style dependency:
234
502
  // - Hook-style: calls = ['useAuth()'] - call starts with name + '('
@@ -243,23 +511,11 @@ function processCall(
243
511
  ? `${baseSchemaKey}::${variableName}`
244
512
  : baseSchemaKey;
245
513
 
246
- // Build output key - for variable-qualified, use "variableName <- functionName" format
247
- // This reads naturally as "variableName receives from functionName"
248
- // When a variable name is reused (variableNameOccurrence > 0), disambiguate with index
249
- let outputKey: string;
250
- if (variableName) {
251
- // When the same variable name is used multiple times, append the occurrence index
252
- // to create unique keys: "data[0] <- useFetch", "data[1] <- useFetch"
253
- const disambiguator =
254
- variableNameOccurrence !== undefined && variableNameOccurrence > 0
255
- ? `[${variableNameOccurrence}]`
256
- : '';
257
- outputKey = `${variableName}${disambiguator} <- ${importedExport.name}`;
258
- } else if (isObjectStyle) {
259
- outputKey = importedExport.name;
260
- } else {
261
- outputKey = callName;
262
- }
514
+ // Build output key - use the ORIGINAL CALL SIGNATURE from the code
515
+ // This makes it clear to the LLM exactly which call needs which data.
516
+ // Example: useFetcher<{ data: UserData }>() vs useFetcher<{ data: ReportData }>()
517
+ // Example: db.select(usersQuery) vs db.select(postsQuery)
518
+ const outputKey = callName;
263
519
 
264
520
  // Try to find return value - check with variable qualifier first, then without
265
521
  let returnValue = schema[schemaKey];
@@ -269,6 +525,38 @@ function processCall(
269
525
  if (!returnValue) {
270
526
  returnValue = schema['returnValue'];
271
527
  }
528
+ // Fallback for function call return values (e.g., useFetcher returns via functionCallReturnValue)
529
+ if (!returnValue) {
530
+ returnValue = schema['functionCallReturnValue'];
531
+ }
532
+
533
+ // Handle method-chain style calls (e.g., createClient().from("workouts").select("*") or db.select(query))
534
+ // After convertDotNotation, the schema is nested: { "createClient()": { "from(...)": { ... } } }
535
+ // We need to navigate the nested structure using the call signature parts.
536
+ // For object-style dependencies (isObjectStyle=true), the baseSchemaKey is just the object name (e.g., "db"),
537
+ // so returnValue might be the parent object, not the actual return value of the method chain.
538
+ // We should always try method-chain navigation for calls with dots and parens.
539
+ if (callName.includes('.') && callName.includes('(')) {
540
+ const callParts = splitOutsideParenthesesAndArrays(callName);
541
+ let current: unknown = schema;
542
+ for (const part of callParts) {
543
+ if (
544
+ current &&
545
+ typeof current === 'object' &&
546
+ !Array.isArray(current) &&
547
+ part in (current as Record<string, unknown>)
548
+ ) {
549
+ current = (current as Record<string, unknown>)[part];
550
+ } else {
551
+ current = undefined;
552
+ break;
553
+ }
554
+ }
555
+ // Use method-chain result if found, otherwise keep previous returnValue
556
+ if (current !== undefined) {
557
+ returnValue = current as typeof returnValue;
558
+ }
559
+ }
272
560
 
273
561
  if (!returnValue) {
274
562
  return null;
@@ -277,6 +565,27 @@ function processCall(
277
565
  return { key: outputKey, value: returnValue as JsonTypeDefinition };
278
566
  }
279
567
 
568
+ /**
569
+ * Adds a result to the accumulator, merging schemas if the key already exists.
570
+ * This handles the case where the same call signature appears multiple times
571
+ * (e.g., two calls to useFetcher() with the same generic type).
572
+ */
573
+ function addResultToAccumulator(
574
+ acc: { [key: string]: JsonTypeDefinition },
575
+ key: string,
576
+ value: JsonTypeDefinition,
577
+ ): void {
578
+ if (acc[key]) {
579
+ // Key already exists - merge the schemas
580
+ acc[key] = mergeJsonTypeDefinitions(
581
+ acc[key] as Record<string, unknown>,
582
+ value as Record<string, unknown>,
583
+ ) as JsonTypeDefinition;
584
+ } else {
585
+ acc[key] = value;
586
+ }
587
+ }
588
+
280
589
  export default function gatherDataForMocks(
281
590
  importedExports: {
282
591
  filePath?: string;
@@ -286,19 +595,162 @@ export default function gatherDataForMocks(
286
595
  callVariableNames?: string[];
287
596
  }[],
288
597
  dependencySchemas: DataStructure['dependencySchemas'],
598
+ options?: GatherDataForMocksOptions,
289
599
  ) {
290
- return importedExports.reduce(
600
+ // Build schema indexes ONCE from all dependency schemas combined.
601
+ // This avoids rebuilding indexes (~1-2 seconds for 18k keys) for each processCall.
602
+ //
603
+ // IMPORTANT: We must preprocess schemas BEFORE building indexes!
604
+ // The schemas contain .functionCallReturnValue paths that get stripped during processing.
605
+ // If we build indexes from original paths, lookups with preprocessed paths will fail.
606
+ // Example: 'hook().functionCallReturnValue.x.length' → index maps 'hook().functionCallReturnValue.x' → ['length']
607
+ // But preprocessed path 'hook().x.length' looks for 'hook().x' which doesn't exist in the index.
608
+ const allSchemaKeys: Record<string, string> = {};
609
+ if (dependencySchemas) {
610
+ for (const filePath in dependencySchemas) {
611
+ for (const entityName in dependencySchemas[filePath]) {
612
+ const schema =
613
+ dependencySchemas[filePath][entityName]?.returnValueSchema;
614
+ if (schema) {
615
+ // Preprocess each schema to remove .functionCallReturnValue before collecting
616
+ const preprocessed = preprocessSchemaForMocks(schema);
617
+ Object.assign(allSchemaKeys, preprocessed);
618
+ }
619
+ }
620
+ }
621
+ }
622
+ const prebuiltIndexes =
623
+ Object.keys(allSchemaKeys).length > 0
624
+ ? buildSchemaIndexes(allSchemaKeys)
625
+ : undefined;
626
+
627
+ // Track the global index for each hook name across all imports
628
+ // This enables canonical keys like EntityName::useLoaderData::0, EntityName::useFetcher::0, etc.
629
+ const hookCallIndices: Record<string, number> = {};
630
+
631
+ const result = importedExports.reduce(
291
632
  (acc, importedExport) => {
292
633
  if (!importedExport.isMocked) return acc;
293
634
 
294
- // Check if we have multiple calls with variable names
295
- const hasMultipleCalls =
296
- importedExport.calls &&
297
- importedExport.calls.length > 1 &&
635
+ // Get the clean hook name for indexing
636
+ const hookName = cleanFunctionName(importedExport.name);
637
+
638
+ // Check if we have multiple DISTINCT direct calls with variable names.
639
+ // Important: Only count direct calls to the function, not method chains on its return value.
640
+ // For example, ['useAuth()', 'useAuth().functionCallReturnValue.signOut()'] has only 1 direct call.
641
+ //
642
+ // ALSO: If all direct calls are IDENTICAL (same signature repeated), this is from
643
+ // destructuring like `const { a, b } = useHook()` and we should use the FULL unqualified
644
+ // schema, not iterate through partial variable-qualified schemas.
645
+ const directCallCount = countDirectCalls(importedExport.calls ?? []);
646
+ const hasMultipleDistinctCalls =
647
+ directCallCount > 1 &&
298
648
  importedExport.callVariableNames &&
299
- importedExport.callVariableNames.length === importedExport.calls.length;
649
+ importedExport.callVariableNames.length === directCallCount &&
650
+ !allDirectCallsIdentical(importedExport.calls ?? []);
651
+
652
+ // Check for multiple distinct method-chain calls WITHOUT callVariableNames.
653
+ // This pattern is common with tRPC, Supabase, etc. where a single import
654
+ // (e.g., `trpc`) is used with multiple different method chains (e.g.,
655
+ // `trpc.useUtils()`, `trpc.quote.getQuotesByOrg.useQuery()`).
656
+ // These should each get their own entry in dataForMocks.
657
+ //
658
+ // IMPORTANT: This is DIFFERENT from the rest spread pattern where a function
659
+ // like useLoaderData is called directly, and other calls are method chains
660
+ // on its return value (e.g., `useLoaderData<typeof loader>()` with
661
+ // `useLoaderData<typeof loader>().uncommittedEntitiesList.filter(...)`).
662
+ // In that case, all the additional calls start with the base function call.
663
+ const directCalls = (importedExport.calls ?? []).filter(
664
+ (sig) => !sig.includes('.functionCallReturnValue.'),
665
+ );
666
+ const uniqueDirectCalls = [...new Set(directCalls)];
667
+
668
+ // Check if any call is a direct invocation of the import (e.g., `useLoaderData<typeof loader>()`)
669
+ // as opposed to all being property accesses (e.g., `trpc.useUtils()`, `trpc.quote.xxx()`).
670
+ // If there's a direct function call, the other calls are likely method chains on its result.
671
+ const baseName = importedExport.name;
672
+ const hasDirectFunctionCall = directCalls.some((sig) => {
673
+ // Pattern: baseName() or baseName<...>()
674
+ // This matches "useLoaderData()", "useLoaderData<typeof loader>()", etc.
675
+ // but NOT "trpc.useUtils()" which has a dot before the parens
676
+ const baseCallPattern = new RegExp(`^${baseName}(<[^>]*>)?\\(`);
677
+ return baseCallPattern.test(sig);
678
+ });
679
+
680
+ const hasMultipleDistinctMethodChains =
681
+ !hasMultipleDistinctCalls &&
682
+ uniqueDirectCalls.length > 1 &&
683
+ !allDirectCallsIdentical(directCalls) &&
684
+ !hasDirectFunctionCall; // Exclude rest spread patterns
685
+
686
+ if (hasMultipleDistinctMethodChains) {
687
+ // For multiple method-chain calls on the same import, create a NESTED structure
688
+ // under the base import name. This allows constructMockCode to generate a
689
+ // combined mock object with all method chains.
690
+ //
691
+ // Example: For calls ['trpc.useUtils()', 'trpc.quote.getQuotesByOrg.useQuery()'],
692
+ // create: { "trpc": { "useUtils()": {...}, "quote": { "getQuotesByOrg": { "useQuery()": {...} } } } }
693
+ const nestedResult: Record<string, unknown> = {};
694
+
695
+ for (let i = 0; i < uniqueDirectCalls.length; i++) {
696
+ // Find the index of this call in the original calls array
697
+ const callIndex = (importedExport.calls ?? []).indexOf(
698
+ uniqueDirectCalls[i],
699
+ );
700
+ if (callIndex === -1) continue;
300
701
 
301
- if (hasMultipleCalls) {
702
+ const hookCallIndex = hookCallIndices[hookName] ?? 0;
703
+ hookCallIndices[hookName] = hookCallIndex + 1;
704
+
705
+ const processResult = processCall(
706
+ importedExport,
707
+ dependencySchemas,
708
+ callIndex,
709
+ undefined,
710
+ options,
711
+ hookCallIndex,
712
+ prebuiltIndexes,
713
+ );
714
+
715
+ if (processResult) {
716
+ // The key is like "trpc.useUtils()" or "trpc.quote.getQuotesByOrg.useQuery()"
717
+ // We need to nest the value at the path AFTER the base name
718
+ const callSignature = processResult.key;
719
+
720
+ // Split the call signature into path parts, handling parens
721
+ // e.g., "trpc.useUtils()" -> ["trpc", "useUtils()"]
722
+ // e.g., "trpc.quote.getQuotesByOrg.useQuery()" -> ["trpc", "quote", "getQuotesByOrg", "useQuery()"]
723
+ const pathParts = splitOutsideParenthesesAndArrays(callSignature);
724
+
725
+ // Skip the base name (first part) and nest the value at the remaining path
726
+ if (pathParts.length > 1 && pathParts[0] === baseName) {
727
+ const nestedPath = pathParts.slice(1);
728
+
729
+ // Set the value at the nested path, merging with existing structure
730
+ let current = nestedResult;
731
+ for (let j = 0; j < nestedPath.length - 1; j++) {
732
+ const part = nestedPath[j];
733
+ if (!(part in current)) {
734
+ current[part] = {};
735
+ }
736
+ current = current[part] as Record<string, unknown>;
737
+ }
738
+ // Set the leaf value
739
+ const leafKey = nestedPath[nestedPath.length - 1];
740
+ current[leafKey] = processResult.value;
741
+ }
742
+ }
743
+ }
744
+
745
+ // Add the nested result under the base import name
746
+ if (Object.keys(nestedResult).length > 0) {
747
+ addResultToAccumulator(
748
+ acc,
749
+ baseName,
750
+ nestedResult as JsonTypeDefinition,
751
+ );
752
+ }
753
+ } else if (hasMultipleDistinctCalls) {
302
754
  // Track how many times each variable name has been seen
303
755
  // to disambiguate keys when the same variable is reused
304
756
  const variableNameCounts: Record<string, number> = {};
@@ -311,21 +763,167 @@ export default function gatherDataForMocks(
311
763
  const occurrence = variableNameCounts[varName] ?? 0;
312
764
  variableNameCounts[varName] = occurrence + 1;
313
765
 
314
- const result = processCall(
766
+ // Get the current hook call index and increment for next call
767
+ const hookCallIndex = hookCallIndices[hookName] ?? 0;
768
+ hookCallIndices[hookName] = hookCallIndex + 1;
769
+
770
+ const processResult = processCall(
315
771
  importedExport,
316
772
  dependencySchemas,
317
773
  i,
318
774
  occurrence,
775
+ options,
776
+ hookCallIndex,
777
+ prebuiltIndexes,
319
778
  );
320
- if (result) {
321
- acc[result.key] = result.value;
779
+ if (processResult) {
780
+ addResultToAccumulator(acc, processResult.key, processResult.value);
781
+ }
782
+ }
783
+ } else if (
784
+ // Handle multiple UNIQUE type-parameterized direct calls when variable count doesn't match.
785
+ // This happens when a hook is called with different type parameters (useFetcher<TypeA>(), useFetcher<TypeB>()),
786
+ // but the callVariableNames count doesn't match directCallCount (common with rest spread patterns).
787
+ // Each unique call signature should get its own entry in dataForMocks.
788
+ uniqueDirectCalls.length > 1 &&
789
+ !allDirectCallsIdentical(directCalls) &&
790
+ hasDirectFunctionCall
791
+ ) {
792
+ // Process each UNIQUE direct call signature
793
+ for (let i = 0; i < uniqueDirectCalls.length; i++) {
794
+ const callSignature = uniqueDirectCalls[i];
795
+
796
+ // Find the index of this call in the original calls array
797
+ const callIndex = (importedExport.calls ?? []).indexOf(callSignature);
798
+ if (callIndex === -1) continue;
799
+
800
+ const hookCallIndex = hookCallIndices[hookName] ?? 0;
801
+ hookCallIndices[hookName] = hookCallIndex + 1;
802
+
803
+ const processResult = processCall(
804
+ importedExport,
805
+ dependencySchemas,
806
+ callIndex,
807
+ undefined,
808
+ options,
809
+ hookCallIndex,
810
+ prebuiltIndexes,
811
+ );
812
+
813
+ if (processResult) {
814
+ addResultToAccumulator(acc, processResult.key, processResult.value);
322
815
  }
323
816
  }
324
817
  } else {
325
- // Original behavior for single calls or calls without variable names
326
- const result = processCall(importedExport, dependencySchemas, 0);
327
- if (result) {
328
- acc[result.key] = result.value;
818
+ // Single calls, or multiple identical calls (from destructuring)
819
+ // Get the current hook call index and increment for next call
820
+ const hookCallIndex = hookCallIndices[hookName] ?? 0;
821
+ hookCallIndices[hookName] = hookCallIndex + 1;
822
+
823
+ // First, try to get result from unqualified schema
824
+ const processResult = processCall(
825
+ importedExport,
826
+ dependencySchemas,
827
+ 0,
828
+ undefined,
829
+ options,
830
+ hookCallIndex,
831
+ prebuiltIndexes,
832
+ );
833
+
834
+ // Check if we got a meaningful result (not empty object or null)
835
+ // Arrays are always meaningful (even empty ones represent valid data structure)
836
+ const hasUnqualifiedResult =
837
+ processResult &&
838
+ processResult.value !== null &&
839
+ (typeof processResult.value !== 'object' ||
840
+ Array.isArray(processResult.value) ||
841
+ Object.keys(processResult.value as object).length > 0);
842
+
843
+ // Check if we have multiple callVariableNames that are DIFFERENT
844
+ // (e.g., from parent + child components using the same hook differently)
845
+ // In this case, we should also merge in variable-qualified schemas
846
+ // to capture all destructured properties from both parent and child.
847
+ const uniqueCallVarNames = new Set(
848
+ importedExport.callVariableNames ?? [],
849
+ );
850
+ const hasDifferentVarNames =
851
+ importedExport.callVariableNames &&
852
+ importedExport.callVariableNames.length > 1 &&
853
+ uniqueCallVarNames.size > 1 &&
854
+ // Only merge variable-qualified schemas when calls are all identical
855
+ // (e.g., useFlags() repeated). Don't do this for method chains
856
+ // or rest spread cases where calls.length !== callVariableNames.length
857
+ allDirectCallsIdentical(importedExport.calls ?? []);
858
+
859
+ if (hasUnqualifiedResult) {
860
+ let finalValue = processResult.value;
861
+
862
+ // If we have different variable names (e.g., from parent and child components),
863
+ // also merge in variable-qualified schemas to ensure we capture all properties.
864
+ // This handles the case where parent uses useFlags().enableNewAdminDashboard
865
+ // and child uses useFlags().flagShowReferenceIdOnQuoteTable.
866
+ if (hasDifferentVarNames) {
867
+ let mergedValue = processResult.value as JsonTypeDefinition;
868
+ for (let i = 0; i < importedExport.callVariableNames!.length; i++) {
869
+ const varQualifiedResult = processCall(
870
+ importedExport,
871
+ dependencySchemas,
872
+ i,
873
+ 0, // Use 0 to trigger variable-qualified lookup
874
+ options,
875
+ hookCallIndex,
876
+ prebuiltIndexes,
877
+ );
878
+ if (varQualifiedResult && varQualifiedResult.value) {
879
+ mergedValue = mergeJsonTypeDefinitions(
880
+ mergedValue as Record<string, unknown>,
881
+ varQualifiedResult.value as Record<string, unknown>,
882
+ ) as JsonTypeDefinition;
883
+ }
884
+ }
885
+ finalValue = mergedValue;
886
+ }
887
+
888
+ addResultToAccumulator(
889
+ acc,
890
+ processResult.key,
891
+ finalValue as JsonTypeDefinition,
892
+ );
893
+ } else if (
894
+ directCallCount > 1 &&
895
+ allDirectCallsIdentical(importedExport.calls ?? []) &&
896
+ importedExport.callVariableNames &&
897
+ importedExport.callVariableNames.length > 0
898
+ ) {
899
+ // No unqualified schema exists, but we have multiple identical calls with variable names
900
+ // Merge all the variable-qualified schemas together
901
+ const callSignature =
902
+ importedExport.calls?.[0] ?? `${importedExport.name}()`;
903
+ let mergedValue: JsonTypeDefinition = {};
904
+
905
+ for (let i = 0; i < importedExport.callVariableNames.length; i++) {
906
+ const varQualifiedResult = processCall(
907
+ importedExport,
908
+ dependencySchemas,
909
+ i,
910
+ 0, // Use 0 to trigger variable-qualified lookup
911
+ options,
912
+ hookCallIndex,
913
+ prebuiltIndexes,
914
+ );
915
+ if (varQualifiedResult && varQualifiedResult.value) {
916
+ // Deep merge the value into the accumulated result
917
+ mergedValue = mergeJsonTypeDefinitions(
918
+ mergedValue,
919
+ varQualifiedResult.value,
920
+ );
921
+ }
922
+ }
923
+
924
+ if (Object.keys(mergedValue as object).length > 0) {
925
+ addResultToAccumulator(acc, callSignature, mergedValue);
926
+ }
329
927
  }
330
928
  }
331
929
 
@@ -333,4 +931,6 @@ export default function gatherDataForMocks(
333
931
  },
334
932
  {} as { [importAlias: string]: JsonTypeDefinition },
335
933
  );
934
+
935
+ return result;
336
936
  }