@codeyam/codeyam-cli 0.1.0-staging.7c30edc → 0.1.0-staging.7ec08ee

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 (911) 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 +14 -0
  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/completionCall.ts +114 -113
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +295 -14
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +29 -18
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  18. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +15 -6
  19. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  20. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +96 -33
  21. package/analyzer-template/packages/analyze/index.ts +4 -1
  22. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  23. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  24. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  25. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +46 -2
  26. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +14 -37
  27. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  28. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +22 -6
  29. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  30. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  31. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  32. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  33. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  34. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  35. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  36. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +50 -25
  37. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +322 -58
  38. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  39. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1712 -1394
  40. package/analyzer-template/packages/aws/package.json +10 -10
  41. package/analyzer-template/packages/database/index.ts +1 -0
  42. package/analyzer-template/packages/database/package.json +4 -4
  43. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  44. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  45. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  46. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  47. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  48. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  49. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  50. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  51. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  52. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  53. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  54. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  55. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  56. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  57. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  58. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  59. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  61. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  67. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  68. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  69. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  70. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  71. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  73. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  76. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  78. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  79. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  80. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  81. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  82. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  83. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  84. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  86. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  87. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  89. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  92. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  95. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  97. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  98. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  99. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  100. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  101. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  102. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  103. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  104. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  105. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  107. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  108. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  109. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  110. package/analyzer-template/packages/github/package.json +1 -1
  111. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  112. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  113. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  114. package/analyzer-template/packages/ui-components/package.json +1 -1
  115. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  116. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  118. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  119. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  120. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  121. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  122. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  123. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  124. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  125. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +120 -4
  126. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  127. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +148 -3
  128. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  129. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  130. package/analyzer-template/project/constructMockCode.ts +170 -50
  131. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  132. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  133. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  134. package/analyzer-template/project/start.ts +3 -0
  135. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  136. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  137. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  138. package/analyzer-template/project/writeScenarioComponents.ts +110 -17
  139. package/analyzer-template/tsconfig.json +13 -1
  140. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  141. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  142. package/background/src/lib/virtualized/project/constructMockCode.js +145 -41
  143. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  144. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  145. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  146. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  147. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  148. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  149. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  150. package/background/src/lib/virtualized/project/start.js +2 -0
  151. package/background/src/lib/virtualized/project/start.js.map +1 -1
  152. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  153. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  154. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  155. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  156. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  157. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  158. package/background/src/lib/virtualized/project/writeScenarioComponents.js +83 -12
  159. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  160. package/codeyam-cli/scripts/apply-setup.js +209 -12
  161. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  162. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  163. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  164. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  165. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  166. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  167. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  168. package/codeyam-cli/src/cli.js +56 -25
  169. package/codeyam-cli/src/cli.js.map +1 -1
  170. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  171. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  172. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  173. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  174. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  175. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  176. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  177. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  178. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  179. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  180. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  181. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  182. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +137 -47
  183. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  184. package/codeyam-cli/src/commands/analyze.js +19 -9
  185. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  186. package/codeyam-cli/src/commands/default.js +20 -3
  187. package/codeyam-cli/src/commands/default.js.map +1 -1
  188. package/codeyam-cli/src/commands/editor.js +6313 -0
  189. package/codeyam-cli/src/commands/editor.js.map +1 -0
  190. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  191. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  192. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  193. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  194. package/codeyam-cli/src/commands/init.js +129 -45
  195. package/codeyam-cli/src/commands/init.js.map +1 -1
  196. package/codeyam-cli/src/commands/memory.js +89 -75
  197. package/codeyam-cli/src/commands/memory.js.map +1 -1
  198. package/codeyam-cli/src/commands/setup-simulations.js +1 -1
  199. package/codeyam-cli/src/commands/telemetry.js +37 -0
  200. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  201. package/codeyam-cli/src/commands/verify.js +12 -2
  202. package/codeyam-cli/src/commands/verify.js.map +1 -1
  203. package/codeyam-cli/src/data/designSystems.js +27 -0
  204. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  205. package/codeyam-cli/src/data/techStacks.js +77 -0
  206. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  207. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  208. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  209. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  210. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  211. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +226 -0
  212. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  213. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  214. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  215. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +4160 -0
  216. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  217. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  218. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  219. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  220. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  221. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  222. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  223. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  224. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  225. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  226. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  227. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  228. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  229. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  230. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  231. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  232. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  233. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  234. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  235. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  236. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  237. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  238. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  239. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  240. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  241. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  242. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  243. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  244. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  245. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +361 -0
  246. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  247. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +250 -0
  248. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  249. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
  250. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  251. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  252. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  253. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +411 -0
  254. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  255. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1768 -0
  256. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  257. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +413 -0
  258. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  259. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  260. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  261. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  262. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  263. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  264. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  265. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2121 -0
  266. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  267. package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
  268. package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
  269. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  270. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  271. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  272. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  273. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
  274. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
  275. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  276. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  277. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  278. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  279. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  280. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  281. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  282. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  283. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  284. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  285. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  286. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  287. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  288. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  289. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  290. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  291. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  292. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  293. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  294. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  295. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  296. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  297. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  298. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  299. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +62 -15
  300. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  301. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  302. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  303. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  304. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  305. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  306. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  307. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +148 -0
  308. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  309. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  310. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  311. package/codeyam-cli/src/utils/analyzer.js +19 -0
  312. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  313. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  314. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  315. package/codeyam-cli/src/utils/backgroundServer.js +193 -34
  316. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  317. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  318. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  319. package/codeyam-cli/src/utils/database.js +37 -2
  320. package/codeyam-cli/src/utils/database.js.map +1 -1
  321. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  322. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  323. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  324. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  325. package/codeyam-cli/src/utils/devServerState.js +103 -0
  326. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  327. package/codeyam-cli/src/utils/editorApi.js +95 -0
  328. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  329. package/codeyam-cli/src/utils/editorAudit.js +849 -0
  330. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  331. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  332. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  333. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  334. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  335. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  336. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  337. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  338. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  339. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  340. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  341. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  342. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  343. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  344. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  345. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  346. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  347. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  348. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  349. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  350. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  351. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  352. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  353. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  354. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  355. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  356. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  357. package/codeyam-cli/src/utils/editorPreview.js +139 -0
  358. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  359. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  360. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  361. package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
  362. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  363. package/codeyam-cli/src/utils/editorScenarioSwitch.js +149 -0
  364. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  365. package/codeyam-cli/src/utils/editorScenarios.js +687 -0
  366. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  367. package/codeyam-cli/src/utils/editorSeedAdapter.js +475 -0
  368. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  369. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  370. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  371. package/codeyam-cli/src/utils/entityChangeStatus.js +394 -0
  372. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  373. package/codeyam-cli/src/utils/entityChangeStatus.server.js +227 -0
  374. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  375. package/codeyam-cli/src/utils/envFile.js +90 -0
  376. package/codeyam-cli/src/utils/envFile.js.map +1 -0
  377. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  378. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  379. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  380. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  381. package/codeyam-cli/src/utils/generateReport.js +2 -2
  382. package/codeyam-cli/src/utils/git.js +103 -0
  383. package/codeyam-cli/src/utils/git.js.map +1 -1
  384. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  385. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  386. package/codeyam-cli/src/utils/handoffContext.js +257 -0
  387. package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
  388. package/codeyam-cli/src/utils/install-skills.js +106 -20
  389. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  390. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  391. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  392. package/codeyam-cli/src/utils/labsAutoCheck.js +0 -29
  393. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -1
  394. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  395. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  396. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  397. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  398. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  399. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  400. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  401. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  402. package/codeyam-cli/src/utils/progress.js +2 -2
  403. package/codeyam-cli/src/utils/progress.js.map +1 -1
  404. package/codeyam-cli/src/utils/project.js +15 -5
  405. package/codeyam-cli/src/utils/project.js.map +1 -1
  406. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  407. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  408. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  409. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  410. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  411. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  412. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  413. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  414. package/codeyam-cli/src/utils/queue/job.js +105 -7
  415. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  416. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  417. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  418. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  419. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  420. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  421. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  422. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  423. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  424. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  425. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  426. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  427. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  428. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  429. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  430. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +2 -4
  431. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  432. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  433. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  434. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +1 -1
  435. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  436. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  437. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  438. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  439. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  440. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  441. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  442. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  443. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  444. package/codeyam-cli/src/utils/rules/index.js +1 -0
  445. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  446. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  447. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  448. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  449. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  450. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  451. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  452. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  453. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  454. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  455. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  456. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  457. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  458. package/codeyam-cli/src/utils/scenariosManifest.js +313 -0
  459. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  460. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  461. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  462. package/codeyam-cli/src/utils/serverState.js +57 -2
  463. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  464. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +90 -18
  465. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  466. package/codeyam-cli/src/utils/simulationGateMiddleware.js +175 -0
  467. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  468. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  469. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  470. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  471. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  472. package/codeyam-cli/src/utils/techStackConfig.js +38 -0
  473. package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
  474. package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
  475. package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
  476. package/codeyam-cli/src/utils/telemetry.js +106 -0
  477. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  478. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  479. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  480. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  481. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  482. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  483. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  484. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  485. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  486. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  487. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  488. package/codeyam-cli/src/utils/testRunner.js +350 -0
  489. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  490. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  491. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  492. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  493. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  494. package/codeyam-cli/src/utils/webappDetection.js +38 -3
  495. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  496. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +99 -0
  497. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  498. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +153 -0
  499. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  500. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  501. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  502. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  503. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  504. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +1000 -0
  505. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  506. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +315 -0
  507. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  508. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  509. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  510. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  511. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  512. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  513. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  514. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  515. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  516. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  517. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  518. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  519. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  520. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  521. package/codeyam-cli/src/webserver/backgroundServer.js +166 -48
  522. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  523. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  524. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  525. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DTBZZfSk.js +1 -0
  526. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-B86KKU7e.js → EntityItem-BxclONWq.js} +5 -5
  527. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  528. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BqY8gDAW.js → EntityTypeIcon-BsnEOJZ_.js} +9 -9
  529. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ByaELMbv.js +1 -0
  530. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-6WjVfhxX.js +25 -0
  531. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-ChX-Hp7W.js +3 -0
  532. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-Bs7Nn1Jr.js → LoadingDots-By5zI316.js} +1 -1
  533. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Bm3PmcCz.js → LogViewer-C-9zQdXg.js} +3 -3
  534. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-Bs2_Oua4.js +36 -0
  535. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C6PKeMYR.js → ReportIssueModal-DQsceHVv.js} +4 -4
  536. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DThcm_9M.js +1 -0
  537. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BNLaXBHR.js → ScenarioViewer-Cl4oOA3A.js} +3 -3
  538. package/codeyam-cli/src/webserver/build/client/assets/Spinner-CIil5-gb.js +34 -0
  539. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  540. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BqkA9zyZ.js +1 -0
  541. package/codeyam-cli/src/webserver/build/client/assets/{_index-B3TDXxnk.js → _index-DnOgyseQ.js} +4 -4
  542. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BtBFH820.js → activity.(_tab)-DqM9hbNE.js} +8 -8
  543. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  544. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  545. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-C58dYPwR.js +1 -0
  546. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  547. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8NCeOrm.js +22 -0
  548. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  549. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  550. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  551. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  552. package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
  553. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  554. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  555. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  556. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  557. package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
  558. package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
  559. package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
  560. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  561. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  562. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  563. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  564. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  565. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  566. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  567. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  568. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  569. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  570. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  571. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  572. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  573. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  574. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  575. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  576. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  577. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  578. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  579. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  580. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  581. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  582. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  583. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  584. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  585. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  586. package/codeyam-cli/src/webserver/build/client/assets/{book-open-PttOB2SF.js → book-open-BFSIqZgO.js} +2 -2
  587. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-TJp6ofnp.js → chevron-down-B9fDzFVh.js} +2 -2
  588. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  589. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CXhHQYrI.js → circle-check-DLPObLUx.js} +2 -2
  590. package/codeyam-cli/src/webserver/build/client/assets/{copy-6y9ALfGT.js → copy-DXEmO0TD.js} +3 -3
  591. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BwyFiRot.js +41 -0
  592. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  593. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  594. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-iRhRIFlp.js +1 -0
  595. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  596. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DhtVC4aI.js +161 -0
  597. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-C6fEYHrh.js +41 -0
  598. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-n38keI1k.js → entity._sha._-pc-vc6wO.js} +14 -13
  599. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js +6 -0
  600. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js +6 -0
  601. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BTcpgIpC.js +6 -0
  602. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-38yPijoD.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +2 -2
  603. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-BSHEfydn.js → entry.client-j1Vi0bco.js} +6 -6
  604. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  605. package/codeyam-cli/src/webserver/build/client/assets/files-kuny2Q_s.js +1 -0
  606. package/codeyam-cli/src/webserver/build/client/assets/git-DgCZPMie.js +1 -0
  607. package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
  608. package/codeyam-cli/src/webserver/build/client/assets/{index-CcsFv748.js → index-BliGSSpl.js} +1 -1
  609. package/codeyam-cli/src/webserver/build/client/assets/index-SqjQKTdH.js +15 -0
  610. package/codeyam-cli/src/webserver/build/client/assets/{index-ChN9-fAY.js → index-vyrZD2g4.js} +1 -1
  611. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  612. package/codeyam-cli/src/webserver/build/client/assets/labs-c3yLxSEp.js +1 -0
  613. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CTqLEAGU.js → loader-circle-D-q28GLF.js} +2 -2
  614. package/codeyam-cli/src/webserver/build/client/assets/manifest-79d0d81a.js +1 -0
  615. package/codeyam-cli/src/webserver/build/client/assets/memory-CEWIUC4t.js +101 -0
  616. package/codeyam-cli/src/webserver/build/client/assets/{pause-D6vreykR.js → pause-BP6fitdh.js} +3 -3
  617. package/codeyam-cli/src/webserver/build/client/assets/root-L2V0jea7.js +80 -0
  618. package/codeyam-cli/src/webserver/build/client/assets/{search-B8VUL8nl.js → search-BooqacKS.js} +2 -2
  619. package/codeyam-cli/src/webserver/build/client/assets/settings-BM0nbryO.js +1 -0
  620. package/codeyam-cli/src/webserver/build/client/assets/simulations-ovy6FjRY.js +1 -0
  621. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BrCP7uQo.js → terminal-DHemCJIs.js} +3 -3
  622. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BZz2NjYa.js → triangle-alert-D87ekDl8.js} +2 -2
  623. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dk0Tciqg.js +1 -0
  624. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C8QvIe05.js +2 -0
  625. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-jkCytuYz.js +1 -0
  626. package/codeyam-cli/src/webserver/build/client/assets/useToast-BgqkixU9.js +1 -0
  627. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  628. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  629. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-QgInFGdU.js +16 -0
  630. package/codeyam-cli/src/webserver/build/server/assets/index-zblh9auj.js +1 -0
  631. package/codeyam-cli/src/webserver/build/server/assets/init-DaE0CBjk.js +14 -0
  632. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  633. package/codeyam-cli/src/webserver/build/server/assets/server-build-CNvgz1cC.js +853 -0
  634. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  635. package/codeyam-cli/src/webserver/build-info.json +5 -5
  636. package/codeyam-cli/src/webserver/devServer.js +39 -5
  637. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  638. package/codeyam-cli/src/webserver/editorProxy.js +1263 -0
  639. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  640. package/codeyam-cli/src/webserver/idleDetector.js +130 -0
  641. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  642. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  643. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  644. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  645. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  646. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +283 -0
  647. package/codeyam-cli/src/webserver/server.js +446 -1
  648. package/codeyam-cli/src/webserver/server.js.map +1 -1
  649. package/codeyam-cli/src/webserver/terminalServer.js +1043 -0
  650. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  651. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  652. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  653. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  654. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  655. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  656. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  657. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  658. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  659. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  660. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  661. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  662. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  663. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  664. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  665. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  666. package/codeyam-cli/templates/codeyam-editor-claude.md +149 -0
  667. package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
  668. package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
  669. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  670. package/codeyam-cli/templates/{codeyam:diagnose.md → commands/codeyam-diagnose.md} +1 -1
  671. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  672. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  673. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  674. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  675. package/codeyam-cli/templates/editor-step-hook.py +368 -0
  676. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +288 -0
  677. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  678. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  679. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +15 -0
  680. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  681. package/codeyam-cli/templates/expo-react-native/app.json +29 -0
  682. package/codeyam-cli/templates/expo-react-native/babel.config.js +10 -0
  683. package/codeyam-cli/templates/expo-react-native/gitignore +14 -0
  684. package/codeyam-cli/templates/expo-react-native/global.css +10 -0
  685. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  686. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  687. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  688. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  689. package/codeyam-cli/templates/expo-react-native/package.json +54 -0
  690. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  691. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  692. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  693. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  694. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  695. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  696. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  697. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  698. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  699. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  700. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  701. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  702. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  703. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  704. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  705. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  706. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  707. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  708. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  709. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  710. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  711. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  712. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  713. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  714. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +65 -0
  715. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  716. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  717. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  718. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  719. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  720. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  721. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  722. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  723. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  724. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  725. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  726. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  727. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  728. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  729. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  730. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  731. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  732. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  733. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  734. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  735. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  736. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  737. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  738. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  739. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  740. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  741. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  742. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  743. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  744. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  745. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  746. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  747. package/codeyam-cli/templates/rule-reflection-hook.py +25 -5
  748. package/codeyam-cli/templates/rules-instructions.md +34 -88
  749. package/codeyam-cli/templates/seed-adapters/supabase.ts +475 -0
  750. package/codeyam-cli/templates/{codeyam:debug.md → skills/codeyam-debug/SKILL.md} +1 -1
  751. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  752. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +244 -0
  753. package/codeyam-cli/templates/{codeyam:memory.md → skills/codeyam-memory/SKILL.md} +222 -3
  754. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  755. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  756. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  757. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  758. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  759. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  760. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  761. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  762. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  763. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  764. package/codeyam-cli/templates/{codeyam:new-rule.md → skills/codeyam-new-rule/SKILL.md} +1 -3
  765. package/codeyam-cli/templates/{codeyam:setup.md → skills/codeyam-setup/SKILL.md} +1 -1
  766. package/codeyam-cli/templates/{codeyam:sim.md → skills/codeyam-sim/SKILL.md} +1 -1
  767. package/codeyam-cli/templates/{codeyam:test.md → skills/codeyam-test/SKILL.md} +1 -1
  768. package/codeyam-cli/templates/{codeyam:verify.md → skills/codeyam-verify/SKILL.md} +1 -1
  769. package/package.json +28 -20
  770. package/packages/ai/index.js +1 -1
  771. package/packages/ai/index.js.map +1 -1
  772. package/packages/ai/src/lib/analyzeScope.js +14 -0
  773. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  774. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  775. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  776. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  777. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  778. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  779. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  780. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  781. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  782. package/packages/ai/src/lib/completionCall.js +10 -7
  783. package/packages/ai/src/lib/completionCall.js.map +1 -1
  784. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +261 -13
  785. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  786. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  787. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  788. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  789. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  790. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  791. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  792. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +24 -16
  793. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  794. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  795. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  796. package/packages/ai/src/lib/dataStructureChunking.js +9 -5
  797. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  798. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  799. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  800. package/packages/ai/src/lib/generateExecutionFlows.js +81 -11
  801. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  802. package/packages/analyze/index.js +1 -1
  803. package/packages/analyze/index.js.map +1 -1
  804. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  805. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  806. package/packages/analyze/src/lib/asts/index.js +4 -2
  807. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  808. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  809. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  810. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +27 -3
  811. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  812. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +14 -27
  813. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  814. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  815. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  816. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +12 -2
  817. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  818. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  819. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  820. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  821. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  822. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  823. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  824. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  825. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  826. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  827. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  828. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  829. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  830. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  831. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  832. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +42 -13
  833. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  834. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +185 -28
  835. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  836. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  837. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  838. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1388 -1143
  839. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  840. package/packages/database/index.js +1 -0
  841. package/packages/database/index.js.map +1 -1
  842. package/packages/database/src/lib/kysely/db.js +5 -0
  843. package/packages/database/src/lib/kysely/db.js.map +1 -1
  844. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  845. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  846. package/packages/database/src/lib/loadAnalysis.js +7 -1
  847. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  848. package/packages/database/src/lib/loadCommits.js +23 -13
  849. package/packages/database/src/lib/loadCommits.js.map +1 -1
  850. package/packages/database/src/lib/loadEntities.js +0 -6
  851. package/packages/database/src/lib/loadEntities.js.map +1 -1
  852. package/packages/database/src/lib/loadEntity.js +5 -5
  853. package/packages/database/src/lib/loadEntity.js.map +1 -1
  854. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  855. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  856. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  857. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  858. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  859. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  860. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  861. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  862. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  863. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  864. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  865. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  866. package/packages/types/src/enums/ProjectFramework.js +2 -0
  867. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  868. package/packages/utils/src/lib/fs/rsyncCopy.js +120 -4
  869. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  870. package/scripts/npm-post-install.cjs +34 -0
  871. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  872. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  873. package/codeyam-cli/src/commands/list.js +0 -31
  874. package/codeyam-cli/src/commands/list.js.map +0 -1
  875. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  876. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  877. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  878. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  879. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CA3JxPb7.js +0 -1
  880. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-B5ctlSYt.js +0 -1
  881. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ClaLpuOo.js +0 -34
  882. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-BDhPilK7.js +0 -25
  883. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-VeqEBv9v.js +0 -3
  884. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-Gq3Ocjo6.js +0 -1
  885. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CiwXDxLh.js +0 -1
  886. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-CN61MOMa.js +0 -11
  887. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-JE9ZIoBl.js +0 -51
  888. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-Ca9fAY46.js +0 -21
  889. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  890. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C5lqplTC.js +0 -1
  891. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js +0 -6
  892. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DGgZjdFg.js +0 -6
  893. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-DCPhhSMo.js +0 -1
  894. package/codeyam-cli/src/webserver/build/client/assets/files-0N0YJQv7.js +0 -1
  895. package/codeyam-cli/src/webserver/build/client/assets/git-DXnyr8uP.js +0 -15
  896. package/codeyam-cli/src/webserver/build/client/assets/globals-CuCsBc3b.css +0 -1
  897. package/codeyam-cli/src/webserver/build/client/assets/labs-CB3MGcys.js +0 -1
  898. package/codeyam-cli/src/webserver/build/client/assets/manifest-de6ccaf4.js +0 -1
  899. package/codeyam-cli/src/webserver/build/client/assets/memory-DCA-kLYt.js +0 -81
  900. package/codeyam-cli/src/webserver/build/client/assets/root-F7e6dvys.js +0 -62
  901. package/codeyam-cli/src/webserver/build/client/assets/settings-BejnUJ6R.js +0 -1
  902. package/codeyam-cli/src/webserver/build/client/assets/simulations-CPoAg7Zo.js +0 -1
  903. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DNwUduNu.js +0 -1
  904. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-COky1GVF.js +0 -2
  905. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-CpZgwliL.js +0 -1
  906. package/codeyam-cli/src/webserver/build/client/assets/useToast-Bv9JFvUO.js +0 -1
  907. package/codeyam-cli/src/webserver/build/server/assets/index-CFKHuovO.js +0 -1
  908. package/codeyam-cli/src/webserver/build/server/assets/server-build-BQe9Dh4p.js +0 -260
  909. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  910. package/scripts/finalize-analyzer.cjs +0 -13
  911. /package/codeyam-cli/src/webserver/build/client/assets/{api.labs-survey-l0sNRNKZ.js → api.dev-mode-events-l0sNRNKZ.js} +0 -0
@@ -6,7 +6,7 @@ import { ScopeNode, ScopeDataStructure } from '../ScopeDataStructure';
6
6
 
7
7
  type PrimitiveKind = 'array' | 'string' | 'number' | 'boolean' | 'date';
8
8
 
9
- const IGNORE_CLASSES_AND_OBJECTS = [
9
+ const IGNORE_CLASSES_AND_OBJECTS_SET = new Set([
10
10
  'Math',
11
11
  'JSON',
12
12
  'Reflect',
@@ -22,7 +22,7 @@ const IGNORE_CLASSES_AND_OBJECTS = [
22
22
  'useContext',
23
23
  'useReducer',
24
24
  'useLayoutEffect',
25
- ];
25
+ ]);
26
26
 
27
27
  /** cache the tokenised representation of every path we touch */
28
28
  const partsCache = new Map<string, string[]>();
@@ -147,16 +147,26 @@ function scrub(
147
147
  rootTable: Map<string, PrimitiveKind>,
148
148
  onRemove: (key: string) => void,
149
149
  ): void {
150
- const sortedKeys = Object.keys(mapping).sort((a, b) => a.localeCompare(b));
150
+ // Early exit: if no primitive types exist in the schema, there are no
151
+ // built-in methods to clean. Saves sorting + walking 10K+ keys.
152
+ if (rootTable.size === 0) return;
153
+
154
+ // Use direct comparison instead of localeCompare (3-5x faster for large arrays)
155
+ const sortedKeys = Object.keys(mapping).sort((a, b) =>
156
+ a < b ? -1 : a > b ? 1 : 0,
157
+ );
151
158
 
152
159
  for (const keyPath of sortedKeys) {
153
160
  const keyParts = getParts(keyPath);
154
161
  const prefixParts = buildPrefixParts(keyParts);
155
162
 
163
+ const firstPart = keyParts[0];
164
+ const firstPartBase = firstPart.includes('(')
165
+ ? firstPart.split('(')[0]
166
+ : firstPart;
156
167
  if (
157
- IGNORE_CLASSES_AND_OBJECTS.find(
158
- (m) => keyParts[0] === m || keyParts[0].startsWith(`${m}(`),
159
- )
168
+ IGNORE_CLASSES_AND_OBJECTS_SET.has(firstPart) ||
169
+ IGNORE_CLASSES_AND_OBJECTS_SET.has(firstPartBase)
160
170
  ) {
161
171
  delete mapping[keyPath];
162
172
  continue;
@@ -0,0 +1,62 @@
1
+ /**
2
+ * Coerces primitive values to empty arrays when the schema expects an array.
3
+ *
4
+ * The LLM sometimes generates a primitive (boolean, number, string) where the
5
+ * schema expects an array. For example:
6
+ * Schema: { webapps: [{ name: "string" }] }
7
+ * LLM output: { webapps: true }
8
+ *
9
+ * This causes runtime errors like `TypeError: config.webapps?.forEach is not a function`
10
+ * because the code expects an array but gets a boolean.
11
+ *
12
+ * Coercion rule:
13
+ * - primitive → array: replace with []
14
+ *
15
+ * Null and undefined values are preserved (they may be intentionally nullable).
16
+ *
17
+ * @param data The mock data object to coerce (mutated in place)
18
+ * @param schema The schema describing expected types
19
+ */
20
+ export default function coercePrimitivesToArraysBySchema<T>(
21
+ data: T,
22
+ schema: unknown,
23
+ ): T {
24
+ if (data === null || data === undefined) {
25
+ return data;
26
+ }
27
+
28
+ if (typeof data !== 'object') {
29
+ return data;
30
+ }
31
+
32
+ if (Array.isArray(data)) {
33
+ const itemSchema = Array.isArray(schema) ? schema[0] : undefined;
34
+ for (let i = 0; i < data.length; i++) {
35
+ data[i] = coercePrimitivesToArraysBySchema(data[i], itemSchema);
36
+ }
37
+ return data;
38
+ }
39
+
40
+ const dataObj = data as Record<string, unknown>;
41
+ const schemaObj = schema as Record<string, unknown> | undefined;
42
+
43
+ for (const key of Object.keys(dataObj)) {
44
+ const value = dataObj[key];
45
+ const fieldSchema = schemaObj?.[key];
46
+
47
+ if (value === null || value === undefined) {
48
+ continue;
49
+ }
50
+
51
+ if (typeof value !== 'object' && Array.isArray(fieldSchema)) {
52
+ // Schema expects an array but the value is a primitive.
53
+ // Replace with an empty array.
54
+ dataObj[key] = [];
55
+ } else if (typeof value === 'object' && value !== null) {
56
+ // Both value and schema are objects — recurse
57
+ coercePrimitivesToArraysBySchema(value, fieldSchema);
58
+ }
59
+ }
60
+
61
+ return data;
62
+ }
@@ -14,35 +14,46 @@ const isStandaloneIndex = (s?: string) => !!s && STANDALONE_INDEX_RE.test(s);
14
14
  // The regex matches any path ending with .length that has [] somewhere before it
15
15
  const DYNAMIC_LENGTH_RE = /\[\].*\.length$/;
16
16
 
17
- // Treat these as structural placeholders (don't commit them as concrete leaves)
18
- function isSkippableLeafType(t: string) {
19
- // 'unknown' by itself is a placeholder (but 'boolean | unknown' is not)
20
- // Also handles optional variants like 'object | undefined', 'object | null',
21
- // 'array | undefined', etc. these are still structural placeholders that
22
- // should not overwrite already-populated structures.
17
+ // Cache for type string analysis to avoid repeated split/filter operations.
18
+ // These functions are called multiple times per path segment across thousands of paths.
19
+ const typeAnalysisCache = new Map<
20
+ string,
21
+ { isSkippable: boolean; baseType: string; isNullable: boolean }
22
+ >();
23
+
24
+ function getTypeAnalysis(t: string) {
25
+ const cached = typeAnalysisCache.get(t);
26
+ if (cached) return cached;
23
27
  const parts = t.split('|').map((s) => s.trim());
24
28
  const base = parts.filter((s) => s !== 'undefined' && s !== 'null');
25
- return (
26
- base.length === 1 &&
27
- (base[0] === 'object' ||
28
- base[0] === 'array' ||
29
- base[0] === 'function' ||
30
- base[0] === 'unknown')
31
- );
29
+ const result = {
30
+ isSkippable:
31
+ base.length === 1 &&
32
+ (base[0] === 'object' ||
33
+ base[0] === 'array' ||
34
+ base[0] === 'function' ||
35
+ base[0] === 'unknown'),
36
+ baseType: base[0],
37
+ isNullable: parts.includes('undefined') || parts.includes('null'),
38
+ };
39
+ typeAnalysisCache.set(t, result);
40
+ return result;
41
+ }
42
+
43
+ // Treat these as structural placeholders (don't commit them as concrete leaves)
44
+ function isSkippableLeafType(t: string) {
45
+ return getTypeAnalysis(t).isSkippable;
32
46
  }
33
47
 
34
48
  // Extract the base structural type from a potentially nullable type string.
35
49
  // e.g., 'object | undefined' → 'object', 'array | null' → 'array'
36
50
  function getBaseSkippableType(t: string): string {
37
- const parts = t.split('|').map((s) => s.trim());
38
- const base = parts.filter((s) => s !== 'undefined' && s !== 'null');
39
- return base[0];
51
+ return getTypeAnalysis(t).baseType;
40
52
  }
41
53
 
42
54
  // Check if a type string has nullable annotations (| undefined or | null)
43
55
  function isNullableType(t: string): boolean {
44
- const parts = t.split('|').map((s) => s.trim());
45
- return parts.includes('undefined') || parts.includes('null');
56
+ return getTypeAnalysis(t).isNullable;
46
57
  }
47
58
 
48
59
  // Matches paths containing [][] — e.g., "items[][]" or "items[][].text"
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Recursively strips `_nullable` keys from LLM-generated mock data.
3
+ *
4
+ * The `_nullable` marker is an internal CodeYam concept used in type definitions
5
+ * to indicate that a field can be null/undefined. The LLM sometimes includes
6
+ * these markers in its generated scenario data, which causes runtime errors
7
+ * when code iterates over object keys (e.g., `Object.keys(importedBy)` picks
8
+ * up `_nullable` as a key alongside real data).
9
+ *
10
+ * This function mutates the input object in-place, consistent with other
11
+ * post-processing helpers like `convertNullToUndefinedBySchema`.
12
+ */
13
+ export default function stripNullableMarkers(
14
+ data: Record<string, unknown>,
15
+ ): void {
16
+ if (data == null || typeof data !== 'object') return;
17
+
18
+ // Delete _nullable from this level
19
+ if ('_nullable' in data) {
20
+ delete data._nullable;
21
+ }
22
+
23
+ // Recurse into nested objects and arrays
24
+ for (const value of Object.values(data)) {
25
+ if (Array.isArray(value)) {
26
+ for (const item of value) {
27
+ if (item !== null && typeof item === 'object' && !Array.isArray(item)) {
28
+ stripNullableMarkers(item as Record<string, unknown>);
29
+ }
30
+ }
31
+ } else if (value !== null && typeof value === 'object') {
32
+ stripNullableMarkers(value as Record<string, unknown>);
33
+ }
34
+ }
35
+ }
@@ -4,10 +4,10 @@ import type { ExecutionFlow, ScenariosDataStructure } from '~codeyam/types';
4
4
  type RequiredValue = NonNullable<ExecutionFlow['requiredValues']>[number];
5
5
 
6
6
  const DEFAULT_MAX_CHUNK_SIZE = 10_000; // ~10K chars per chunk
7
+ const DEFAULT_MAX_KEYS_PER_CHUNK = 20;
7
8
 
8
9
  export interface ChunkOptions {
9
10
  maxChunkSize?: number;
10
- /** @deprecated Use maxChunkSize instead. Kept for backward compatibility in tests. */
11
11
  maxKeysPerChunk?: number;
12
12
  }
13
13
 
@@ -33,16 +33,19 @@ export function chunkDataStructure(
33
33
  return [dataForMocks];
34
34
  }
35
35
 
36
- const { maxChunkSize = DEFAULT_MAX_CHUNK_SIZE } = options;
36
+ const {
37
+ maxChunkSize = DEFAULT_MAX_CHUNK_SIZE,
38
+ maxKeysPerChunk = DEFAULT_MAX_KEYS_PER_CHUNK,
39
+ } = options;
37
40
  const keys = Object.keys(dataForMocks);
38
41
 
39
42
  // Calculate total size to see if chunking is needed
40
43
  const totalSize = JSON.stringify(dataForMocks).length;
41
- if (totalSize <= maxChunkSize) {
44
+ if (totalSize <= maxChunkSize && keys.length <= maxKeysPerChunk) {
42
45
  return [dataForMocks];
43
46
  }
44
47
 
45
- // Greedily pack keys into chunks by cumulative size
48
+ // Greedily pack keys into chunks by cumulative size and key count
46
49
  const chunks: Array<ScenariosDataStructure['dataForMocks']> = [];
47
50
  let currentChunk: Record<string, unknown> = {};
48
51
  let currentSize = 0;
@@ -52,8 +55,14 @@ export function chunkDataStructure(
52
55
  (dataForMocks as Record<string, unknown>)[key],
53
56
  ).length;
54
57
 
55
- // If adding this key would exceed the limit AND chunk isn't empty, start a new chunk
56
- if (currentSize > 0 && currentSize + keySize > maxChunkSize) {
58
+ const currentKeyCount = Object.keys(currentChunk).length;
59
+
60
+ // If adding this key would exceed size or key count limit AND chunk isn't empty, start a new chunk
61
+ if (
62
+ currentSize > 0 &&
63
+ (currentSize + keySize > maxChunkSize ||
64
+ currentKeyCount >= maxKeysPerChunk)
65
+ ) {
57
66
  chunks.push(currentChunk as ScenariosDataStructure['dataForMocks']);
58
67
  currentChunk = {};
59
68
  currentSize = 0;
@@ -19,6 +19,8 @@ import convertNullToUndefinedBySchema from './dataStructure/helpers/convertNullT
19
19
  import convertTypeAnnotationsToValues from './dataStructure/helpers/convertTypeAnnotationsToValues';
20
20
  import fixNullIdsBySchema from './dataStructure/helpers/fixNullIdsBySchema';
21
21
  import coerceObjectsToPrimitivesBySchema from './dataStructure/helpers/coerceObjectsToPrimitivesBySchema';
22
+ import coercePrimitivesToArraysBySchema from './dataStructure/helpers/coercePrimitivesToArraysBySchema';
23
+ import stripNullableMarkers from './dataStructure/helpers/stripNullableMarkers';
22
24
  import { JsonTypeDefinition } from '~codeyam/types';
23
25
  import { deepMerge } from '~codeyam/generate';
24
26
  import {
@@ -172,6 +174,46 @@ function findKeyPath(
172
174
  return null;
173
175
  }
174
176
 
177
+ /**
178
+ * Strip primitive values from `source` when the `destination` already has an
179
+ * array or object at the same key. Returns a cleaned copy of source (or null
180
+ * if nothing remains after stripping).
181
+ *
182
+ * This prevents misplaced LLM data (e.g., `{ webapps: true }`) from
183
+ * overwriting correct complex values (e.g., `{ webapps: [...] }`) during
184
+ * deep merge in relocateMisplacedNestedKeys.
185
+ */
186
+ function stripPrimitivesOverwritingComplexValues(
187
+ destination: Record<string, unknown>,
188
+ source: unknown,
189
+ ): Record<string, unknown> | null {
190
+ if (typeof source !== 'object' || source === null || Array.isArray(source)) {
191
+ return null;
192
+ }
193
+
194
+ const result: Record<string, unknown> = {};
195
+ let hasKeys = false;
196
+
197
+ for (const key of Object.keys(source as Record<string, unknown>)) {
198
+ const srcVal = (source as Record<string, unknown>)[key];
199
+ const dstVal = destination[key];
200
+
201
+ // If destination has an array or object but source has a primitive, skip it
202
+ if (
203
+ typeof dstVal === 'object' &&
204
+ dstVal !== null &&
205
+ typeof srcVal !== 'object'
206
+ ) {
207
+ continue;
208
+ }
209
+
210
+ result[key] = srcVal;
211
+ hasKeys = true;
212
+ }
213
+
214
+ return hasKeys ? result : null;
215
+ }
216
+
175
217
  /**
176
218
  * Relocate misplaced nested keys in mockData to their correct position
177
219
  * based on the dataForMocks structure.
@@ -233,12 +275,22 @@ function relocateMisplacedNestedKeys(
233
275
  }
234
276
 
235
277
  // Deep merge the value into the correct location
236
- // Use deep merge to preserve existing data at that location
278
+ // Use deep merge to preserve existing data at that location.
279
+ // Before merging, strip primitives from the misplaced value that would
280
+ // overwrite arrays/objects at the destination. The misplaced data is lower
281
+ // quality — the LLM put it in the wrong place — so primitives like `true`
282
+ // should not overwrite correct complex values like arrays.
237
283
  if (current[key] !== undefined && typeof current[key] === 'object') {
238
- current[key] = deepMerge(
284
+ const safeValue = stripPrimitivesOverwritingComplexValues(
239
285
  current[key] as Record<string, unknown>,
240
286
  value as Record<string, unknown>,
241
287
  );
288
+ if (safeValue !== null) {
289
+ current[key] = deepMerge(
290
+ current[key] as Record<string, unknown>,
291
+ safeValue,
292
+ );
293
+ }
242
294
  } else {
243
295
  current[key] = value;
244
296
  }
@@ -1063,6 +1115,18 @@ export async function generateDataForScenario({
1063
1115
  );
1064
1116
  }
1065
1117
 
1118
+ // Strip _nullable markers from LLM-generated mock data.
1119
+ // The _nullable marker is an internal CodeYam concept used in type definitions
1120
+ // to indicate that a field can be null/undefined. The LLM sometimes includes
1121
+ // these markers in its generated data, which causes runtime errors when code
1122
+ // iterates over object keys (e.g., Object.keys(importedBy) picks up "_nullable",
1123
+ // then Object.keys(importedBy["_nullable"]) calls Object.keys(null) and throws).
1124
+ if (fullScenarioData.data.mockData) {
1125
+ stripNullableMarkers(
1126
+ fullScenarioData.data.mockData as Record<string, unknown>,
1127
+ );
1128
+ }
1129
+
1066
1130
  // Relocate misplaced nested keys to their correct position.
1067
1131
  // The LLM sometimes places nested keys at root level instead of inside their
1068
1132
  // parent object (e.g., 'fastener' at root instead of inside 'trpc').
@@ -1098,6 +1162,18 @@ export async function generateDataForScenario({
1098
1162
  );
1099
1163
  }
1100
1164
 
1165
+ // Coerce primitives to empty arrays when the schema expects an array.
1166
+ // The LLM sometimes generates a primitive (e.g., `webapps: true`) where the
1167
+ // schema expects an array (e.g., `webapps: [{ name: "string" }]`).
1168
+ // This causes runtime errors like "TypeError: config.webapps?.forEach is not a function".
1169
+ // Must run AFTER coerceObjectsToPrimitivesBySchema and BEFORE convertCommaSeparatedStringsToArrays.
1170
+ if (structure.dataForMocks && fullScenarioData.data.mockData) {
1171
+ coercePrimitivesToArraysBySchema(
1172
+ fullScenarioData.data.mockData,
1173
+ structure.dataForMocks,
1174
+ );
1175
+ }
1176
+
1101
1177
  // Convert comma-separated strings to arrays when appropriate.
1102
1178
  // The LLM sometimes generates strings like "color,size" instead of arrays
1103
1179
  // like ["color", "size"] when the schema type is incorrectly inferred as
@@ -32,6 +32,30 @@ import resolvePathToControllable from './resolvePathToControllable';
32
32
  import { AI } from '~codeyam/ai';
33
33
  import type { JsxRenderingUsage, ConditionalUsage } from './astScopes/types';
34
34
 
35
+ /**
36
+ * Patterns that indicate a child component is a modal/overlay/blocking element.
37
+ * Same patterns used in generateExecutionFlowsFromConditionalEffects.ts for
38
+ * state variable names — here applied to child component names.
39
+ */
40
+ const BLOCKING_CHILD_PATTERNS = [
41
+ /modal/i,
42
+ /overlay/i,
43
+ /dialog/i,
44
+ /popup/i,
45
+ /drawer/i,
46
+ /sheet/i,
47
+ /lightbox/i,
48
+ /backdrop/i,
49
+ ];
50
+
51
+ /**
52
+ * Check if a child component name suggests it's a blocking/modal element.
53
+ * Exported for testing.
54
+ */
55
+ export function isBlockingChildComponent(componentName: string): boolean {
56
+ return BLOCKING_CHILD_PATTERNS.some((pattern) => pattern.test(componentName));
57
+ }
58
+
35
59
  interface GenerateExecutionFlowsArgs {
36
60
  entity: Pick<Entity, 'sha' | 'name' | 'filePath' | 'code' | 'metadata'>;
37
61
  mergedDataStructure: Omit<DataStructure, 'equivalentSignatureVariables'>;
@@ -105,19 +129,6 @@ export default function generateExecutionFlows({
105
129
  fullToShortPathMap[fullPath] = shortPath;
106
130
  }
107
131
 
108
- console.log(
109
- `[generateExecutionFlows] ${entity.name}: attributesMap has ${Object.keys(resolvedAttributesMap).length} keys, fullToShortPathMap has ${Object.keys(fullToShortPathMap).length} entries`,
110
- );
111
- console.log(
112
- `[generateExecutionFlows] ${entity.name}: attributesMap keys: [${Object.keys(resolvedAttributesMap).join(', ')}]`,
113
- );
114
- console.log(
115
- `[generateExecutionFlows] ${entity.name}: fullToShortPathMap: ${JSON.stringify(fullToShortPathMap)}`,
116
- );
117
- console.log(
118
- `[generateExecutionFlows] ${entity.name}: equivalentSignatureVariables: ${JSON.stringify(equivalentSignatureVariables)}`,
119
- );
120
-
121
132
  // Get pre-computed conditional data from metadata
122
133
  const conditionalUsages: Record<string, ConditionalUsage[]> =
123
134
  entity.metadata?.isolatedDataStructure?.conditionalUsages ?? {};
@@ -162,26 +173,6 @@ export default function generateExecutionFlows({
162
173
  }
163
174
  }
164
175
 
165
- console.log(
166
- `[generateExecutionFlows] ${entity.name}: conditionalUsages keys: [${Object.keys(conditionalUsages).join(', ')}]`,
167
- );
168
- console.log(
169
- `[generateExecutionFlows] ${entity.name}: conditionalUsages sourceDataPaths: ${JSON.stringify(
170
- Object.fromEntries(
171
- Object.entries(conditionalUsages).map(([k, v]) => [
172
- k,
173
- (v as any[]).map((u: any) => u.sourceDataPath ?? '(none)'),
174
- ]),
175
- ),
176
- )}`,
177
- );
178
- console.log(
179
- `[generateExecutionFlows] ${entity.name}: compoundConditionals count: ${compoundConditionals.length}`,
180
- );
181
- console.log(
182
- `[generateExecutionFlows] ${entity.name}: sourceEquivalencies keys count: ${Object.keys(mergedDataStructure.sourceEquivalencies ?? {}).length}`,
183
- );
184
-
185
176
  const conditionalsBasedFlows = generateExecutionFlowsFromConditionals({
186
177
  conditionalUsages,
187
178
  compoundConditionals,
@@ -273,6 +264,11 @@ export default function generateExecutionFlows({
273
264
  calculateFlowPriority(flow, gatingPathToChildren);
274
265
  }
275
266
 
267
+ // Assign exclusiveGroup for truthy/falsy flow pairs that control child components.
268
+ // When the same gating path produces both a truthy flow (show component) and a
269
+ // falsy flow (hide component), they are mutually exclusive and should be grouped.
270
+ assignExclusiveGroupsForGatingPairs(allFlows);
271
+
276
272
  // Sort flows by priority (highest first)
277
273
  allFlows.sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
278
274
 
@@ -361,6 +357,60 @@ function buildGatingPathToChildrenMap(
361
357
  return gatingPathToChildren;
362
358
  }
363
359
 
360
+ /**
361
+ * Assign exclusiveGroup for truthy/falsy flow pairs that control child components.
362
+ *
363
+ * When the same attribute path produces both a truthy and falsy flow (e.g.,
364
+ * {diffView && <DiffModal/>}), they are mutually exclusive — only one can be
365
+ * active at a time. Grouping them ensures the scenario generator treats them
366
+ * as alternative states rather than combining them.
367
+ */
368
+ function assignExclusiveGroupsForGatingPairs(flows: ExecutionFlow[]): void {
369
+ // Build a map: attributePath -> flows with truthy or falsy comparison for that path
370
+ const pathToFlows = new Map<
371
+ string,
372
+ { truthy: ExecutionFlow[]; falsy: ExecutionFlow[] }
373
+ >();
374
+
375
+ for (const flow of flows) {
376
+ // Only consider flows that control child components
377
+ if (!flow.childComponentsControlled?.length) continue;
378
+
379
+ for (const rv of flow.requiredValues) {
380
+ if (rv.comparison === 'truthy' || rv.comparison === 'falsy') {
381
+ if (!pathToFlows.has(rv.attributePath)) {
382
+ pathToFlows.set(rv.attributePath, { truthy: [], falsy: [] });
383
+ }
384
+ pathToFlows.get(rv.attributePath)![rv.comparison].push(flow);
385
+ }
386
+ }
387
+ }
388
+
389
+ // Also check falsy flows that DON'T have childComponentsControlled —
390
+ // they still pair with truthy flows that do
391
+ for (const flow of flows) {
392
+ if (flow.childComponentsControlled?.length) continue; // Already processed
393
+
394
+ for (const rv of flow.requiredValues) {
395
+ if (rv.comparison === 'falsy' && pathToFlows.has(rv.attributePath)) {
396
+ pathToFlows.get(rv.attributePath)!.falsy.push(flow);
397
+ }
398
+ }
399
+ }
400
+
401
+ // Assign exclusiveGroup where both truthy and falsy flows exist
402
+ for (const [attributePath, { truthy, falsy }] of pathToFlows) {
403
+ if (truthy.length > 0 && falsy.length > 0) {
404
+ const groupName = `gating:${attributePath}`;
405
+ for (const flow of [...truthy, ...falsy]) {
406
+ if (!flow.exclusiveGroup) {
407
+ flow.exclusiveGroup = groupName;
408
+ }
409
+ }
410
+ }
411
+ }
412
+ }
413
+
364
414
  /**
365
415
  * Calculate priority and childComponentsControlled for a flow.
366
416
  *
@@ -415,6 +465,19 @@ function calculateFlowPriority(
415
465
  if (flow.impact !== 'high') {
416
466
  flow.impact = 'high';
417
467
  }
468
+
469
+ // Check if any controlled child component is a modal/dialog/overlay.
470
+ // Only truthy flows (which SHOW the component) should be marked as blocking.
471
+ // Falsy flows (which HIDE the component) should not be blocking.
472
+ const isTruthyFlow = flow.requiredValues.some(
473
+ (rv) => rv.comparison === 'truthy' || rv.comparison === 'equals',
474
+ );
475
+ if (
476
+ isTruthyFlow &&
477
+ Array.from(childComponentsControlled).some(isBlockingChildComponent)
478
+ ) {
479
+ flow.blocksOtherFlows = true;
480
+ }
418
481
  }
419
482
 
420
483
  // Calculate priority score
@@ -36,7 +36,10 @@ export { getAllEntityNodes } from './src/lib/asts/sourceFiles/getAllEntityNodes'
36
36
  export { default as fileAnalyzerFromCode } from './src/lib/files/fileAnalyzerFromCode';
37
37
 
38
38
  export { default as isolateDataStructure } from './src/lib/files/scenarios/isolateDataStructure';
39
- export { default as mergeInDependentDataStructure } from './src/lib/files/scenarios/mergeInDependentDataStructure';
39
+ export {
40
+ default as mergeInDependentDataStructure,
41
+ DataStructureTimeoutError,
42
+ } from './src/lib/files/scenarios/mergeInDependentDataStructure';
40
43
  export { default as mergeValidatedDataStructures } from './src/lib/files/scenarios/mergeValidatedDataStructures';
41
44
 
42
45
  export { discoverDirectDependencies } from './src/lib/files/analyze/dependencyResolver';
@@ -46,6 +46,12 @@ export class ProjectAnalyzer {
46
46
  lib.asts.createProgramFromTsConfigPath(configPath, excludePatterns),
47
47
  );
48
48
 
49
+ if (this.programs.length === 0) {
50
+ throw new Error(
51
+ 'No TypeScript programs could be created — no tsconfig.json found',
52
+ );
53
+ }
54
+
49
55
  // Primary program is the first one (usually root) for backward compatibility
50
56
  this.program = this.programs[0];
51
57
  this.typeChecker = this.program.getTypeChecker();
@@ -334,17 +340,23 @@ export class ProjectAnalyzer {
334
340
  * Refresh the TypeScript program to pick up file changes
335
341
  */
336
342
  refreshProgram(): void {
337
- // Memory logging: Capture state before refresh
338
- const memBefore = process.memoryUsage();
339
-
340
343
  // Apply the same unapprovedPaths filtering when refreshing
341
344
  const excludePatterns =
342
345
  this.project.metadata?.unapprovedPaths?.filter(Boolean) || [];
343
346
 
344
- // Refresh all programs
345
- this.programs = this.tsConfigPaths.map((configPath) =>
346
- lib.asts.createProgramFromTsConfigPath(configPath, excludePatterns),
347
- );
347
+ // Release old programs and caches BEFORE creating new ones to reduce peak memory.
348
+ // Without this, both old (~1.7GB) and new (~1.7GB) programs coexist during creation,
349
+ // causing OOM on monorepos with multiple tsconfigs.
350
+ this.programs = [];
351
+ this.sourceFileByPath.clear();
352
+ this.typeCheckerByPath.clear();
353
+
354
+ // Create programs one at a time so each old program can be GC'd before the next
355
+ for (const configPath of this.tsConfigPaths) {
356
+ this.programs.push(
357
+ lib.asts.createProgramFromTsConfigPath(configPath, excludePatterns),
358
+ );
359
+ }
348
360
 
349
361
  // Update primary program for backward compatibility
350
362
  this.program = this.programs[0];
@@ -95,8 +95,13 @@ export function createProgramFromTsConfigPath(
95
95
  throw new Error('Could not parse tsconfig.json');
96
96
  }
97
97
 
98
- // Filter file names based on exclude patterns to reduce memory usage
99
- let fileNames = parsedCommandLine.fileNames;
98
+ // Always filter out node_modules from root files to prevent OOM on large projects.
99
+ // This only removes them as root compilation targets — TypeScript's module resolution
100
+ // still follows imports into node_modules for type info when processing source files.
101
+ let fileNames = parsedCommandLine.fileNames.filter(
102
+ (f) => !f.includes('/node_modules/'),
103
+ );
104
+
100
105
  if (excludePatterns && excludePatterns.length > 0) {
101
106
  const regexPatterns = excludePatterns
102
107
  .map((pattern) => {
@@ -39,6 +39,7 @@ export function getNodeType(node: ts.Node, sourceFile: ts.SourceFile) {
39
39
  case 'StringLiteral':
40
40
  case 'NumericLiteral':
41
41
  case 'ObjectLiteralExpression':
42
+ case 'ArrayLiteralExpression':
42
43
  nodeType = 'data';
43
44
  break;
44
45
  case 'TypeAliasDeclaration':