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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (951) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/common/execAsync.ts +1 -1
  3. package/analyzer-template/log.txt +3 -3
  4. package/analyzer-template/package.json +15 -12
  5. package/analyzer-template/packages/ai/index.ts +21 -5
  6. package/analyzer-template/packages/ai/package.json +3 -3
  7. package/analyzer-template/packages/ai/src/lib/__mocks__/completionCall.ts +122 -0
  8. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +226 -24
  9. package/analyzer-template/packages/ai/src/lib/astScopes/arrayDerivationDetector.ts +199 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +183 -10
  11. package/analyzer-template/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.ts +644 -0
  12. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +181 -23
  13. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  14. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.ts +18 -0
  15. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.ts +15 -0
  16. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.ts +181 -1
  17. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +1229 -30
  18. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  19. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +265 -6
  20. package/analyzer-template/packages/ai/src/lib/checkAllAttributes.ts +29 -10
  21. package/analyzer-template/packages/ai/src/lib/completionCall.ts +216 -36
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +1750 -318
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.ts +296 -35
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.ts +10 -2
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  27. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  28. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  29. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +129 -20
  30. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  31. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  32. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  33. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  34. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -90
  35. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.ts +129 -0
  36. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +183 -0
  37. package/analyzer-template/packages/ai/src/lib/deepEqual.ts +30 -0
  38. package/analyzer-template/packages/ai/src/lib/e2eDataTracking.ts +334 -0
  39. package/analyzer-template/packages/ai/src/lib/extractCriticalDataKeys.ts +120 -0
  40. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarioData.ts +33 -7
  41. package/analyzer-template/packages/ai/src/lib/generateChangesEntityScenarios.ts +86 -142
  42. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +59 -3
  43. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +1385 -67
  44. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +200 -196
  45. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +710 -0
  46. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +528 -0
  47. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +2484 -0
  48. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +239 -0
  49. package/analyzer-template/packages/ai/src/lib/guessScenarioDataFromDescription.ts +5 -5
  50. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +328 -7
  51. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  52. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +111 -87
  53. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  54. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  55. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.ts +1 -1
  56. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.ts +32 -142
  57. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateChunkPrompt.ts +82 -0
  58. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateCriticalKeysPrompt.ts +103 -0
  59. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +110 -6
  60. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.ts +14 -89
  61. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.ts +58 -0
  62. package/analyzer-template/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.ts +11 -11
  63. package/analyzer-template/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.ts +391 -0
  64. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +824 -0
  65. package/analyzer-template/packages/ai/src/lib/splitOutsideParentheses.ts +5 -1
  66. package/analyzer-template/packages/ai/src/lib/validateExecutionFlowPaths.ts +531 -0
  67. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +122 -3
  68. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  69. package/analyzer-template/packages/analyze/index.ts +2 -0
  70. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +79 -59
  71. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  72. package/analyzer-template/packages/analyze/src/lib/analysisContext.ts +44 -4
  73. package/analyzer-template/packages/analyze/src/lib/asts/nodes/index.ts +1 -0
  74. package/analyzer-template/packages/analyze/src/lib/asts/nodes/isAsyncFunction.ts +67 -0
  75. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  76. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  77. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  78. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  79. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  80. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  81. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +467 -283
  82. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +34 -1
  83. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  84. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +3 -0
  85. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  86. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +33 -10
  87. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +31 -15
  88. package/analyzer-template/packages/analyze/src/lib/files/analyzeEntity.ts +11 -7
  89. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +11 -12
  90. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  91. package/analyzer-template/packages/analyze/src/lib/files/enums/steps.ts +1 -1
  92. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  93. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  94. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +201 -46
  95. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.ts +102 -0
  96. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +304 -66
  97. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.ts +28 -62
  98. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +306 -20
  99. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +264 -0
  100. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarioData.ts +1 -0
  101. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateScenarios.ts +2 -3
  102. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +825 -71
  103. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.ts +56 -11
  104. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  105. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  106. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  107. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  108. package/analyzer-template/packages/aws/codebuild/index.ts +1 -0
  109. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts +11 -1
  110. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.d.ts.map +1 -1
  111. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js +29 -18
  112. package/analyzer-template/packages/aws/dist/src/lib/codebuild/waitForBuild.js.map +1 -1
  113. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts +2 -2
  114. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.d.ts.map +1 -1
  115. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js +2 -2
  116. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  117. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts +8 -18
  118. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.d.ts.map +1 -1
  119. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js +17 -61
  120. package/analyzer-template/packages/aws/dist/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  121. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.d.ts.map +1 -1
  122. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js +8 -1
  123. package/analyzer-template/packages/aws/dist/src/lib/s3/uploadFileToS3.js.map +1 -1
  124. package/analyzer-template/packages/aws/package.json +3 -3
  125. package/analyzer-template/packages/aws/src/lib/codebuild/waitForBuild.ts +43 -19
  126. package/analyzer-template/packages/aws/src/lib/ecs/ecsDefineContainer.ts +3 -3
  127. package/analyzer-template/packages/aws/src/lib/ecs/ecsTaskFactory.ts +17 -69
  128. package/analyzer-template/packages/aws/src/lib/s3/uploadFileToS3.ts +8 -1
  129. package/analyzer-template/packages/database/package.json +1 -1
  130. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  131. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  132. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  133. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  134. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  135. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  136. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -1
  137. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  138. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +17 -1
  139. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  140. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  141. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  142. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  143. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  144. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  145. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  146. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  147. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +7 -3
  148. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  149. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  150. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  151. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  152. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  153. package/analyzer-template/packages/generate/index.ts +3 -0
  154. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.ts +17 -1
  155. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +193 -0
  156. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.ts +73 -0
  157. package/analyzer-template/packages/generate/src/lib/scenarioComponentForServer.ts +114 -0
  158. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  159. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  160. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  161. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  162. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  163. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  164. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  165. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  166. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  167. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  168. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  169. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  170. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  171. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  172. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +11 -1
  173. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  174. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts +1 -18
  175. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/analysesTable.d.ts.map +1 -1
  176. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  177. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  178. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  179. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  180. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +17 -1
  181. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts.map +1 -1
  182. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  183. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts +1 -0
  184. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/entitiesTable.d.ts.map +1 -1
  185. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  186. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  187. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  188. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  189. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +2 -6
  190. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  191. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  192. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  193. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  194. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  195. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  196. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  197. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  198. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  199. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  200. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  201. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  202. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  203. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  204. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  205. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  206. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  207. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  208. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  209. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  210. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  211. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  212. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  213. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  214. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  215. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  216. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  217. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  218. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  219. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  220. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  221. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  222. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  223. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  224. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  225. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  226. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  227. package/analyzer-template/packages/github/dist/generate/index.d.ts +3 -0
  228. package/analyzer-template/packages/github/dist/generate/index.d.ts.map +1 -1
  229. package/analyzer-template/packages/github/dist/generate/index.js +3 -0
  230. package/analyzer-template/packages/github/dist/generate/index.js.map +1 -1
  231. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.d.ts.map +1 -1
  232. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  233. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  234. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts +9 -0
  235. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -0
  236. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  237. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  238. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts +20 -0
  239. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.d.ts.map +1 -0
  240. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  241. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  242. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts +8 -0
  243. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.d.ts.map +1 -0
  244. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js +89 -0
  245. package/analyzer-template/packages/github/dist/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  246. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.d.ts.map +1 -1
  247. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js +10 -0
  248. package/analyzer-template/packages/github/dist/github/src/lib/loadOrCreateCommit.js.map +1 -1
  249. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.d.ts.map +1 -1
  250. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js +3 -0
  251. package/analyzer-template/packages/github/dist/github/src/lib/syncPrimaryBranch.js.map +1 -1
  252. package/analyzer-template/packages/github/dist/types/index.d.ts +3 -4
  253. package/analyzer-template/packages/github/dist/types/index.d.ts.map +1 -1
  254. package/analyzer-template/packages/github/dist/types/index.js +0 -1
  255. package/analyzer-template/packages/github/dist/types/index.js.map +1 -1
  256. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts +71 -27
  257. package/analyzer-template/packages/github/dist/types/src/types/Analysis.d.ts.map +1 -1
  258. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  259. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  260. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts +2 -0
  261. package/analyzer-template/packages/github/dist/types/src/types/Entity.d.ts.map +1 -1
  262. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  263. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  264. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +9 -54
  265. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  266. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js +1 -21
  267. package/analyzer-template/packages/github/dist/types/src/types/Scenario.js.map +1 -1
  268. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  269. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  270. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  271. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  272. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts +2 -0
  273. package/analyzer-template/packages/github/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  274. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts +9 -1
  275. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  276. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js +29 -3
  277. package/analyzer-template/packages/github/dist/utils/src/lib/safeFileName.js.map +1 -1
  278. package/analyzer-template/packages/github/package.json +1 -1
  279. package/analyzer-template/packages/github/src/lib/loadOrCreateCommit.ts +14 -0
  280. package/analyzer-template/packages/github/src/lib/syncPrimaryBranch.ts +2 -0
  281. package/analyzer-template/packages/process/index.ts +2 -0
  282. package/analyzer-template/packages/process/package.json +12 -0
  283. package/analyzer-template/packages/process/tsconfig.json +8 -0
  284. package/analyzer-template/packages/types/index.ts +3 -6
  285. package/analyzer-template/packages/types/src/types/Analysis.ts +87 -27
  286. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  287. package/analyzer-template/packages/types/src/types/Entity.ts +2 -0
  288. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  289. package/analyzer-template/packages/types/src/types/Scenario.ts +9 -77
  290. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +181 -5
  291. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  292. package/analyzer-template/packages/types/src/types/StatementInfo.ts +2 -0
  293. package/analyzer-template/packages/utils/dist/types/index.d.ts +3 -4
  294. package/analyzer-template/packages/utils/dist/types/index.d.ts.map +1 -1
  295. package/analyzer-template/packages/utils/dist/types/index.js +0 -1
  296. package/analyzer-template/packages/utils/dist/types/index.js.map +1 -1
  297. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts +71 -27
  298. package/analyzer-template/packages/utils/dist/types/src/types/Analysis.d.ts.map +1 -1
  299. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  300. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  301. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts +2 -0
  302. package/analyzer-template/packages/utils/dist/types/src/types/Entity.d.ts.map +1 -1
  303. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  304. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  305. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +9 -54
  306. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  307. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js +1 -21
  308. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.js.map +1 -1
  309. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +153 -5
  310. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  311. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  312. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  313. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts +2 -0
  314. package/analyzer-template/packages/utils/dist/types/src/types/StatementInfo.d.ts.map +1 -1
  315. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  316. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  317. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  318. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts +9 -1
  319. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.d.ts.map +1 -1
  320. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js +29 -3
  321. package/analyzer-template/packages/utils/dist/utils/src/lib/safeFileName.js.map +1 -1
  322. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  323. package/analyzer-template/packages/utils/src/lib/safeFileName.ts +48 -3
  324. package/analyzer-template/playwright/capture.ts +57 -26
  325. package/analyzer-template/playwright/captureStatic.ts +1 -1
  326. package/analyzer-template/playwright/getCodeYamInfo.ts +12 -7
  327. package/analyzer-template/playwright/waitForServer.ts +21 -6
  328. package/analyzer-template/project/analyzeBaselineCommit.ts +9 -0
  329. package/analyzer-template/project/analyzeBranchCommit.ts +4 -0
  330. package/analyzer-template/project/analyzeFileEntities.ts +4 -0
  331. package/analyzer-template/project/analyzeRegularCommit.ts +9 -0
  332. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  333. package/analyzer-template/project/constructMockCode.ts +1006 -107
  334. package/analyzer-template/project/controller/startController.ts +16 -1
  335. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  336. package/analyzer-template/project/executeLibraryFunctionDirect.ts +7 -3
  337. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  338. package/analyzer-template/project/mocks/analyzeFileMock.ts +8 -7
  339. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  340. package/analyzer-template/project/orchestrateCapture/KyselyAnalysisLoader.ts +3 -6
  341. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +18 -7
  342. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  343. package/analyzer-template/project/orchestrateCapture.ts +81 -9
  344. package/analyzer-template/project/reconcileMockDataKeys.ts +240 -0
  345. package/analyzer-template/project/runAnalysis.ts +11 -0
  346. package/analyzer-template/project/serverOnlyModules.ts +127 -2
  347. package/analyzer-template/project/start.ts +51 -15
  348. package/analyzer-template/project/startScenarioCapture.ts +6 -0
  349. package/analyzer-template/project/writeMockDataTsx.ts +298 -11
  350. package/analyzer-template/project/writeScenarioClientWrapper.ts +21 -0
  351. package/analyzer-template/project/writeScenarioComponents.ts +326 -42
  352. package/analyzer-template/project/writeScenarioFiles.ts +26 -0
  353. package/analyzer-template/project/writeSimpleRoot.ts +23 -13
  354. package/analyzer-template/scripts/comboWorkerLoop.cjs +99 -50
  355. package/analyzer-template/scripts/defaultCmd.sh +9 -0
  356. package/analyzer-template/tsconfig.json +2 -1
  357. package/background/src/lib/local/createLocalAnalyzer.js +2 -30
  358. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  359. package/background/src/lib/local/execAsync.js +1 -1
  360. package/background/src/lib/local/execAsync.js.map +1 -1
  361. package/background/src/lib/virtualized/common/execAsync.js +1 -1
  362. package/background/src/lib/virtualized/common/execAsync.js.map +1 -1
  363. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +7 -1
  364. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  365. package/background/src/lib/virtualized/project/analyzeBranchCommit.js +2 -1
  366. package/background/src/lib/virtualized/project/analyzeBranchCommit.js.map +1 -1
  367. package/background/src/lib/virtualized/project/analyzeFileEntities.js +2 -1
  368. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  369. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +7 -1
  370. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  371. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  372. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  373. package/background/src/lib/virtualized/project/constructMockCode.js +881 -71
  374. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  375. package/background/src/lib/virtualized/project/controller/startController.js +11 -1
  376. package/background/src/lib/virtualized/project/controller/startController.js.map +1 -1
  377. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  378. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  379. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js +6 -3
  380. package/background/src/lib/virtualized/project/executeLibraryFunctionDirect.js.map +1 -1
  381. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  382. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  383. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js +7 -7
  384. package/background/src/lib/virtualized/project/mocks/analyzeFileMock.js.map +1 -1
  385. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  386. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  387. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js +3 -2
  388. package/background/src/lib/virtualized/project/orchestrateCapture/KyselyAnalysisLoader.js.map +1 -1
  389. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +7 -5
  390. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  391. package/background/src/lib/virtualized/project/orchestrateCapture.js +65 -10
  392. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  393. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +199 -0
  394. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  395. package/background/src/lib/virtualized/project/runAnalysis.js +9 -0
  396. package/background/src/lib/virtualized/project/runAnalysis.js.map +1 -1
  397. package/background/src/lib/virtualized/project/serverOnlyModules.js +106 -3
  398. package/background/src/lib/virtualized/project/serverOnlyModules.js.map +1 -1
  399. package/background/src/lib/virtualized/project/start.js +47 -15
  400. package/background/src/lib/virtualized/project/start.js.map +1 -1
  401. package/background/src/lib/virtualized/project/startScenarioCapture.js +7 -0
  402. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  403. package/background/src/lib/virtualized/project/writeMockDataTsx.js +255 -8
  404. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  405. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js +15 -0
  406. package/background/src/lib/virtualized/project/writeScenarioClientWrapper.js.map +1 -0
  407. package/background/src/lib/virtualized/project/writeScenarioComponents.js +255 -41
  408. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  409. package/background/src/lib/virtualized/project/writeScenarioFiles.js +19 -0
  410. package/background/src/lib/virtualized/project/writeScenarioFiles.js.map +1 -1
  411. package/background/src/lib/virtualized/project/writeSimpleRoot.js +23 -13
  412. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  413. package/codeyam-cli/scripts/apply-setup.js +180 -0
  414. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  415. package/codeyam-cli/src/cli.js +9 -1
  416. package/codeyam-cli/src/cli.js.map +1 -1
  417. package/codeyam-cli/src/codeyam-cli.js +18 -2
  418. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  419. package/codeyam-cli/src/commands/analyze.js +5 -3
  420. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  421. package/codeyam-cli/src/commands/baseline.js +176 -0
  422. package/codeyam-cli/src/commands/baseline.js.map +1 -0
  423. package/codeyam-cli/src/commands/debug.js +37 -23
  424. package/codeyam-cli/src/commands/debug.js.map +1 -1
  425. package/codeyam-cli/src/commands/default.js +30 -34
  426. package/codeyam-cli/src/commands/default.js.map +1 -1
  427. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  428. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  429. package/codeyam-cli/src/commands/init.js +49 -257
  430. package/codeyam-cli/src/commands/init.js.map +1 -1
  431. package/codeyam-cli/src/commands/memory.js +307 -0
  432. package/codeyam-cli/src/commands/memory.js.map +1 -0
  433. package/codeyam-cli/src/commands/recapture.js +31 -18
  434. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  435. package/codeyam-cli/src/commands/report.js +46 -1
  436. package/codeyam-cli/src/commands/report.js.map +1 -1
  437. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  438. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  439. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  440. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  441. package/codeyam-cli/src/commands/start.js +8 -12
  442. package/codeyam-cli/src/commands/start.js.map +1 -1
  443. package/codeyam-cli/src/commands/status.js +23 -1
  444. package/codeyam-cli/src/commands/status.js.map +1 -1
  445. package/codeyam-cli/src/commands/test-startup.js +3 -1
  446. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  447. package/codeyam-cli/src/commands/verify.js +14 -2
  448. package/codeyam-cli/src/commands/verify.js.map +1 -1
  449. package/codeyam-cli/src/commands/wipe.js +108 -0
  450. package/codeyam-cli/src/commands/wipe.js.map +1 -0
  451. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  452. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  453. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js +81 -0
  454. package/codeyam-cli/src/utils/__tests__/serverVersionStaleness.test.js.map +1 -0
  455. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -82
  456. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  457. package/codeyam-cli/src/utils/analysisRunner.js +29 -15
  458. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  459. package/codeyam-cli/src/utils/analyzer.js +7 -0
  460. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  461. package/codeyam-cli/src/utils/backgroundServer.js +102 -21
  462. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  463. package/codeyam-cli/src/utils/database.js +91 -5
  464. package/codeyam-cli/src/utils/database.js.map +1 -1
  465. package/codeyam-cli/src/utils/generateReport.js +4 -3
  466. package/codeyam-cli/src/utils/generateReport.js.map +1 -1
  467. package/codeyam-cli/src/utils/git.js +79 -0
  468. package/codeyam-cli/src/utils/git.js.map +1 -0
  469. package/codeyam-cli/src/utils/install-skills.js +76 -37
  470. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  471. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  472. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  473. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  474. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  475. package/codeyam-cli/src/utils/progress.js +7 -0
  476. package/codeyam-cli/src/utils/progress.js.map +1 -1
  477. package/codeyam-cli/src/utils/queue/job.js +109 -0
  478. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  479. package/codeyam-cli/src/utils/queue/manager.js +6 -0
  480. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  481. package/codeyam-cli/src/utils/queue/persistence.js.map +1 -1
  482. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  483. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  484. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  485. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  486. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  487. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  488. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  489. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  490. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  491. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  492. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  493. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  494. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  495. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  496. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  497. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  498. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  499. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  500. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +116 -0
  501. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  502. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  503. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  504. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  505. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  506. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  507. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  508. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  509. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  510. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  511. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  512. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  513. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  514. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  515. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  516. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  517. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  518. package/codeyam-cli/src/utils/rules/index.js +6 -0
  519. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  520. package/codeyam-cli/src/utils/rules/parser.js +83 -0
  521. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  522. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  523. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  524. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  525. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  526. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  527. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  528. package/codeyam-cli/src/utils/serverState.js +37 -10
  529. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  530. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -42
  531. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  532. package/codeyam-cli/src/utils/versionInfo.js +46 -15
  533. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  534. package/codeyam-cli/src/utils/wipe.js +128 -0
  535. package/codeyam-cli/src/utils/wipe.js.map +1 -0
  536. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  537. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  538. package/codeyam-cli/src/webserver/app/lib/database.js +88 -23
  539. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  540. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  541. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  542. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  543. package/codeyam-cli/src/webserver/bootstrap.js +51 -0
  544. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  545. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  546. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-bwuHPyTa.js +11 -0
  547. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CzGX-miz.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  548. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-BH0XDim7.js +41 -0
  549. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +34 -0
  550. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +25 -0
  551. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CBQPrpT0.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  552. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-D1CdlbrV.js → LoadingDots-BvMu2i-g.js} +1 -1
  553. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-wDPcZNKx.js → LogViewer-kgBTLoJD.js} +1 -1
  554. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-BzPgx-xO.js +11 -0
  555. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-BfmDgXxG.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  556. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-BX2Ny2Qj.js +10 -0
  557. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-6J7zDUD5.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  558. package/codeyam-cli/src/webserver/build/client/assets/_index-BRx8ZGZo.js +11 -0
  559. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-4S4yPfFw.js +27 -0
  560. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  561. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  562. package/codeyam-cli/src/webserver/build/client/assets/api.restart-server-l0sNRNKZ.js +1 -0
  563. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  564. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  565. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BYimnrHg.js → chevron-down-CG65viiV.js} +1 -1
  566. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-DB3aFuEO.js +51 -0
  567. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CaVsIRxt.js → circle-check-igfMr5DY.js} +1 -1
  568. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  569. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CgUsG7ib.js → createLucideIcon-D1zB-pYc.js} +1 -1
  570. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-C1gnJVOL.svg → cy-logo-cli-CCKUIm0S.svg} +2 -2
  571. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +1 -0
  572. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +1 -0
  573. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-Dt-SjPsw.js → entity._sha._-B0h9AqE6.js} +12 -12
  574. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +6 -0
  575. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +6 -0
  576. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CfLCUi9S.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  577. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DKJyZfAY.js → entry.client-I-Wo99C_.js} +6 -6
  578. package/codeyam-cli/src/webserver/build/client/assets/executionFlowCoverage-BWhdfn70.js +1 -0
  579. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DAtOlaWE.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  580. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +1 -0
  581. package/codeyam-cli/src/webserver/build/client/assets/{git-D62Lxxmv.js → git-BdHOxVfg.js} +8 -8
  582. package/codeyam-cli/src/webserver/build/client/assets/globals-OvbPxnso.css +1 -0
  583. package/codeyam-cli/src/webserver/build/client/assets/{index-CzNNiTkw.js → index-CUM5iXwc.js} +1 -1
  584. package/codeyam-cli/src/webserver/build/client/assets/{index-BosqDOlH.js → index-_417gcQW.js} +1 -1
  585. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
  586. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CNp9QFCX.js → loader-circle-TzRHMVog.js} +1 -1
  587. package/codeyam-cli/src/webserver/build/client/assets/manifest-1dde4642.js +1 -0
  588. package/codeyam-cli/src/webserver/build/client/assets/memory-CSehFhoZ.js +92 -0
  589. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  590. package/codeyam-cli/src/webserver/build/client/assets/root-WysVEEJs.js +62 -0
  591. package/codeyam-cli/src/webserver/build/client/assets/{search-DDGjYAMJ.js → search-DcAwD_Ln.js} +1 -1
  592. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  593. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +1 -0
  594. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  595. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CBc5dE1s.js → triangle-alert-CAD5b1o_.js} +1 -1
  596. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +1 -0
  597. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-BqPPNjAl.js → useLastLogLine-DAFqfEDH.js} +1 -1
  598. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +1 -0
  599. package/codeyam-cli/src/webserver/build/client/assets/{useToast-DWHcCcl1.js → useToast-ihdMtlf6.js} +1 -1
  600. package/codeyam-cli/src/webserver/build/server/assets/index-Bs3qItZt.js +1 -0
  601. package/codeyam-cli/src/webserver/build/server/assets/server-build-CqaV_Zaw.js +273 -0
  602. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  603. package/codeyam-cli/src/webserver/build-info.json +5 -5
  604. package/codeyam-cli/src/webserver/server.js +35 -25
  605. package/codeyam-cli/src/webserver/server.js.map +1 -1
  606. package/codeyam-cli/templates/{codeyam-debug-skill.md → codeyam-debug.md} +48 -4
  607. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  608. package/codeyam-cli/templates/codeyam-memory-hook.sh +199 -0
  609. package/codeyam-cli/templates/codeyam-memory.md +396 -0
  610. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  611. package/codeyam-cli/templates/{codeyam-setup-skill.md → codeyam-setup.md} +13 -1
  612. package/codeyam-cli/templates/{codeyam-sim-skill.md → codeyam-sim.md} +1 -1
  613. package/codeyam-cli/templates/{codeyam-test-skill.md → codeyam-test.md} +1 -1
  614. package/codeyam-cli/templates/{codeyam-verify-skill.md → codeyam-verify.md} +1 -1
  615. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  616. package/codeyam-cli/templates/rule-reflection-hook.py +627 -0
  617. package/codeyam-cli/templates/rules-instructions.md +132 -0
  618. package/package.json +17 -14
  619. package/packages/ai/index.js +8 -6
  620. package/packages/ai/index.js.map +1 -1
  621. package/packages/ai/src/lib/analyzeScope.js +179 -13
  622. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  623. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js +150 -0
  624. package/packages/ai/src/lib/astScopes/arrayDerivationDetector.js.map +1 -0
  625. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +138 -9
  626. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  627. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js +435 -0
  628. package/packages/ai/src/lib/astScopes/conditionalEffectsExtractor.js.map +1 -0
  629. package/packages/ai/src/lib/astScopes/methodSemantics.js +138 -23
  630. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  631. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  632. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  633. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js +8 -0
  634. package/packages/ai/src/lib/astScopes/patterns/ifStatementHandler.js.map +1 -1
  635. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js +7 -0
  636. package/packages/ai/src/lib/astScopes/patterns/switchStatementHandler.js.map +1 -1
  637. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js +138 -1
  638. package/packages/ai/src/lib/astScopes/patterns/variableDeclarationHandler.js.map +1 -1
  639. package/packages/ai/src/lib/astScopes/processExpression.js +944 -30
  640. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  641. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  642. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  643. package/packages/ai/src/lib/checkAllAttributes.js +24 -9
  644. package/packages/ai/src/lib/checkAllAttributes.js.map +1 -1
  645. package/packages/ai/src/lib/completionCall.js +178 -31
  646. package/packages/ai/src/lib/completionCall.js.map +1 -1
  647. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +1367 -187
  648. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  649. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  650. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  651. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js +230 -23
  652. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/MuiManager.js.map +1 -1
  653. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js +7 -1
  654. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/ReactFrameworkManager.js.map +1 -1
  655. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  656. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  657. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  658. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  659. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  660. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  661. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +111 -14
  662. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  663. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  664. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  665. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  666. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  667. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  668. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  669. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  670. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  671. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -81
  672. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  673. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js +107 -0
  674. package/packages/ai/src/lib/dataStructure/helpers/fixNullIdsBySchema.js.map +1 -0
  675. package/packages/ai/src/lib/dataStructureChunking.js +130 -0
  676. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -0
  677. package/packages/ai/src/lib/deepEqual.js +32 -0
  678. package/packages/ai/src/lib/deepEqual.js.map +1 -0
  679. package/packages/ai/src/lib/e2eDataTracking.js +241 -0
  680. package/packages/ai/src/lib/e2eDataTracking.js.map +1 -0
  681. package/packages/ai/src/lib/extractCriticalDataKeys.js +96 -0
  682. package/packages/ai/src/lib/extractCriticalDataKeys.js.map +1 -0
  683. package/packages/ai/src/lib/generateChangesEntityScenarioData.js +21 -5
  684. package/packages/ai/src/lib/generateChangesEntityScenarioData.js.map +1 -1
  685. package/packages/ai/src/lib/generateChangesEntityScenarios.js +78 -120
  686. package/packages/ai/src/lib/generateChangesEntityScenarios.js.map +1 -1
  687. package/packages/ai/src/lib/generateEntityDataStructure.js +47 -2
  688. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  689. package/packages/ai/src/lib/generateEntityScenarioData.js +1101 -62
  690. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  691. package/packages/ai/src/lib/generateEntityScenarios.js +177 -163
  692. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  693. package/packages/ai/src/lib/generateExecutionFlows.js +495 -0
  694. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -0
  695. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js +380 -0
  696. package/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.js.map +1 -0
  697. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +1807 -0
  698. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -0
  699. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js +194 -0
  700. package/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.js.map +1 -0
  701. package/packages/ai/src/lib/guessScenarioDataFromDescription.js +2 -2
  702. package/packages/ai/src/lib/guessScenarioDataFromDescription.js.map +1 -1
  703. package/packages/ai/src/lib/isolateScopes.js +270 -7
  704. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  705. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  706. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  707. package/packages/ai/src/lib/mergeStatements.js +88 -46
  708. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  709. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  710. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  711. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  712. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  713. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js +1 -1
  714. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenarioDataGenerator.js.map +1 -1
  715. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js +21 -100
  716. package/packages/ai/src/lib/promptGenerators/generateChangesEntityScenariosGenerator.js.map +1 -1
  717. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js +54 -0
  718. package/packages/ai/src/lib/promptGenerators/generateChunkPrompt.js.map +1 -0
  719. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +83 -6
  720. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  721. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js +10 -70
  722. package/packages/ai/src/lib/promptGenerators/generateEntityScenariosGenerator.js.map +1 -1
  723. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js +45 -0
  724. package/packages/ai/src/lib/promptGenerators/generateMissingKeysPrompt.js.map +1 -0
  725. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js +9 -9
  726. package/packages/ai/src/lib/promptGenerators/guessNewScenarioDataFromDescriptionGenerator.js.map +1 -1
  727. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js +335 -0
  728. package/packages/ai/src/lib/promptGenerators/simplifyKeysForLLM.js.map +1 -0
  729. package/packages/ai/src/lib/resolvePathToControllable.js +677 -0
  730. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -0
  731. package/packages/ai/src/lib/splitOutsideParentheses.js +3 -1
  732. package/packages/ai/src/lib/splitOutsideParentheses.js.map +1 -1
  733. package/packages/ai/src/lib/worker/SerializableDataStructure.js +29 -0
  734. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  735. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  736. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  737. package/packages/analyze/index.js +1 -0
  738. package/packages/analyze/index.js.map +1 -1
  739. package/packages/analyze/src/lib/FileAnalyzer.js +75 -36
  740. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  741. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  742. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  743. package/packages/analyze/src/lib/analysisContext.js +30 -5
  744. package/packages/analyze/src/lib/analysisContext.js.map +1 -1
  745. package/packages/analyze/src/lib/asts/nodes/index.js +1 -0
  746. package/packages/analyze/src/lib/asts/nodes/index.js.map +1 -1
  747. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js +52 -0
  748. package/packages/analyze/src/lib/asts/nodes/isAsyncFunction.js.map +1 -0
  749. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  750. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  751. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  752. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  753. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  754. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  755. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  756. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  757. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  758. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  759. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  760. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  761. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +206 -57
  762. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  763. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +24 -1
  764. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  765. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  766. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  767. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +2 -0
  768. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  769. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  770. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  771. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +31 -10
  772. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  773. package/packages/analyze/src/lib/files/analyzeChange.js +21 -11
  774. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  775. package/packages/analyze/src/lib/files/analyzeEntity.js +9 -8
  776. package/packages/analyze/src/lib/files/analyzeEntity.js.map +1 -1
  777. package/packages/analyze/src/lib/files/analyzeInitial.js +9 -10
  778. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  779. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  780. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  781. package/packages/analyze/src/lib/files/enums/steps.js +1 -1
  782. package/packages/analyze/src/lib/files/enums/steps.js.map +1 -1
  783. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  784. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  785. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  786. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  787. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +170 -40
  788. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  789. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js +85 -0
  790. package/packages/analyze/src/lib/files/scenarios/enrichUnknownTypesFromSourceEquivalencies.js.map +1 -0
  791. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +253 -42
  792. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  793. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js +29 -34
  794. package/packages/analyze/src/lib/files/scenarios/generateChangesScenarios.js.map +1 -1
  795. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +218 -20
  796. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  797. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +144 -0
  798. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -0
  799. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js +1 -0
  800. package/packages/analyze/src/lib/files/scenarios/generateScenarioData.js.map +1 -1
  801. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js +2 -3
  802. package/packages/analyze/src/lib/files/scenarios/generateScenarios.js.map +1 -1
  803. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +670 -53
  804. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  805. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js +46 -9
  806. package/packages/analyze/src/lib/files/scenarios/mergeValidatedDataStructures.js.map +1 -1
  807. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  808. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  809. package/packages/analyze/src/lib/index.js +1 -0
  810. package/packages/analyze/src/lib/index.js.map +1 -1
  811. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  812. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  813. package/packages/aws/src/lib/ecs/ecsDefineContainer.js +2 -2
  814. package/packages/aws/src/lib/ecs/ecsDefineContainer.js.map +1 -1
  815. package/packages/aws/src/lib/ecs/ecsTaskFactory.js +17 -61
  816. package/packages/aws/src/lib/ecs/ecsTaskFactory.js.map +1 -1
  817. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  818. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  819. package/packages/database/src/lib/analysisToDb.js +1 -1
  820. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  821. package/packages/database/src/lib/branchToDb.js +1 -1
  822. package/packages/database/src/lib/branchToDb.js.map +1 -1
  823. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  824. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  825. package/packages/database/src/lib/commitToDb.js +1 -1
  826. package/packages/database/src/lib/commitToDb.js.map +1 -1
  827. package/packages/database/src/lib/fileToDb.js +1 -1
  828. package/packages/database/src/lib/fileToDb.js.map +1 -1
  829. package/packages/database/src/lib/kysely/db.js +11 -1
  830. package/packages/database/src/lib/kysely/db.js.map +1 -1
  831. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  832. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  833. package/packages/database/src/lib/kysely/tables/debugReportsTable.js.map +1 -1
  834. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  835. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  836. package/packages/database/src/lib/loadAnalyses.js +45 -2
  837. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  838. package/packages/database/src/lib/loadAnalysis.js +8 -0
  839. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  840. package/packages/database/src/lib/loadBranch.js +11 -1
  841. package/packages/database/src/lib/loadBranch.js.map +1 -1
  842. package/packages/database/src/lib/loadCommit.js +7 -0
  843. package/packages/database/src/lib/loadCommit.js.map +1 -1
  844. package/packages/database/src/lib/loadCommits.js +22 -1
  845. package/packages/database/src/lib/loadCommits.js.map +1 -1
  846. package/packages/database/src/lib/loadEntities.js +23 -4
  847. package/packages/database/src/lib/loadEntities.js.map +1 -1
  848. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  849. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  850. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +7 -4
  851. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  852. package/packages/database/src/lib/projectToDb.js +1 -1
  853. package/packages/database/src/lib/projectToDb.js.map +1 -1
  854. package/packages/database/src/lib/saveFiles.js +1 -1
  855. package/packages/database/src/lib/saveFiles.js.map +1 -1
  856. package/packages/database/src/lib/scenarioToDb.js +1 -1
  857. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  858. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  859. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  860. package/packages/generate/index.js +3 -0
  861. package/packages/generate/index.js.map +1 -1
  862. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js +16 -1
  863. package/packages/generate/src/lib/componentScenarioPage/componentScenarioPageNext.js.map +1 -1
  864. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +189 -0
  865. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -0
  866. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js +53 -0
  867. package/packages/generate/src/lib/componentScenarioPage/generateScenarioServerComponent.js.map +1 -0
  868. package/packages/generate/src/lib/scenarioComponentForServer.js +89 -0
  869. package/packages/generate/src/lib/scenarioComponentForServer.js.map +1 -0
  870. package/packages/github/src/lib/loadOrCreateCommit.js +10 -0
  871. package/packages/github/src/lib/loadOrCreateCommit.js.map +1 -1
  872. package/packages/github/src/lib/syncPrimaryBranch.js +3 -0
  873. package/packages/github/src/lib/syncPrimaryBranch.js.map +1 -1
  874. package/packages/process/index.js +3 -0
  875. package/packages/process/index.js.map +1 -0
  876. package/packages/process/src/GlobalProcessManager.js.map +1 -0
  877. package/{background/src/lib/process → packages/process/src}/ProcessManager.js +1 -1
  878. package/packages/process/src/ProcessManager.js.map +1 -0
  879. package/packages/process/src/index.js.map +1 -0
  880. package/packages/process/src/managedExecAsync.js.map +1 -0
  881. package/packages/types/index.js +0 -1
  882. package/packages/types/index.js.map +1 -1
  883. package/packages/types/src/types/Scenario.js +1 -21
  884. package/packages/types/src/types/Scenario.js.map +1 -1
  885. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  886. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  887. package/packages/utils/src/lib/safeFileName.js +29 -3
  888. package/packages/utils/src/lib/safeFileName.js.map +1 -1
  889. package/scripts/finalize-analyzer.cjs +8 -76
  890. package/analyzer-template/packages/ai/src/lib/findMatchingAttribute.ts +0 -102
  891. package/analyzer-template/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.ts +0 -409
  892. package/analyzer-template/packages/ai/src/lib/generateChangesEntityKeyAttributes.ts +0 -288
  893. package/analyzer-template/packages/ai/src/lib/generateEntityKeyAttributes.ts +0 -495
  894. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.ts +0 -67
  895. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.ts +0 -120
  896. package/analyzer-template/process/INTEGRATION_COMPLETE.md +0 -333
  897. package/analyzer-template/process/INTEGRATION_EXAMPLE.md +0 -525
  898. package/analyzer-template/process/README.md +0 -507
  899. package/background/src/lib/process/GlobalProcessManager.js.map +0 -1
  900. package/background/src/lib/process/ProcessManager.js.map +0 -1
  901. package/background/src/lib/process/index.js.map +0 -1
  902. package/background/src/lib/process/managedExecAsync.js.map +0 -1
  903. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-wXL1Z2Aq.js +0 -1
  904. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeIcon-CXFKsCOD.js +0 -41
  905. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-D-9pXIaY.js +0 -25
  906. package/codeyam-cli/src/webserver/build/client/assets/ReportIssueModal-4lcOlid-.js +0 -11
  907. package/codeyam-cli/src/webserver/build/client/assets/ScenarioViewer-CUxUNEEC.js +0 -15
  908. package/codeyam-cli/src/webserver/build/client/assets/_index-DHImXdXq.js +0 -11
  909. package/codeyam-cli/src/webserver/build/client/assets/activity.(_tab)-CVP_WGQ3.js +0 -32
  910. package/codeyam-cli/src/webserver/build/client/assets/chunk-JMJ3UQ3L-BambyYE_.js +0 -51
  911. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-CKnwPCDr.js +0 -1
  912. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-DW_hdGUc.js +0 -1
  913. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DyB90fWk.js +0 -1
  914. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D_3ero5o.js +0 -1
  915. package/codeyam-cli/src/webserver/build/client/assets/files-ClR0d32A.js +0 -1
  916. package/codeyam-cli/src/webserver/build/client/assets/globals-C9s7Lhdl.css +0 -1
  917. package/codeyam-cli/src/webserver/build/client/assets/keyAttributeCoverage-CTlFMihX.js +0 -1
  918. package/codeyam-cli/src/webserver/build/client/assets/manifest-0d27da29.js +0 -1
  919. package/codeyam-cli/src/webserver/build/client/assets/root-B_wIKCIf.js +0 -56
  920. package/codeyam-cli/src/webserver/build/client/assets/settings-DgTyB-Wg.js +0 -1
  921. package/codeyam-cli/src/webserver/build/client/assets/simulations-CoNWGt0K.js +0 -1
  922. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BMIGFP-m.js +0 -1
  923. package/codeyam-cli/src/webserver/build/client/assets/useInteractiveMode-Dk_FQqWJ.js +0 -1
  924. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DsJbgMY9.js +0 -1
  925. package/codeyam-cli/src/webserver/build/server/assets/index-CU58-Ttc.js +0 -1
  926. package/codeyam-cli/src/webserver/build/server/assets/server-build-D35o2uae.js +0 -175
  927. package/codeyam-cli/templates/debug-codeyam.md +0 -625
  928. package/packages/ai/src/lib/findMatchingAttribute.js +0 -77
  929. package/packages/ai/src/lib/findMatchingAttribute.js.map +0 -1
  930. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js +0 -298
  931. package/packages/ai/src/lib/gatherRelevantDependentKeyAttributes.js.map +0 -1
  932. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js +0 -226
  933. package/packages/ai/src/lib/generateChangesEntityKeyAttributes.js.map +0 -1
  934. package/packages/ai/src/lib/generateEntityKeyAttributes.js +0 -408
  935. package/packages/ai/src/lib/generateEntityKeyAttributes.js.map +0 -1
  936. package/packages/ai/src/lib/isFrontend.js +0 -5
  937. package/packages/ai/src/lib/isFrontend.js.map +0 -1
  938. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js +0 -40
  939. package/packages/ai/src/lib/promptGenerators/generateEntityKeyAttributesGenerator.js.map +0 -1
  940. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js +0 -77
  941. package/packages/analyze/src/lib/files/scenarios/generateKeyAttributes.js.map +0 -1
  942. /package/analyzer-template/{process → packages/process/src}/GlobalProcessManager.ts +0 -0
  943. /package/analyzer-template/{process → packages/process/src}/ProcessManager.ts +0 -0
  944. /package/analyzer-template/{process → packages/process/src}/index.ts +0 -0
  945. /package/analyzer-template/{process → packages/process/src}/managedExecAsync.ts +0 -0
  946. /package/codeyam-cli/src/webserver/build/client/assets/{api.link-scenario-value-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
  947. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-key-attributes-l0sNRNKZ.js → api.health-l0sNRNKZ.js} +0 -0
  948. /package/codeyam-cli/src/webserver/build/client/assets/{api.update-valid-values-l0sNRNKZ.js → api.labs-unlock-l0sNRNKZ.js} +0 -0
  949. /package/{background/src/lib/process → packages/process/src}/GlobalProcessManager.js +0 -0
  950. /package/{background/src/lib/process → packages/process/src}/index.js +0 -0
  951. /package/{background/src/lib/process → packages/process/src}/managedExecAsync.js +0 -0
