@codeyam/codeyam-cli 0.1.0-staging.6e699e5 → 0.1.0-staging.79ef713

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 (437) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +7 -7
  4. package/analyzer-template/packages/ai/index.ts +10 -2
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +86 -18
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +67 -9
  8. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +41 -17
  9. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  10. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +308 -50
  11. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +15 -6
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +833 -243
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.ts +16 -3
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.ts +6 -4
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +54 -3
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +60 -15
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +80 -5
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +179 -0
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.ts +40 -30
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +393 -97
  23. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  24. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +283 -1
  25. package/analyzer-template/packages/ai/src/lib/generateEntityScenarios.ts +9 -5
  26. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +11 -3
  27. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionalEffects.ts +1 -1
  28. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +297 -7
  29. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromJsxUsages.ts +1 -1
  30. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  31. package/analyzer-template/packages/ai/src/lib/mergeStatements.ts +90 -96
  32. package/analyzer-template/packages/ai/src/lib/promptGenerators/gatherAttributesMap.ts +10 -7
  33. package/analyzer-template/packages/ai/src/lib/resolvePathToControllable.ts +25 -13
  34. package/analyzer-template/packages/ai/src/lib/worker/SerializableDataStructure.ts +4 -3
  35. package/analyzer-template/packages/ai/src/lib/worker/analyzeScopeWorker.ts +114 -2
  36. package/analyzer-template/packages/analyze/index.ts +2 -0
  37. package/analyzer-template/packages/analyze/src/lib/FileAnalyzer.ts +65 -59
  38. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +113 -26
  39. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.ts +19 -0
  40. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.ts +19 -0
  41. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getAllExports.ts +11 -0
  42. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.ts +8 -0
  43. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.ts +49 -1
  44. package/analyzer-template/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.ts +2 -1
  45. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +71 -9
  46. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +19 -4
  47. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +6 -0
  48. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +4 -2
  49. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +0 -3
  50. package/analyzer-template/packages/analyze/src/lib/files/analyzeRemixRoute.ts +4 -5
  51. package/analyzer-template/packages/analyze/src/lib/files/getImportedExports.ts +14 -12
  52. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  53. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +61 -13
  54. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +37 -0
  55. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +229 -19
  56. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +117 -9
  57. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +459 -39
  58. package/analyzer-template/packages/analyze/src/lib/files/scenarios/propagateArrayItemSchemas.ts +474 -0
  59. package/analyzer-template/packages/analyze/src/lib/files/setImportedExports.ts +2 -1
  60. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  61. package/analyzer-template/packages/analyze/src/lib/utils/getFileByPath.ts +19 -0
  62. package/analyzer-template/packages/aws/package.json +1 -1
  63. package/analyzer-template/packages/database/package.json +1 -1
  64. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -1
  65. package/analyzer-template/packages/database/src/lib/kysely/tables/commitsTable.ts +6 -0
  66. package/analyzer-template/packages/database/src/lib/loadAnalyses.ts +58 -1
  67. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +13 -0
  68. package/analyzer-template/packages/database/src/lib/loadBranch.ts +16 -1
  69. package/analyzer-template/packages/database/src/lib/loadCommit.ts +11 -0
  70. package/analyzer-template/packages/database/src/lib/loadCommits.ts +28 -0
  71. package/analyzer-template/packages/database/src/lib/loadEntities.ts +26 -3
  72. package/analyzer-template/packages/database/src/lib/loadEntityBranches.ts +12 -0
  73. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +7 -14
  74. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -1
  76. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts +1 -0
  78. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js +3 -0
  80. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts +2 -0
  82. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js +45 -2
  84. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalyses.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +8 -0
  87. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js +11 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/loadBranch.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.d.ts.map +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js +7 -0
  92. package/analyzer-template/packages/github/dist/database/src/lib/loadCommit.js.map +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts +3 -1
  94. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  95. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +22 -1
  96. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  97. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts +3 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  99. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +23 -4
  100. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.d.ts.map +1 -1
  102. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js +9 -0
  103. package/analyzer-template/packages/github/dist/database/src/lib/loadEntityBranches.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts +2 -2
  105. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  106. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +5 -4
  107. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  108. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts +2 -0
  109. package/analyzer-template/packages/github/dist/types/src/types/Commit.d.ts.map +1 -1
  110. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +3 -0
  111. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  112. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  113. package/analyzer-template/packages/github/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  114. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  115. package/analyzer-template/packages/github/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  116. package/analyzer-template/packages/github/package.json +1 -1
  117. package/analyzer-template/packages/types/src/types/Commit.ts +2 -0
  118. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  119. package/analyzer-template/packages/types/src/types/ScenariosDataStructure.ts +6 -5
  120. package/analyzer-template/packages/types/src/types/ScopeAnalysis.ts +6 -1
  121. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts +2 -0
  122. package/analyzer-template/packages/utils/dist/types/src/types/Commit.d.ts.map +1 -1
  123. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +3 -0
  124. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  125. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts +5 -5
  126. package/analyzer-template/packages/utils/dist/types/src/types/ScenariosDataStructure.d.ts.map +1 -1
  127. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts +6 -1
  128. package/analyzer-template/packages/utils/dist/types/src/types/ScopeAnalysis.d.ts.map +1 -1
  129. package/analyzer-template/playwright/capture.ts +20 -8
  130. package/analyzer-template/playwright/captureStatic.ts +1 -1
  131. package/analyzer-template/project/analyzeBaselineCommit.ts +5 -0
  132. package/analyzer-template/project/analyzeRegularCommit.ts +5 -0
  133. package/analyzer-template/project/captureLibraryFunctionDirect.ts +29 -26
  134. package/analyzer-template/project/constructMockCode.ts +90 -10
  135. package/analyzer-template/project/createEntitiesAndSortFiles.ts +83 -0
  136. package/analyzer-template/project/loadReadyToBeCaptured.ts +65 -41
  137. package/analyzer-template/project/orchestrateCapture/AwsCaptureTaskRunner.ts +12 -4
  138. package/analyzer-template/project/orchestrateCapture/SequentialCaptureTaskRunner.ts +11 -6
  139. package/analyzer-template/project/orchestrateCapture/taskRunner.ts +4 -2
  140. package/analyzer-template/project/orchestrateCapture.ts +45 -6
  141. package/analyzer-template/project/start.ts +35 -11
  142. package/analyzer-template/project/writeMockDataTsx.ts +181 -8
  143. package/analyzer-template/project/writeScenarioComponents.ts +103 -12
  144. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  145. package/analyzer-template/scripts/comboWorkerLoop.cjs +98 -50
  146. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js +5 -0
  147. package/background/src/lib/virtualized/project/analyzeBaselineCommit.js.map +1 -1
  148. package/background/src/lib/virtualized/project/analyzeRegularCommit.js +5 -0
  149. package/background/src/lib/virtualized/project/analyzeRegularCommit.js.map +1 -1
  150. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js +3 -3
  151. package/background/src/lib/virtualized/project/captureLibraryFunctionDirect.js.map +1 -1
  152. package/background/src/lib/virtualized/project/constructMockCode.js +75 -4
  153. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  154. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js +73 -1
  155. package/background/src/lib/virtualized/project/createEntitiesAndSortFiles.js.map +1 -1
  156. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js +19 -8
  157. package/background/src/lib/virtualized/project/loadReadyToBeCaptured.js.map +1 -1
  158. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js +2 -2
  159. package/background/src/lib/virtualized/project/orchestrateCapture/AwsCaptureTaskRunner.js.map +1 -1
  160. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js +4 -4
  161. package/background/src/lib/virtualized/project/orchestrateCapture/SequentialCaptureTaskRunner.js.map +1 -1
  162. package/background/src/lib/virtualized/project/orchestrateCapture.js +38 -6
  163. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  164. package/background/src/lib/virtualized/project/start.js +32 -11
  165. package/background/src/lib/virtualized/project/start.js.map +1 -1
  166. package/background/src/lib/virtualized/project/writeMockDataTsx.js +162 -4
  167. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  168. package/background/src/lib/virtualized/project/writeScenarioComponents.js +85 -15
  169. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  170. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  171. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  172. package/codeyam-cli/scripts/apply-setup.js +180 -0
  173. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  174. package/codeyam-cli/src/cli.js +2 -0
  175. package/codeyam-cli/src/cli.js.map +1 -1
  176. package/codeyam-cli/src/commands/debug.js +7 -5
  177. package/codeyam-cli/src/commands/debug.js.map +1 -1
  178. package/codeyam-cli/src/commands/memory.js +264 -0
  179. package/codeyam-cli/src/commands/memory.js.map +1 -0
  180. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +2 -2
  181. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  182. package/codeyam-cli/src/utils/analysisRunner.js +21 -2
  183. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  184. package/codeyam-cli/src/utils/backgroundServer.js +4 -0
  185. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  186. package/codeyam-cli/src/utils/install-skills.js +55 -10
  187. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  188. package/codeyam-cli/src/utils/queue/job.js +4 -0
  189. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  190. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  191. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  192. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  193. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  194. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  195. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  196. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  197. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  198. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  199. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  200. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  201. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  202. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
  203. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  204. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +285 -0
  205. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  206. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +115 -0
  207. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  208. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  209. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  210. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  211. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  212. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  213. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  214. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  215. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  216. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  217. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  218. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  219. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  220. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  221. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  222. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  223. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  224. package/codeyam-cli/src/utils/rules/index.js +6 -0
  225. package/codeyam-cli/src/utils/rules/index.js.map +1 -0
  226. package/codeyam-cli/src/utils/rules/parser.js +78 -0
  227. package/codeyam-cli/src/utils/rules/parser.js.map +1 -0
  228. package/codeyam-cli/src/utils/rules/pathMatcher.js +18 -0
  229. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -0
  230. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  231. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  232. package/codeyam-cli/src/utils/rules/staleness.js +137 -0
  233. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -0
  234. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +1 -1
  235. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  236. package/codeyam-cli/src/webserver/app/lib/database.js +7 -3
  237. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  238. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CA3JxPb7.js +1 -0
  239. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-B86KKU7e.js +11 -0
  240. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-B5ctlSYt.js} +1 -1
  241. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-BqY8gDAW.js} +1 -1
  242. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-C8lyxW9k.js → InlineSpinner-ClaLpuOo.js} +1 -1
  243. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-aht4aafF.js → InteractivePreview-BDhPilK7.js} +2 -2
  244. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-VeqEBv9v.js} +1 -1
  245. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-Bs7Nn1Jr.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-Bm3PmcCz.js} +1 -1
  247. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-D4TZhLuw.js → ReportIssueModal-C6PKeMYR.js} +3 -13
  248. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-Gq3Ocjo6.js} +1 -1
  249. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DEx02QDa.js → ScenarioViewer-BNLaXBHR.js} +3 -3
  250. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-CiwXDxLh.js} +1 -1
  251. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-B3TDXxnk.js} +1 -1
  252. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-DoLIqZX2.js → activity.(_tab)-BtBFH820.js} +6 -16
  253. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +11 -0
  254. package/codeyam-cli/src/webserver/build/client/assets/api.memory-profile-l0sNRNKZ.js +1 -0
  255. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  256. package/codeyam-cli/src/webserver/build/client/assets/book-open-PttOB2SF.js +6 -0
  257. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-TJp6ofnp.js} +1 -1
  258. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-JE9ZIoBl.js} +12 -12
  259. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-CXhHQYrI.js} +1 -1
  260. package/codeyam-cli/src/webserver/build/client/assets/copy-6y9ALfGT.js +11 -0
  261. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-Ca9fAY46.js} +1 -1
  262. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C5lqplTC.js +1 -0
  263. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-C2N4Op8e.js → entity._sha._-n38keI1k.js} +10 -10
  264. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js → entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js} +1 -1
  265. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-D1T4TGjf.js → entity._sha_.create-scenario-DGgZjdFg.js} +1 -1
  266. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-38yPijoD.js} +1 -1
  267. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-BSHEfydn.js} +1 -1
  268. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-DCPhhSMo.js} +1 -1
  269. package/codeyam-cli/src/webserver/build/client/assets/files-0N0YJQv7.js +1 -0
  270. package/codeyam-cli/src/webserver/build/client/assets/{git-B4RJRvYB.js → git-DXnyr8uP.js} +8 -8
  271. package/codeyam-cli/src/webserver/build/client/assets/globals-Bh6jH0cL.css +1 -0
  272. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-CcsFv748.js} +1 -1
  273. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-ChN9-fAY.js} +1 -1
  274. package/codeyam-cli/src/webserver/build/client/assets/labs-CdVUfvji.js +1 -0
  275. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-CTqLEAGU.js} +1 -1
  276. package/codeyam-cli/src/webserver/build/client/assets/manifest-87319d0f.js +1 -0
  277. package/codeyam-cli/src/webserver/build/client/assets/memory-CPIDnDEj.js +76 -0
  278. package/codeyam-cli/src/webserver/build/client/assets/pause-D6vreykR.js +11 -0
  279. package/codeyam-cli/src/webserver/build/client/assets/root-D6oziHts.js +62 -0
  280. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-B8VUL8nl.js} +1 -1
  281. package/codeyam-cli/src/webserver/build/client/assets/{settings-CS5f3WzT.js → settings-eBI36Yv5.js} +1 -1
  282. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DwFIBT09.js → simulations-CPoAg7Zo.js} +1 -1
  283. package/codeyam-cli/src/webserver/build/client/assets/terminal-BrCP7uQo.js +11 -0
  284. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-BZz2NjYa.js} +1 -1
  285. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-C1v1PQzo.js → useCustomSizes-DNwUduNu.js} +1 -1
  286. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-aSv48UbS.js → useLastLogLine-COky1GVF.js} +1 -1
  287. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DYxHZQuP.js → useReportContext-CpZgwliL.js} +1 -1
  288. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-Bv9JFvUO.js} +1 -1
  289. package/codeyam-cli/src/webserver/build/server/assets/index-9ox9LcrG.js +1 -0
  290. package/codeyam-cli/src/webserver/build/server/assets/server-build-Cq5Vqcob.js +260 -0
  291. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  292. package/codeyam-cli/src/webserver/build-info.json +5 -5
  293. package/codeyam-cli/templates/{codeyam-power-rules-hook.sh → codeyam-memory-hook.sh} +12 -13
  294. package/codeyam-cli/templates/codeyam:diagnose.md +178 -25
  295. package/codeyam-cli/templates/codeyam:memory.md +404 -0
  296. package/codeyam-cli/templates/codeyam:new-rule.md +2 -2
  297. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  298. package/codeyam-cli/templates/rule-reflection-hook.py +590 -0
  299. package/codeyam-cli/templates/rules-instructions.md +123 -0
  300. package/package.json +8 -6
  301. package/packages/ai/index.js +3 -2
  302. package/packages/ai/index.js.map +1 -1
  303. package/packages/ai/src/lib/analyzeScope.js +68 -13
  304. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  305. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +54 -8
  306. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  307. package/packages/ai/src/lib/astScopes/methodSemantics.js +41 -17
  308. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  309. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  310. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  311. package/packages/ai/src/lib/astScopes/processExpression.js +239 -43
  312. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  313. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +650 -166
  314. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  315. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  316. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  317. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js +13 -3
  318. package/packages/ai/src/lib/dataStructure/helpers/BatchSchemaProcessor.js.map +1 -1
  319. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js +6 -4
  320. package/packages/ai/src/lib/dataStructure/helpers/ScopeTreeManager.js.map +1 -1
  321. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +52 -3
  322. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  323. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +55 -11
  324. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  325. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  326. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  327. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +73 -5
  328. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  329. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +173 -0
  330. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -0
  331. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js +37 -20
  332. package/packages/ai/src/lib/dataStructure/helpers/deduplicateFunctionSchemas.js.map +1 -1
  333. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +333 -86
  334. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  335. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  336. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  337. package/packages/ai/src/lib/generateEntityScenarioData.js +205 -1
  338. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  339. package/packages/ai/src/lib/generateEntityScenarios.js +7 -1
  340. package/packages/ai/src/lib/generateEntityScenarios.js.map +1 -1
  341. package/packages/ai/src/lib/generateExecutionFlows.js +10 -2
  342. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  343. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +209 -3
  344. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  345. package/packages/ai/src/lib/isolateScopes.js +39 -3
  346. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  347. package/packages/ai/src/lib/mergeStatements.js +70 -51
  348. package/packages/ai/src/lib/mergeStatements.js.map +1 -1
  349. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js +10 -4
  350. package/packages/ai/src/lib/promptGenerators/gatherAttributesMap.js.map +1 -1
  351. package/packages/ai/src/lib/resolvePathToControllable.js +24 -14
  352. package/packages/ai/src/lib/resolvePathToControllable.js.map +1 -1
  353. package/packages/ai/src/lib/worker/SerializableDataStructure.js.map +1 -1
  354. package/packages/ai/src/lib/worker/analyzeScopeWorker.js +94 -1
  355. package/packages/ai/src/lib/worker/analyzeScopeWorker.js.map +1 -1
  356. package/packages/analyze/index.js +1 -0
  357. package/packages/analyze/index.js.map +1 -1
  358. package/packages/analyze/src/lib/FileAnalyzer.js +60 -36
  359. package/packages/analyze/src/lib/FileAnalyzer.js.map +1 -1
  360. package/packages/analyze/src/lib/ProjectAnalyzer.js +96 -26
  361. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  362. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js +14 -0
  363. package/packages/analyze/src/lib/asts/sourceFiles/getAllDeclaredEntityNodes.js.map +1 -1
  364. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js +14 -0
  365. package/packages/analyze/src/lib/asts/sourceFiles/getAllEntityNodes.js.map +1 -1
  366. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js +6 -0
  367. package/packages/analyze/src/lib/asts/sourceFiles/getAllExports.js.map +1 -1
  368. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js +6 -0
  369. package/packages/analyze/src/lib/asts/sourceFiles/getImportsAnalysis.js.map +1 -1
  370. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js +39 -1
  371. package/packages/analyze/src/lib/asts/sourceFiles/getResolvedModule.js.map +1 -1
  372. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js +2 -1
  373. package/packages/analyze/src/lib/asts/sourceFiles/getSourceFilesForAllImports.js.map +1 -1
  374. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +54 -6
  375. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  376. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +17 -4
  377. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  378. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +5 -0
  379. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  380. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +2 -1
  381. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  382. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +0 -3
  383. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  384. package/packages/analyze/src/lib/files/analyzeRemixRoute.js +3 -2
  385. package/packages/analyze/src/lib/files/analyzeRemixRoute.js.map +1 -1
  386. package/packages/analyze/src/lib/files/getImportedExports.js +11 -7
  387. package/packages/analyze/src/lib/files/getImportedExports.js.map +1 -1
  388. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  389. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  390. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +56 -10
  391. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  392. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +33 -8
  393. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  394. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +150 -17
  395. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  396. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +56 -8
  397. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  398. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +399 -31
  399. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  400. package/packages/analyze/src/lib/files/setImportedExports.js +2 -1
  401. package/packages/analyze/src/lib/files/setImportedExports.js.map +1 -1
  402. package/packages/analyze/src/lib/index.js +1 -0
  403. package/packages/analyze/src/lib/index.js.map +1 -1
  404. package/packages/analyze/src/lib/utils/getFileByPath.js +12 -0
  405. package/packages/analyze/src/lib/utils/getFileByPath.js.map +1 -0
  406. package/packages/database/src/lib/kysely/db.js +8 -1
  407. package/packages/database/src/lib/kysely/db.js.map +1 -1
  408. package/packages/database/src/lib/kysely/tables/commitsTable.js +3 -0
  409. package/packages/database/src/lib/kysely/tables/commitsTable.js.map +1 -1
  410. package/packages/database/src/lib/loadAnalyses.js +45 -2
  411. package/packages/database/src/lib/loadAnalyses.js.map +1 -1
  412. package/packages/database/src/lib/loadAnalysis.js +8 -0
  413. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  414. package/packages/database/src/lib/loadBranch.js +11 -1
  415. package/packages/database/src/lib/loadBranch.js.map +1 -1
  416. package/packages/database/src/lib/loadCommit.js +7 -0
  417. package/packages/database/src/lib/loadCommit.js.map +1 -1
  418. package/packages/database/src/lib/loadCommits.js +22 -1
  419. package/packages/database/src/lib/loadCommits.js.map +1 -1
  420. package/packages/database/src/lib/loadEntities.js +23 -4
  421. package/packages/database/src/lib/loadEntities.js.map +1 -1
  422. package/packages/database/src/lib/loadEntityBranches.js +9 -0
  423. package/packages/database/src/lib/loadEntityBranches.js.map +1 -1
  424. package/packages/database/src/lib/updateCommitMetadata.js +5 -4
  425. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  426. package/codeyam-cli/src/webserver/build/client/assets/EntityItem-BXhEawa3.js +0 -1
  427. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BRb-0kQl.js +0 -1
  428. package/codeyam-cli/src/webserver/build/client/assets/files-Cs4MdYtv.js +0 -1
  429. package/codeyam-cli/src/webserver/build/client/assets/git-commit-horizontal-CysbcZxi.js +0 -6
  430. package/codeyam-cli/src/webserver/build/client/assets/globals-DMUaGAqV.css +0 -1
  431. package/codeyam-cli/src/webserver/build/client/assets/manifest-f874c610.js +0 -1
  432. package/codeyam-cli/src/webserver/build/client/assets/root-Bz5TunQg.js +0 -57
  433. package/codeyam-cli/src/webserver/build/client/assets/rules-hEkvVw2-.js +0 -97
  434. package/codeyam-cli/src/webserver/build/server/assets/index-967OuJoF.js +0 -1
  435. package/codeyam-cli/src/webserver/build/server/assets/server-build-DRTmerg9.js +0 -257
  436. package/codeyam-cli/templates/codeyam:power-rules.md +0 -447
  437. /package/codeyam-cli/src/webserver/build/client/assets/{api.rules-l0sNRNKZ.js → api.agent-transcripts-l0sNRNKZ.js} +0 -0
