@codeyam/codeyam-cli 0.1.0-staging.bd4126b → 0.1.0-staging.c276166

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 (648) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +10 -10
  4. package/analyzer-template/packages/ai/package.json +2 -2
  5. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  6. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +27 -0
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  9. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  10. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +0 -33
  11. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  12. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  14. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  16. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  17. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  18. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  19. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  20. package/analyzer-template/packages/aws/package.json +2 -2
  21. package/analyzer-template/packages/database/index.ts +1 -0
  22. package/analyzer-template/packages/database/package.json +3 -3
  23. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  24. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +138 -0
  25. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  26. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  27. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  28. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  29. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  30. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  31. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  32. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  33. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  34. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  35. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  36. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  37. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  38. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  39. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  40. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  41. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +27 -0
  42. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  43. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +121 -0
  44. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  45. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  46. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  47. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  48. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  49. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  50. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  51. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  52. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  54. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  55. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  58. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  61. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  64. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  65. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  66. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  70. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  72. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  73. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  74. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  76. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  77. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  78. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/package.json +1 -1
  80. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  81. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  82. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  83. package/analyzer-template/packages/ui-components/package.json +1 -1
  84. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  85. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  86. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  87. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  88. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  89. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  90. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  91. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  92. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  93. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  94. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  95. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  96. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  97. package/analyzer-template/project/constructMockCode.ts +136 -43
  98. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  99. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  100. package/analyzer-template/project/start.ts +3 -0
  101. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  102. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  103. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  104. package/analyzer-template/project/writeScenarioComponents.ts +36 -7
  105. package/analyzer-template/tsconfig.json +13 -1
  106. package/background/src/lib/virtualized/project/constructMockCode.js +115 -34
  107. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  108. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  109. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  110. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  111. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  112. package/background/src/lib/virtualized/project/start.js +2 -0
  113. package/background/src/lib/virtualized/project/start.js.map +1 -1
  114. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  115. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  116. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  117. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  118. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  119. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  120. package/background/src/lib/virtualized/project/writeScenarioComponents.js +29 -7
  121. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  122. package/codeyam-cli/scripts/apply-setup.js +208 -11
  123. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  124. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  125. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  126. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  127. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  128. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  129. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  130. package/codeyam-cli/src/cli.js +9 -12
  131. package/codeyam-cli/src/cli.js.map +1 -1
  132. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +45 -0
  133. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  134. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  135. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  136. package/codeyam-cli/src/commands/analyze.js +17 -7
  137. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  138. package/codeyam-cli/src/commands/default.js +14 -2
  139. package/codeyam-cli/src/commands/default.js.map +1 -1
  140. package/codeyam-cli/src/commands/editor.js +3374 -0
  141. package/codeyam-cli/src/commands/editor.js.map +1 -0
  142. package/codeyam-cli/src/commands/init.js +107 -45
  143. package/codeyam-cli/src/commands/init.js.map +1 -1
  144. package/codeyam-cli/src/commands/memory.js +29 -58
  145. package/codeyam-cli/src/commands/memory.js.map +1 -1
  146. package/codeyam-cli/src/data/techStacks.js +77 -0
  147. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  148. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  149. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  150. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  151. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  152. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  153. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +127 -0
  155. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  156. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +855 -0
  157. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  158. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  159. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  160. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  161. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  162. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +121 -0
  163. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  164. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  165. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  167. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  168. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +520 -0
  169. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  170. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  171. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  172. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  173. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  174. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +353 -0
  175. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  176. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  177. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  178. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  179. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  180. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  181. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  182. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1029 -0
  183. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  184. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +213 -0
  185. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  186. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1742 -0
  187. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  188. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  189. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  190. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  191. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  192. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +6 -0
  193. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  194. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  195. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  196. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  197. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  198. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  199. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  200. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +227 -0
  201. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  202. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  203. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  204. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +454 -0
  205. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  206. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +50 -4
  207. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  208. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  209. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  210. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  211. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  212. package/codeyam-cli/src/utils/analyzer.js +9 -0
  213. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  214. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  215. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  216. package/codeyam-cli/src/utils/backgroundServer.js +104 -12
  217. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  218. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  219. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  220. package/codeyam-cli/src/utils/database.js +37 -2
  221. package/codeyam-cli/src/utils/database.js.map +1 -1
  222. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  223. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  224. package/codeyam-cli/src/utils/devServerState.js +71 -0
  225. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  226. package/codeyam-cli/src/utils/editorApi.js +73 -0
  227. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  228. package/codeyam-cli/src/utils/editorAudit.js +176 -0
  229. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  230. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  231. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  232. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  233. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  234. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  235. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  236. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  237. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  238. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  239. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  240. package/codeyam-cli/src/utils/editorLoaderHelpers.js +113 -0
  241. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  242. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  243. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  244. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  245. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  246. package/codeyam-cli/src/utils/editorPreview.js +137 -0
  247. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  248. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  249. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  250. package/codeyam-cli/src/utils/editorScenarios.js +375 -0
  251. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  252. package/codeyam-cli/src/utils/editorSeedAdapter.js +173 -0
  253. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  254. package/codeyam-cli/src/utils/entityChangeStatus.js +349 -0
  255. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  256. package/codeyam-cli/src/utils/entityChangeStatus.server.js +158 -0
  257. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  258. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  259. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  260. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  261. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  262. package/codeyam-cli/src/utils/git.js +103 -0
  263. package/codeyam-cli/src/utils/git.js.map +1 -1
  264. package/codeyam-cli/src/utils/install-skills.js +57 -15
  265. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  266. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  267. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  268. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  269. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  270. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  271. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  272. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  273. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  274. package/codeyam-cli/src/utils/progress.js +2 -2
  275. package/codeyam-cli/src/utils/progress.js.map +1 -1
  276. package/codeyam-cli/src/utils/project.js +15 -5
  277. package/codeyam-cli/src/utils/project.js.map +1 -1
  278. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  279. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  280. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  281. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  282. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  283. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  284. package/codeyam-cli/src/utils/queue/job.js +70 -1
  285. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  286. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  287. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  288. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  289. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  290. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  291. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  292. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +2 -5
  293. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  294. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  295. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  296. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  297. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  298. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  299. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  300. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  301. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  302. package/codeyam-cli/src/utils/rules/index.js +1 -0
  303. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  304. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  305. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  306. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  307. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  308. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  309. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  310. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  311. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  312. package/codeyam-cli/src/utils/scenarioCoverage.js +75 -0
  313. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  314. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  315. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  316. package/codeyam-cli/src/utils/scenariosManifest.js +241 -0
  317. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  318. package/codeyam-cli/src/utils/serverState.js +57 -2
  319. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  320. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +82 -11
  321. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  322. package/codeyam-cli/src/utils/simulationGateMiddleware.js +71 -43
  323. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  324. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  325. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  326. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  327. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  328. package/codeyam-cli/src/utils/testRunner.js +158 -0
  329. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  330. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  331. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  332. package/codeyam-cli/src/utils/versionInfo.js +21 -0
  333. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  334. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  335. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  336. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
  337. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  338. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +567 -0
  339. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  340. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +146 -0
  341. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  342. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +65 -0
  343. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  344. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  345. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  346. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  347. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  348. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  349. package/codeyam-cli/src/webserver/backgroundServer.js +118 -18
  350. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  351. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-jNYXRRNI.js → CopyButton-BPXZwM4t.js} +1 -1
  352. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-BcgbViKV.js} +3 -3
  353. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CvzqMxcu.js → EntityTypeBadge-g3saevPb.js} +1 -1
  354. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-CQIG2qda.js} +9 -9
  355. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  356. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-yjIHlOGa.js → InteractivePreview-DYFW3lDD.js} +3 -3
  357. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-Cq5o8jL4.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  358. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-BU_OAEMP.js} +1 -1
  359. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-ceAyBX-H.js} +1 -1
  360. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-BzHcG7SE.js} +3 -3
  361. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CwZrv-Ok.js → SafeScreenshot-BED4B6sP.js} +1 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-TSD3C211.js} +3 -3
  363. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CDpEprKa.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +1 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-DLxKhri3.js} +3 -3
  367. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-BcY3q6nt.js} +6 -6
  368. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  371. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Bni3iiUj.js +22 -0
  373. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  374. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  375. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  376. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  377. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  378. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  379. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  382. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  383. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  384. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  385. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  386. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  387. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  391. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  392. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  393. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  397. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  398. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-BYOypzCa.js} +2 -2
  399. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-C_Pmso5S.js} +2 -2
  400. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-DB3aFuEO.js → chunk-JZWAC4HX-C4pqxYJB.js} +1 -1
  401. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-BVMi9VA5.js} +2 -2
  402. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-n2FB0_Sw.js} +3 -3
  403. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CC6AbExI.js +41 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Ii3inc0_.js +1 -0
  405. package/codeyam-cli/src/webserver/build/client/assets/editor-CtRVY4nn.js +10 -0
  406. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CNB06EIa.js +41 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._-DwCV5__E.js} +11 -11
  408. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-CXSi2aeZ.js +6 -0
  409. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CHMiAog3.js +6 -0
  410. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  411. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  412. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-DTvKq3TY.js} +1 -1
  413. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-9sMMAiWJ.js → fileTableUtils-cPo8LiG3.js} +1 -1
  414. package/codeyam-cli/src/webserver/build/client/assets/{files-Co65J0s3.js → files-BZrlFE1F.js} +1 -1
  415. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +1 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/globals-DozjVXrE.css +1 -0
  417. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-10oVnAAH.js} +1 -1
  418. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-BcvgDzbZ.js} +1 -1
  419. package/codeyam-cli/src/webserver/build/client/assets/index-yHOVb4rc.js +15 -0
  420. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-DaAZ_H2w.js} +2 -2
  422. package/codeyam-cli/src/webserver/build/client/assets/manifest-b431cb81.js +1 -0
  423. package/codeyam-cli/src/webserver/build/client/assets/memory-9gnxSZlb.js +101 -0
  424. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-f5-1lKBt.js} +3 -3
  425. package/codeyam-cli/src/webserver/build/client/assets/root-20m9-3-z.js +67 -0
  426. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-Di64LWVb.js} +2 -2
  427. package/codeyam-cli/src/webserver/build/client/assets/settings-0OrEMU6J.js +1 -0
  428. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DVNJVQgD.js → simulations-DWT-CvLy.js} +1 -1
  429. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-Br7MOqts.js} +3 -3
  430. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-BLdiCuG-.js} +2 -2
  431. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C-_hOl_g.js +1 -0
  432. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  433. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DZlYx2c4.js → useReportContext-O-jkvSPx.js} +1 -1
  434. package/codeyam-cli/src/webserver/build/client/assets/{useToast-ihdMtlf6.js → useToast-9FIWuYfK.js} +1 -1
  435. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  436. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  437. package/codeyam-cli/src/webserver/build/server/assets/index-WJ6ysHIA.js +1 -0
  438. package/codeyam-cli/src/webserver/build/server/assets/init-3Om_In9B.js +10 -0
  439. package/codeyam-cli/src/webserver/build/server/assets/server-build-kfIP9lFK.js +439 -0
  440. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  441. package/codeyam-cli/src/webserver/build-info.json +5 -5
  442. package/codeyam-cli/src/webserver/devServer.js +39 -5
  443. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  444. package/codeyam-cli/src/webserver/editorProxy.js +877 -0
  445. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  446. package/codeyam-cli/src/webserver/idleDetector.js +73 -0
  447. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  448. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  449. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  450. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  451. package/codeyam-cli/src/webserver/server.js +300 -1
  452. package/codeyam-cli/src/webserver/server.js.map +1 -1
  453. package/codeyam-cli/src/webserver/terminalServer.js +735 -0
  454. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  455. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  456. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  457. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  458. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  459. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  460. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  461. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  462. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  463. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  464. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  465. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  466. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  467. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  468. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  469. package/codeyam-cli/templates/codeyam-editor-claude.md +147 -0
  470. package/codeyam-cli/templates/editor-step-hook.py +236 -0
  471. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  472. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  473. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  474. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  475. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  476. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  477. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  478. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  479. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  480. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  481. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  482. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  483. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  484. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  485. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  486. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  487. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  488. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  489. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  490. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  491. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  492. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  493. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  494. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  495. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  496. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  497. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  498. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  499. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  500. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  501. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  502. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  503. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  504. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  505. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  506. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  507. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  508. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  509. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  510. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  511. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  512. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  513. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  514. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +92 -0
  515. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  516. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  517. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  518. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  519. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  520. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  521. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  522. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  523. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  524. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  525. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  526. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  527. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  528. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  529. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  530. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  531. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  532. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  533. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  534. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  535. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  536. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  537. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  538. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  539. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  540. package/codeyam-cli/templates/rule-reflection-hook.py +24 -4
  541. package/codeyam-cli/templates/rules-instructions.md +34 -88
  542. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  543. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +149 -0
  544. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  545. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  546. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  547. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  548. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  549. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  550. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  551. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  552. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  553. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  554. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  555. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  556. package/package.json +17 -10
  557. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  558. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  559. package/packages/ai/src/lib/completionCall.js +10 -7
  560. package/packages/ai/src/lib/completionCall.js.map +1 -1
  561. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +21 -0
  562. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  563. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  564. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  565. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  566. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  567. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  568. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  569. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  570. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  571. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  572. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  573. package/packages/analyze/src/lib/asts/index.js +4 -2
  574. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  575. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  576. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  577. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  578. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  579. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  580. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  581. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  582. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  583. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  584. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  585. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  586. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  587. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  588. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  589. package/packages/database/index.js +1 -0
  590. package/packages/database/index.js.map +1 -1
  591. package/packages/database/src/lib/kysely/db.js +5 -0
  592. package/packages/database/src/lib/kysely/db.js.map +1 -1
  593. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +121 -0
  594. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  595. package/packages/database/src/lib/loadCommits.js +23 -13
  596. package/packages/database/src/lib/loadCommits.js.map +1 -1
  597. package/packages/database/src/lib/loadEntities.js +0 -6
  598. package/packages/database/src/lib/loadEntities.js.map +1 -1
  599. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  600. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  601. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  602. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  603. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  604. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  605. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  606. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  607. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  608. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  609. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  610. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  611. package/packages/types/src/enums/ProjectFramework.js +2 -0
  612. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  613. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  614. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  615. package/scripts/npm-post-install.cjs +34 -0
  616. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  617. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  618. package/codeyam-cli/src/commands/list.js +0 -31
  619. package/codeyam-cli/src/commands/list.js.map +0 -1
  620. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  621. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  622. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  623. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  624. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +0 -34
  625. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  626. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-D1zB-pYc.js +0 -21
  627. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +0 -1
  628. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +0 -6
  629. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +0 -6
  630. package/codeyam-cli/src/webserver/build/client/assets/git-BdHOxVfg.js +0 -15
  631. package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +0 -1
  632. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  633. package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +0 -1
  634. package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +0 -92
  635. package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +0 -62
  636. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +0 -1
  637. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +0 -1
  638. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DAFqfEDH.js +0 -2
  639. package/codeyam-cli/src/webserver/build/server/assets/index-B3dE0r28.js +0 -1
  640. package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +0 -273
  641. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  642. package/scripts/finalize-analyzer.cjs +0 -13
  643. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  644. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  645. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  646. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  647. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  648. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -129,19 +129,6 @@ export default function generateExecutionFlows({
129
129
  fullToShortPathMap[fullPath] = shortPath;
130
130
  }
131
131
 
132
- console.log(
133
- `[generateExecutionFlows] ${entity.name}: attributesMap has ${Object.keys(resolvedAttributesMap).length} keys, fullToShortPathMap has ${Object.keys(fullToShortPathMap).length} entries`,
134
- );
135
- console.log(
136
- `[generateExecutionFlows] ${entity.name}: attributesMap keys: [${Object.keys(resolvedAttributesMap).join(', ')}]`,
137
- );
138
- console.log(
139
- `[generateExecutionFlows] ${entity.name}: fullToShortPathMap: ${JSON.stringify(fullToShortPathMap)}`,
140
- );
141
- console.log(
142
- `[generateExecutionFlows] ${entity.name}: equivalentSignatureVariables: ${JSON.stringify(equivalentSignatureVariables)}`,
143
- );
144
-
145
132
  // Get pre-computed conditional data from metadata
146
133
  const conditionalUsages: Record<string, ConditionalUsage[]> =
147
134
  entity.metadata?.isolatedDataStructure?.conditionalUsages ?? {};
@@ -186,26 +173,6 @@ export default function generateExecutionFlows({
186
173
  }
187
174
  }
188
175
 
189
- console.log(
190
- `[generateExecutionFlows] ${entity.name}: conditionalUsages keys: [${Object.keys(conditionalUsages).join(', ')}]`,
191
- );
192
- console.log(
193
- `[generateExecutionFlows] ${entity.name}: conditionalUsages sourceDataPaths: ${JSON.stringify(
194
- Object.fromEntries(
195
- Object.entries(conditionalUsages).map(([k, v]) => [
196
- k,
197
- (v as any[]).map((u: any) => u.sourceDataPath ?? '(none)'),
198
- ]),
199
- ),
200
- )}`,
201
- );
202
- console.log(
203
- `[generateExecutionFlows] ${entity.name}: compoundConditionals count: ${compoundConditionals.length}`,
204
- );
205
- console.log(
206
- `[generateExecutionFlows] ${entity.name}: sourceEquivalencies keys count: ${Object.keys(mergedDataStructure.sourceEquivalencies ?? {}).length}`,
207
- );
208
-
209
176
  const conditionalsBasedFlows = generateExecutionFlowsFromConditionals({
210
177
  conditionalUsages,
211
178
  compoundConditionals,
@@ -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) => {
@@ -310,7 +310,15 @@ export default async function analyzeEntities({
310
310
  );
311
311
 
312
312
  // Flush transformation trace if tracing is enabled
313
- transformationTracer.flush();
313
+ // Wrapped in try/catch because trace data can exceed V8's max string length
314
+ // for large projects, and we must not crash the analysis process over tracing.
315
+ try {
316
+ transformationTracer.flush();
317
+ } catch (e) {
318
+ console.warn(
319
+ `CodeYam Warning: Failed to flush transformation trace: ${e.message}`,
320
+ );
321
+ }
314
322
 
315
323
  return analyses;
316
324
 
@@ -100,12 +100,6 @@ export function getCandidatesReadyForCapture(
100
100
  continue;
101
101
  }
102
102
 
103
- // Skip notExported entities - they can't be imported into the simulation
104
- // environment and will always fail capture. Don't mark them as ready.
105
- if (candidate.entity?.metadata?.notExported) {
106
- continue;
107
- }
108
-
109
103
  // Get all transitive dependencies
110
104
  const candidateKey = `${candidate.filePath}:${candidate.entityName}`;
111
105
  const { missingDependencies } = getTransitiveDependencies(
@@ -138,6 +138,18 @@ export default async function findOrCreateEntity({
138
138
  break;
139
139
  }
140
140
  }
141
+
142
+ // Mark previous versions as superseded
143
+ const entitiesToSupersede = previousEntities.filter(
144
+ (e) => !e.metadata?.isSuperseded,
145
+ );
146
+ if (entitiesToSupersede.length > 0) {
147
+ for (const prev of entitiesToSupersede) {
148
+ prev.metadata = prev.metadata || {};
149
+ prev.metadata.isSuperseded = true;
150
+ }
151
+ await upsertEntities(entitiesToSupersede);
152
+ }
141
153
  }
142
154
 
143
155
  entity = {
@@ -404,22 +404,15 @@ export class TransformationTracer {
404
404
  }
405
405
 
406
406
  /**
407
- * Write the trace to the output file.
407
+ * Compute the summary data for the current traces.
408
408
  */
409
- flush(): void {
410
- if (!this.isEnabled()) return;
411
- if (this.traces.size === 0) {
412
- this.log('flush: no traces to write');
413
- return;
414
- }
415
-
416
- const entities = Array.from(this.traces.keys());
417
- const stageCounts = entities
418
- .map((e) => `${e}(${this.traces.get(e)!.stages.length})`)
419
- .join(', ');
420
- this.log(`flush: writing ${entities.length} entities: ${stageCounts}`);
421
-
422
- // Compute summary
409
+ private computeFlushSummary(): {
410
+ stageChangeCounts: Record<
411
+ string,
412
+ { added: number; removed: number; changed: number }
413
+ >;
414
+ entitiesWithMostChanges: string[];
415
+ } {
423
416
  const stageChangeCounts: Record<
424
417
  string,
425
418
  { added: number; removed: number; changed: number }
@@ -484,17 +477,39 @@ export class TransformationTracer {
484
477
  .slice(0, 10)
485
478
  .map(([name]) => name);
486
479
 
487
- const traceFile: TraceFile = {
488
- meta: {
489
- timestamp: new Date().toISOString(),
490
- projectSlug: this.projectSlug,
491
- entityCount: this.traces.size,
492
- },
493
- summary: {
494
- stageChangeCounts,
495
- entitiesWithMostChanges,
496
- },
497
- entities: Object.fromEntries(this.traces),
480
+ return { stageChangeCounts, entitiesWithMostChanges };
481
+ }
482
+
483
+ /**
484
+ * Write the trace to the output file.
485
+ * Uses streaming per-entity writes to avoid exceeding V8's max string length
486
+ * on large projects.
487
+ */
488
+ flush(): void {
489
+ if (!this.isEnabled()) return;
490
+ if (this.traces.size === 0) {
491
+ this.log('flush: no traces to write');
492
+ return;
493
+ }
494
+
495
+ const entities = Array.from(this.traces.keys());
496
+ const stageCounts = entities
497
+ .map((e) => `${e}(${this.traces.get(e)!.stages.length})`)
498
+ .join(', ');
499
+ this.log(`flush: writing ${entities.length} entities: ${stageCounts}`);
500
+
501
+ const { stageChangeCounts, entitiesWithMostChanges } =
502
+ this.computeFlushSummary();
503
+
504
+ const meta = {
505
+ timestamp: new Date().toISOString(),
506
+ projectSlug: this.projectSlug,
507
+ entityCount: this.traces.size,
508
+ };
509
+
510
+ const summary = {
511
+ stageChangeCounts,
512
+ entitiesWithMostChanges,
498
513
  };
499
514
 
500
515
  // Ensure directory exists
@@ -503,8 +518,30 @@ export class TransformationTracer {
503
518
  fs.mkdirSync(dir, { recursive: true });
504
519
  }
505
520
 
506
- fs.writeFileSync(this.outputPath, JSON.stringify(traceFile, null, 2));
507
- this.log(`flush: wrote trace to ${this.outputPath}`);
521
+ // Stream JSON per-entity to avoid exceeding V8's max string length.
522
+ // Each entity is serialized individually so no single JSON.stringify
523
+ // call needs to produce the entire trace.
524
+ const fd = fs.openSync(this.outputPath, 'w');
525
+ try {
526
+ fs.writeSync(fd, '{\n "meta": ');
527
+ fs.writeSync(fd, JSON.stringify(meta, null, 2));
528
+ fs.writeSync(fd, ',\n "summary": ');
529
+ fs.writeSync(fd, JSON.stringify(summary, null, 2));
530
+ fs.writeSync(fd, ',\n "entities": {');
531
+
532
+ let first = true;
533
+ for (const [entityName, entityTrace] of this.traces) {
534
+ if (!first) fs.writeSync(fd, ',');
535
+ fs.writeSync(fd, `\n ${JSON.stringify(entityName)}: `);
536
+ fs.writeSync(fd, JSON.stringify(entityTrace, null, 2));
537
+ first = false;
538
+ }
539
+
540
+ fs.writeSync(fd, '\n }\n}\n');
541
+ this.log(`flush: wrote trace to ${this.outputPath}`);
542
+ } finally {
543
+ fs.closeSync(fd);
544
+ }
508
545
  }
509
546
 
510
547
  /**
@@ -461,6 +461,17 @@ export default function generateDataStructure({
461
461
 
462
462
  const { isolatedDataStructure } = entity.metadata;
463
463
 
464
+ if (!isolatedDataStructure) {
465
+ awsLog(
466
+ 'CodeYam: Skipping data structure generation — isolatedDataStructure is undefined (scope analysis may have failed)',
467
+ {
468
+ entityName: entity.name,
469
+ filePath: entity.filePath,
470
+ },
471
+ );
472
+ return analysis;
473
+ }
474
+
464
475
  // Transformation tracing: start entity and capture isolated data structure
465
476
  transformationTracer.startEntity({
466
477
  name: entity.name,
@@ -643,6 +654,78 @@ export default function generateDataStructure({
643
654
  },
644
655
  );
645
656
 
657
+ // Infer function types from child component usage BEFORE fillInSchemaGapsAndUnknowns.
658
+ // When a hook returns a property with type 'unknown' that is passed to a child
659
+ // component which calls it as a function (e.g., isEntityPending(entity)),
660
+ // promote it to 'function'. Without this, name heuristics like isLikelyBoolean
661
+ // would mistype "isEntityPending" as boolean because of the "is" prefix.
662
+ //
663
+ // sourceEquivalencies are in isolatedDataStructure.dependencySchemas (not in
664
+ // mergedDataStructure.dependencySchemas — they're dropped during the merge).
665
+ // The child's signatureSchema (with function call evidence) IS in the merged schemas.
666
+ {
667
+ const isolatedDepSchemas =
668
+ entity.metadata.isolatedDataStructure?.dependencySchemas;
669
+ if (isolatedDepSchemas) {
670
+ for (const childFilePath in isolatedDepSchemas) {
671
+ const childIsolated = isolatedDepSchemas[childFilePath];
672
+ for (const childName in childIsolated) {
673
+ const sourceEq = childIsolated[childName]?.sourceEquivalencies;
674
+ if (!sourceEq) continue;
675
+
676
+ // Get the child's signatureSchema from the MERGED schemas (richer)
677
+ const mergedChildSchema =
678
+ mergedDataStructure.dependencySchemas[childFilePath]?.[
679
+ childName
680
+ ];
681
+ const sigSchema = mergedChildSchema?.signatureSchema;
682
+ if (!sigSchema) continue;
683
+
684
+ for (const childPath in sourceEq) {
685
+ for (const source of sourceEq[childPath]) {
686
+ const fcrvSuffix = '.functionCallReturnValue.';
687
+ const fcrvIndex = source.schemaPath.indexOf(fcrvSuffix);
688
+ if (fcrvIndex === -1) continue;
689
+
690
+ const propName = source.schemaPath.slice(
691
+ fcrvIndex + fcrvSuffix.length,
692
+ );
693
+
694
+ // Find the corresponding child signature path
695
+ const entityCallPrefix = childName + '().';
696
+ const sigPathBase = childPath.startsWith(entityCallPrefix)
697
+ ? childPath.slice(entityCallPrefix.length)
698
+ : childPath;
699
+
700
+ // Check if the child's signatureSchema has a function call version
701
+ let isFunction = false;
702
+ for (const sigKey in sigSchema) {
703
+ if (
704
+ sigKey.startsWith(sigPathBase + '(') &&
705
+ sigSchema[sigKey] === 'function'
706
+ ) {
707
+ isFunction = true;
708
+ break;
709
+ }
710
+ }
711
+
712
+ if (isFunction) {
713
+ for (const rvKey in depSchema.returnValueSchema) {
714
+ if (
715
+ rvKey.endsWith('.' + propName) &&
716
+ depSchema.returnValueSchema[rvKey] === 'unknown'
717
+ ) {
718
+ depSchema.returnValueSchema[rvKey] = 'function';
719
+ }
720
+ }
721
+ }
722
+ }
723
+ }
724
+ }
725
+ }
726
+ }
727
+ }
728
+
646
729
  // Fill in type gaps BEFORE clearing attributes, so evidence like .includes()
647
730
  // is used for type inference before being deleted
648
731
 
@@ -65,10 +65,6 @@ export default async function generateExecutionFlows({
65
65
  }
66
66
 
67
67
  if (!analysis.metadata.executionFlows) {
68
- console.log(
69
- `[GenerateExecutionFlows] Starting for ${entity.name} (${entity.filePath})`,
70
- );
71
-
72
68
  // Build childEntityMetadata from dependentAnalyses for child flow merging
73
69
  // This maps child component names to their metadata (specifically isolatedDataStructure)
74
70
  const childEntityMetadata = buildChildEntityMetadata(
@@ -77,15 +73,6 @@ export default async function generateExecutionFlows({
77
73
  );
78
74
 
79
75
  const childCount = Object.keys(childEntityMetadata).length;
80
- console.log(
81
- `[GenerateExecutionFlows] Built childEntityMetadata with ${childCount} children`,
82
- );
83
- if (childCount > 0) {
84
- console.log(
85
- `[GenerateExecutionFlows] Will merge flows from children: [${Object.keys(childEntityMetadata).join(', ')}]`,
86
- );
87
- }
88
-
89
76
  const {
90
77
  result: { executionFlows, llmCall: executionFlowsLLMCall },
91
78
  } = await measureAndReportExecutionTime(
@@ -100,18 +87,6 @@ export default async function generateExecutionFlows({
100
87
  updateProgress,
101
88
  );
102
89
 
103
- console.log(
104
- `[GenerateExecutionFlows] Generated ${executionFlows.length} execution flows for ${entity.name}`,
105
- );
106
- for (const flow of executionFlows) {
107
- const reqValues = flow.requiredValues
108
- .map((rv) => `${rv.attributePath}=${rv.value}`)
109
- .join(', ');
110
- console.log(
111
- `[GenerateExecutionFlows] - Flow '${flow.id}': ${flow.name} [${reqValues}]`,
112
- );
113
- }
114
-
115
90
  analysis.metadata.executionFlows = executionFlows;
116
91
 
117
92
  if (executionFlowsLLMCall) {
@@ -137,14 +112,7 @@ export function buildChildEntityMetadata(
137
112
  ): Record<string, Entity['metadata']> {
138
113
  const childEntityMetadata: Record<string, Entity['metadata']> = {};
139
114
 
140
- console.log(
141
- `[BuildChildMetadata] Starting for entity: ${entity.name} (${entity.filePath})`,
142
- );
143
-
144
115
  if (!dependentAnalyses) {
145
- console.log(
146
- `[BuildChildMetadata] No dependentAnalyses provided, returning empty`,
147
- );
148
116
  return childEntityMetadata;
149
117
  }
150
118
 
@@ -152,54 +120,19 @@ export function buildChildEntityMetadata(
152
120
  entity.metadata?.isolatedDataStructure?.childBoundaryGatingConditions;
153
121
 
154
122
  if (!childBoundaryGatingConditions) {
155
- console.log(
156
- `[BuildChildMetadata] No childBoundaryGatingConditions found in isolatedDataStructure`,
157
- );
158
- console.log(
159
- `[BuildChildMetadata] isolatedDataStructure keys: ${Object.keys(entity.metadata?.isolatedDataStructure ?? {}).join(', ') || 'none'}`,
160
- );
161
123
  return childEntityMetadata;
162
124
  }
163
125
 
164
126
  const childNames = Object.keys(childBoundaryGatingConditions);
165
- console.log(
166
- `[BuildChildMetadata] Found ${childNames.length} children in childBoundaryGatingConditions: [${childNames.join(', ')}]`,
167
- );
168
-
169
- // Log gating conditions for each child
170
- for (const [childName, conditions] of Object.entries(
171
- childBoundaryGatingConditions,
172
- )) {
173
- const isUnconditional = conditions.some(
174
- (c) => c.location === 'unconditional',
175
- );
176
- console.log(
177
- `[BuildChildMetadata] Child '${childName}': ${conditions.length} gating conditions, unconditional=${isUnconditional}`,
178
- );
179
- for (const condition of conditions) {
180
- console.log(
181
- `[BuildChildMetadata] - path='${condition.path}' location='${condition.location}' isNegated=${condition.isNegated ?? false}`,
182
- );
183
- }
184
- }
185
-
186
127
  const importedExports = entity.metadata?.importedExports ?? [];
187
- console.log(
188
- `[BuildChildMetadata] Entity has ${importedExports.length} importedExports`,
189
- );
190
128
 
191
129
  for (const childName of childNames) {
192
- console.log(`[BuildChildMetadata] Looking up child '${childName}'...`);
193
-
194
130
  // Find the child in importedExports to get its file path
195
131
  const importedExport = importedExports.find(
196
132
  (ie) => ie.name === childName || ie.resolvedName === childName,
197
133
  );
198
134
 
199
135
  if (!importedExport) {
200
- console.log(
201
- `[BuildChildMetadata] Child '${childName}' NOT FOUND in importedExports`,
202
- );
203
136
  continue;
204
137
  }
205
138
 
@@ -208,27 +141,14 @@ export function buildChildEntityMetadata(
208
141
  importedExport.resolvedFilePath ?? importedExport.filePath;
209
142
  const lookupName = importedExport.resolvedName ?? importedExport.name;
210
143
 
211
- console.log(
212
- `[BuildChildMetadata] Child '${childName}' found in importedExports: lookupPath='${lookupPath}' lookupName='${lookupName}'`,
213
- );
214
-
215
144
  // Look up the child's analysis in dependentAnalyses
216
145
  const childAnalysis = dependentAnalyses[lookupPath]?.[lookupName];
217
146
 
218
147
  if (!childAnalysis) {
219
- console.log(
220
- `[BuildChildMetadata] Child '${childName}' analysis NOT FOUND in dependentAnalyses[${lookupPath}][${lookupName}]`,
221
- );
222
- console.log(
223
- `[BuildChildMetadata] Available paths in dependentAnalyses: [${Object.keys(dependentAnalyses).slice(0, 10).join(', ')}...]`,
224
- );
225
148
  continue;
226
149
  }
227
150
 
228
151
  if (!childAnalysis.entity?.metadata) {
229
- console.log(
230
- `[BuildChildMetadata] Child '${childName}' analysis found but entity.metadata is missing`,
231
- );
232
152
  continue;
233
153
  }
234
154
 
@@ -237,28 +157,10 @@ export function buildChildEntityMetadata(
237
157
  const childConditionalUsages = childIsolated?.conditionalUsages ?? {};
238
158
  const childConditionalCount = Object.keys(childConditionalUsages).length;
239
159
 
240
- console.log(
241
- `[BuildChildMetadata] Child '${childName}' FOUND with metadata:`,
242
- );
243
- console.log(
244
- `[BuildChildMetadata] - conditionalUsages: ${childConditionalCount} paths`,
245
- );
246
- if (childConditionalCount > 0) {
247
- for (const [path, usages] of Object.entries(childConditionalUsages)) {
248
- console.log(
249
- `[BuildChildMetadata] - '${path}': ${(usages as any[]).length} usages`,
250
- );
251
- }
252
- }
253
-
254
160
  // Cast to mutable type - the metadata is only read, not modified
255
161
  childEntityMetadata[childName] = childAnalysis.entity
256
162
  .metadata as Entity['metadata'];
257
163
  }
258
164
 
259
- console.log(
260
- `[BuildChildMetadata] RESULT: Found metadata for ${Object.keys(childEntityMetadata).length} children: [${Object.keys(childEntityMetadata).join(', ')}]`,
261
- );
262
-
263
165
  return childEntityMetadata;
264
166
  }
@@ -52,6 +52,7 @@ const PRIMITIVE_TYPES = new Set([
52
52
 
53
53
  // Check if a type string represents a primitive type
54
54
  // Handles union types like "string | undefined" or "number | null"
55
+ // Also handles string literal unions like "'suggestion' | 'warning' | 'tip'"
55
56
  function isPrimitiveType(typeStr: string): boolean {
56
57
  if (PRIMITIVE_TYPES.has(typeStr)) {
57
58
  return true;
@@ -59,9 +60,15 @@ function isPrimitiveType(typeStr: string): boolean {
59
60
  // Check union types - if ALL parts of the union are primitives, it's primitive
60
61
  // e.g., "string | undefined" -> ["string", "undefined"] -> both are primitive -> true
61
62
  // e.g., "object | null" -> ["object", "null"] -> object is not primitive -> false
63
+ // e.g., "'suggestion' | 'warning'" -> string literal union -> true
62
64
  if (typeStr.includes('|')) {
63
65
  const parts = typeStr.split('|').map((p) => p.trim());
64
- return parts.every((part) => PRIMITIVE_TYPES.has(part));
66
+ return parts.every(
67
+ (part) =>
68
+ PRIMITIVE_TYPES.has(part) ||
69
+ // String literal values like 'suggestion', 'warning' are primitives
70
+ (part.startsWith("'") && part.endsWith("'")),
71
+ );
65
72
  }
66
73
  return false;
67
74
  }
@@ -110,9 +117,21 @@ function pathPartMatches(pathPart: string, schemaPathPart: string): boolean {
110
117
  function bestValueFromOptions(options: Array<string | undefined>) {
111
118
  options = options.filter(Boolean) as string[];
112
119
 
113
- const known = options.find((o) => !o.includes('unknown'));
114
- if (known) {
115
- return known;
120
+ const known = options.filter((o) => !o.includes('unknown'));
121
+ if (known.length > 0) {
122
+ // Among known values, prefer string literal unions over bare primitives.
123
+ // e.g., "'draft' | 'inProgress' | 'paused' | 'completed'" is more specific than "string".
124
+ // This handles cases where a dependency schema has a bare type like "string" but the
125
+ // child entity's analysis has the actual literal union from TypeScript type resolution.
126
+ if (known.length > 1 && known.some((o) => PRIMITIVE_TYPES.has(o))) {
127
+ const literalUnion = known.find(
128
+ (o) => !PRIMITIVE_TYPES.has(o) && o.includes("'"),
129
+ );
130
+ if (literalUnion) {
131
+ return literalUnion;
132
+ }
133
+ }
134
+ return known[0];
116
135
  }
117
136
 
118
137
  const notUnknown = options.find((o) => o !== 'unknown');
@@ -11,11 +11,11 @@
11
11
  "author": "",
12
12
  "license": "ISC",
13
13
  "dependencies": {
14
- "@aws-sdk/client-codebuild": "^3.990.0",
14
+ "@aws-sdk/client-codebuild": "^3.1000.0",
15
15
  "@aws-sdk/client-cloudwatch-logs": "^3.990.0",
16
16
  "@aws-sdk/client-dynamodb": "^3.990.0",
17
17
  "@aws-sdk/client-ecr": "^3.990.0",
18
- "@aws-sdk/client-ecs": "^3.990.0",
18
+ "@aws-sdk/client-ecs": "^3.1004.0",
19
19
  "@aws-sdk/client-s3": "^3.990.0",
20
20
  "@aws-sdk/client-sqs": "^3.990.0",
21
21
  "@aws-sdk/lib-storage": "^3.990.0",
@@ -75,6 +75,7 @@ export * from './src/lib/kysely/tables/backgroundJobsTable';
75
75
  export * from './src/lib/kysely/tables/branchesTable';
76
76
  export * from './src/lib/kysely/tables/commitBranchesTable';
77
77
  export * from './src/lib/kysely/tables/commitsTable';
78
+ export * from './src/lib/kysely/tables/editorScenariosTable';
78
79
  export * from './src/lib/kysely/tables/entitiesTable';
79
80
  export * from './src/lib/kysely/tables/entityBranchesTable';
80
81
  export * from './src/lib/kysely/tables/entityStatementsTable';
@@ -13,10 +13,10 @@
13
13
  "license": "ISC",
14
14
  "dependencies": {
15
15
  "@supabase/supabase-js": "2.88.0",
16
- "better-sqlite3": "^12.4.1",
16
+ "better-sqlite3": "^12.6.2",
17
17
  "fetch-retry": "^6.0.0",
18
18
  "kysely": "^0.28.11",
19
- "pg": "^8.16.3"
19
+ "pg": "^8.19.0"
20
20
  },
21
21
  "jest": {
22
22
  "preset": "ts-jest",
@@ -25,7 +25,7 @@
25
25
  "devDependencies": {
26
26
  "@types/better-sqlite3": "^7.6.13",
27
27
  "@types/jest": "^30.0.0",
28
- "@types/pg": "^8.15.5",
28
+ "@types/pg": "^8.18.0",
29
29
  "@types/ws": "^8.18.1"
30
30
  }
31
31
  }