@@ -4,19 +4,27 @@ import { awsLog, awsLogDebugLevel } from '~codeyam/utils';
4
4
  import measureAndReportExecutionTime from '../../../utils/measureAndReportExecutionTime';
5
5
 
6
6
  import {
7
+ deduplicateFunctionSchemas,
8
+ detectWrapperRequirements,
7
9
  fillInDirectSchemaGapsAndUnknowns,
8
10
  generateEntityDataStructure,
9
- deduplicateFunctionSchemas,
11
+ getConditionalUsages,
10
12
  getEquivalentSignatureVariables,
11
13
  getFunctionSignature,
12
14
  getReturnValue,
13
15
  getSourceEquivalencies,
14
16
  getUsageEquivalencies,
15
- getConditionalUsages,
16
- detectWrapperRequirements,
17
+ getConditionalEffects,
18
+ getCompoundConditionals,
19
+ getChildBoundaryGatingConditions,
20
+ getJsxRenderingUsages,
21
+ skipWorkerPool,
17
22
  } from '~codeyam/ai';
18
23
  import type { AnalysisOptions } from '../analyzeEntities';
19
24
 
25
+ // Set to true to process entities one at a time for easier debugging.
26
+ const DEBUG_SEQUENTIAL_EXECUTION = false;
27
+
20
28
  // VERSION MARKER: server-only-detection-v2 (2025-12-28)
