@codeyam/codeyam-cli 0.1.0-staging.2a88920 → 0.1.0-staging.4057bd2

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 (659) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +21 -21
  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/patterns/forInStatementHandler.ts +10 -17
  9. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  11. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
  12. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +588 -13
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +11 -2
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +2 -2
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  19. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  20. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +20 -1
  21. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +84 -19
  22. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  23. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  24. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  25. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +377 -7
  26. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +134 -2
  27. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  28. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  29. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  30. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  31. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  32. package/analyzer-template/packages/analyze/index.ts +2 -0
  33. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +6 -0
  34. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  35. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +69 -3
  36. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +13 -0
  37. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  38. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  39. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1352 -0
  40. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +4 -0
  41. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +59 -26
  42. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +277 -15
  43. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +395 -61
  44. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  45. package/analyzer-template/packages/aws/package.json +10 -10
  46. package/analyzer-template/packages/database/index.ts +1 -0
  47. package/analyzer-template/packages/database/package.json +4 -4
  48. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  49. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  50. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  51. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  52. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  53. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  54. package/analyzer-template/packages/database/src/lib/kysely/db.ts +14 -0
  55. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  56. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  57. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  58. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  59. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  60. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  61. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  62. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  63. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  64. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  65. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  66. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  67. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  68. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  69. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  70. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  71. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  72. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  73. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  74. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  76. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  78. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  79. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  80. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  82. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  83. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  84. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +4 -0
  86. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  87. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +8 -0
  88. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  91. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  92. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  93. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  94. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  95. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  96. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  97. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  98. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  99. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  102. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  103. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  104. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  105. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  107. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  108. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  109. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  110. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  111. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  112. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  113. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  114. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  115. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  116. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  117. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  118. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  119. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  120. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  121. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  122. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  123. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  124. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  125. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  126. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  127. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  128. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  129. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  130. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  131. package/analyzer-template/packages/github/package.json +1 -1
  132. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +8 -0
  133. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  134. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +8 -0
  135. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  136. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  137. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  138. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  139. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  140. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  141. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  142. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  143. package/analyzer-template/project/constructMockCode.ts +206 -51
  144. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  145. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  146. package/analyzer-template/project/start.ts +3 -0
  147. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  148. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  149. package/analyzer-template/project/writeMockDataTsx.ts +191 -12
  150. package/analyzer-template/project/writeScenarioComponents.ts +170 -29
  151. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  152. package/analyzer-template/tsconfig.json +13 -1
  153. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  154. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  155. package/background/src/lib/virtualized/project/constructMockCode.js +175 -42
  156. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  157. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  158. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  159. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  160. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  161. package/background/src/lib/virtualized/project/start.js +2 -0
  162. package/background/src/lib/virtualized/project/start.js.map +1 -1
  163. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  164. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  165. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  166. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  167. package/background/src/lib/virtualized/project/writeMockDataTsx.js +168 -8
  168. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  169. package/background/src/lib/virtualized/project/writeScenarioComponents.js +143 -27
  170. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  171. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  172. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  173. package/codeyam-cli/scripts/apply-setup.js +386 -9
  174. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  175. package/codeyam-cli/src/cli.js +33 -24
  176. package/codeyam-cli/src/cli.js.map +1 -1
  177. package/codeyam-cli/src/codeyam-cli.js +18 -2
  178. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  179. package/codeyam-cli/src/commands/analyze.js +21 -9
  180. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  181. package/codeyam-cli/src/commands/baseline.js +2 -0
  182. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  183. package/codeyam-cli/src/commands/debug.js +2 -0
  184. package/codeyam-cli/src/commands/debug.js.map +1 -1
  185. package/codeyam-cli/src/commands/default.js +87 -21
  186. package/codeyam-cli/src/commands/default.js.map +1 -1
  187. package/codeyam-cli/src/commands/editor.js +1839 -0
  188. package/codeyam-cli/src/commands/editor.js.map +1 -0
  189. package/codeyam-cli/src/commands/init.js +81 -260
  190. package/codeyam-cli/src/commands/init.js.map +1 -1
  191. package/codeyam-cli/src/commands/memory.js +97 -92
  192. package/codeyam-cli/src/commands/memory.js.map +1 -1
  193. package/codeyam-cli/src/commands/recapture.js +2 -0
  194. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  195. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  196. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  197. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  198. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  199. package/codeyam-cli/src/commands/test-startup.js +2 -0
  200. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  201. package/codeyam-cli/src/commands/verify.js +14 -2
  202. package/codeyam-cli/src/commands/verify.js.map +1 -1
  203. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +246 -0
  204. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  205. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +126 -0
  206. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  207. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +295 -0
  208. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  209. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  210. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  211. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +100 -0
  212. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  213. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +147 -0
  214. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  215. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +76 -0
  216. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  217. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  218. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  219. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  220. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  221. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  222. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  223. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  224. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  225. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  226. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  227. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +154 -86
  228. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  229. package/codeyam-cli/src/utils/analyzer.js +7 -0
  230. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  231. package/codeyam-cli/src/utils/backgroundServer.js +109 -22
  232. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  233. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  234. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  235. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  236. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  237. package/codeyam-cli/src/utils/editorAudit.js +82 -0
  238. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  239. package/codeyam-cli/src/utils/editorDevServer.js +98 -0
  240. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  241. package/codeyam-cli/src/utils/editorJournal.js +137 -0
  242. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  243. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  244. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  245. package/codeyam-cli/src/utils/editorPreloadHelpers.js +64 -0
  246. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  247. package/codeyam-cli/src/utils/editorPreview.js +66 -0
  248. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  249. package/codeyam-cli/src/utils/editorScenarios.js +56 -0
  250. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  251. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  252. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  253. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  254. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  255. package/codeyam-cli/src/utils/generateReport.js +2 -2
  256. package/codeyam-cli/src/utils/git.js +103 -0
  257. package/codeyam-cli/src/utils/git.js.map +1 -1
  258. package/codeyam-cli/src/utils/install-skills.js +101 -56
  259. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  260. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  261. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  262. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  263. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  264. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  265. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  266. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  267. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  268. package/codeyam-cli/src/utils/progress.js +7 -0
  269. package/codeyam-cli/src/utils/progress.js.map +1 -1
  270. package/codeyam-cli/src/utils/project.js +15 -5
  271. package/codeyam-cli/src/utils/project.js.map +1 -1
  272. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  273. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  274. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  275. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  276. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  277. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  278. package/codeyam-cli/src/utils/queue/job.js +74 -1
  279. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  280. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  281. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  282. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  283. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  284. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  285. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  286. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +229 -0
  287. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  288. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  289. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  290. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  291. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  292. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  293. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  294. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  295. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  296. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +74 -0
  297. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  298. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +376 -0
  299. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  300. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +113 -0
  301. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  302. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  303. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  304. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  305. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  306. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  307. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  308. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  309. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  310. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  311. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  312. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  313. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  314. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  315. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  316. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  317. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  318. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  319. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  320. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  321. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  322. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  323. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  324. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  325. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  326. package/codeyam-cli/src/utils/rules/index.js +2 -0
  327. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  328. package/codeyam-cli/src/utils/rules/parser.js +16 -29
  329. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  330. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  331. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  332. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  333. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  334. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  335. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  336. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  337. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  338. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  339. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  340. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  341. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  342. package/codeyam-cli/src/utils/serverState.js +64 -12
  343. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  344. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +61 -43
  345. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  346. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  347. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  348. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  349. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  350. package/codeyam-cli/src/utils/testRunner.js +158 -0
  351. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  352. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  353. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  354. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  355. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  356. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  357. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  358. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  359. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  360. package/codeyam-cli/src/webserver/app/lib/database.js +56 -30
  361. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  362. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  363. package/codeyam-cli/src/webserver/backgroundServer.js +166 -16
  364. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  365. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  366. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  367. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-C76mRRiF.js} +1 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-g3saevPb.js} +1 -1
  370. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-CobE682z.js} +1 -1
  371. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-aht4aafF.js → InteractivePreview-DYFW3lDD.js} +3 -3
  373. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-BU_OAEMP.js} +1 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-ceAyBX-H.js} +1 -1
  376. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-djPLI-WV.js} +3 -8
  377. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-BED4B6sP.js} +1 -1
  378. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-B76aig_2.js} +2 -2
  379. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/Terminal-Dnj5CY9R.js +41 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  382. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-C96V0n15.js} +1 -1
  383. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-BpKzcsJz.js} +6 -11
  384. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  385. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  386. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  387. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  391. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  392. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  393. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  397. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  398. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  399. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  402. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  403. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  405. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  406. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  408. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  409. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  410. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  411. package/codeyam-cli/src/webserver/build/client/assets/book-open-D_nMCFmP.js +6 -0
  412. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-BH2h1Ea2.js} +1 -1
  413. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-C4pqxYJB.js} +12 -12
  414. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-DyIKORY6.js} +1 -1
  415. package/codeyam-cli/src/webserver/build/client/assets/copy-NDbZjXao.js +11 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-CMT1jU2q.js} +1 -1
  417. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  418. package/codeyam-cli/src/webserver/build/client/assets/editor-D1DAKXtT.js +8 -0
  419. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BJUiQqZF.js → entity._sha._-CrjR3zZW.js} +11 -11
  420. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DkzqFzFj.js +6 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  422. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  423. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  424. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-DTvKq3TY.js} +1 -1
  425. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-cPo8LiG3.js} +1 -1
  426. package/codeyam-cli/src/webserver/build/client/assets/{files-CJ6lTdTA.js → files-DO4CZ16O.js} +1 -1
  427. package/codeyam-cli/src/webserver/build/client/assets/{git-CPTZZ-JZ.js → git-CFCTYk9I.js} +1 -1
  428. package/codeyam-cli/src/webserver/build/client/assets/globals-B17TBSS6.css +1 -0
  429. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-10oVnAAH.js} +1 -1
  430. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-BcvgDzbZ.js} +1 -1
  431. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  432. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-BAXYRVEO.js} +1 -1
  433. package/codeyam-cli/src/webserver/build/client/assets/manifest-a632de18.js +1 -0
  434. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +96 -0
  435. package/codeyam-cli/src/webserver/build/client/assets/pause-DTAcYxBt.js +11 -0
  436. package/codeyam-cli/src/webserver/build/client/assets/root-DUKqhFlb.js +67 -0
  437. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-fKo7v0Zo.js} +1 -1
  438. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  439. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DwFIBT09.js → simulations-B3aOzpCZ.js} +1 -1
  440. package/codeyam-cli/src/webserver/build/client/assets/terminal-BG4heKCG.js +11 -0
  441. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-DtSmdtM4.js} +1 -1
  442. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-C1v1PQzo.js → useCustomSizes-ByhSyh0W.js} +1 -1
  443. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  444. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DYxHZQuP.js → useReportContext-O-jkvSPx.js} +1 -1
  445. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-9FIWuYfK.js} +1 -1
  446. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  447. package/codeyam-cli/src/webserver/build/server/assets/index-HfLydfDq.js +1 -0
  448. package/codeyam-cli/src/webserver/build/server/assets/server-build-CUu_F-oo.js +366 -0
  449. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  450. package/codeyam-cli/src/webserver/build-info.json +5 -5
  451. package/codeyam-cli/src/webserver/devServer.js +39 -5
  452. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  453. package/codeyam-cli/src/webserver/editorProxy.js +440 -0
  454. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  455. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +175 -0
  456. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +140 -0
  457. package/codeyam-cli/src/webserver/server.js +226 -1
  458. package/codeyam-cli/src/webserver/server.js.map +1 -1
  459. package/codeyam-cli/src/webserver/terminalServer.js +698 -0
  460. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  461. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  462. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  463. package/codeyam-cli/templates/commands/codeyam-diagnose.md +481 -0
  464. package/codeyam-cli/templates/editor-step-hook.py +147 -0
  465. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  466. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  467. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  468. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  469. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  470. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  471. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  472. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  473. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  474. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  475. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  476. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  477. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  478. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  479. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +43 -0
  480. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  481. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  482. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  483. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  484. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  485. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  486. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  487. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  488. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  489. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  490. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  491. package/codeyam-cli/templates/rule-notification-hook.py +83 -0
  492. package/codeyam-cli/templates/rule-reflection-hook.py +574 -87
  493. package/codeyam-cli/templates/rules-instructions.md +45 -60
  494. package/codeyam-cli/templates/{codeyam:debug.md → skills/codeyam-debug/SKILL.md} +1 -1
  495. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  496. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +69 -0
  497. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +611 -0
  498. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  499. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.sh +108 -0
  500. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.sh +69 -0
  501. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  502. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  503. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.sh +12 -0
  504. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter.jq +45 -0
  505. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.sh +139 -0
  506. package/codeyam-cli/templates/skills/codeyam-new-rule/SKILL.md +11 -0
  507. package/codeyam-cli/templates/{codeyam:setup.md → skills/codeyam-setup/SKILL.md} +13 -1
  508. package/codeyam-cli/templates/{codeyam:sim.md → skills/codeyam-sim/SKILL.md} +1 -1
  509. package/codeyam-cli/templates/{codeyam:test.md → skills/codeyam-test/SKILL.md} +1 -1
  510. package/codeyam-cli/templates/{codeyam:verify.md → skills/codeyam-verify/SKILL.md} +1 -1
  511. package/package.json +16 -14
  512. package/packages/ai/index.js +1 -1
  513. package/packages/ai/index.js.map +1 -1
  514. package/packages/ai/src/lib/analyzeScope.js +21 -1
  515. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  516. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  517. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  518. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  519. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  520. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  521. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  522. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  523. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  524. package/packages/ai/src/lib/completionCall.js +10 -7
  525. package/packages/ai/src/lib/completionCall.js.map +1 -1
  526. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +495 -10
  527. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  528. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  529. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  530. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +11 -2
  531. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  532. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +2 -2
  533. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  534. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  535. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  536. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  537. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  538. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  539. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  540. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +15 -1
  541. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -1
  542. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +78 -17
  543. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  544. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  545. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  546. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  547. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  548. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  549. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  550. package/packages/ai/src/lib/generateEntityScenarioData.js +269 -5
  551. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  552. package/packages/ai/src/lib/generateExecutionFlows.js +97 -2
  553. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  554. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  555. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  556. package/packages/ai/src/lib/isolateScopes.js +39 -3
  557. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  558. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  559. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  560. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  561. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  562. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  563. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  564. package/packages/analyze/index.js +1 -0
  565. package/packages/analyze/index.js.map +1 -1
  566. package/packages/analyze/src/lib/ProjectAnalyzer.js +3 -0
  567. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  568. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  569. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  570. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +52 -2
  571. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  572. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +10 -0
  573. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  574. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  575. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  576. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  577. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  578. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +907 -0
  579. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  580. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +5 -1
  581. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  582. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +51 -14
  583. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  584. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +181 -13
  585. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  586. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +328 -49
  587. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  588. package/packages/analyze/src/lib/index.js +1 -0
  589. package/packages/analyze/src/lib/index.js.map +1 -1
  590. package/packages/database/index.js +1 -0
  591. package/packages/database/index.js.map +1 -1
  592. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  593. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  594. package/packages/database/src/lib/analysisToDb.js +1 -1
  595. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  596. package/packages/database/src/lib/branchToDb.js +1 -1
  597. package/packages/database/src/lib/branchToDb.js.map +1 -1
  598. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  599. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  600. package/packages/database/src/lib/commitToDb.js +1 -1
  601. package/packages/database/src/lib/commitToDb.js.map +1 -1
  602. package/packages/database/src/lib/fileToDb.js +1 -1
  603. package/packages/database/src/lib/fileToDb.js.map +1 -1
  604. package/packages/database/src/lib/kysely/db.js +8 -0
  605. package/packages/database/src/lib/kysely/db.js.map +1 -1
  606. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  607. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  608. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  609. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  610. package/packages/database/src/lib/loadCommits.js +23 -13
  611. package/packages/database/src/lib/loadCommits.js.map +1 -1
  612. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  613. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  614. package/packages/database/src/lib/projectToDb.js +1 -1
  615. package/packages/database/src/lib/projectToDb.js.map +1 -1
  616. package/packages/database/src/lib/saveFiles.js +1 -1
  617. package/packages/database/src/lib/saveFiles.js.map +1 -1
  618. package/packages/database/src/lib/scenarioToDb.js +1 -1
  619. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  620. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  621. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  622. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  623. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  624. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  625. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  626. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  627. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  628. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  629. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  630. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  631. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  632. package/scripts/npm-post-install.cjs +34 -0
  633. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  634. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  635. package/codeyam-cli/src/commands/list.js +0 -31
  636. package/codeyam-cli/src/commands/list.js.map +0 -1
  637. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  638. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  639. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  640. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  641. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-C8lyxW9k.js +0 -34
  642. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  643. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BBnGWYga.js +0 -1
  644. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js +0 -6
  645. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-D1T4TGjf.js +0 -6
  646. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  647. package/codeyam-cli/src/webserver/build/client/assets/globals-D3yhhV8x.css +0 -1
  648. package/codeyam-cli/src/webserver/build/client/assets/manifest-a78b90a2.js +0 -1
  649. package/codeyam-cli/src/webserver/build/client/assets/memory--GCbFsBE.js +0 -92
  650. package/codeyam-cli/src/webserver/build/client/assets/root-eVAaavTS.js +0 -62
  651. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  652. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-aSv48UbS.js +0 -2
  653. package/codeyam-cli/src/webserver/build/server/assets/index-BM6TDT1Y.js +0 -1
  654. package/codeyam-cli/src/webserver/build/server/assets/server-build-dYC34MHw.js +0 -257
  655. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  656. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  657. package/codeyam-cli/templates/codeyam:memory.md +0 -341
  658. package/codeyam-cli/templates/codeyam:new-rule.md +0 -13
  659. package/scripts/finalize-analyzer.cjs +0 -81