@@ -209,27 +209,34 @@ export class ArrayReduceSemantics {
209
209
  /**
210
210
  * Array concat method semantics
211
211
  *
212
- * concat() returns a new array combining the original array and additional items
212
+ * concat() returns a new array/string combining the original and additional items
213
+ *
214
+ * NOTE: We intentionally do NOT type the source as 'array' here because
215
+ * .concat() exists on both arrays AND strings. Typing the source prematurely
216
+ * causes type contamination when the source is equivalent to other paths
217
+ * via ?? chains. Type inference happens later in checkIfKnownType() based
218
+ * on accumulated evidence from all methods called on a path.
213
219
  */
214
220
  export class ArrayConcatSemantics {
215
221
  getReturnType() {
216
- return 'array';
222
+ return 'unknown'; // Could be array or string depending on source
217
223
  }
218
224
  addEquivalences(methodCallPath, sourcePath, context) {
219
- // Mark source as array
220
- context.addType(sourcePath, 'array');
221
- // Any arguments are also added to the array
225
+ // NOTE: We use 'unknown' instead of 'array' for the source because .concat()
226
+ // exists on both arrays AND strings. Using 'array' causes type contamination
227
+ // when the source is equivalent to other paths via ?? chains.
228
+ context.addType(sourcePath, 'unknown');
229
+ // Any arguments are also added to the result
222
230
  const functionCallSegment = methodCallPath.getLastFunctionCallSegment();
223
231
  if (functionCallSegment) {
224
232
  // Each argument could be an array or single element
225
233
  functionCallSegment.args.forEach((argPath) => {
226
234
  // No need to guess the type - we'll discover it through normal processing
227
- // But we can indicate that these elements will be in the result array
235
+ // But we can indicate that these elements will be in the result
228
236
  context.addEquivalence(methodCallPath, argPath);
229
237
  });
230
238
  }
231
- // The original array elements are also in the result
232
- context.addType(methodCallPath, 'array');
239
+ // The original elements are also in the result
233
240
  context.addEquivalence(methodCallPath, sourcePath.withElement('*'));
234
241
  }
235
242
  isComplete() {
@@ -239,18 +246,27 @@ export class ArrayConcatSemantics {
239
246
  /**
240
247
  * Array slice method semantics
241
248
  *
242
- * slice() returns a shallow copy of a portion of an array
249
+ * slice() returns a shallow copy of a portion of an array (or string)
250
+ *
251
+ * NOTE: We intentionally do NOT type the source as 'array' here because
252
+ * .slice() exists on both arrays AND strings. Typing the source prematurely
253
+ * causes type contamination when the source is equivalent to other paths
254
+ * via ?? chains. Type inference happens later in checkIfKnownType() based
255
+ * on accumulated evidence from all methods called on a path.
243
256
  */
244
257
  export class ArraySliceSemantics {
245
258
  getReturnType() {
246
- return 'array';
259
+ return 'unknown'; // Could be array or string depending on source
247
260
  }
248
261
  addEquivalences(methodCallPath, sourcePath, context) {
249
- // Mark source as array
250
- context.addType(sourcePath, 'array');
251
- // The elements in the result are the same type as the source array
262
+ // NOTE: We use 'unknown' instead of 'array' for the source because .slice()
263
+ // exists on both arrays AND strings. Using 'array' causes type contamination
264
+ // when the source is equivalent to other paths via ?? chains.
265
+ // Type inference happens later in checkIfKnownType() based on accumulated evidence.
266
+ context.addType(sourcePath, 'unknown');
267
+ // Still track the return value type for data structure tracking
252
268
  const methodCallPathWithReturnValues = methodCallPath.withReturnValues();
253
- context.addType(methodCallPathWithReturnValues, 'array');
269
+ context.addType(methodCallPathWithReturnValues, 'unknown');
254
270
  }
255
271
  isComplete() {
256
272
  return true;
@@ -409,15 +425,23 @@ export class ArrayFlatMapSemantics {
409
425
  * Array at method semantics
410
426
  *
411
427
  * at() returns the element at the given index, supporting negative indices
428
+ *
429
+ * NOTE: We intentionally do NOT type the source as 'array' here because
430
+ * .at() exists on both arrays AND strings. Typing the source prematurely
431
+ * causes type contamination when the source is equivalent to other paths
432
+ * via ?? chains. Type inference happens later in checkIfKnownType() based
433
+ * on accumulated evidence from all methods called on a path.
412
434
  */
413
435
  export class ArrayAtSemantics {
414
436
  getReturnType() {
415
437
  return 'unknown'; // Returns element type or undefined
416
438
  }
417
439
  addEquivalences(methodCallPath, sourcePath, context) {
418
- // Mark source as array
419
- context.addType(sourcePath, 'array');
420
- // The return value is equivalent to an array element
440
+ // NOTE: We use 'unknown' instead of 'array' for the source because .at()
441
+ // exists on both arrays AND strings. Using 'array' causes type contamination
442
+ // when the source is equivalent to other paths via ?? chains.
443
+ context.addType(sourcePath, 'unknown');
444
+ // The return value is equivalent to an element
421
445
  context.addEquivalence(methodCallPath.withReturnValues(), sourcePath.withElement('*'));
422
446
  }
423
447
  isComplete() {
@@ -1 +1 @@
1
- {"version":3,"file":"methodSemantics.js","sourceRoot":"","sources":["../../../../../../../packages/ai/src/lib/astScopes/methodSemantics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"methodSemantics.js","sourceRoot":"","sources":["../../../../../../../packages/ai/src/lib/astScopes/methodSemantics.ts"],"names":[],"mappings":"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"}
@@ -17,33 +17,29 @@ export class ForInStatementHandler {
17
17
  return false;
18
18
  // Process the expression being iterated over first (e.g., object)
19
19
  context.processExpression(node.expression);
20
- // Get the path of the object being iterated
21
- const expressionPath = context.getStructuralPath(node.expression);
22
- // If the initializer is a variable declaration with an identifier, establish equivalence
23
- // to indicate it's iterating over the keys of the expression
20
+ // If the initializer is a variable declaration with an identifier,
21
+ // type it as 'string' since for-in keys are always strings
24
22
  if (ts.isVariableDeclarationList(node.initializer)) {
25
23
  const declarations = node.initializer.declarations;
26
24
  if (declarations.length === 1 &&
27
25
  declarations[0].name &&
28
26
  ts.isIdentifier(declarations[0].name)) {
29
27
  const variableName = StructuredPath.fromBase(declarations[0].name.text);
30
- // Add type for the key variable (string for object keys)
28
+ // Type the key variable as 'string' for-in keys are always strings.
29
+ // Note: We intentionally do NOT equivalence the key variable to
30
+ // expressionPath[*key*]. The key variable is the KEY (a string),
31
+ // while [*key*] in the schema represents the VALUE at a dynamic key.
32
+ // Creating that equivalence would cause the 'string' type to propagate
33
+ // to the value path. The value access (e.g., obj[key]) is handled
34
+ // correctly by the element access handler in processExpression.
31
35
  context.addType(variableName, 'string');
32
- if (expressionPath) {
33
- // For for...in loops, the variable is equivalent to the keys of the object
34
- // We represent this with a *key* suffix to indicate it's a key, not a value
35
- context.addEquivalence(variableName, expressionPath.withKey('key'));
36
- }
37
36
  }
38
37
  }
39
38
  else if (ts.isIdentifier(node.initializer)) {
40
39
  // If the initializer is directly an identifier (rare but possible)
41
40
  const variableName = StructuredPath.fromBase(node.initializer.text);
42
- // Add type for the key variable
41
+ // See comment above — type as string but don't equivalence to value path
43
42
  context.addType(variableName, 'string');
44
- if (expressionPath) {
45
- context.addEquivalence(variableName, expressionPath.withKey('key'));
46
- }
47
43
  }
48
44
  else {
49
45
  context.processExpression(node.initializer);
@@ -1 +1 @@
1
- {"version":3,"file":"forInStatementHandler.js","sourceRoot":"","sources":["../../../../../../../../packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IAChC,SAAS,CAAC,IAAa;QACrB,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAa,EAAE,OAAwB;QAC7C,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7C,kEAAkE;QAClE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3C,4CAA4C;QAC5C,MAAM,cAAc,GAAG,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAElE,yFAAyF;QACzF,6DAA6D;QAC7D,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YACnD,IACE,YAAY,CAAC,MAAM,KAAK,CAAC;gBACzB,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpB,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACrC,CAAC;gBACD,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExE,yDAAyD;gBACzD,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;gBAExC,IAAI,cAAc,EAAE,CAAC;oBACnB,2EAA2E;oBAC3E,4EAA4E;oBAC5E,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;gBACtE,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,mEAAmE;YACnE,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEpE,gCAAgC;YAChC,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAExC,IAAI,cAAc,EAAE,CAAC;gBACnB,OAAO,CAAC,cAAc,CAAC,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;QAED,wBAAwB;QACxB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,gDAAgD;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
1
+ {"version":3,"file":"forInStatementHandler.js","sourceRoot":"","sources":["../../../../../../../../packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,YAAY,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE1C;;;;;;;GAOG;AACH,MAAM,OAAO,qBAAqB;IAChC,SAAS,CAAC,IAAa;QACrB,OAAO,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,OAAO,CAAC,IAAa,EAAE,OAAwB;QAC7C,IAAI,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC;YAAE,OAAO,KAAK,CAAC;QAE7C,kEAAkE;QAClE,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAE3C,mEAAmE;QACnE,2DAA2D;QAC3D,IAAI,EAAE,CAAC,yBAAyB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YACnD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC;YACnD,IACE,YAAY,CAAC,MAAM,KAAK,CAAC;gBACzB,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI;gBACpB,EAAE,CAAC,YAAY,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EACrC,CAAC;gBACD,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAExE,sEAAsE;gBACtE,gEAAgE;gBAChE,iEAAiE;gBACjE,qEAAqE;gBACrE,uEAAuE;gBACvE,kEAAkE;gBAClE,gEAAgE;gBAChE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,IAAI,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,mEAAmE;YACnE,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAEpE,yEAAyE;YACzE,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC;QAC1C,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC9C,CAAC;QAED,wBAAwB;QACxB,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAEpC,gDAAgD;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -7,6 +7,84 @@ import { isArithmeticOperator, isAssignmentOperator, isBitwiseCompoundOperator,
7
7
  import { processBindingPattern } from "./processBindings.js";
8
8
  import { extractConditionalEffectsFromTernary, findUseStateSetters, } from "./conditionalEffectsExtractor.js";
9
9
  import { detectArrayDerivedPattern } from "./arrayDerivationDetector.js";
10
+ /**
11
+ * Checks if a JSX element has props that reference variables from the parent scope.
12
+ * This is used to detect unconditionally-rendered children that should have their
13
+ * execution flows merged into the parent.
14
+ *
15
+ * We want to track children where the parent controls data that affects the child's
16
+ * conditional rendering. Static props (like title="Dashboard") don't need tracking
17
+ * because they don't create variable execution flows.
18
+ *
19
+ * Examples:
20
+ * - <WorkoutsView workouts={workouts} /> → true (workouts is a variable)
21
+ * - <ItemList items={items} count={count} /> → true (items, count are variables)
22
+ * - <Header title="Dashboard" /> → false (static string)
23
+ * - <Footer /> → false (no props)
24
+ * - <Button onClick={handleClick} /> → false (only callback, no data props)
25
+ *
26
+ * @returns true if the component has at least one prop that references a variable
27
+ * (excluding callbacks which typically start with 'on' or 'handle')
28
+ */
29
+ function hasDataPropsFromParent(node, componentName) {
30
+ const attributes = ts.isJsxElement(node)
31
+ ? node.openingElement.attributes.properties
32
+ : node.attributes.properties;
33
+ const dataProps = [];
34
+ for (const attr of attributes) {
35
+ // Spread attributes always reference parent data: {...props}
36
+ if (ts.isJsxSpreadAttribute(attr)) {
37
+ const spreadText = attr.expression?.getText() || '...spread';
38
+ dataProps.push(`{...${spreadText}}`);
39
+ console.log(`[UnconditionalChild] ${componentName}: Found spread attribute {${spreadText}}`);
40
+ continue;
41
+ }
42
+ if (ts.isJsxAttribute(attr)) {
43
+ const propName = attr.name.getText();
44
+ // Skip callback props - they don't create data-driven execution flows
45
+ // Callbacks typically start with 'on' (onClick, onChange) or 'handle' (handleSubmit)
46
+ if (propName.startsWith('on') ||
47
+ propName.startsWith('handle') ||
48
+ propName === 'ref') {
49
+ console.log(`[UnconditionalChild] ${componentName}: Skipping callback prop '${propName}'`);
50
+ continue;
51
+ }
52
+ // Check if the prop value is a JSX expression (references a variable)
53
+ // vs a string literal which is static
54
+ if (attr.initializer) {
55
+ if (ts.isJsxExpression(attr.initializer)) {
56
+ // JSX expression like prop={value} - this references a variable
57
+ // Could be a simple identifier, property access, or more complex expression
58
+ const expression = attr.initializer.expression;
59
+ if (expression) {
60
+ // Skip if it's just a function/arrow function (callback)
61
+ if (ts.isArrowFunction(expression) ||
62
+ ts.isFunctionExpression(expression)) {
63
+ console.log(`[UnconditionalChild] ${componentName}: Skipping inline callback prop '${propName}'`);
64
+ continue;
65
+ }
66
+ // This is a data prop that references parent state/props
67
+ const exprText = expression.getText();
68
+ dataProps.push(`${propName}={${exprText}}`);
69
+ console.log(`[UnconditionalChild] ${componentName}: Found data prop '${propName}' = {${exprText}}`);
70
+ }
71
+ }
72
+ else {
73
+ // String literals like prop="value" are static
74
+ console.log(`[UnconditionalChild] ${componentName}: Skipping static prop '${propName}'`);
75
+ }
76
+ }
77
+ }
78
+ }
79
+ const hasDataProps = dataProps.length > 0;
80
+ if (hasDataProps) {
81
+ console.log(`[UnconditionalChild] ${componentName}: Has ${dataProps.length} data props: [${dataProps.join(', ')}]`);
82
+ }
83
+ else {
84
+ console.log(`[UnconditionalChild] ${componentName}: No data props found, will NOT track`);
85
+ }
86
+ return { hasDataProps, dataProps };
87
+ }
10
88
  /**
11
89
  * Extracts the component name from a JSX element.
12
90
  * Returns null for intrinsic elements (div, span, etc.) since we only care about
@@ -690,18 +768,40 @@ function extractConditionalsFromJsx(node, context, parentConditions = []) {
690
768
  // Recursively process nested JSX elements - Fix 32: pass parent conditions
691
769
  else if (ts.isJsxElement(child)) {
692
770
  // Check if this is a user-defined component (vs intrinsic element like div)
693
- // If it's a component AND there are parent conditions, record the gating conditions
694
771
  const componentName = getComponentNameFromJsx(child);
695
- if (componentName && parentConditions.length > 0) {
696
- for (const condition of parentConditions) {
697
- context.addChildBoundaryGatingCondition(componentName, {
698
- path: condition.path,
699
- conditionType: 'truthiness',
700
- location: 'ternary',
701
- sourceLocation: condition.sourceLocation,
702
- controlsJsxRendering: true,
703
- isNegated: condition.isNegated,
704
- });
772
+ if (componentName) {
773
+ if (parentConditions.length > 0) {
774
+ // If there are parent conditions, record them as gating conditions
775
+ console.log(`[ChildBoundary] ${componentName}: Conditionally rendered with ${parentConditions.length} gating conditions`);
776
+ for (const condition of parentConditions) {
777
+ console.log(`[ChildBoundary] ${componentName}: Adding gating condition path='${condition.path}' isNegated=${condition.isNegated}`);
778
+ context.addChildBoundaryGatingCondition(componentName, {
779
+ path: condition.path,
780
+ conditionType: 'truthiness',
781
+ location: 'ternary',
782
+ sourceLocation: condition.sourceLocation,
783
+ controlsJsxRendering: true,
784
+ isNegated: condition.isNegated,
785
+ });
786
+ }
787
+ }
788
+ else {
789
+ // No parent conditions - check if it has data props for unconditional tracking
790
+ console.log(`[ChildBoundary] ${componentName}: Checking for unconditional rendering with data props...`);
791
+ const { hasDataProps, dataProps } = hasDataPropsFromParent(child, componentName);
792
+ if (hasDataProps) {
793
+ // Fix: Track unconditionally-rendered children that receive data props
794
+ // These need to be tracked for flow merging even without gating conditions
795
+ // Example: <WorkoutsView workouts={workouts} /> - parent controls workouts data
796
+ console.log(`[ChildBoundary] ${componentName}: TRACKING as unconditionally-rendered with data props: [${dataProps.join(', ')}]`);
797
+ context.addChildBoundaryGatingCondition(componentName, {
798
+ path: '__unconditional__',
799
+ conditionType: 'truthiness',
800
+ location: 'unconditional',
801
+ controlsJsxRendering: true,
802
+ isNegated: false,
803
+ });
804
+ }
705
805
  }
706
806
  }
707
807
  extractConditionalsFromJsx(child, context, parentConditions);
@@ -709,18 +809,38 @@ function extractConditionalsFromJsx(node, context, parentConditions = []) {
709
809
  // Handle self-closing JSX elements (e.g., <ScenarioViewer />)
710
810
  else if (ts.isJsxSelfClosingElement(child)) {
711
811
  // Check if this is a user-defined component (vs intrinsic element like div)
712
- // If it's a component AND there are parent conditions, record the gating conditions
713
812
  const componentName = getComponentNameFromJsx(child);
714
- if (componentName && parentConditions.length > 0) {
715
- for (const condition of parentConditions) {
716
- context.addChildBoundaryGatingCondition(componentName, {
717
- path: condition.path,
718
- conditionType: 'truthiness',
719
- location: 'ternary',
720
- sourceLocation: condition.sourceLocation,
721
- controlsJsxRendering: true,
722
- isNegated: condition.isNegated,
723
- });
813
+ if (componentName) {
814
+ if (parentConditions.length > 0) {
815
+ // If there are parent conditions, record them as gating conditions
816
+ console.log(`[ChildBoundary] ${componentName}: Conditionally rendered (self-closing) with ${parentConditions.length} gating conditions`);
817
+ for (const condition of parentConditions) {
818
+ console.log(`[ChildBoundary] ${componentName}: Adding gating condition path='${condition.path}' isNegated=${condition.isNegated}`);
819
+ context.addChildBoundaryGatingCondition(componentName, {
820
+ path: condition.path,
821
+ conditionType: 'truthiness',
822
+ location: 'ternary',
823
+ sourceLocation: condition.sourceLocation,
824
+ controlsJsxRendering: true,
825
+ isNegated: condition.isNegated,
826
+ });
827
+ }
828
+ }
829
+ else {
830
+ // No parent conditions - check if it has data props for unconditional tracking
831
+ console.log(`[ChildBoundary] ${componentName}: Checking for unconditional rendering (self-closing) with data props...`);
832
+ const { hasDataProps, dataProps } = hasDataPropsFromParent(child, componentName);
833
+ if (hasDataProps) {
834
+ // Fix: Track unconditionally-rendered children that receive data props
835
+ console.log(`[ChildBoundary] ${componentName}: TRACKING as unconditionally-rendered (self-closing) with data props: [${dataProps.join(', ')}]`);
836
+ context.addChildBoundaryGatingCondition(componentName, {
837
+ path: '__unconditional__',
838
+ conditionType: 'truthiness',
839
+ location: 'unconditional',
840
+ controlsJsxRendering: true,
841
+ isNegated: false,
842
+ });
843
+ }
724
844
  }
725
845
  }
726
846
  // Self-closing elements have no children, so no recursion needed
@@ -1086,15 +1206,21 @@ export function processExpression({ node, context, targetPath, typeHint, }) {
1086
1206
  const equivalentVariables = context.getEquivalentVariables();
1087
1207
  const structure = context.getStructure();
1088
1208
  // Propagate existing equivalencies for sub-properties
1089
- for (const [key, value] of Object.entries(equivalentVariables)) {
1209
+ for (const [key, rawValue] of Object.entries(equivalentVariables)) {
1090
1210
  // Check if this equivalency is for a sub-property of the identifier
1091
1211
  // e.g., completeDataStructure['Function Arguments'] or completeDataStructure.foo
1092
1212
  if (key.startsWith(nodePathStr + '.') ||
1093
1213
  key.startsWith(nodePathStr + '[')) {
1094
1214
  const subPath = key.substring(nodePathStr.length);
1095
1215
  const newTargetPath = StructuredPath.fromBase(targetPath.toString() + subPath);
1096
- const valuePath = StructuredPath.fromBase(value);
1097
- context.addEquivalence(newTargetPath, valuePath);
1216
+ // Handle both string and string[] values
1217
+ const values = Array.isArray(rawValue) ? rawValue : [rawValue];
1218
+ for (const value of values) {
1219
+ if (typeof value === 'string') {
1220
+ const valuePath = StructuredPath.fromBase(value);
1221
+ context.addEquivalence(newTargetPath, valuePath);
1222
+ }
1223
+ }
1098
1224
  }
1099
1225
  }
1100
1226
  // Propagate existing structure entries for sub-properties
@@ -1436,20 +1562,38 @@ export function processExpression({ node, context, targetPath, typeHint, }) {
1436
1562
  // - items[] (from the find result)
1437
1563
  // - null (from the fallback)
1438
1564
  if (targetPath) {
1439
- // Process left side recursively to capture its full equivalency chain
1565
+ // Get paths for both sides
1566
+ const leftPath = StructuredPath.fromNode(unwrappedNode.left, context.sourceFile);
1567
+ const rightPath = StructuredPath.fromNode(unwrappedNode.right, context.sourceFile);
1568
+ // Collect all valid paths
1569
+ const allPaths = [];
1570
+ if (leftPath)
1571
+ allPaths.push(leftPath);
1572
+ if (rightPath)
1573
+ allPaths.push(rightPath);
1574
+ // Add multiple equivalencies to track both sources
1575
+ if (allPaths.length > 0) {
1576
+ context.addMultipleEquivalencies(targetPath, allPaths);
1577
+ }
1578
+ // Process both sides to capture their internal structures
1440
1579
  processExpression({
1441
1580
  node: unwrappedNode.left,
1442
1581
  context,
1443
- targetPath,
1444
1582
  });
1445
- // Process right side recursively for completeness
1446
1583
  processExpression({
1447
1584
  node: unwrappedNode.right,
1448
1585
  context,
1449
- targetPath,
1450
1586
  });
1451
- // Set resultPath to left side for type inference
1452
- resultPath = StructuredPath.fromNode(unwrappedNode.left, context.sourceFile);
1587
+ // Register the type for the target path
1588
+ const leftType = context.inferTypeFromNode(unwrappedNode.left);
1589
+ const rightType = context.inferTypeFromNode(unwrappedNode.right);
1590
+ const orResultType = isDefinedType(leftType)
1591
+ ? leftType
1592
+ : rightType || 'unknown';
1593
+ context.addType(targetPath, orResultType);
1594
+ // Return early - we've already handled equivalencies with addMultipleEquivalencies
1595
+ // Don't fall through to the generic addEquivalence call below
1596
+ return true;
1453
1597
  }
1454
1598
  // Note: When there's no targetPath, we don't recursively process
1455
1599
  // because || is often used in boolean contexts where the full expression matters
@@ -1529,18 +1673,44 @@ export function processExpression({ node, context, targetPath, typeHint, }) {
1529
1673
  const semantics = semanticsList[0];
1530
1674
  // Get the source expression path (e.g., the object for obj.method())
1531
1675
  const sourceExpr = unwrappedNode.expression.expression;
1532
- const sourcePath = StructuredPath.fromNode(sourceExpr, context.sourceFile);
1533
- if (sourcePath) {
1534
- // For array-specific semantics (like push), verify the source is actually an array
1535
- // This prevents router.push() from being mistakenly treated as Array.push()
1536
- const isArraySemantics = semantics instanceof ArrayPushSemantics;
1537
- const shouldApply = !isArraySemantics ||
1538
- isLikelyArrayType(sourceExpr, context.typeChecker);
1539
- if (shouldApply) {
1540
- // Apply method semantics
1541
- semantics.addEquivalences(callPath, sourcePath, context);
1542
- returnType = semantics.getReturnType();
1543
- handledBySemantics = true;
1676
+ const unwrappedSourceExpr = unwrapExpression(sourceExpr);
1677
+ // When the source is a ternary expression like (cond ? arr : arr.slice()),
1678
+ // apply method semantics to BOTH branches directly. The ternary itself isn't
1679
+ // a variable - it's just a choice between two paths that both flow to the result.
1680
+ if (ts.isConditionalExpression(unwrappedSourceExpr)) {
1681
+ const branches = [
1682
+ unwrappedSourceExpr.whenTrue,
1683
+ unwrappedSourceExpr.whenFalse,
1684
+ ];
1685
+ for (const branch of branches) {
1686
+ const branchPath = StructuredPath.fromNode(branch, context.sourceFile);
1687
+ if (branchPath) {
1688
+ const isArraySemantics = semantics instanceof ArrayPushSemantics;
1689
+ const shouldApply = !isArraySemantics ||
1690
+ isLikelyArrayType(branch, context.typeChecker);
1691
+ if (shouldApply) {
1692
+ semantics.addEquivalences(callPath, branchPath, context);
1693
+ returnType = semantics.getReturnType();
1694
+ handledBySemantics = true;
1695
+ }
1696
+ }
1697
+ }
1698
+ }
1699
+ else {
1700
+ // Regular (non-ternary) source expression
1701
+ const sourcePath = StructuredPath.fromNode(sourceExpr, context.sourceFile);
1702
+ if (sourcePath) {
1703
+ // For array-specific semantics (like push), verify the source is actually an array
1704
+ // This prevents router.push() from being mistakenly treated as Array.push()
1705
+ const isArraySemantics = semantics instanceof ArrayPushSemantics;
1706
+ const shouldApply = !isArraySemantics ||
1707
+ isLikelyArrayType(sourceExpr, context.typeChecker);
1708
+ if (shouldApply) {
1709
+ // Apply method semantics
1710
+ semantics.addEquivalences(callPath, sourcePath, context);
1711
+ returnType = semantics.getReturnType();
1712
+ handledBySemantics = true;
1713
+ }
1544
1714
  }
1545
1715
  }
1546
1716
  }
@@ -1969,6 +2139,32 @@ export function processExpression({ node, context, targetPath, typeHint, }) {
1969
2139
  }
1970
2140
  // Handle Arrow Functions: (p) => p.prop, (a, b) => { ... }
1971
2141
  if (ts.isArrowFunction(unwrappedNode)) {
2142
+ // If this arrow function is a child boundary (e.g., a .map() callback),
2143
+ // don't process its parameters here - they will be processed when the
2144
+ // child scope is analyzed separately. This prevents parameter variables
2145
+ // from leaking into the parent scope's equivalencies.
2146
+ // Check if this arrow function is a child boundary (i.e., should be processed
2147
+ // as a separate child scope, not here in the parent scope).
2148
+ //
2149
+ // We use two checks because childBoundary positions can be unreliable:
2150
+ // 1. Position-based check (standard isChildBoundary)
2151
+ // 2. Text-based check: if the arrow function text doesn't appear in the
2152
+ // statement text, it was replaced with a cyScope placeholder
2153
+ const isChildBoundary = context.isChildBoundary(unwrappedNode);
2154
+ // Text-based child scope detection for when positions are unreliable
2155
+ const arrowFnText = unwrappedNode.getText(context.sourceFile);
2156
+ const firstLine = arrowFnText.split('\n')[0].trim();
2157
+ const searchText = firstLine.substring(0, Math.min(20, firstLine.length));
2158
+ const isInStatementText = context.statementInfo.text.includes(searchText);
2159
+ const isChildScope = !isInStatementText && arrowFnText.length > 10;
2160
+ if (isChildBoundary || isChildScope) {
2161
+ // The method semantics (e.g., ArrayMapSemantics) have already established
2162
+ // the necessary equivalences between the child scope placeholder and array elements
2163
+ if (targetPath) {
2164
+ context.addType(targetPath, 'function');
2165
+ }
2166
+ return true;
2167
+ }
1972
2168
  // Create a path for the function
1973
2169
  const functionPath = StructuredPath.empty();
1974
2170
  // Process parameters