21
29
  // This version includes automatic detection of "use server" and "server-only" files
22
30
  // and runs server-only detection even for cached entities
@@ -31,261 +39,268 @@ export default async function prepareEntityDataStructures(
31
39
  projectAnalyzer: ProjectAnalyzer,
32
40
  options: AnalysisOptions,
33
41
  ): Promise<void> {
34
- // Process entities in parallel for speed
35
- await Promise.all(
36
- Array.from(allEntities).map(async (entity) => {
37
- // Check if already has cached data structure (unless force is set)
38
- const hasCache = !!entity.metadata?.isolatedDataStructure;
39
- const shouldRegenerateDataStructure =
40
- !hasCache || options.force || options.forceAll;
41
-
42
- // PHASE 1: Generate data structure (only for non-cached entities or when forced)
43
- // Wrapped in its own try-catch so PHASE 2 always runs even if this fails
44
- if (shouldRegenerateDataStructure) {
45
- try {
46
- const fileAnalyzer = projectAnalyzer.getFileAnalyzerByPath(
47
- entity.resolvedFilePath ?? entity.filePath,
42
+ const processEntity = async (entity: Entity) => {
43
+ // Check if already has cached data structure (unless force is set)
44
+ const hasCache = !!entity.metadata?.isolatedDataStructure;
45
+ const shouldRegenerateDataStructure =
46
+ !hasCache || options.force || options.forceAll;
47
+
48
+ // PHASE 1: Generate data structure (only for non-cached entities or when forced)
49
+ // Wrapped in its own try-catch so PHASE 2 always runs even if this fails
50
+ if (shouldRegenerateDataStructure) {
51
+ try {
52
+ const fileAnalyzer = projectAnalyzer.getFileAnalyzerByPath(
53
+ entity.resolvedFilePath ?? entity.filePath,
54
+ );
55
+ if (!fileAnalyzer) {
56
+ awsLog(
57
+ `CodeYam: prepareEntityDataStructures: FileAnalyzer not found`,
58
+ {
59
+ entityFilePath: entity.filePath,
60
+ entityName: entity.name,
61
+ },
48
62
  );
49
- if (!fileAnalyzer) {
50
- awsLog(
51
- `CodeYam: prepareEntityDataStructures: FileAnalyzer not found`,
52
- {
53
- entityFilePath: entity.filePath,
54
- entityName: entity.name,
55
- },
56
- );
63
+ // Still continue to PHASE 2 for server-only detection
64
+ } else {
65
+ const dataStructureInfo =
66
+ await getEntityDataStructureAndFunctionCalls({
67
+ entity,
68
+ fileAnalyzer,
69
+ });
70
+
71
+ if (!dataStructureInfo?.isolatedDataStructure) {
72
+ // Data structure generation failed - entity will proceed with empty schemas
73
+ // This is okay - the entity can still be analyzed, just without detailed type info
74
+ if (['visual', 'library'].includes(entity.entityType)) {
75
+ // we'd really expect these to have data structures
76
+ awsLog(
77
+ `CodeYam: prepareEntityDataStructures: Failed to generate data structure for ${entity.filePath}:${entity.name}`,
78
+ );
79
+ }
57
80
  // Still continue to PHASE 2 for server-only detection
58
81
  } else {
59
- const dataStructureInfo =
60
- await getEntityDataStructureAndFunctionCalls({
61
- entity,
62
- fileAnalyzer,
63
- });
64
-
65
- if (!dataStructureInfo?.isolatedDataStructure) {
66
- // Data structure generation failed - entity will proceed with empty schemas
67
- // This is okay - the entity can still be analyzed, just without detailed type info
68
- if (['visual', 'library'].includes(entity.entityType)) {
69
- // we'd really expect these to have data structures
70
- awsLog(
71
- `CodeYam: prepareEntityDataStructures: Failed to generate data structure for ${entity.filePath}:${entity.name}`,
72
- );
82
+ const { isolatedDataStructure, functionCalls, callVariableNames } =
83
+ dataStructureInfo;
84
+
85
+ // Store data structure in entity metadata
86
+ entity.metadata ||= {};
87
+
88
+ // Deep clone dependencySchemas to avoid shared references
89
+ // We need to clone because getReturnValue() returns direct references to schema objects
90
+ // and multiple entities might reference the same dependency
91
+ const clonedDependencySchemas: typeof isolatedDataStructure.dependencySchemas =
92
+ {};
93
+ for (const filePath in isolatedDataStructure.dependencySchemas) {
94
+ clonedDependencySchemas[filePath] = {};
95
+ for (const entityName in isolatedDataStructure.dependencySchemas[
96
+ filePath
97
+ ]) {
98
+ const depSchema =
99
+ isolatedDataStructure.dependencySchemas[filePath][entityName];
100
+ clonedDependencySchemas[filePath][entityName] = {
101
+ signatureSchema: { ...depSchema.signatureSchema },
102
+ returnValueSchema: { ...depSchema.returnValueSchema },
103
+ usageEquivalencies: depSchema.usageEquivalencies,
104
+ sourceEquivalencies: depSchema.sourceEquivalencies,
105
+ };
73
106
  }
74
- // Still continue to PHASE 2 for server-only detection
75
- } else {
76
- const {
77
- isolatedDataStructure,
78
- functionCalls,
79
- callVariableNames,
80
- } = dataStructureInfo;
81
-
82
- // Store data structure in entity metadata
83
- entity.metadata ||= {};
84
-
85
- // Deep clone dependencySchemas to avoid shared references
86
- // We need to clone because getReturnValue() returns direct references to schema objects
87
- // and multiple entities might reference the same dependency
88
- const clonedDependencySchemas: typeof isolatedDataStructure.dependencySchemas =
89
- {};
90
- for (const filePath in isolatedDataStructure.dependencySchemas) {
91
- clonedDependencySchemas[filePath] = {};
92
- for (const entityName in isolatedDataStructure
93
- .dependencySchemas[filePath]) {
94
- const depSchema =
95
- isolatedDataStructure.dependencySchemas[filePath][
96
- entityName
97
- ];
98
- clonedDependencySchemas[filePath][entityName] = {
99
- signatureSchema: { ...depSchema.signatureSchema },
100
- returnValueSchema: { ...depSchema.returnValueSchema },
101
- usageEquivalencies: depSchema.usageEquivalencies,
102
- sourceEquivalencies: depSchema.sourceEquivalencies,
103
- };
104
- }
107
+ }
108
+
109
+ // LOGGING: Track dependencySchemas entity names for debugging :: format issues
110
+ const allEntityNames: string[] = [];
111
+ for (const filePath in clonedDependencySchemas) {
112
+ for (const entityName in clonedDependencySchemas[filePath]) {
113
+ allEntityNames.push(`${filePath}:${entityName}`);
105
114
  }
115
+ }
116
+ entity.metadata.isolatedDataStructure = {
117
+ signatureSchema: deduplicateFunctionSchemas(
118
+ isolatedDataStructure.signatureSchema,
119
+ ),
120
+ returnValueSchema: deduplicateFunctionSchemas(
121
+ isolatedDataStructure.returnValueSchema,
122
+ ),
123
+ equivalentSignatureVariables:
124
+ isolatedDataStructure.equivalentSignatureVariables,
125
+ dependencySchemas: clonedDependencySchemas,
126
+ environmentVariables: isolatedDataStructure.environmentVariables,
127
+ // Use enriched conditional usages with source tracing from analysis
128
+ conditionalUsages: isolatedDataStructure.conditionalUsages,
129
+ // Include conditional effects for execution flow generation
130
+ conditionalEffects: isolatedDataStructure.conditionalEffects,
131
+ // Include compound conditionals for complete execution flow generation
132
+ compoundConditionals: isolatedDataStructure.compoundConditionals,
133
+ // Include root entity's equivalencies for merge step
134
+ usageEquivalencies: isolatedDataStructure.usageEquivalencies,
135
+ sourceEquivalencies: isolatedDataStructure.sourceEquivalencies,
136
+ // Include child boundary gating conditions for child component flow merging
137
+ childBoundaryGatingConditions:
138
+ isolatedDataStructure.childBoundaryGatingConditions,
139
+ // Include JSX rendering usages for array size and text length flow generation
140
+ jsxRenderingUsages: isolatedDataStructure.jsxRenderingUsages,
141
+ };
106
142
 
107
- // LOGGING: Track dependencySchemas entity names for debugging :: format issues
108
- const allEntityNames: string[] = [];
109
- for (const filePath in clonedDependencySchemas) {
110
- for (const entityName in clonedDependencySchemas[filePath]) {
111
- allEntityNames.push(`${filePath}:${entityName}`);
112
- }
143
+ // Detect wrapper requirements (Context providers, etc.)
144
+ const wrapperRequirements = detectWrapperRequirements({
145
+ entity,
146
+ fileAnalyzer,
147
+ });
148
+ if (wrapperRequirements.length > 0) {
149
+ entity.metadata.wrapperRequirements = wrapperRequirements;
150
+ }
151
+
152
+ // Annotate imported exports with function call information
153
+ const importedExports = entity.metadata.importedExports ?? [];
154
+ for (const importedExport of importedExports) {
155
+ const relevantCalls = functionCalls[importedExport.name];
156
+ if (relevantCalls) {
157
+ importedExport.calls = relevantCalls;
113
158
  }
114
- entity.metadata.isolatedDataStructure = {
115
- signatureSchema: deduplicateFunctionSchemas(
116
- isolatedDataStructure.signatureSchema,
117
- ),
118
- returnValueSchema: deduplicateFunctionSchemas(
119
- isolatedDataStructure.returnValueSchema,
120
- ),
121
- equivalentSignatureVariables:
122
- isolatedDataStructure.equivalentSignatureVariables,
123
- dependencySchemas: clonedDependencySchemas,
124
- environmentVariables:
125
- isolatedDataStructure.environmentVariables,
126
- // Use enriched conditional usages with source tracing from analysis
127
- conditionalUsages: isolatedDataStructure.conditionalUsages,
128
- // Include root entity's equivalencies for merge step
129
- usageEquivalencies: isolatedDataStructure.usageEquivalencies,
130
- sourceEquivalencies: isolatedDataStructure.sourceEquivalencies,
131
- };
132
-
133
- // Detect wrapper requirements (Context providers, etc.)
134
- const wrapperRequirements = detectWrapperRequirements({
135
- entity,
136
- fileAnalyzer,
137
- });
138
- if (wrapperRequirements.length > 0) {
139
- entity.metadata.wrapperRequirements = wrapperRequirements;
159
+ const relevantVariableNames =
160
+ callVariableNames[importedExport.name];
161
+ if (relevantVariableNames) {
162
+ importedExport.callVariableNames = relevantVariableNames;
140
163
  }
164
+ }
141
165
 
142
- // Annotate imported exports with function call information
143
- const importedExports = entity.metadata.importedExports ?? [];
144
- for (const importedExport of importedExports) {
145
- const relevantCalls = functionCalls[importedExport.name];
166
+ // Annotate node module imports with function call information
167
+ for (const [path, infos] of Object.entries(
168
+ entity.metadata.nodeModuleImports ?? {},
169
+ )) {
170
+ for (const info of infos) {
171
+ const relevantCalls = functionCalls[info.name];
146
172
  if (relevantCalls) {
147
- importedExport.calls = relevantCalls;
173
+ info.calls = relevantCalls;
148
174
  }
149
- const relevantVariableNames =
150
- callVariableNames[importedExport.name];
175
+ const relevantVariableNames = callVariableNames[info.name];
151
176
  if (relevantVariableNames) {
152
- importedExport.callVariableNames = relevantVariableNames;
153
- }
154
- }
155
-
156
- // Annotate node module imports with function call information
157
- for (const [path, infos] of Object.entries(
158
- entity.metadata.nodeModuleImports ?? {},
159
- )) {
160
- for (const info of infos) {
161
- const relevantCalls = functionCalls[info.name];
162
- if (relevantCalls) {
163
- info.calls = relevantCalls;
164
- }
165
- const relevantVariableNames = callVariableNames[info.name];
166
- if (relevantVariableNames) {
167
- info.callVariableNames = relevantVariableNames;
168
- }
177
+ info.callVariableNames = relevantVariableNames;
169
178
  }
170
179
  }
171
180
  }
172
181
  }
173
- } catch (phase1Error) {
174
- console.warn(
175
- `CodeYam: prepareEntityDataStructures: PHASE 1 error for ${entity.filePath}:${entity.name}:`,
176
- phase1Error,
177
- );
178
- // Continue to PHASE 2 - server-only detection should still run
179
182
  }
183
+ } catch (phase1Error) {
184
+ console.warn(
185
+ `CodeYam: prepareEntityDataStructures: PHASE 1 error for ${entity.filePath}:${entity.name}:`,
186
+ phase1Error,
187
+ );
188
+ // Continue to PHASE 2 - server-only detection should still run
180
189
  }
190
+ }
181
191
 
182
- try {
183
- // PHASE 2: Server-only detection and isMocked determination
184
- // This runs for ALL entities, even those with cached data structures
185
- // because server-only detection may have been added after the entity was cached
186
- const importedExports = entity.metadata?.importedExports ?? [];
187
- const mockedDependencies = determineMockedDependencies(entity);
188
- for (const importedExport of importedExports) {
189
- // Skip if already has a definitive isMocked value (true or false, not null)
190
- // But re-check if isMocked is null or undefined - this handles previously cached entities
191
- if (
192
- importedExport.isMocked === true ||
193
- importedExport.isMocked === false
194
- ) {
195
- console.log(
196
- `CodeYam: [${entity.name}] SKIP ${importedExport.name} - already has isMocked=${importedExport.isMocked}`,
197
- );
198
- continue;
199
- }
200
-
201
- // Never mock visual components - they render UI and should use real implementation
202
- if (importedExport.entityType === 'visual') {
203
- console.log(
204
- `CodeYam: [${entity.name}] SKIP ${importedExport.name} - visual component, setting isMocked=false`,
205
- );
206
- importedExport.isMocked = false;
207
- continue;
208
- }
209
-
210
- // Always mock imports from server-only files ("use server" or import "server-only")
211
- // These files contain Server Actions or server-only code that cannot run on the client
212
- const importedFilePath =
213
- importedExport.resolvedFilePath ?? importedExport.filePath;
214
- const importedFileAnalyzer =
215
- projectAnalyzer.getFileAnalyzerByPath(importedFilePath);
216
- // Use sourceFile.getText() which is always available, unlike file.content which is lazy-loaded
217
- const importedFileContent =
218
- importedFileAnalyzer?.sourceFile?.getText();
219
-
220
- const isServerOnly = importedFileContent
221
- ? isServerOnlyFile(importedFileContent)
222
- : false;
223
- console.log(
224
- `CodeYam: [${entity.name}] CHECK ${importedExport.name} from ${importedFilePath}:`,
225
- {
226
- hasFileAnalyzer: !!importedFileAnalyzer,
227
- hasSourceFile: !!importedFileAnalyzer?.sourceFile,
228
- hasFileContent: !!importedFileContent,
229
- contentFirst50Chars: importedFileContent
230
- ?.substring(0, 50)
231
- ?.replace(/\n/g, '\\n'),
232
- isServerOnly,
233
- },
234
- );
192
+ try {
193
+ // PHASE 2: Server-only detection and isMocked determination
194
+ // This runs for ALL entities, even those with cached data structures
195
+ // because server-only detection may have been added after the entity was cached
196
+ const importedExports = entity.metadata?.importedExports ?? [];
197
+ const mockedDependencies = determineMockedDependencies(entity);
198
+ for (const importedExport of importedExports) {
199
+ // Skip if already has a definitive isMocked value (true or false, not null)
200
+ // But re-check if isMocked is null or undefined - this handles previously cached entities
201
+ if (
202
+ importedExport.isMocked === true ||
203
+ importedExport.isMocked === false
204
+ ) {
205
+ continue;
206
+ }
235
207
 
236
- if (importedFileContent && isServerOnly) {
237
- console.log(
238
- `CodeYam: [${entity.name}] ✓ MARKING ${importedExport.name} as isMocked=true (server-only file detected)`,
239
- );
240
- importedExport.isMocked = true;
241
- continue;
242
- }
208
+ // Never mock visual components - they render UI and should use real implementation
209
+ if (importedExport.entityType === 'visual') {
210
+ importedExport.isMocked = false;
211
+ continue;
212
+ }
243
213
 
244
- const matchesMockedDep = mockedDependencies.some(
245
- (dep) =>
246
- dep.filePath === importedExport.filePath &&
247
- dep.entityName === importedExport.name,
248
- );
249
- importedExport.isMocked = matchesMockedDep;
250
- console.log(
251
- `CodeYam: [${entity.name}] ${importedExport.name} isMocked=${matchesMockedDep} (from mockedDependencies)`,
252
- );
214
+ // Always mock imports from server-only files ("use server" or import "server-only")
215
+ // These files contain Server Actions or server-only code that cannot run on the client
216
+ const importedFilePath =
217
+ importedExport.resolvedFilePath ?? importedExport.filePath;
218
+ const importedFileAnalyzer =
219
+ projectAnalyzer.getFileAnalyzerByPath(importedFilePath);
220
+ // Use sourceFile.getText() which is always available, unlike file.content which is lazy-loaded
221
+ const importedFileContent = importedFileAnalyzer?.sourceFile?.getText();
222
+
223
+ const isServerOnly = importedFileContent
224
+ ? isServerOnlyFile(importedFileContent)
225
+ : false;
226
+
227
+ if (importedFileContent && isServerOnly) {
228
+ importedExport.isMocked = true;
229
+ continue;
253
230
  }
254
231
 
255
- // Browser globals that should always be mocked (they make network calls)
256
- const alwaysMockedBrowserGlobals = ['fetch', 'EventSource'];
257
-
258
- for (const [path, infos] of Object.entries(
259
- entity.metadata?.nodeModuleImports ?? {},
260
- )) {
261
- for (const info of infos) {
262
- if (info.isMocked === undefined || info.isMocked === null) {
263
- // Browser globals should always be mocked
264
- if (alwaysMockedBrowserGlobals.includes(path)) {
265
- info.isMocked = true;
266
- } else {
267
- // Check if this dependency should be mocked
268
- // Match both exact entityName and variable-qualified entityNames
269
- // e.g., "useFetcher" matches "useFetcher" OR "useFetcher::userFetcher"
270
- info.isMocked = mockedDependencies.some(
271
- (dep) =>
272
- dep.filePath === path &&
273
- (dep.entityName === info.name ||
274
- dep.entityName.startsWith(info.name + '::')),
275
- );
276
- }
232
+ const matchesMockedDep = mockedDependencies.some(
233
+ (dep) =>
234
+ dep.filePath === importedExport.filePath &&
235
+ dep.entityName === importedExport.name,
236
+ );
237
+ importedExport.isMocked = matchesMockedDep;
238
+ }
239
+
240
+ // Browser globals that should always be mocked (they make network calls)
241
+ const alwaysMockedBrowserGlobals = ['fetch', 'EventSource'];
242
+
243
+ for (const [path, infos] of Object.entries(
244
+ entity.metadata?.nodeModuleImports ?? {},
245
+ )) {
246
+ for (const info of infos) {
247
+ if (info.isMocked === undefined || info.isMocked === null) {
248
+ // Browser globals should always be mocked
249
+ if (alwaysMockedBrowserGlobals.includes(path)) {
250
+ info.isMocked = true;
251
+ } else {
252
+ // Check if this dependency should be mocked
253
+ // Match both exact entityName and variable-qualified entityNames
254
+ // e.g., "useFetcher" matches "useFetcher" OR "useFetcher::userFetcher"
255
+ info.isMocked = mockedDependencies.some(
256
+ (dep) =>
257
+ dep.filePath === path &&
258
+ (dep.entityName === info.name ||
259
+ dep.entityName.startsWith(info.name + '::')),
260
+ );
277
261
  }
278
262
  }
279
263
  }
280
- } catch (error) {
281
- console.warn(
282
- `CodeYam: prepareEntityDataStructures: Error preparing ${entity.filePath}:${entity.name}:`,
283
- error,
284
- );
285
- // Continue with other entities - this one will have empty schemas
286
264
  }
287
- }),
288
- );
265
+ } catch (error) {
266
+ console.warn(
267
+ `CodeYam: prepareEntityDataStructures: Error preparing ${entity.filePath}:${entity.name}:`,
268
+ error,
269
+ );
270
+ // Continue with other entities - this one will have empty schemas
271
+ }
272
+ };
273
+
274
+ const entities = Array.from(allEntities);
275
+
276
+ // The worker thread creates its own ProjectAnalyzer (ts.Program) on first use,
277
+ // which takes 50-70s. For small entity counts the overhead far exceeds the actual
278
+ // processing time (<2s). Skip the worker and run on the main thread instead,
279
+ // reusing the existing ProjectAnalyzer.
280
+ const entitiesNeedingGeneration = entities.filter(
281
+ (e) =>
282
+ !e.metadata?.isolatedDataStructure || options.force || options.forceAll,
283
+ ).length;
284
+ const WORKER_ENTITY_THRESHOLD = 500;
285
+ if (entitiesNeedingGeneration < WORKER_ENTITY_THRESHOLD) {
286
+ console.log(
287
+ `CodeYam: Skipping worker thread for DS prep (${entitiesNeedingGeneration} entities < ${WORKER_ENTITY_THRESHOLD} threshold)`,
288
+ );
289
+ skipWorkerPool();
290
+ }
291
+
292
+ const sequential =
293
+ DEBUG_SEQUENTIAL_EXECUTION || options.sequentialDataStructurePrep;
294
+
295
+ if (sequential) {
296
+ // Sequential execution for debugging - process one entity at a time
297
+ for (const entity of entities) {
298
+ await processEntity(entity);
299
+ }
300
+ } else {
301
+ // Parallel execution for speed
302
+ await Promise.all(entities.map(processEntity));
303
+ }
289
304
  }
290
305
 
291
306
  /**
@@ -335,19 +350,33 @@ async function getEntityDataStructureAndFunctionCalls({
335
350
  functionName: importedExport.name,
336
351
  });
337
352
 
338
- // If no signature found, this function doesn't exist in the analysis
339
- if (!signatureSchema) {
340
- return acc;
341
- }
342
-
343
353
  const returnValueSchema = getReturnValue(dataStructure, {
344
354
  functionName: importedExport.name,
345
355
  });
346
356
 
357
+ // If neither signature nor return value found, check if this function has matching
358
+ // external function calls. External functions (like useLoaderData from react-router)
359
+ // don't have entries in functionResults, so getReturnValue returns null for them.
360
+ // But their return values ARE traced in externalFunctionCalls via perVariableSchemas.
361
+ // We need to check for matching calls before skipping.
362
+ if (!signatureSchema && !returnValueSchema) {
363
+ const hasMatchingExternalCall =
364
+ dataStructure.externalFunctionCalls?.some(
365
+ (fc) =>
366
+ fc.name === importedExport.name ||
367
+ fc.name.startsWith(importedExport.name + '<'),
368
+ );
369
+
370
+ // Only skip if there are no matching external function calls
371
+ if (!hasMatchingExternalCall) {
372
+ return acc;
373
+ }
374
+ }
375
+
347
376
  // Clone schemas before deduplication to avoid mutating shared references
348
377
  // getReturnValue() and getFunctionSignature() return direct references, so we need
349
378
  // to clone them before passing to deduplicateFunctionSchemas (which may mutate)
350
- const clonedSignatureSchema = { ...signatureSchema };
379
+ const clonedSignatureSchema = { ...(signatureSchema ?? {}) };
351
380
  const clonedReturnValueSchema = { ...(returnValueSchema ?? {}) };
352
381
 
353
382
  acc[importedExport.filePath] ||= {};
@@ -373,49 +402,111 @@ async function getEntityDataStructureAndFunctionCalls({
373
402
  );
374
403
 
375
404
  for (const efc of matchingCalls) {
376
- // Check if this call has perVariableSchemas (multiple calls with same signature)
377
- // This is the destructuring case: const { a, b, c } = useLoaderData()
378
- // Instead of creating ::variable qualified keys, merge into a single entry
379
- // with the call signature as key and named properties in the schema
405
+ // Check if this call has perVariableSchemas (multiple calls with variable tracking)
380
406
  if (efc?.perVariableSchemas) {
381
- // Use the call signature as the key (e.g., "useLoaderData<typeof loader>()")
382
- const callSignatureKey = efc.callSignature;
407
+ // Check if perVariableSchemas has indexed keys (e.g., "fetcher[1]") which indicates
408
+ // variable reuse with DIFFERENT call signatures (e.g., let fetcher = useFetcher<A>(); fetcher = useFetcher<B>();)
409
+ // In this case, we need to create SEPARATE entries for each call signature.
410
+ const perVarKeys = Object.keys(efc.perVariableSchemas);
411
+ const hasIndexedKeys = perVarKeys.some((key) => /\[\d+\]$/.test(key));
412
+
413
+ if (
414
+ hasIndexedKeys &&
415
+ efc.callSignatureToVariable &&
416
+ efc.allCallSignatures
417
+ ) {
418
+ // Variable reuse case: create separate entries for each call signature
419
+ // Map from call signature to its variable key in perVariableSchemas
420
+ // e.g., useFetcher<ConfigData>() -> 'fetcher', useFetcher<SettingsData>() -> 'fetcher[1]'
421
+ const varNameCounts: Record<string, number> = {};
422
+ for (const callSig of efc.allCallSignatures) {
423
+ const varName = efc.callSignatureToVariable[callSig];
424
+ if (!varName) continue;
425
+
426
+ // Track occurrence count for this variable name
427
+ const occurrence = varNameCounts[varName] ?? 0;
428
+ varNameCounts[varName] = occurrence + 1;
429
+
430
+ // Get the key in perVariableSchemas (indexed if reused)
431
+ const perVarKey =
432
+ occurrence === 0 ? varName : `${varName}[${occurrence}]`;
433
+ const varSchema = efc.perVariableSchemas[perVarKey];
434
+
435
+ if (varSchema && Object.keys(varSchema).length > 0) {
436
+ // Create entry with this call signature as the key
437
+ const rewrittenSchema: Record<string, string> = {};
438
+ rewrittenSchema[`${callSig}.functionCallReturnValue`] =
439
+ 'object';
440
+
441
+ for (const [path, type] of Object.entries(varSchema)) {
442
+ const rewrittenPath = path.startsWith(callSig)
443
+ ? path
444
+ : `${callSig}.${path}`;
445
+ rewrittenSchema[rewrittenPath] = type;
446
+ }
383
447
 
384
- // Merge all variable schemas by prepending the call signature to each path.
385
- // perVariableSchemas paths are like "functionCallReturnValue.entities.sha"
386
- // We need to prefix them with the call signature to get:
387
- // "useLoaderData<typeof loader>().functionCallReturnValue.entities.sha"
388
- const mergedReturnValueSchema: Record<string, string> = {};
389
-
390
- // Set the top-level return value as object since it contains named properties
391
- mergedReturnValueSchema[
392
- `${callSignatureKey}.functionCallReturnValue`
393
- ] = 'object';
394
-
395
- for (const [varName, perVarSchema] of Object.entries(
396
- efc.perVariableSchemas,
397
- )) {
398
- for (const [path, type] of Object.entries(perVarSchema)) {
399
- // Prepend the call signature to the path
400
- // Input: "functionCallReturnValue.entities.sha"
401
- // Output: "useLoaderData<typeof loader>().functionCallReturnValue.entities.sha"
402
- const rewrittenPath = `${callSignatureKey}.${path}`;
403
- mergedReturnValueSchema[rewrittenPath] = type;
448
+ acc[importedExport.filePath][callSig] = {
449
+ signatureSchema: deduplicateFunctionSchemas({
450
+ ...signatureSchema,
451
+ }),
452
+ returnValueSchema:
453
+ deduplicateFunctionSchemas(rewrittenSchema),
454
+ usageEquivalencies:
455
+ getUsageEquivalencies(dataStructure, importedExport.name) ??
456
+ {},
457
+ sourceEquivalencies:
458
+ getSourceEquivalencies(
459
+ dataStructure,
460
+ importedExport.name,
461
+ ) ?? {},
462
+ };
463
+ }
464
+ }
465
+ } else {
466
+ // Destructuring case: const { a, b, c } = useLoaderData()
467
+ // Merge all variable schemas into a single entry with the call signature as key
468
+ const callSignatureKey = efc.callSignature;
469
+
470
+ // Merge all variable schemas by prepending the call signature to each path.
471
+ // perVariableSchemas paths are like "functionCallReturnValue.entities.sha"
472
+ // We need to prefix them with the call signature to get:
473
+ // "useLoaderData<typeof loader>().functionCallReturnValue.entities.sha"
474
+ const mergedReturnValueSchema: Record<string, string> = {};
475
+
476
+ // Set the top-level return value as object since it contains named properties
477
+ mergedReturnValueSchema[
478
+ `${callSignatureKey}.functionCallReturnValue`
479
+ ] = 'object';
480
+
481
+ for (const [varName, perVarSchema] of Object.entries(
482
+ efc.perVariableSchemas,
483
+ )) {
484
+ for (const [path, type] of Object.entries(perVarSchema)) {
485
+ // Only prepend the call signature if the path doesn't already have it.
486
+ // perVariableSchemas paths may already include the call signature prefix
487
+ // (e.g., "useCustomSizes(projectSlug).functionCallReturnValue.customSizes")
488
+ // depending on how they were built. If so, use the path as-is.
489
+ const rewrittenPath = path.startsWith(callSignatureKey)
490
+ ? path
491
+ : `${callSignatureKey}.${path}`;
492
+ mergedReturnValueSchema[rewrittenPath] = type;
493
+ }
404
494
  }
405
- }
406
495
 
407
- acc[importedExport.filePath][callSignatureKey] = {
408
- signatureSchema: deduplicateFunctionSchemas({
409
- ...signatureSchema,
410
- }),
411
- returnValueSchema: deduplicateFunctionSchemas(
412
- mergedReturnValueSchema,
413
- ),
414
- usageEquivalencies:
415
- getUsageEquivalencies(dataStructure, importedExport.name) ?? {},
416
- sourceEquivalencies:
417
- getSourceEquivalencies(dataStructure, importedExport.name) ?? {},
418
- };
496
+ acc[importedExport.filePath][callSignatureKey] = {
497
+ signatureSchema: deduplicateFunctionSchemas({
498
+ ...signatureSchema,
499
+ }),
500
+ returnValueSchema: deduplicateFunctionSchemas(
501
+ mergedReturnValueSchema,
502
+ ),
503
+ usageEquivalencies:
504
+ getUsageEquivalencies(dataStructure, importedExport.name) ?? {},
505
+ sourceEquivalencies:
506
+ getSourceEquivalencies(dataStructure, importedExport.name) ??
507
+ {},
508
+ };
509
+ }
419
510
  } else if (efc?.receivingVariableNames?.length === 1) {
420
511
  // For parameterized calls like useFetcher<UserData>(), each is a separate entry
421
512
  // with a single receivingVariableName. Use the call signature as the key.
@@ -482,6 +573,42 @@ async function getEntityDataStructureAndFunctionCalls({
482
573
  },
483
574
  );
484
575
 
576
+ // Add same-file child components to dependencySchemas.
577
+ // Same-file components (e.g., AgentCard defined in the same file as AgentTranscriptsPage)
578
+ // appear in externalFunctionCalls and functionResults but NOT in importedExports or
579
+ // nodeModuleImports. Without this, their signatures are missing from dependencySchemas
580
+ // and enrichArrayTypesFromChildSignatures can't find child component field accesses.
581
+ const allDependencyNames = new Set(allDependencies.map((d) => d.name));
582
+
583
+ for (const efc of dataStructure.externalFunctionCalls) {
584
+ // Skip if already covered by importedExports or nodeModuleImports
585
+ if (allDependencyNames.has(efc.name)) continue;
586
+
587
+ const signatureSchema = getFunctionSignature(dataStructure, {
588
+ functionName: efc.name,
589
+ });
590
+
591
+ const returnValueSchema = getReturnValue(dataStructure, {
592
+ functionName: efc.name,
593
+ });
594
+
595
+ // Only add if we have signature or return value data
596
+ if (!signatureSchema && !returnValueSchema) continue;
597
+
598
+ const clonedSignatureSchema = { ...(signatureSchema ?? {}) };
599
+ const clonedReturnValueSchema = { ...(returnValueSchema ?? {}) };
600
+
601
+ const entityFilePath = entity.filePath;
602
+ dependencySchemas[entityFilePath] ||= {};
603
+ dependencySchemas[entityFilePath][efc.name] = {
604
+ signatureSchema: deduplicateFunctionSchemas(clonedSignatureSchema),
605
+ returnValueSchema: deduplicateFunctionSchemas(clonedReturnValueSchema),
606
+ usageEquivalencies: getUsageEquivalencies(dataStructure, efc.name) ?? {},
607
+ sourceEquivalencies:
608
+ getSourceEquivalencies(dataStructure, efc.name) ?? {},
609
+ };
610
+ }
611
+
485
612
  const rawReturnValue =
486
613
  getReturnValue(dataStructure, { fillInUnknowns: false }) ?? {};
487
614
 
@@ -494,23 +621,54 @@ async function getEntityDataStructureAndFunctionCalls({
494
621
  // Get enriched conditional usages with source tracing
495
622
  const conditionalUsages = getConditionalUsages(dataStructure);
496
623
 
624
+ // Get conditional effects (setter calls inside conditionals)
625
+ const conditionalEffects = getConditionalEffects(dataStructure);
626
+
627
+ // Get compound conditionals (grouped conditions that must all be true)
628
+ const compoundConditionals = getCompoundConditionals(dataStructure);
497
629
  const rawUsageEquivalencies = getUsageEquivalencies(dataStructure);
498
630
  const rawSourceEquivalencies = getSourceEquivalencies(dataStructure);
499
631
 
632
+ // Get child boundary gating conditions for child component flow merging
633
+ const childBoundaryGatingConditions =
634
+ getChildBoundaryGatingConditions(dataStructure);
635
+
636
+ // Get JSX rendering usages for array size and text length flow generation
637
+ const jsxRenderingUsages = getJsxRenderingUsages(dataStructure);
638
+
639
+ const equivalentSignatureVariables =
640
+ getEquivalentSignatureVariables(dataStructure);
641
+
500
642
  const isolatedDataStructure = {
501
643
  signatureSchema: deduplicateFunctionSchemas(clonedRawSignature),
502
644
  returnValueSchema: deduplicateFunctionSchemas(clonedRawReturnValue),
503
- equivalentSignatureVariables:
504
- getEquivalentSignatureVariables(dataStructure),
645
+ equivalentSignatureVariables,
505
646
  dependencySchemas,
506
647
  environmentVariables: dataStructure.environmentVariables,
507
648
  conditionalUsages:
508
649
  Object.keys(conditionalUsages).length > 0 ? conditionalUsages : undefined,
650
+ // Include conditional effects for execution flow generation
651
+ conditionalEffects:
652
+ conditionalEffects.length > 0 ? conditionalEffects : undefined,
653
+ // Include compound conditionals for complete execution flow generation
654
+ // These capture grouped conditions like (a || b) && !c && !d
655
+ compoundConditionals:
656
+ compoundConditionals.length > 0 ? compoundConditionals : undefined,
509
657
  // Include root entity's equivalencies so they can be used during merge.
510
658
  // These show how the parent's data flows to/from child components.
511
659
  // E.g., for SurveysList, usageEquivalencies shows surveys[] → SurveyCard().signature[0].survey
512
660
  usageEquivalencies: rawUsageEquivalencies ?? {},
513
661
  sourceEquivalencies: rawSourceEquivalencies ?? {},
662
+ // Include child boundary gating conditions for child component flow merging
663
+ // Maps child component names to the conditions that must be true for them to render
664
+ childBoundaryGatingConditions:
665
+ Object.keys(childBoundaryGatingConditions).length > 0
666
+ ? childBoundaryGatingConditions
667
+ : undefined,
668
+ // Include JSX rendering usages for array size and text length flow generation
669
+ // These track arrays rendered via .map() and strings interpolated in JSX
670
+ jsxRenderingUsages:
671
+ jsxRenderingUsages.length > 0 ? jsxRenderingUsages : undefined,
514
672
  };
515
673
 
516
674
  const functionCalls: Record<string, string[]> = {};
@@ -766,9 +924,21 @@ export function determineMockedDependencies(entity: Entity) {
766
924
  // A schema with only "EntityName(): function" just indicates the entity is callable,
767
925
  // it doesn't mean there's actual return data to mock
768
926
  const hasReturnValue = hasActualReturnValueData(entityReturnValueSchema);
769
- const complexReturnValue = Object.values(
770
- entityReturnValueSchema ?? {},
771
- ).some((value) => value === 'object' || value === 'array');
927
+ // Check for complex return types (object/array), accounting for nullable types
928
+ // e.g., 'object', 'object | null', 'array | undefined' should all count as complex.
929
+ // Also detect when functionCallReturnValue has nested child properties — this
930
+ // proves it's a structured type even if its declared type is still 'unknown'.
931
+ const returnValueKeys = Object.keys(entityReturnValueSchema ?? {});
932
+ const complexReturnValue =
933
+ Object.values(entityReturnValueSchema ?? {}).some((value) => {
934
+ const baseType = value?.split(' | ')[0];
935
+ return baseType === 'object' || baseType === 'array';
936
+ }) ||
937
+ returnValueKeys.some(
938
+ (key) =>
939
+ key.includes('functionCallReturnValue.') ||
940
+ key.includes('functionCallReturnValue['),
941
+ );
772
942
 
773
943
  // Check if this is a validation function that should always be mocked
774
944
  const isValidationFn = isValidationFunction(entityName);
@@ -788,14 +958,28 @@ export function determineMockedDependencies(entity: Entity) {
788
958
  entityReturnValueSchema,
789
959
  );
790
960
 
961
+ // Check if returnValueSchema is completely empty (no traced calls at all)
962
+ // This indicates a side-effect function that we couldn't trace
963
+ const returnValueSchemaEmpty =
964
+ Object.keys(entityReturnValueSchema ?? {}).length === 0;
965
+
791
966
  const entityShouldBeMocked =
792
967
  !onlyHasJsxComponents &&
793
968
  (isValidationFn ||
794
969
  hasChainedCallsWithNoReturn ||
970
+ // If entity takes no args AND has return value, it reads from external source
971
+ // Examples: useParams(), useAuth(), getConfig()
972
+ (emptySignature && hasReturnValue) ||
973
+ // If entity takes no args AND returnValueSchema is completely empty,
974
+ // it's a side-effect function calling external services
975
+ // Examples: logPageView(), initializeAnalytics(), trackEvent()
976
+ // NOTE: We don't mock entities that have function markers but no return value
977
+ // (like React components: FileProvider() has 'function' type but no return data)
978
+ (emptySignature && returnValueSchemaEmpty) ||
795
979
  ((signatureHasFunctions || returnValueHasFunctions) &&
796
980
  hasReturnValue &&
797
- ((emptySignature && hasReturnValue) ||
798
- (!complexSignature && complexReturnValue))));
981
+ !complexSignature &&
982
+ complexReturnValue));
799
983
 
800
984
  if (entityShouldBeMocked) {
801
985
  mockedEntities.push({