@@ -1 +1 @@
1
- {"version":3,"file":"createLocalAnalyzer.js","sourceRoot":"","sources":["../../../../../../background/src/lib/local/createLocalAnalyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"createLocalAnalyzer.js","sourceRoot":"","sources":["../../../../../../background/src/lib/local/createLocalAnalyzer.ts"],"names":[],"mappings":"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"}
@@ -257,7 +257,8 @@ options) {
257
257
  let dataStructureValue;
258
258
  let foundEntityWithSignature = false;
259
259
  let signatureSchema;
260
- for (const filePath in dependencySchemas) {
260
+ let baseSchemaHasMethodCalls = false;
261
+ entitySearch: for (const filePath in dependencySchemas) {
261
262
  for (const entityName in dependencySchemas[filePath]) {
262
263
  // Match entity by base name (without generics/args)
263
264
  const entityBaseName = entityName.split(/[<(]/)[0];
@@ -281,15 +282,51 @@ options) {
281
282
  pathParts[mockNameParts.length - 1].startsWith(mockNameParts[mockNameParts.length - 1]));
282
283
  });
283
284
  if (dataStructurePath) {
285
+ // Start with the base entity's return value schema
286
+ const baseReturnValueSchema = dependencySchemas[filePath][entityName]?.returnValueSchema;
287
+ const mergedSchema = {
288
+ ...baseReturnValueSchema,
289
+ };
290
+ // Check if the base schema has method-call entries (e.g., .map().functionCallReturnValue)
291
+ // When it does, the scenario data is stored as an object with method keys, and
292
+ // array prototype methods need mock implementations. When it doesn't, the data
293
+ // is a raw array and native methods like .includes() work directly.
294
+ if (baseReturnValueSchema) {
295
+ baseSchemaHasMethodCalls = Object.keys(baseReturnValueSchema).some((k) => k.startsWith(baseMockName + '.') &&
296
+ k.includes('(') &&
297
+ k.includes('.functionCallReturnValue'));
298
+ }
299
+ // Merge in method-call dependencies that are separate entries.
300
+ // e.g., "activityTypes.find((a) => a.value === type)" is a separate dependency
301
+ // for a .find() call on activityTypes. We need to include these with a
302
+ // .functionCallReturnValue path so constructMockCode generates callable mock methods.
303
+ for (const otherEntityName in dependencySchemas[filePath]) {
304
+ if (otherEntityName === entityName)
305
+ continue;
306
+ if (otherEntityName.startsWith(baseMockName + '.') &&
307
+ otherEntityName.includes('(')) {
308
+ // Add a functionCallReturnValue entry for this method call.
309
+ // This ensures constructMockCode treats it as a function that returns data,
310
+ // generating a proper mock method with data lookup.
311
+ const fcrvPath = `${otherEntityName}.functionCallReturnValue`;
312
+ if (!mergedSchema[fcrvPath]) {
313
+ // Infer the return type from the method-call dependency's schema
314
+ const otherSchema = dependencySchemas[filePath][otherEntityName]?.returnValueSchema;
315
+ // Look for element type (baseMockName[]) or fall back to 'unknown'
316
+ const elementType = otherSchema?.[`${baseMockName}[]`];
317
+ mergedSchema[fcrvPath] = elementType || 'unknown';
318
+ }
319
+ }
320
+ }
284
321
  relevantReturnValueSchema = fillInDirectSchemaGapsAndUnknowns({
285
- schema: dependencySchemas[filePath][entityName]?.returnValueSchema,
322
+ schema: mergedSchema,
286
323
  });
287
324
  // NOTE: clearAttributesFromMapping is disabled because it deletes
288
325
  // method calls on arrays (like .eq() after functionCallReturnValue: 'array')
289
326
  // However, we still need to remove duplicate function calls that create invalid syntax
290
327
  removeDuplicateFunctionCalls(relevantReturnValueSchema);
291
328
  dataStructureValue = relevantReturnValueSchema?.[dataStructurePath];
292
- break;
329
+ break entitySearch;
293
330
  }
294
331
  }
295
332
  }
@@ -352,7 +389,10 @@ options) {
352
389
  args.push('...rest');
353
390
  const argsString = args.join(', ');
354
391
  // Generate empty mock function
355
- return `function ${mockName}(${argsString}) {
392
+ // Use baseMockName (not mockName) because mockName may contain a full call
393
+ // signature with argument expressions (e.g., "logSignOutAction(sessionUser.id, ...)")
394
+ // which would produce invalid syntax as function parameter names.
395
+ return `function ${baseMockName}(${argsString}) {
356
396
  // Empty mock - original function mocked out
357
397
  }`;
358
398
  }
@@ -391,12 +431,12 @@ options) {
391
431
  : false;
392
432
  if (firstArgIsFunctionOrUnknown && returnsFunction) {
393
433
  // HOC pattern detected - return the first argument
394
- return `function ${mockName}(${argsString}) {
434
+ return `function ${baseMockName}(${argsString}) {
395
435
  return arg1;
396
436
  }`;
397
437
  }
398
438
  // Generate empty mock function
399
- return `function ${mockName}(${argsString}) {
439
+ return `function ${baseMockName}(${argsString}) {
400
440
  // Empty mock - original function mocked out
401
441
  }`;
402
442
  }
@@ -536,17 +576,23 @@ options) {
536
576
  return [];
537
577
  }
538
578
  const addReturnValueFunctionAccessor = (dataPath) => {
539
- // Add function call accessor if:
540
- // - There are actual arguments, OR
541
- // - This is a callable (not a method that returns an array directly)
542
- // For methods like getAll() that return arrays, the data is at ["getAll()"] not ["getAll()"]["()"]
543
579
  if (returnValue.returnsFunctionArgs &&
544
580
  (returnValue.returnsFunctionArgs.length > 0 ||
545
581
  !returnValue.returnsFunctionArray)) {
546
582
  if (returnValue.isArray) {
547
583
  dataPath = `${dataPath}${optionalAccess('[0]')}`;
548
584
  }
549
- dataPath = `${dataPath}${optionalAccess(`(${safeString(returnValue.returnsFunctionArgs.join(', '))})`)}`;
585
+ // Only add the function call accessor ?.["(args)"] when there are actual
586
+ // arguments. When returnsFunctionArgs is empty [] (function-returns-function
587
+ // with no specific arg patterns), skip the ?.["()"] because:
588
+ // 1. preprocessSchemaForMocks collapses nested functionCallReturnValue chains
589
+ // into flat entries (e.g., getTranslate() = string, not {(): string})
590
+ // 2. The mock data is a flat value, so ?.["()"] on a string returns undefined
591
+ // 3. constructContent still wraps the return in a function (via returnsFunctionArgs)
592
+ // so the function-returns-function behavior is preserved without data nesting
593
+ if (returnValue.returnsFunctionArgs.length > 0) {
594
+ dataPath = `${dataPath}${optionalAccess(`(${safeString(returnValue.returnsFunctionArgs.join(', '))})`)}`;
595
+ }
550
596
  }
551
597
  return dataPath;
552
598
  };
@@ -572,20 +618,6 @@ options) {
572
618
  };
573
619
  const constructContent = (dataPaths) => {
574
620
  const { name, args, nested, isArray, isGenericArray, returnsFunctionArgs, returnsFunctionArray, isAsyncFunction, hasNoReturnData, } = returnValue;
575
- // When an array has differentiated indices ([0], [1], etc.), filter out any
576
- // non-index items from nested. These non-index items come from generic [] paths
577
- // like [].filter or [].sort, which describe element properties, not array elements.
578
- // Including them would generate invalid syntax like "sort: ..." inside an array literal.
579
- const hasDifferentiatedIndices = isArray &&
580
- nested &&
581
- nested.some((n) => n.name.match(/^\[\d+\]$/) && n.name !== '[0]');
582
- const filteredNested = hasDifferentiatedIndices && nested
583
- ? nested.filter((n) => n.name.match(/^\[\d+\]$/))
584
- : nested;
585
- const nestedContent = (filteredNested ?? []).map((nestedItem) => {
586
- const nestedContent = constructReturnValueString(nestedItem, dataPaths);
587
- return nestedContent;
588
- });
589
621
  // Array prototype methods that should be ignored when building mocks
590
622
  // (these work on any array - we don't need to mock them)
591
623
  const ARRAY_PROTOTYPE_METHODS = new Set([
@@ -629,6 +661,36 @@ options) {
629
661
  'with',
630
662
  'length',
631
663
  ]);
664
+ // When an array has differentiated indices ([0], [1], etc.), filter out any
665
+ // non-index items from nested. These non-index items come from generic [] paths
666
+ // like [].filter or [].sort, which describe element properties, not array elements.
667
+ // Including them would generate invalid syntax like "sort: ..." inside an array literal.
668
+ const hasDifferentiatedIndices = isArray &&
669
+ nested &&
670
+ nested.some((n) => n.name.match(/^\[\d+\]$/) && n.name !== '[0]');
671
+ let filteredNested = hasDifferentiatedIndices && nested
672
+ ? nested.filter((n) => n.name.match(/^\[\d+\]$/))
673
+ : nested;
674
+ // When a variable IS an array (not a function returning an array),
675
+ // filter out array prototype methods like .includes(), .filter(), etc.
676
+ // ONLY when the base schema has no method-call entries. When the base
677
+ // schema has methods (e.g., .map().functionCallReturnValue), the scenario
678
+ // data is stored as an object with method-call keys, and ALL methods
679
+ // need mock implementations. When the base schema has no methods, the
680
+ // data is a raw array and native methods like .includes() work directly.
681
+ if (isArray &&
682
+ !returnsFunctionArray &&
683
+ !baseSchemaHasMethodCalls &&
684
+ filteredNested) {
685
+ filteredNested = filteredNested.filter((n) => {
686
+ const methodName = n.name.replace(/[<(].*$/, '');
687
+ return !ARRAY_PROTOTYPE_METHODS.has(methodName);
688
+ });
689
+ }
690
+ const nestedContent = (filteredNested ?? []).map((nestedItem) => {
691
+ const nestedContent = constructReturnValueString(nestedItem, dataPaths);
692
+ return nestedContent;
693
+ });
632
694
  const levelContentItems = [];
633
695
  // Add spread for data paths when:
634
696
  // - Not a function returning an array, OR function returns array with custom methods
@@ -1170,6 +1232,16 @@ options) {
1170
1232
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => (\n${indent(trimmedContent)}\n))`;
1171
1233
  }
