@codeyam/codeyam-cli 0.1.0-staging.483fdc2 → 0.1.0-staging.49751cb

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 (1065) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +24 -24
  4. package/analyzer-template/packages/ai/index.ts +1 -0
  5. package/analyzer-template/packages/ai/package.json +3 -3
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +23 -1
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  8. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  11. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  12. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
  13. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  14. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
  15. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +624 -22
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +27 -8
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +2 -2
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  24. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +20 -1
  25. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +84 -19
  26. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  27. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  28. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  29. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +124 -7
  30. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +101 -2
  31. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  32. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  33. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  34. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  35. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  36. package/analyzer-template/packages/analyze/index.ts +6 -1
  37. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  38. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  39. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  40. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +97 -5
  41. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +18 -36
  42. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  43. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +22 -6
  44. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  45. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  46. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  47. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  48. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  49. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  50. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  51. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +4 -0
  52. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +59 -26
  53. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +467 -24
  54. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  55. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1750 -1194
  56. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  57. package/analyzer-template/packages/aws/package.json +10 -10
  58. package/analyzer-template/packages/database/index.ts +1 -0
  59. package/analyzer-template/packages/database/package.json +4 -4
  60. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  61. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  62. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  63. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  64. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  65. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  66. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -0
  67. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  68. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  69. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  70. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  71. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  72. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  73. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  74. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  75. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  76. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  77. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  78. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  79. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  80. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  81. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  82. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  83. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  84. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  85. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  87. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  92. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  94. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  95. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  97. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  99. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  101. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  102. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -0
  103. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  105. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  106. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  107. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  108. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  109. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  110. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  111. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  112. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  113. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  114. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  115. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  116. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  117. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  118. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  119. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  120. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  121. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  122. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  123. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  124. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  125. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  126. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  127. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  128. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  129. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  130. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  131. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  132. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  133. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  134. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  135. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  136. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  137. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  138. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  139. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  140. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  141. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  142. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  143. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  144. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  145. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  146. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  147. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  148. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  149. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  150. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  151. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  152. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  153. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  154. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  155. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  156. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  157. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  158. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  159. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  160. package/analyzer-template/packages/github/package.json +1 -1
  161. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  162. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  163. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  164. package/analyzer-template/packages/ui-components/package.json +1 -1
  165. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  166. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  167. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  168. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  169. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  170. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  171. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  172. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  173. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  174. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  175. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +120 -4
  176. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  177. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +148 -3
  178. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  179. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  180. package/analyzer-template/project/constructMockCode.ts +206 -51
  181. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  182. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  183. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  184. package/analyzer-template/project/start.ts +3 -0
  185. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  186. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  187. package/analyzer-template/project/writeMockDataTsx.ts +136 -17
  188. package/analyzer-template/project/writeScenarioComponents.ts +170 -29
  189. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  190. package/analyzer-template/tsconfig.json +13 -1
  191. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  192. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  193. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  194. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  195. package/background/src/lib/virtualized/project/constructMockCode.js +175 -42
  196. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  197. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  198. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  199. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  200. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  201. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  202. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  203. package/background/src/lib/virtualized/project/start.js +2 -0
  204. package/background/src/lib/virtualized/project/start.js.map +1 -1
  205. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  206. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  207. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  208. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  209. package/background/src/lib/virtualized/project/writeMockDataTsx.js +114 -13
  210. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  211. package/background/src/lib/virtualized/project/writeScenarioComponents.js +143 -27
  212. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  213. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  214. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  215. package/codeyam-cli/scripts/apply-setup.js +252 -21
  216. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  217. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  218. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  219. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  220. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  221. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  222. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  223. package/codeyam-cli/src/cli.js +57 -24
  224. package/codeyam-cli/src/cli.js.map +1 -1
  225. package/codeyam-cli/src/codeyam-cli.js +18 -2
  226. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  227. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  228. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  229. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  230. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  231. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  232. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  233. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  234. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  235. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  236. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  237. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  238. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  239. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +137 -47
  240. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  241. package/codeyam-cli/src/commands/analyze.js +21 -9
  242. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  243. package/codeyam-cli/src/commands/baseline.js +2 -0
  244. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  245. package/codeyam-cli/src/commands/debug.js +2 -0
  246. package/codeyam-cli/src/commands/debug.js.map +1 -1
  247. package/codeyam-cli/src/commands/default.js +44 -21
  248. package/codeyam-cli/src/commands/default.js.map +1 -1
  249. package/codeyam-cli/src/commands/editor.js +6313 -0
  250. package/codeyam-cli/src/commands/editor.js.map +1 -0
  251. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  252. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  253. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  254. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  255. package/codeyam-cli/src/commands/init.js +168 -292
  256. package/codeyam-cli/src/commands/init.js.map +1 -1
  257. package/codeyam-cli/src/commands/memory.js +97 -92
  258. package/codeyam-cli/src/commands/memory.js.map +1 -1
  259. package/codeyam-cli/src/commands/recapture.js +2 -0
  260. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  261. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  262. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  263. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  264. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  265. package/codeyam-cli/src/commands/telemetry.js +37 -0
  266. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  267. package/codeyam-cli/src/commands/test-startup.js +2 -0
  268. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  269. package/codeyam-cli/src/commands/verify.js +14 -2
  270. package/codeyam-cli/src/commands/verify.js.map +1 -1
  271. package/codeyam-cli/src/data/designSystems.js +27 -0
  272. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  273. package/codeyam-cli/src/data/techStacks.js +77 -0
  274. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  275. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  276. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  277. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  278. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  279. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +226 -0
  280. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  281. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  282. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  283. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +4160 -0
  284. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  285. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  286. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  287. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  288. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  289. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  290. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  291. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  292. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  293. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  294. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  295. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  296. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  297. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  298. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  299. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  300. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  301. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  302. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  303. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  304. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  305. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  306. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  307. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  308. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  309. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  310. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  311. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  312. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  313. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +361 -0
  314. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  315. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +250 -0
  316. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  317. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
  318. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  319. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  320. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  321. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +411 -0
  322. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  323. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1768 -0
  324. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  325. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +413 -0
  326. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  327. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  328. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  329. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  330. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  331. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  332. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  333. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2121 -0
  334. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  335. package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
  336. package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
  337. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  338. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  339. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  340. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  341. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
  342. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
  343. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  344. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  345. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  346. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  347. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  348. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  349. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  350. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  351. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  352. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  353. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  354. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  355. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  356. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  357. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  358. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  359. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  360. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  361. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  362. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  363. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  364. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  365. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  366. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  367. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +175 -86
  368. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  369. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  370. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  371. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  372. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  373. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  374. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  375. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +148 -0
  376. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  377. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  378. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  379. package/codeyam-cli/src/utils/analyzer.js +26 -0
  380. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  381. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  382. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  383. package/codeyam-cli/src/utils/backgroundServer.js +193 -30
  384. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  385. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  386. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  387. package/codeyam-cli/src/utils/database.js +37 -2
  388. package/codeyam-cli/src/utils/database.js.map +1 -1
  389. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  390. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  391. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  392. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  393. package/codeyam-cli/src/utils/devServerState.js +103 -0
  394. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  395. package/codeyam-cli/src/utils/editorApi.js +95 -0
  396. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  397. package/codeyam-cli/src/utils/editorAudit.js +849 -0
  398. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  399. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  400. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  401. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  402. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  403. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  404. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  405. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  406. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  407. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  408. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  409. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  410. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  411. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  412. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  413. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  414. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  415. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  416. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  417. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  418. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  419. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  420. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  421. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  422. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  423. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  424. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  425. package/codeyam-cli/src/utils/editorPreview.js +139 -0
  426. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  427. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  428. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  429. package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
  430. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  431. package/codeyam-cli/src/utils/editorScenarioSwitch.js +149 -0
  432. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  433. package/codeyam-cli/src/utils/editorScenarios.js +687 -0
  434. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  435. package/codeyam-cli/src/utils/editorSeedAdapter.js +475 -0
  436. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  437. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  438. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  439. package/codeyam-cli/src/utils/entityChangeStatus.js +394 -0
  440. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  441. package/codeyam-cli/src/utils/entityChangeStatus.server.js +227 -0
  442. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  443. package/codeyam-cli/src/utils/envFile.js +90 -0
  444. package/codeyam-cli/src/utils/envFile.js.map +1 -0
  445. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  446. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  447. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  448. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  449. package/codeyam-cli/src/utils/generateReport.js +2 -2
  450. package/codeyam-cli/src/utils/git.js +103 -0
  451. package/codeyam-cli/src/utils/git.js.map +1 -1
  452. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  453. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  454. package/codeyam-cli/src/utils/handoffContext.js +257 -0
  455. package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
  456. package/codeyam-cli/src/utils/install-skills.js +145 -56
  457. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  458. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  459. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  460. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  461. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  462. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  463. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  464. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  465. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  466. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  467. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  468. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  469. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  470. package/codeyam-cli/src/utils/progress.js +8 -1
  471. package/codeyam-cli/src/utils/progress.js.map +1 -1
  472. package/codeyam-cli/src/utils/project.js +15 -5
  473. package/codeyam-cli/src/utils/project.js.map +1 -1
  474. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  475. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  476. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  477. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  478. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  479. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  480. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  481. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  482. package/codeyam-cli/src/utils/queue/job.js +109 -7
  483. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  484. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  485. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  486. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  487. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  488. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  489. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  490. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  491. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  492. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  493. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  494. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  495. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  496. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  497. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  498. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  499. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  500. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  501. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  502. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  503. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  504. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  505. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  506. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  507. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  508. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  509. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  510. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  511. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  512. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  513. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  514. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  515. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  516. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  517. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  518. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  519. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  520. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  521. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  522. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  523. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  524. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  525. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  526. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  527. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  528. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  529. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  530. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  531. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  532. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  533. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  534. package/codeyam-cli/src/utils/rules/index.js +2 -0
  535. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  536. package/codeyam-cli/src/utils/rules/parser.js +16 -29
  537. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  538. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  539. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  540. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  541. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  542. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  543. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  544. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  545. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  546. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  547. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  548. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  549. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  550. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  551. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  552. package/codeyam-cli/src/utils/scenariosManifest.js +313 -0
  553. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  554. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  555. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  556. package/codeyam-cli/src/utils/serverState.js +94 -12
  557. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  558. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +96 -47
  559. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  560. package/codeyam-cli/src/utils/simulationGateMiddleware.js +175 -0
  561. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  562. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  563. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  564. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  565. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  566. package/codeyam-cli/src/utils/techStackConfig.js +38 -0
  567. package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
  568. package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
  569. package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
  570. package/codeyam-cli/src/utils/telemetry.js +106 -0
  571. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  572. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  573. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  574. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  575. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  576. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  577. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  578. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  579. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  580. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  581. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  582. package/codeyam-cli/src/utils/testRunner.js +350 -0
  583. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  584. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  585. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  586. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  587. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  588. package/codeyam-cli/src/utils/webappDetection.js +38 -3
  589. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  590. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +99 -0
  591. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  592. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +153 -0
  593. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  594. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  595. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  596. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  597. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  598. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +1000 -0
  599. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  600. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +315 -0
  601. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  602. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  603. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  604. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  605. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  606. package/codeyam-cli/src/webserver/app/lib/database.js +56 -30
  607. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  608. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  609. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  610. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  611. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  612. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  613. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  614. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  615. package/codeyam-cli/src/webserver/backgroundServer.js +186 -37
  616. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  617. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  618. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  619. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DTBZZfSk.js +1 -0
  620. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-BxclONWq.js} +5 -5
  621. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  622. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-BsnEOJZ_.js} +9 -9
  623. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ByaELMbv.js +1 -0
  624. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-6WjVfhxX.js +25 -0
  625. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-ChX-Hp7W.js +3 -0
  626. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-By5zI316.js} +1 -1
  627. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-C-9zQdXg.js} +3 -3
  628. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-Bs2_Oua4.js +36 -0
  629. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-DQsceHVv.js} +5 -10
  630. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DThcm_9M.js +1 -0
  631. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-Cl4oOA3A.js} +3 -3
  632. package/codeyam-cli/src/webserver/build/client/assets/Spinner-CIil5-gb.js +34 -0
  633. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  634. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BqkA9zyZ.js +1 -0
  635. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-DnOgyseQ.js} +4 -4
  636. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-DqM9hbNE.js} +10 -15
  637. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  638. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  639. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-C58dYPwR.js +1 -0
  640. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  641. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8NCeOrm.js +22 -0
  642. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  643. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  644. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  645. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  646. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  647. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  648. package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
  649. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  650. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  651. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  652. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  653. package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
  654. package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
  655. package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
  656. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  657. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  658. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  659. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  660. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  661. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  662. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  663. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  664. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  665. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  666. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  667. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  668. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  669. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  670. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  671. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  672. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  673. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  674. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  675. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  676. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  677. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  678. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  679. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  680. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  681. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  682. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  683. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  684. package/codeyam-cli/src/webserver/build/client/assets/book-open-BFSIqZgO.js +6 -0
  685. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-B9fDzFVh.js} +2 -2
  686. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  687. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-DLPObLUx.js} +2 -2
  688. package/codeyam-cli/src/webserver/build/client/assets/copy-DXEmO0TD.js +11 -0
  689. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BwyFiRot.js +41 -0
  690. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  691. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  692. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-iRhRIFlp.js +1 -0
  693. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  694. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DhtVC4aI.js +161 -0
  695. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-C6fEYHrh.js +41 -0
  696. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BJUiQqZF.js → entity._sha._-pc-vc6wO.js} +14 -13
  697. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js +6 -0
  698. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js +6 -0
  699. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BTcpgIpC.js +6 -0
  700. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +2 -2
  701. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-j1Vi0bco.js} +6 -6
  702. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  703. package/codeyam-cli/src/webserver/build/client/assets/files-kuny2Q_s.js +1 -0
  704. package/codeyam-cli/src/webserver/build/client/assets/git-DgCZPMie.js +1 -0
  705. package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
  706. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-BliGSSpl.js} +1 -1
  707. package/codeyam-cli/src/webserver/build/client/assets/index-SqjQKTdH.js +15 -0
  708. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-vyrZD2g4.js} +1 -1
  709. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  710. package/codeyam-cli/src/webserver/build/client/assets/labs-c3yLxSEp.js +1 -0
  711. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-D-q28GLF.js} +2 -2
  712. package/codeyam-cli/src/webserver/build/client/assets/manifest-79d0d81a.js +1 -0
  713. package/codeyam-cli/src/webserver/build/client/assets/memory-CEWIUC4t.js +101 -0
  714. package/codeyam-cli/src/webserver/build/client/assets/pause-BP6fitdh.js +11 -0
  715. package/codeyam-cli/src/webserver/build/client/assets/root-L2V0jea7.js +80 -0
  716. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-BooqacKS.js} +2 -2
  717. package/codeyam-cli/src/webserver/build/client/assets/settings-BM0nbryO.js +1 -0
  718. package/codeyam-cli/src/webserver/build/client/assets/simulations-ovy6FjRY.js +1 -0
  719. package/codeyam-cli/src/webserver/build/client/assets/terminal-DHemCJIs.js +11 -0
  720. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-D87ekDl8.js} +2 -2
  721. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dk0Tciqg.js +1 -0
  722. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C8QvIe05.js +2 -0
  723. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-jkCytuYz.js +1 -0
  724. package/codeyam-cli/src/webserver/build/client/assets/useToast-BgqkixU9.js +1 -0
  725. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  726. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  727. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-QgInFGdU.js +16 -0
  728. package/codeyam-cli/src/webserver/build/server/assets/index-zblh9auj.js +1 -0
  729. package/codeyam-cli/src/webserver/build/server/assets/init-DaE0CBjk.js +14 -0
  730. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  731. package/codeyam-cli/src/webserver/build/server/assets/server-build-CNvgz1cC.js +853 -0
  732. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  733. package/codeyam-cli/src/webserver/build-info.json +5 -5
  734. package/codeyam-cli/src/webserver/devServer.js +39 -5
  735. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  736. package/codeyam-cli/src/webserver/editorProxy.js +1263 -0
  737. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  738. package/codeyam-cli/src/webserver/idleDetector.js +130 -0
  739. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  740. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  741. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  742. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  743. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  744. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +283 -0
  745. package/codeyam-cli/src/webserver/server.js +446 -1
  746. package/codeyam-cli/src/webserver/server.js.map +1 -1
  747. package/codeyam-cli/src/webserver/terminalServer.js +1043 -0
  748. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  749. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  750. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  751. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  752. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  753. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  754. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  755. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  756. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  757. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  758. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  759. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  760. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  761. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  762. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  763. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  764. package/codeyam-cli/templates/codeyam-editor-claude.md +149 -0
  765. package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
  766. package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
  767. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  768. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  769. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  770. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  771. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  772. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  773. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  774. package/codeyam-cli/templates/editor-step-hook.py +368 -0
  775. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +288 -0
  776. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  777. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  778. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +15 -0
  779. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  780. package/codeyam-cli/templates/expo-react-native/app.json +29 -0
  781. package/codeyam-cli/templates/expo-react-native/babel.config.js +10 -0
  782. package/codeyam-cli/templates/expo-react-native/gitignore +14 -0
  783. package/codeyam-cli/templates/expo-react-native/global.css +10 -0
  784. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  785. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  786. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  787. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  788. package/codeyam-cli/templates/expo-react-native/package.json +54 -0
  789. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  790. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  791. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  792. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  793. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  794. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  795. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  796. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  797. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  798. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  799. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  800. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  801. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  802. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  803. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  804. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  805. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  806. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  807. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  808. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  809. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  810. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  811. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  812. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  813. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +65 -0
  814. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  815. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  816. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  817. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  818. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  819. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  820. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  821. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  822. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  823. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  824. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  825. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  826. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  827. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  828. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  829. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  830. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  831. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  832. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  833. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  834. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  835. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  836. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  837. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  838. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  839. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  840. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  841. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  842. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  843. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  844. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  845. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  846. package/codeyam-cli/templates/rule-reflection-hook.py +574 -88
  847. package/codeyam-cli/templates/rules-instructions.md +45 -93
  848. package/codeyam-cli/templates/seed-adapters/supabase.ts +475 -0
  849. package/codeyam-cli/templates/{codeyam:debug.md → skills/codeyam-debug/SKILL.md} +1 -1
  850. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  851. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +244 -0
  852. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  853. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  854. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  855. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  856. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  857. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  858. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  859. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  860. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  861. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  862. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  863. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  864. package/codeyam-cli/templates/{codeyam:setup.md → skills/codeyam-setup/SKILL.md} +13 -1
  865. package/codeyam-cli/templates/{codeyam:sim.md → skills/codeyam-sim/SKILL.md} +1 -1
  866. package/codeyam-cli/templates/{codeyam:test.md → skills/codeyam-test/SKILL.md} +1 -1
  867. package/codeyam-cli/templates/{codeyam:verify.md → skills/codeyam-verify/SKILL.md} +1 -1
  868. package/package.json +29 -21
  869. package/packages/ai/index.js +1 -1
  870. package/packages/ai/index.js.map +1 -1
  871. package/packages/ai/src/lib/analyzeScope.js +21 -1
  872. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  873. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  874. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  875. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  876. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  877. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  878. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  879. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  880. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  881. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  882. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  883. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  884. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  885. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  886. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  887. package/packages/ai/src/lib/completionCall.js +10 -7
  888. package/packages/ai/src/lib/completionCall.js.map +1 -1
  889. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +522 -20
  890. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  891. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  892. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  893. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  894. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  895. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +25 -6
  896. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  897. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +2 -2
  898. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  899. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  900. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  901. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  902. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  903. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  904. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  905. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +15 -1
  906. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -1
  907. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +78 -17
  908. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  909. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  910. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  911. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  912. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  913. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  914. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  915. package/packages/ai/src/lib/generateEntityScenarioData.js +89 -5
  916. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  917. package/packages/ai/src/lib/generateExecutionFlows.js +86 -2
  918. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  919. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  920. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  921. package/packages/ai/src/lib/isolateScopes.js +39 -3
  922. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  923. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  924. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  925. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  926. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  927. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  928. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  929. package/packages/analyze/index.js +2 -1
  930. package/packages/analyze/index.js.map +1 -1
  931. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  932. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  933. package/packages/analyze/src/lib/asts/index.js +4 -2
  934. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  935. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  936. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  937. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +68 -4
  938. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  939. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +16 -26
  940. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  941. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  942. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  943. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +12 -2
  944. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  945. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  946. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  947. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  948. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  949. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  950. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  951. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  952. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  953. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  954. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  955. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  956. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  957. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  958. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  959. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +5 -1
  960. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  961. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +51 -14
  962. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  963. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +279 -19
  964. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  965. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  966. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  967. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1410 -956
  968. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  969. package/packages/analyze/src/lib/index.js +1 -0
  970. package/packages/analyze/src/lib/index.js.map +1 -1
  971. package/packages/database/index.js +1 -0
  972. package/packages/database/index.js.map +1 -1
  973. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  974. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  975. package/packages/database/src/lib/analysisToDb.js +1 -1
  976. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  977. package/packages/database/src/lib/branchToDb.js +1 -1
  978. package/packages/database/src/lib/branchToDb.js.map +1 -1
  979. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  980. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  981. package/packages/database/src/lib/commitToDb.js +1 -1
  982. package/packages/database/src/lib/commitToDb.js.map +1 -1
  983. package/packages/database/src/lib/fileToDb.js +1 -1
  984. package/packages/database/src/lib/fileToDb.js.map +1 -1
  985. package/packages/database/src/lib/kysely/db.js +8 -0
  986. package/packages/database/src/lib/kysely/db.js.map +1 -1
  987. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  988. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  989. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  990. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  991. package/packages/database/src/lib/loadAnalysis.js +7 -1
  992. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  993. package/packages/database/src/lib/loadCommits.js +23 -13
  994. package/packages/database/src/lib/loadCommits.js.map +1 -1
  995. package/packages/database/src/lib/loadEntities.js +0 -6
  996. package/packages/database/src/lib/loadEntities.js.map +1 -1
  997. package/packages/database/src/lib/loadEntity.js +5 -5
  998. package/packages/database/src/lib/loadEntity.js.map +1 -1
  999. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  1000. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  1001. package/packages/database/src/lib/projectToDb.js +1 -1
  1002. package/packages/database/src/lib/projectToDb.js.map +1 -1
  1003. package/packages/database/src/lib/saveFiles.js +1 -1
  1004. package/packages/database/src/lib/saveFiles.js.map +1 -1
  1005. package/packages/database/src/lib/scenarioToDb.js +1 -1
  1006. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  1007. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  1008. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  1009. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  1010. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  1011. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  1012. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  1013. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  1014. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  1015. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  1016. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  1017. package/packages/types/src/enums/ProjectFramework.js +2 -0
  1018. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  1019. package/packages/utils/src/lib/fs/rsyncCopy.js +120 -4
  1020. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  1021. package/scripts/npm-post-install.cjs +34 -0
  1022. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  1023. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  1024. package/codeyam-cli/src/commands/list.js +0 -31
  1025. package/codeyam-cli/src/commands/list.js.map +0 -1
  1026. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  1027. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  1028. package/codeyam-cli/src/utils/reviewedRules.js +0 -92
  1029. package/codeyam-cli/src/utils/reviewedRules.js.map +0 -1
  1030. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  1031. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  1032. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-DLqD3qNt.js +0 -1
  1033. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +0 -34
  1034. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-aht4aafF.js +0 -25
  1035. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-CVtiBnY5.js +0 -3
  1036. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DuDvi0jm.js +0 -1
  1037. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-DyFZkK0l.js +0 -1
  1038. package/codeyam-cli/src/webserver/build/client/assets/chunk-EPOLDU6W-CXRTFQ3F.js +0 -51
  1039. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  1040. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BdhJEx6B.js +0 -21
  1041. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  1042. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BBnGWYga.js +0 -1
  1043. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +0 -6
  1044. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +0 -6
  1045. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  1046. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DMJ7zii9.js +0 -1
  1047. package/codeyam-cli/src/webserver/build/client/assets/files-CJ6lTdTA.js +0 -1
  1048. package/codeyam-cli/src/webserver/build/client/assets/git-CPTZZ-JZ.js +0 -15
  1049. package/codeyam-cli/src/webserver/build/client/assets/globals-CX9f-5xM.css +0 -1
  1050. package/codeyam-cli/src/webserver/build/client/assets/manifest-bba56ec1.js +0 -1
  1051. package/codeyam-cli/src/webserver/build/client/assets/memory-DuTFSyJ2.js +0 -92
  1052. package/codeyam-cli/src/webserver/build/client/assets/root-DTfSQARG.js +0 -62
  1053. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  1054. package/codeyam-cli/src/webserver/build/client/assets/simulations-DwFIBT09.js +0 -1
  1055. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C1v1PQzo.js +0 -1
  1056. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-aSv48UbS.js +0 -2
  1057. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DYxHZQuP.js +0 -1
  1058. package/codeyam-cli/src/webserver/build/client/assets/useToast-mBRpZPiu.js +0 -1
  1059. package/codeyam-cli/src/webserver/build/server/assets/index-TD1f-DHV.js +0 -1
  1060. package/codeyam-cli/src/webserver/build/server/assets/server-build-BQ-1XyEa.js +0 -258
  1061. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  1062. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  1063. package/codeyam-cli/templates/codeyam:memory.md +0 -403
  1064. package/codeyam-cli/templates/codeyam:new-rule.md +0 -52
  1065. package/scripts/finalize-analyzer.cjs +0 -81
@@ -181,6 +181,8 @@ const SILENTLY_IGNORED_EQUIVALENCY_REASONS = new Set([
181
181
  'transformed non-object function equivalency - implicit parent equivalency - rerouted via useCallback',
182
182
  'transformed non-object function equivalency - Array.from() equivalency',
183
183
  'Spread operator equivalency key update: Explicit array deconstruction equivalency value',
184
+ // 'transformed non-object function equivalency - Explicit array deconstruction equivalency value',
185
+ 'useState setter call equivalency (direct)',
184
186
  ]);
185
187
  export class ScopeDataStructure {
186
188
  // Getter for backward compatibility - returns the tree structure
@@ -475,6 +477,10 @@ export class ScopeDataStructure {
475
477
  }
476
478
  return;
477
479
  }
480
+ // PERF: Early exit for paths with repeated function-call signature patterns
481
+ if (this.hasExcessivePatternRepetition(path)) {
482
+ return;
483
+ }
478
484
  // Update chain metadata for database tracking
479
485
  if (equivalencyValueChain.length > 0) {
480
486
  equivalencyValueChain[equivalencyValueChain.length - 1].addToSchemaId =
@@ -643,9 +649,29 @@ export class ScopeDataStructure {
643
649
  delete schema[path];
644
650
  }
645
651
  addEquivalency(path, equivalentPath, equivalentScopeName, scopeNode, equivalencyReason, equivalencyValueChain, traceId) {
652
+ // Fast early exits that don't count toward the limit.
653
+ // These are "no-op" calls that would be caught further below anyway,
654
+ // but checking them first prevents counter inflation from redundant calls
655
+ // generated by managers and followEquivalencies during scope processing.
646
656
  var _a;
657
+ // Skip silently-ignored reasons before counting
658
+ if (SILENTLY_IGNORED_EQUIVALENCY_REASONS.has(equivalencyReason)) {
659
+ return;
660
+ }
661
+ // Skip exact duplicates before counting (Phase 1 only — Phase 2 needs
662
+ // to process duplicates for database chain tracking)
663
+ if (this.onlyEquivalencies) {
664
+ const existing = scopeNode.equivalencies[path];
665
+ if (existing?.some((v) => v.schemaPath === equivalentPath &&
666
+ v.scopeNodeName === equivalentScopeName)) {
667
+ return;
668
+ }
669
+ }
647
670
  addEquivalencyCallCount++;
648
- if (addEquivalencyCallCount > 50000) {
671
+ const limit = typeof globalThis.__CODEYAM_EQUIVALENCY_LIMIT === 'number'
672
+ ? globalThis.__CODEYAM_EQUIVALENCY_LIMIT
673
+ : 50000;
674
+ if (addEquivalencyCallCount > limit) {
649
675
  console.error('INFINITE LOOP DETECTED in addEquivalency', {
650
676
  callCount: addEquivalencyCallCount,
651
677
  path,
@@ -658,15 +684,11 @@ export class ScopeDataStructure {
658
684
  }
659
685
  // Filter equivalency reasons - use pre-computed Sets for O(1) lookup
660
686
  if (!ALLOWED_EQUIVALENCY_REASONS.has(equivalencyReason)) {
661
- if (SILENTLY_IGNORED_EQUIVALENCY_REASONS.has(equivalencyReason)) {
662
- return;
663
- }
664
- else {
665
- // Log and skip - if an equivalency reason isn't in ALLOWED or SILENTLY_IGNORED,
666
- // it shouldn't be stored (was previously missing the return)
667
- console.info('Not tracked equivalency reason', { equivalencyReason });
668
- return;
669
- }
687
+ // Silently-ignored reasons already handled above
688
+ // Log and skip - if an equivalency reason isn't in ALLOWED or SILENTLY_IGNORED,
689
+ // it shouldn't be stored (was previously missing the return)
690
+ console.info('Not tracked equivalency reason', { equivalencyReason });
691
+ return;
670
692
  }
671
693
  // Skip self-referential equivalencies that would create infinite loops.
672
694
  // Case 1: Direct self-reference (path === equivalentPath)
@@ -693,6 +715,27 @@ export class ScopeDataStructure {
693
715
  equivalentPath.startsWith(path + '(')) {
694
716
  return;
695
717
  }
718
+ // Case 3: Circular reference through scope-suffixed names (____cyScope pattern)
719
+ // When a named arrow function is defined inside a scope (e.g., useEffect callback):
720
+ // const identifyUser = async () => { ... };
721
+ // identifyUser();
722
+ // This creates a variable "identifyUser" and a scope "identifyUser____cyScope9F".
723
+ // Mutual equivalencies between these cause infinite loops in Phase 2 because
724
+ // processing one triggers addToSchema → followEquivalencies → addEquivalency
725
+ // on the reverse, which repeats indefinitely.
726
+ // Only block when the REVERSE direction already exists (creating a cycle).
727
+ // The initial one-directional equivalency is necessary for scope resolution.
728
+ if (path &&
729
+ equivalentPath &&
730
+ (equivalentPath.startsWith(path + '____') ||
731
+ path.startsWith(equivalentPath + '____'))) {
732
+ // Check if the reverse equivalency already exists
733
+ const reverseEquivalencies = scopeNode.equivalencies[equivalentPath] || [];
734
+ const reverseExists = reverseEquivalencies.some((v) => v.schemaPath === path);
735
+ if (reverseExists) {
736
+ return;
737
+ }
738
+ }
696
739
  if (!equivalentScopeName) {
697
740
  console.error('CodeYam Error: Missing equivalent scope name - FULL CONTEXT:', JSON.stringify({
698
741
  path,
@@ -971,6 +1014,12 @@ export class ScopeDataStructure {
971
1014
  const value1 = scopeNode.schema[schemaPath];
972
1015
  const value2 = equivalentScopeNode.schema[equivalentSchemaPath];
973
1016
  const bestValue = selectBestValue(value1, value2);
1017
+ // PERF: Skip paths with repeated function-call signature patterns
1018
+ // to prevent recursive type expansion (e.g., string.localeCompare returns string)
1019
+ if (this.hasExcessivePatternRepetition(schemaPath) ||
1020
+ this.hasExcessivePatternRepetition(equivalentSchemaPath)) {
1021
+ continue;
1022
+ }
974
1023
  scopeNode.schema[schemaPath] = bestValue;
975
1024
  equivalentScopeNode.schema[equivalentSchemaPath] = bestValue;
976
1025
  }
@@ -982,6 +1031,10 @@ export class ScopeDataStructure {
982
1031
  equivalentPath,
983
1032
  ...remainingSchemaPathParts,
984
1033
  ]);
1034
+ // PERF: Skip paths with repeated function-call signature patterns
1035
+ if (this.hasExcessivePatternRepetition(newEquivalentPath)) {
1036
+ continue;
1037
+ }
985
1038
  equivalentScopeNode.schema[newEquivalentPath] =
986
1039
  scopeNode.schema[schemaPath];
987
1040
  }
@@ -1063,6 +1116,23 @@ export class ScopeDataStructure {
1063
1116
  return true;
1064
1117
  }
1065
1118
  }
1119
+ // Check for repeated function calls that indicate recursive type expansion.
1120
+ // E.g., localeCompare(b[])...localeCompare(b[]) means string.localeCompare
1121
+ // returns a type that again has localeCompare, causing infinite expansion.
1122
+ // We extract all function call patterns like "funcName(args)" and check if
1123
+ // the same normalized call appears more than once.
1124
+ const funcCallPattern = /(?:^|\.)[^.([]+\([^)]*\)/g;
1125
+ const funcCallMatches = path.match(funcCallPattern);
1126
+ if (funcCallMatches && funcCallMatches.length > 1) {
1127
+ const seen = new Set();
1128
+ for (const match of funcCallMatches) {
1129
+ // Strip leading dot and normalize array indices
1130
+ const normalized = match.replace(/^\./, '').replace(/\[\d+\]/g, '[]');
1131
+ if (seen.has(normalized))
1132
+ return true;
1133
+ seen.add(normalized);
1134
+ }
1135
+ }
1066
1136
  // For longer paths, detect any repeated multi-part segments we haven't explicitly listed
1067
1137
  const pathParts = this.splitPath(path);
1068
1138
  if (pathParts.length <= 6) {
@@ -1752,6 +1822,7 @@ export class ScopeDataStructure {
1752
1822
  const remainingPath = this.joinPathParts(remainingPathParts);
1753
1823
  if (relevantSubPathParts.every((part, i) => part === schemaPathParts[i]) &&
1754
1824
  equivalentValue.scopeNodeName === scopeNode.name) {
1825
+ // DEBUG
1755
1826
  continue;
1756
1827
  }
1757
1828
  const newEquivalentPath = this.joinPathParts([schemaPath, remainingPath]);
@@ -1893,6 +1964,8 @@ export class ScopeDataStructure {
1893
1964
  return;
1894
1965
  }
1895
1966
  const usageScopeNode = this.getScopeOrFunctionCallInfo(usageEquivalency.scopeNodeName);
1967
+ if (!usageScopeNode)
1968
+ continue;
1896
1969
  // Guard against infinite recursion by tracking which paths we've already
1897
1970
  // added from addComplexSourcePathVariables
1898
1971
  if (this.visitedTracker.checkAndMarkComplexSourceVisited(usageScopeNode.name, newUsageEquivalentPath)) {
@@ -1941,6 +2014,8 @@ export class ScopeDataStructure {
1941
2014
  continue;
1942
2015
  }
1943
2016
  const usageScopeNode = this.getScopeOrFunctionCallInfo(usageEquivalency.scopeNodeName);
2017
+ if (!usageScopeNode)
2018
+ continue;
1944
2019
  // This is put in place to avoid propagating array functions like 'filter' through complex equivalencies
1945
2020
  // but may cause problems if the funtion call is not on a known object (e.g. string or array)
1946
2021
  if (newUsageEquivalentPath.endsWith(')') ||
@@ -2246,6 +2321,13 @@ export class ScopeDataStructure {
2246
2321
  delete scopeNode.schema[key];
2247
2322
  }
2248
2323
  }
2324
+ // Ensure parameter-to-signature equivalencies are fully propagated.
2325
+ // When a parameter variable (e.g., `node`) is equivalenced to `signature[N]`,
2326
+ // all sub-paths of that variable should also appear under `signature[N]`.
2327
+ // This handles cases where the sub-path was added to the schema via a propagation
2328
+ // chain that already included the variable↔signature equivalency, causing the
2329
+ // cycle detection to prevent the reverse mapping.
2330
+ this.propagateParameterToSignaturePaths(scopeNode);
2249
2331
  fillInSchemaGapsAndUnknowns(scopeNode, fillInUnknowns);
2250
2332
  if (final) {
2251
2333
  for (const manager of this.equivalencyManagers) {
@@ -2257,6 +2339,85 @@ export class ScopeDataStructure {
2257
2339
  ensureSchemaConsistency(scopeNode.schema);
2258
2340
  }
2259
2341
  }
2342
+ /**
2343
+ * For each equivalency where a simple variable maps to signature[N],
2344
+ * ensure all sub-paths of that variable are reflected under signature[N].
2345
+ */
2346
+ propagateParameterToSignaturePaths(scopeNode) {
2347
+ // Helper: check if a type is a concrete scalar that cannot have sub-properties.
2348
+ const SCALAR_TYPES = new Set([
2349
+ 'string',
2350
+ 'number',
2351
+ 'boolean',
2352
+ 'bigint',
2353
+ 'symbol',
2354
+ 'void',
2355
+ 'never',
2356
+ ]);
2357
+ const isDefinitelyScalar = (type) => {
2358
+ const parts = type.split('|').map((s) => s.trim());
2359
+ const base = parts.filter((s) => s !== 'undefined' && s !== 'null');
2360
+ return base.length > 0 && base.every((b) => SCALAR_TYPES.has(b));
2361
+ };
2362
+ // Find variable → signature[N] equivalencies
2363
+ for (const [varName, equivalencies] of Object.entries(scopeNode.equivalencies)) {
2364
+ // Only process simple variable names (no dots, brackets, or parens)
2365
+ if (varName.includes('.') ||
2366
+ varName.includes('[') ||
2367
+ varName.includes('(')) {
2368
+ continue;
2369
+ }
2370
+ for (const equiv of equivalencies) {
2371
+ if (equiv.scopeNodeName === scopeNode.name &&
2372
+ equiv.schemaPath.startsWith('signature[')) {
2373
+ const signaturePath = equiv.schemaPath;
2374
+ const varPrefix = varName + '.';
2375
+ const varBracketPrefix = varName + '[';
2376
+ // Find all schema keys starting with the variable
2377
+ for (const key in scopeNode.schema) {
2378
+ if (key.startsWith(varPrefix) || key.startsWith(varBracketPrefix)) {
2379
+ const suffix = key.slice(varName.length);
2380
+ const sigKey = signaturePath + suffix;
2381
+ // Only add if the signature path doesn't already exist
2382
+ if (!scopeNode.schema[sigKey]) {
2383
+ // Check if this path represents variable conflation:
2384
+ // When a standalone variable (e.g., showWorkoutForm from useState)
2385
+ // appears as a sub-property of a scalar-typed ancestor (e.g.,
2386
+ // activity_type = "string"), it's from scope conflation, not real
2387
+ // property access. Block these while allowing legitimate built-in
2388
+ // accesses like string.length or string.slice.
2389
+ let isConflatedPath = false;
2390
+ let checkPos = signaturePath.length;
2391
+ while (true) {
2392
+ checkPos = sigKey.indexOf('.', checkPos + 1);
2393
+ if (checkPos === -1)
2394
+ break;
2395
+ const ancestorPath = sigKey.substring(0, checkPos);
2396
+ const ancestorType = scopeNode.schema[ancestorPath];
2397
+ if (ancestorType && isDefinitelyScalar(ancestorType)) {
2398
+ // Ancestor is scalar — check if the immediate sub-property
2399
+ // is also a standalone variable (indicating conflation)
2400
+ const afterDot = sigKey.substring(checkPos + 1);
2401
+ const nextSep = afterDot.search(/[.\[]/);
2402
+ const subPropName = nextSep === -1
2403
+ ? afterDot
2404
+ : afterDot.substring(0, nextSep);
2405
+ if (scopeNode.schema[subPropName] !== undefined) {
2406
+ isConflatedPath = true;
2407
+ break;
2408
+ }
2409
+ }
2410
+ }
2411
+ if (!isConflatedPath) {
2412
+ scopeNode.schema[sigKey] = scopeNode.schema[key];
2413
+ }
2414
+ }
2415
+ }
2416
+ }
2417
+ }
2418
+ }
2419
+ }
2420
+ }
2260
2421
  filterAndConvertSchema({ filterPath, newPath, schema, }) {
2261
2422
  const filterPathParts = this.splitPath(filterPath);
2262
2423
  return Object.keys(schema).reduce((acc, key) => {
@@ -2316,6 +2477,10 @@ export class ScopeDataStructure {
2316
2477
  path,
2317
2478
  ...this.splitPath(key).slice(equivalentValueSchemaPathParts.length),
2318
2479
  ]);
2480
+ // PERF: Skip keys with repeated function-call signature patterns
2481
+ // to prevent recursive type expansion (e.g., string.localeCompare returns string)
2482
+ if (this.hasExcessivePatternRepetition(newKey))
2483
+ continue;
2319
2484
  resolvedSchema[newKey] = value;
2320
2485
  }
2321
2486
  }
@@ -2337,6 +2502,9 @@ export class ScopeDataStructure {
2337
2502
  if (!subSchema)
2338
2503
  continue;
2339
2504
  for (const resolvedKey in subSchema) {
2505
+ // PERF: Skip keys with repeated function-call signature patterns
2506
+ if (this.hasExcessivePatternRepetition(resolvedKey))
2507
+ continue;
2340
2508
  if (!resolvedSchema[resolvedKey] ||
2341
2509
  subSchema[resolvedKey] === 'unknown') {
2342
2510
  resolvedSchema[resolvedKey] = subSchema[resolvedKey];
@@ -2623,21 +2791,91 @@ export class ScopeDataStructure {
2623
2791
  }
2624
2792
  return [source];
2625
2793
  };
2626
- return entries.reduce((acc, entry) => {
2794
+ const acc = entries.reduce((result, entry) => {
2627
2795
  var _a;
2628
2796
  if (entry.sourceCandidates.length === 0)
2629
- return acc;
2797
+ return result;
2630
2798
  const usages = entry.usages.filter(usageMatchesScope);
2631
2799
  for (const usage of usages) {
2632
- acc[_a = usage.schemaPath] || (acc[_a] = []);
2800
+ result[_a = usage.schemaPath] || (result[_a] = []);
2633
2801
  // Resolve each source candidate through the equivalency chain
2634
2802
  for (const source of entry.sourceCandidates) {
2635
2803
  const resolvedSources = resolveToSignature(source, new Set());
2636
- acc[usage.schemaPath].push(...resolvedSources);
2804
+ result[usage.schemaPath].push(...resolvedSources);
2637
2805
  }
2638
2806
  }
2639
- return acc;
2807
+ return result;
2640
2808
  }, {});
2809
+ // Post-processing: enrich useState-backed sources with co-located external
2810
+ // function calls. When a useState value resolves to a setter variable that
2811
+ // lives in the same scope as a fetch/API call, that fetch is a data source.
2812
+ this.enrichUseStateSourcesWithCoLocatedCalls(acc);
2813
+ return acc;
2814
+ }
2815
+ /**
2816
+ * For each source that ends at a useState path, check if the setter was called
2817
+ * from a scope that also contains external function calls (like fetch).
2818
+ * If so, add those external calls as additional source candidates.
2819
+ */
2820
+ enrichUseStateSourcesWithCoLocatedCalls(acc) {
2821
+ const rootScopeName = this.scopeTreeManager.getRootName();
2822
+ const rootScope = this.scopeNodes[rootScopeName];
2823
+ if (!rootScope)
2824
+ return;
2825
+ // Collect all descendants for each scope node
2826
+ const getAllDescendants = (node) => {
2827
+ const names = new Set([node.name]);
2828
+ for (const child of node.children) {
2829
+ for (const name of getAllDescendants(child)) {
2830
+ names.add(name);
2831
+ }
2832
+ }
2833
+ return names;
2834
+ };
2835
+ for (const [usagePath, sources] of Object.entries(acc)) {
2836
+ const additionalSources = [];
2837
+ for (const source of sources) {
2838
+ // Check if this source is a useState-related terminal path
2839
+ // (e.g., useState(X).functionCallReturnValue[1] or useState(X).signature[0])
2840
+ if (!source.schemaPath.match(/^useState\([^)]*\)\./))
2841
+ continue;
2842
+ // Find the useState call from the source path
2843
+ const useStateCallMatch = source.schemaPath.match(/^(useState\([^)]*\))\./);
2844
+ if (!useStateCallMatch)
2845
+ continue;
2846
+ const useStateCall = useStateCallMatch[1];
2847
+ // Look in the root scope for the useState value equivalency
2848
+ // which tells us where the setter was called from
2849
+ const valuePath = `${useStateCall}.functionCallReturnValue[0]`;
2850
+ const valueEquivs = rootScope.equivalencies[valuePath];
2851
+ if (!valueEquivs)
2852
+ continue;
2853
+ for (const equiv of valueEquivs) {
2854
+ // Find the scope where the setter was called
2855
+ const setterScopeName = equiv.scopeNodeName;
2856
+ const setterScopeTree = this.scopeTreeManager.findNode(setterScopeName);
2857
+ if (!setterScopeTree)
2858
+ continue;
2859
+ // Get all descendant scope names from the setter scope
2860
+ const relatedScopes = getAllDescendants(setterScopeTree);
2861
+ // Find external function calls in those scopes whose return values
2862
+ // are actually consumed (assigned to a variable). This excludes
2863
+ // fire-and-forget calls like analytics.track() or console.log().
2864
+ const coLocatedCalls = this.externalFunctionCalls.filter((efc) => relatedScopes.has(efc.callScope) &&
2865
+ efc.receivingVariableNames &&
2866
+ efc.receivingVariableNames.length > 0);
2867
+ for (const call of coLocatedCalls) {
2868
+ additionalSources.push({
2869
+ scopeNodeName: call.callScope,
2870
+ schemaPath: `${call.callSignature}.functionCallReturnValue`,
2871
+ });
2872
+ }
2873
+ }
2874
+ }
2875
+ if (additionalSources.length > 0) {
2876
+ acc[usagePath].push(...additionalSources);
2877
+ }
2878
+ }
2641
2879
  }
2642
2880
  getUsageEquivalencies(functionName) {
2643
2881
  const scopeNode = this.getScopeOrFunctionCallInfo(functionName);
@@ -2702,6 +2940,66 @@ export class ScopeDataStructure {
2702
2940
  }
2703
2941
  }
2704
2942
  }
2943
+ // Enrich schema with deeply nested paths from internal function call scopes.
2944
+ // When a function call like traverse(tree) exists, and traverse's scope has
2945
+ // signature[0].children[path][entityName] (from propagateParameterToSignaturePaths),
2946
+ // we need to map those paths back to the argument variable (tree) in this scope.
2947
+ // This handles cases where cycle detection prevented the equivalency chain from
2948
+ // propagating deep paths during Phase 2 batch queue processing.
2949
+ for (const equivalenceKey in equivalencies ?? {}) {
2950
+ // Look for keys matching function call pattern: funcName(...).signature[N]
2951
+ const funcCallMatch = equivalenceKey.match(/^([^(]+)\(.*?\)\.(signature\[\d+\])$/);
2952
+ if (!funcCallMatch)
2953
+ continue;
2954
+ const calledFunctionName = funcCallMatch[1];
2955
+ const signatureParam = funcCallMatch[2]; // e.g., "signature[0]"
2956
+ for (const equivalenceValue of equivalencies[equivalenceKey]) {
2957
+ if (equivalenceValue.scopeNodeName !== scopeName)
2958
+ continue;
2959
+ const targetVariable = equivalenceValue.schemaPath;
2960
+ // Get the called function's schema (includes propagated parameter paths)
2961
+ const childSchema = this.getSchema({
2962
+ scopeName: calledFunctionName,
2963
+ });
2964
+ if (!childSchema)
2965
+ continue;
2966
+ // Map child function's signature paths to parent variable paths
2967
+ const sigPrefix = signatureParam + '.';
2968
+ const sigBracketPrefix = signatureParam + '[';
2969
+ for (const childKey in childSchema) {
2970
+ let suffix = null;
2971
+ if (childKey.startsWith(sigPrefix)) {
2972
+ suffix = childKey.slice(signatureParam.length);
2973
+ }
2974
+ else if (childKey.startsWith(sigBracketPrefix)) {
2975
+ suffix = childKey.slice(signatureParam.length);
2976
+ }
2977
+ if (suffix !== null) {
2978
+ const parentKey = targetVariable + suffix;
2979
+ if (!schema[parentKey]) {
2980
+ schema[parentKey] = childSchema[childKey];
2981
+ }
2982
+ }
2983
+ }
2984
+ }
2985
+ }
2986
+ // Helper: check if a type is a concrete scalar that cannot have sub-properties.
2987
+ // e.g., "string", "number | undefined", "boolean | null" are scalar.
2988
+ // "object", "array", "function", "unknown", "Workout", etc. are NOT scalar.
2989
+ const SCALAR_TYPES = new Set([
2990
+ 'string',
2991
+ 'number',
2992
+ 'boolean',
2993
+ 'bigint',
2994
+ 'symbol',
2995
+ 'void',
2996
+ 'never',
2997
+ ]);
2998
+ const isDefinitelyScalarType = (type) => {
2999
+ const parts = type.split('|').map((s) => s.trim());
3000
+ const base = parts.filter((s) => s !== 'undefined' && s !== 'null');
3001
+ return base.length > 0 && base.every((b) => SCALAR_TYPES.has(b));
3002
+ };
2705
3003
  // Propagate nested paths from variables to their signature equivalents
2706
3004
  // e.g., if workouts = signature[0].workouts, then workouts[].title becomes
2707
3005
  // signature[0].workouts[].title
@@ -2721,7 +3019,67 @@ export class ScopeDataStructure {
2721
3019
  const signatureKey = signaturePath + suffix;
2722
3020
  // Add to schema if not already present
2723
3021
  if (!tempScopeNode.schema[signatureKey]) {
2724
- tempScopeNode.schema[signatureKey] = schema[schemaKey];
3022
+ // Check if this path represents variable conflation:
3023
+ // When a standalone variable (e.g., showWorkoutForm from useState)
3024
+ // appears as a sub-property of a scalar-typed ancestor (e.g.,
3025
+ // activity_type = "string"), it's from scope conflation, not real
3026
+ // property access. Block these while allowing legitimate built-in
3027
+ // accesses like string.length or string.slice.
3028
+ let isConflatedPath = false;
3029
+ let checkPos = signaturePath.length;
3030
+ while (true) {
3031
+ checkPos = signatureKey.indexOf('.', checkPos + 1);
3032
+ if (checkPos === -1)
3033
+ break;
3034
+ const ancestorPath = signatureKey.substring(0, checkPos);
3035
+ const ancestorType = tempScopeNode.schema[ancestorPath];
3036
+ if (ancestorType && isDefinitelyScalarType(ancestorType)) {
3037
+ // Ancestor is scalar — check if the immediate sub-property
3038
+ // is also a standalone variable (indicating conflation)
3039
+ const afterDot = signatureKey.substring(checkPos + 1);
3040
+ const nextSep = afterDot.search(/[.\[]/);
3041
+ const subPropName = nextSep === -1 ? afterDot : afterDot.substring(0, nextSep);
3042
+ if (schema[subPropName] !== undefined) {
3043
+ isConflatedPath = true;
3044
+ break;
3045
+ }
3046
+ }
3047
+ }
3048
+ if (!isConflatedPath) {
3049
+ tempScopeNode.schema[signatureKey] = schema[schemaKey];
3050
+ }
3051
+ }
3052
+ }
3053
+ }
3054
+ }
3055
+ // Post-process: filter out conflated signature paths.
3056
+ // During phase 2 scope analysis, useState(false) conflation can create
3057
+ // bad paths like signature[0].mockWorkouts[].activity_type.showWorkoutForm
3058
+ // directly in scopeNode.schema. These flow through signatureInSchema into
3059
+ // tempScopeNode.schema without any guard. Filter them out here by checking:
3060
+ // 1. An ancestor in the path has a concrete scalar type (string, number, boolean, etc.)
3061
+ // 2. The immediate sub-property of that scalar ancestor is also a standalone
3062
+ // variable in the schema (indicating conflation, not a real property access)
3063
+ for (const key of Object.keys(tempScopeNode.schema)) {
3064
+ if (!key.startsWith('signature['))
3065
+ continue;
3066
+ // Walk through the path looking for scalar-typed ancestors
3067
+ let pos = 0;
3068
+ while (true) {
3069
+ pos = key.indexOf('.', pos + 1);
3070
+ if (pos === -1)
3071
+ break;
3072
+ const ancestorPath = key.substring(0, pos);
3073
+ const ancestorType = tempScopeNode.schema[ancestorPath];
3074
+ if (ancestorType && isDefinitelyScalarType(ancestorType)) {
3075
+ // Found a scalar ancestor — check if the sub-property name
3076
+ // is a standalone variable in the getSchema() result
3077
+ const afterDot = key.substring(pos + 1);
3078
+ const nextSep = afterDot.search(/[.\[]/);
3079
+ const subPropName = nextSep === -1 ? afterDot : afterDot.substring(0, nextSep);
3080
+ if (schema[subPropName] !== undefined) {
3081
+ delete tempScopeNode.schema[key];
3082
+ break;
2725
3083
  }
2726
3084
  }
2727
3085
  }
@@ -2991,6 +3349,13 @@ export class ScopeDataStructure {
2991
3349
  !equivalentValue.schemaPath.startsWith('signature[') && // not a signature path
2992
3350
  !equivalentValue.schemaPath.endsWith('.functionCallReturnValue') // not already handled above
2993
3351
  ) {
3352
+ // Skip bare "returnValue" from child scopes — this is the child's return value,
3353
+ // not a meaningful data source path in the parent scope
3354
+ if (equivalentValue.schemaPath === 'returnValue' &&
3355
+ equivalentValue.scopeNodeName !==
3356
+ this.scopeTreeManager.getRootName()) {
3357
+ continue;
3358
+ }
2994
3359
  // Add equivalency (will accumulate if multiple values for OR expressions)
2995
3360
  addEquivalency(path, equivalentValue.schemaPath);
2996
3361
  }
@@ -3329,7 +3694,95 @@ export class ScopeDataStructure {
3329
3694
  // Replace cyScope placeholders in all external function call data
3330
3695
  // This ensures call signatures and schema paths use actual callback text
3331
3696
  // instead of internal cyScope names, preventing mock data merge conflicts.
3332
- return this.externalFunctionCalls.map((efc) => this.cleanCyScopeFromFunctionCallInfo(efc));
3697
+ const rootScopeName = this.scopeTreeManager.getRootName();
3698
+ const rootSchema = this.scopeNodes[rootScopeName]?.schema ?? {};
3699
+ return this.externalFunctionCalls.map((efc) => {
3700
+ const cleaned = this.cleanCyScopeFromFunctionCallInfo(efc);
3701
+ return this.filterConflatedExternalPaths(cleaned, rootSchema);
3702
+ });
3703
+ }
3704
+ /**
3705
+ * Filters out conflated paths from external function call schemas.
3706
+ *
3707
+ * When multiple useState(false) calls create equivalency conflation during
3708
+ * Phase 1 analysis, standalone boolean state variables (like showWorkoutForm,
3709
+ * showGoalForm) can bleed into external function call schemas as sub-properties
3710
+ * of unrelated data fields (like data[].activity_type.showWorkoutForm).
3711
+ *
3712
+ * Detection: group sub-properties by parent path. If 2+ sub-properties of
3713
+ * the same parent all match standalone root scope variable names, treat them
3714
+ * as conflation artifacts and remove them.
3715
+ */
3716
+ filterConflatedExternalPaths(efc, rootSchema) {
3717
+ // Build a set of top-level root scope variable names (simple names, no dots/brackets)
3718
+ const topLevelRootVars = new Set();
3719
+ for (const key of Object.keys(rootSchema)) {
3720
+ if (!key.includes('.') && !key.includes('[')) {
3721
+ topLevelRootVars.add(key);
3722
+ }
3723
+ }
3724
+ if (topLevelRootVars.size === 0)
3725
+ return efc;
3726
+ // Group sub-property matches by their parent path.
3727
+ // For a path like "...data[].activity_type.showWorkoutForm",
3728
+ // parent = "...data[].activity_type", child = "showWorkoutForm"
3729
+ const parentToConflatedKeys = new Map();
3730
+ for (const key of Object.keys(efc.schema)) {
3731
+ const lastDot = key.lastIndexOf('.');
3732
+ if (lastDot === -1)
3733
+ continue;
3734
+ const parent = key.substring(0, lastDot);
3735
+ const child = key.substring(lastDot + 1);
3736
+ // Skip array access or function call patterns
3737
+ if (child.includes('[') || child.includes('('))
3738
+ continue;
3739
+ // Only consider paths inside array element chains (contains []).
3740
+ // Direct children of functionCallReturnValue are legitimate destructured
3741
+ // return values, not conflation. Conflation happens deeper in the chain
3742
+ // when array element fields get corrupted sub-properties.
3743
+ if (!parent.includes('['))
3744
+ continue;
3745
+ if (topLevelRootVars.has(child)) {
3746
+ if (!parentToConflatedKeys.has(parent)) {
3747
+ parentToConflatedKeys.set(parent, []);
3748
+ }
3749
+ parentToConflatedKeys.get(parent).push(key);
3750
+ }
3751
+ }
3752
+ // Only filter when 2+ sub-properties of the same parent match root scope vars.
3753
+ // This threshold avoids false positives from coincidental name matches.
3754
+ const keysToRemove = new Set();
3755
+ const parentsToRestore = new Set();
3756
+ for (const [parent, conflatedKeys] of parentToConflatedKeys) {
3757
+ if (conflatedKeys.length >= 2) {
3758
+ for (const key of conflatedKeys) {
3759
+ keysToRemove.add(key);
3760
+ }
3761
+ parentsToRestore.add(parent);
3762
+ }
3763
+ }
3764
+ if (keysToRemove.size === 0)
3765
+ return efc;
3766
+ // Create a new schema without the conflated paths
3767
+ const newSchema = {};
3768
+ for (const [key, value] of Object.entries(efc.schema)) {
3769
+ if (keysToRemove.has(key))
3770
+ continue;
3771
+ // Restore parent type: if it was changed to "object" because of conflated
3772
+ // sub-properties, and now all those sub-properties are removed, change it
3773
+ // back to "unknown" (we don't know the original type)
3774
+ if (parentsToRestore.has(key) && value === 'object') {
3775
+ // Check if there are any remaining sub-properties
3776
+ const hasRemainingSubProps = Object.keys(efc.schema).some((k) => !keysToRemove.has(k) &&
3777
+ k !== key &&
3778
+ (k.startsWith(key + '.') || k.startsWith(key + '[')));
3779
+ newSchema[key] = hasRemainingSubProps ? value : 'unknown';
3780
+ }
3781
+ else {
3782
+ newSchema[key] = value;
3783
+ }
3784
+ }
3785
+ return { ...efc, schema: newSchema };
3333
3786
  }
3334
3787
  /**
3335
3788
  * Cleans cyScope placeholder references from a FunctionCallInfo.
@@ -3550,6 +4003,7 @@ export class ScopeDataStructure {
3550
4003
  */
3551
4004
  getEnrichedConditionalUsages() {
3552
4005
  const enriched = {};
4006
+ console.log(`[getEnrichedConditionalUsages] Processing ${Object.keys(this.rawConditionalUsages).length} conditional paths: [${Object.keys(this.rawConditionalUsages).join(', ')}]`);
3553
4007
  for (const [path, usages] of Object.entries(this.rawConditionalUsages)) {
3554
4008
  // Try to trace this path back to a data source
3555
4009
  // First, try the root scope
@@ -3557,9 +4011,47 @@ export class ScopeDataStructure {
3557
4011
  const explanation = this.explainPath(rootScopeName, path);
3558
4012
  let sourceDataPath;
3559
4013
  if (explanation.source) {
3560
- // Build the full data path: scopeName.path
3561
- sourceDataPath = `${explanation.source.scope}.${explanation.source.path}`;
4014
+ const { scope, path: sourcePath } = explanation.source;
4015
+ // Build initial path — avoid redundant prefix when path already contains the scope call
4016
+ let fullPath;
4017
+ if (sourcePath.startsWith(`${scope}(`)) {
4018
+ fullPath = sourcePath;
4019
+ }
4020
+ else {
4021
+ fullPath = `${scope}.${sourcePath}`;
4022
+ }
4023
+ sourceDataPath = fullPath;
4024
+ console.log(`[getEnrichedConditionalUsages] "${path}" explainPath → scope="${scope}", sourcePath="${sourcePath}" → sourceDataPath="${sourceDataPath}"`);
3562
4025
  }
4026
+ else {
4027
+ console.log(`[getEnrichedConditionalUsages] "${path}" explainPath → no source found`);
4028
+ }
4029
+ // If explainPath didn't find a useful external source (e.g., it traced to
4030
+ // useState or just to the component scope itself), check sourceEquivalencies
4031
+ // for an external function call source like a fetch call
4032
+ const hasExternalSource = sourceDataPath?.includes('.functionCallReturnValue');
4033
+ if (!hasExternalSource) {
4034
+ console.log(`[getEnrichedConditionalUsages] "${path}" no external source (sourceDataPath="${sourceDataPath}"), checking sourceEquivalencies fallback...`);
4035
+ const sourceEquiv = this.getSourceEquivalencies();
4036
+ const returnValueKey = `returnValue.${path}`;
4037
+ const sources = sourceEquiv[returnValueKey];
4038
+ if (sources) {
4039
+ console.log(`[getEnrichedConditionalUsages] "${path}" sourceEquivalencies["${returnValueKey}"] has ${sources.length} sources: [${sources.map((s) => s.schemaPath).join(', ')}]`);
4040
+ const externalSource = sources.find((s) => s.schemaPath.includes('.functionCallReturnValue') &&
4041
+ !s.schemaPath.startsWith('useState('));
4042
+ if (externalSource) {
4043
+ console.log(`[getEnrichedConditionalUsages] "${path}" sourceEquivalencies fallback found external source: "${externalSource.schemaPath}"`);
4044
+ sourceDataPath = externalSource.schemaPath;
4045
+ }
4046
+ else {
4047
+ console.log(`[getEnrichedConditionalUsages] "${path}" sourceEquivalencies fallback found no external function call source`);
4048
+ }
4049
+ }
4050
+ else {
4051
+ console.log(`[getEnrichedConditionalUsages] "${path}" sourceEquivalencies["${returnValueKey}"] not found`);
4052
+ }
4053
+ }
4054
+ console.log(`[getEnrichedConditionalUsages] "${path}" FINAL sourceDataPath="${sourceDataPath ?? '(none)'}" (${usages.length} usages)`);
3563
4055
  enriched[path] = usages.map((usage) => ({
3564
4056
  ...usage,
3565
4057
  sourceDataPath,
@@ -3818,11 +4310,21 @@ export class ScopeDataStructure {
3818
4310
  perVariableSchemas = undefined;
3819
4311
  }
3820
4312
  }
4313
+ // Enrich the schema with inferred types by applying fillInSchemaGapsAndUnknowns.
4314
+ // This ensures the serialized schema has the same type inference as getReturnValue().
4315
+ // Without this, evidence like "entities[].analyses: array" becomes "unknown".
4316
+ const enrichedSchema = { ...efc.schema };
4317
+ const tempScopeNode = {
4318
+ name: efc.name,
4319
+ schema: enrichedSchema,
4320
+ equivalencies: efc.equivalencies ?? {},
4321
+ };
4322
+ fillInSchemaGapsAndUnknowns(tempScopeNode, true);
3821
4323
  return {
3822
4324
  name: efc.name,
3823
4325
  callSignature: efc.callSignature,
3824
4326
  callScope: efc.callScope,
3825
- schema: efc.schema,
4327
+ schema: enrichedSchema,
3826
4328
  equivalencies: efc.equivalencies
3827
4329
  ? Object.entries(efc.equivalencies).reduce((acc, [key, vars]) => {
3828
4330
  // Clean cyScope from the key as well as variable properties