1172
1234
  else {
1235
+ // When generating object-wrapped .map(), ensure original item data is preserved.
1236
+ // If no data spread was included (e.g., because this is a plain array property,
1237
+ // not a function return), add ...__item__ to spread the original item properties.
1238
+ // Without this, the .map() would create new objects with only nested function
1239
+ // properties, losing data like filePath, frontmatter, body, etc.
1240
+ const hasDataSpread = mappedContents.includes('...scenarios()') ||
1241
+ mappedContents.includes('...__item__');
1242
+ if (!hasDataSpread) {
1243
+ mappedContents = `...__item__,\n${mappedContents}`;
1244
+ }
1173
1245
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => ({\n${indent(mappedContents)}\n}))`;
1174
1246
  }
1175
1247
  } // Close the empty content check else block
@@ -1231,6 +1303,13 @@ options) {
1231
1303
  mappedContents = filterOutArrowFunctions(mappedContents);
1232
1304
  mappedContents = filterOutBareObjects(mappedContents, true);
1233
1305
  mappedContents = cleanupContent(mappedContents);
1306
+ // Same as needsWrapper branch: ensure item data is preserved in .map()
1307
+ const hasDataSpreadInner = mappedContents.includes('...scenarios()') ||
1308
+ mappedContents.includes('...__item__');
1309
+ if (!hasDataSpreadInner && mappedContents.trim().length > 0) {
1310
+ // Insert ...__item__ after the opening brace
1311
+ mappedContents = mappedContents.replace(/^\s*\{/, '{\n...__item__,');
1312
+ }
1234
1313
  returnValueContents = `${arrayBasePath}?.map((__item__, __idx__) => (\n${indent(mappedContents)}\n))`;
1235
1314
  }
1236
1315
  }
@@ -1343,20 +1422,39 @@ options) {
1343
1422
  content = `${cleanOutTypes(name)}: ${isAsyncFunction ? 'async ' : ''}(${argsString}) => {\n${indent(funcContents)}\n}`;
1344
1423
  }
1345
1424
  else {
1346
- // No argument variants - use existing behavior
1347
- // But if there's nested content, we need to include it in the return object
1348
- // (similar to how argument variant branches handle this at line 1070-1072)
1349
- const hasNestedContent = validNestedContent.length > 0;
1350
- let funcReturnContents;
1351
- if (hasNestedContent && levelContentItems.length > 1) {
1352
- // Include both spread and nested content in the return
1353
- funcReturnContents = `{\n${indent(levelContents)}\n}`;
1425
+ // No argument variants
1426
+ // Check if this is an array method callback containing JSX.
1427
+ // JSX can't be serialized to JSON, so the LLM generates [{}] as data.
1428
+ // Instead of returning that unusable data, generate a passthrough that
1429
+ // calls the real callback on the best available array data from siblings.
1430
+ const containsJsx = dataPaths.some((p) => /<[A-Z]/.test(p));
1431
+ const isArrayMethod = ARRAY_PROTOTYPE_METHODS.has(name);
1432
+ if (containsJsx && isArrayMethod && dataPaths.length > 0) {
1433
+ // Extract parent data path by removing the last ?.["..."] segment
1434
+ const parentPath = dataPaths[0].replace(/\?\.\["[^"]*"\]$/, '');
1435
+ const funcLines = [
1436
+ `const _d = ${parentPath};`,
1437
+ `const _a = Object.values(_d || {}).filter(v => Array.isArray(v) && v.length > 0 && v.some(i => i && typeof i === "object" && Object.keys(i).length > 0)).sort((a, b) => b.length - a.length);`,
1438
+ `return _a[0] ? _a[0].${name}(${argsString}) : []`,
1439
+ ];
1440
+ const funcContents = funcLines.join('\n');
1441
+ content = `${cleanOutTypes(name)}: ${isAsyncFunction ? 'async ' : ''}(${argsString}) => {\n${indent(funcContents)}\n}`;
1354
1442
  }
1355
1443
  else {
1356
- funcReturnContents = returnValueContents;
1444
+ // But if there's nested content, we need to include it in the return object
1445
+ // (similar to how argument variant branches handle this at line 1070-1072)
1446
+ const hasNestedContent = validNestedContent.length > 0;
1447
+ let funcReturnContents;
1448
+ if (hasNestedContent && levelContentItems.length > 1) {
1449
+ // Include both spread and nested content in the return
1450
+ funcReturnContents = `{\n${indent(levelContents)}\n}`;
1451
+ }
1452
+ else {
1453
+ funcReturnContents = returnValueContents;
1454
+ }
1455
+ const funcContents = `return ${funcReturnContents}`;
1456
+ content = `${cleanOutTypes(name)}: ${isAsyncFunction ? 'async ' : ''}(${argsString}) => {\n${indent(funcContents)}\n}`;
1357
1457
  }
1358
- const funcContents = `return ${funcReturnContents}`;
1359
- content = `${cleanOutTypes(name)}: ${isAsyncFunction ? 'async ' : ''}(${argsString}) => {\n${indent(funcContents)}\n}`;
1360
1458
  }
1361
1459
  }
1362
1460
  else {
@@ -1900,6 +1998,20 @@ options) {
1900
1998
  returnValueSection = relevantPart;
1901
1999
  }
1902
2000
  }
2001
+ // Post-processing: When the root functionCallReturnValue is typed as "function" but the
2002
+ // return value also has nested properties (methods like .from(), .auth, etc.), it's actually
2003
+ // an object, not a function to be called. Clear returnsFunctionArgs to prevent double-wrapping
2004
+ // (adding an extra () => { return { ... } } wrapper and ["()"] data paths).
2005
+ // This handles cases like Supabase's createClient() which returns an object with methods.
2006
+ // Only applied to the root level - nested parts that are functions with methods (like
2007
+ // useSearchParams()[1] which is a setter function with .set() and .delete()) should keep
2008
+ // their returnsFunctionArgs since they genuinely ARE functions.
2009
+ if (returnValueParts.returnsFunctionArgs &&
2010
+ returnValueParts.returnsFunctionArgs.length === 0 &&
2011
+ returnValueParts.nested &&
2012
+ returnValueParts.nested.length > 0) {
2013
+ returnValueParts.returnsFunctionArgs = undefined;
2014
+ }
1903
2015
  const contents = constructReturnValueString(returnValueParts);
1904
2016
  if (mockNameParts.length > 1) {
1905
2017
  const originalLib = `${mockNameParts[0]}__cyOriginal`;
@@ -1961,15 +2073,24 @@ options) {
1961
2073
  const nameAssignment = isErrorSubclass
1962
2074
  ? `this.name = '${baseMockName}';`
1963
2075
  : '';
1964
- // Use the safe function name for the class definition
1965
- const className = mockNameIsCallSignature
1966
- ? derivedFunctionName
1967
- : baseMockName;
2076
+ // Use the base class name for the class definition, not the call-signature-derived name.
2077
+ // When mockName is "StatsCalculator(supabase)", baseMockName is "StatsCalculator"
2078
+ // and derivedFunctionName would be "StatsCalculator_supabase" which is wrong.
2079
+ // Classes are instantiated with `new ClassName(args)` so the name must match the original.
2080
+ const className = baseMockName;
2081
+ // Use the already-generated contents (which has proper function wrappers for methods)
2082
+ // instead of raw scenarios().data() which would create non-callable string-keyed properties.
2083
+ // For classes with methods like calculateStats(), the contents will have:
2084
+ // { calculateStats: (...args) => scenarios().data()?.["key"]?.["calculateStats(...)"], ... }
2085
+ // which makes methods callable on the instance.
2086
+ const classContents = enhancedContents.trim().startsWith('{')
2087
+ ? enhancedContents
2088
+ : `scenarios().data()?.${quotePropertyKey(dataKey)} || {}`;
1968
2089
  return `class ${className}${isErrorSubclass ? ' extends Error' : ''} {
1969
2090
  constructor(message) {
1970
2091
  ${superCall}
1971
2092
  ${nameAssignment}
1972
- Object.assign(this, scenarios().data()?.${quotePropertyKey(dataKey)} || {});
2093
+ Object.assign(this, ${classContents});
1973
2094
  }
1974
2095
  }`;
1975
2096
  }
@@ -2047,7 +2168,19 @@ options) {
2047
2168
  const safeReturnValue = isSimpleDataPath
2048
2169
  ? `${returnValue} ?? {}`
2049
2170
  : returnValue;
2050
- return `${isRootAsyncFunction ? 'async ' : ''}function ${safeFunctionName}(...args) {\n${indent(`return ${safeReturnValue};`)}\n}`;
2171
+ const refName = `_${safeFunctionName}Ref`;
2172
+ const assignment = `${refName}.current = ${safeReturnValue};`;
2173
+ const ifBlock = `if (!${refName}.current) {\n${indent(assignment)}\n}`;
2174
+ const body = `${ifBlock}\nreturn ${refName}.current;`;
2175
+ return [
2176
+ `// PATCHED: memoize to return stable reference (prevents infinite useEffect re-triggers)`,
2177
+ `const ${refName} = {`,
2178
+ ` current: null,`,
2179
+ `};`,
2180
+ `${isRootAsyncFunction ? 'async ' : ''}function ${safeFunctionName}(...args) {`,
2181
+ indent(body),
2182
+ `}`,
2183
+ ].join('\n');
2051
2184
  }
2052
2185
  else {
2053
2186
  // Generate safe const name: