@codeyam/codeyam-cli 0.1.0-staging.d3e886e → 0.1.0-staging.d57a578

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 (660) 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 +22 -22
  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 +259 -5
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  10. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  11. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +0 -33
  12. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  13. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  14. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  18. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  19. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  20. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  21. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  22. package/analyzer-template/packages/aws/package.json +10 -10
  23. package/analyzer-template/packages/database/index.ts +1 -0
  24. package/analyzer-template/packages/database/package.json +3 -3
  25. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  26. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +138 -0
  27. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  28. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  29. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  30. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  31. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  32. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  33. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  34. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  35. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  36. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  37. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  38. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  39. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  40. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  41. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  42. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  43. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +27 -0
  44. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  45. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +121 -0
  46. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  47. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  48. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  49. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  50. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  51. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  52. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  54. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  57. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  58. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  60. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  63. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  66. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  69. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  70. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  73. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  74. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  75. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  76. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  78. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  80. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  81. package/analyzer-template/packages/github/package.json +1 -1
  82. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  83. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  84. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  85. package/analyzer-template/packages/ui-components/package.json +1 -1
  86. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  87. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  88. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  89. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  90. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  91. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  92. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  93. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  94. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  95. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  96. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  97. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  98. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  99. package/analyzer-template/project/constructMockCode.ts +168 -48
  100. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  101. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  102. package/analyzer-template/project/start.ts +3 -0
  103. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  104. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  105. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  106. package/analyzer-template/project/writeScenarioComponents.ts +96 -17
  107. package/analyzer-template/tsconfig.json +13 -1
  108. package/background/src/lib/virtualized/project/constructMockCode.js +143 -39
  109. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  110. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  111. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  112. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  113. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  114. package/background/src/lib/virtualized/project/start.js +2 -0
  115. package/background/src/lib/virtualized/project/start.js.map +1 -1
  116. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  117. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  118. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  119. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  120. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  121. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  122. package/background/src/lib/virtualized/project/writeScenarioComponents.js +73 -12
  123. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  124. package/codeyam-cli/scripts/apply-setup.js +208 -11
  125. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  126. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  127. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  128. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  129. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  130. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  131. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  132. package/codeyam-cli/src/cli.js +32 -25
  133. package/codeyam-cli/src/cli.js.map +1 -1
  134. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +45 -0
  135. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  136. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  137. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  138. package/codeyam-cli/src/commands/analyze.js +17 -7
  139. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  140. package/codeyam-cli/src/commands/default.js +14 -2
  141. package/codeyam-cli/src/commands/default.js.map +1 -1
  142. package/codeyam-cli/src/commands/editor.js +3375 -0
  143. package/codeyam-cli/src/commands/editor.js.map +1 -0
  144. package/codeyam-cli/src/commands/init.js +107 -45
  145. package/codeyam-cli/src/commands/init.js.map +1 -1
  146. package/codeyam-cli/src/commands/memory.js +89 -75
  147. package/codeyam-cli/src/commands/memory.js.map +1 -1
  148. package/codeyam-cli/src/data/techStacks.js +77 -0
  149. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  150. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  151. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  152. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  153. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  155. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  156. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +137 -0
  157. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  158. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +987 -0
  159. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  160. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  161. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  162. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  163. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  164. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +121 -0
  165. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  167. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  168. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  169. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  170. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +520 -0
  171. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  172. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  173. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  174. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  175. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  176. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +353 -0
  177. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  178. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  179. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  180. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  181. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  182. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  183. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  184. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1059 -0
  185. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  186. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +213 -0
  187. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  188. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1742 -0
  189. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  190. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  191. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  192. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  193. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  194. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +26 -20
  195. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  196. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  197. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  198. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  199. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  200. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  201. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  202. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +227 -0
  203. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  204. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  205. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  206. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +454 -0
  207. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  208. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +50 -4
  209. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  210. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  211. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  212. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  213. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  214. package/codeyam-cli/src/utils/analyzer.js +9 -0
  215. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  216. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  217. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  218. package/codeyam-cli/src/utils/backgroundServer.js +104 -12
  219. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  220. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  221. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  222. package/codeyam-cli/src/utils/database.js +37 -2
  223. package/codeyam-cli/src/utils/database.js.map +1 -1
  224. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  225. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  226. package/codeyam-cli/src/utils/devServerState.js +71 -0
  227. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  228. package/codeyam-cli/src/utils/editorApi.js +79 -0
  229. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  230. package/codeyam-cli/src/utils/editorAudit.js +210 -0
  231. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  232. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  233. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  234. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  235. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  236. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  237. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  238. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  239. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  240. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  241. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  242. package/codeyam-cli/src/utils/editorLoaderHelpers.js +113 -0
  243. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  244. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  245. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  246. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  247. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  248. package/codeyam-cli/src/utils/editorPreview.js +137 -0
  249. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  250. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  251. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  252. package/codeyam-cli/src/utils/editorScenarios.js +387 -0
  253. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  254. package/codeyam-cli/src/utils/editorSeedAdapter.js +173 -0
  255. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  256. package/codeyam-cli/src/utils/entityChangeStatus.js +349 -0
  257. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  258. package/codeyam-cli/src/utils/entityChangeStatus.server.js +158 -0
  259. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  260. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  261. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  262. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  263. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  264. package/codeyam-cli/src/utils/git.js +103 -0
  265. package/codeyam-cli/src/utils/git.js.map +1 -1
  266. package/codeyam-cli/src/utils/install-skills.js +57 -15
  267. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  268. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  269. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  270. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  271. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  272. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  273. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  274. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  275. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  276. package/codeyam-cli/src/utils/progress.js +2 -2
  277. package/codeyam-cli/src/utils/progress.js.map +1 -1
  278. package/codeyam-cli/src/utils/project.js +15 -5
  279. package/codeyam-cli/src/utils/project.js.map +1 -1
  280. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  281. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  282. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  283. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  284. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  285. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  286. package/codeyam-cli/src/utils/queue/job.js +70 -1
  287. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  288. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  289. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  290. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  291. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  292. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  293. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  294. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  295. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  296. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  297. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  298. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +2 -4
  299. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  300. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  301. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  302. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +1 -1
  303. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  304. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  305. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  306. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  307. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  308. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  309. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  310. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  311. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  312. package/codeyam-cli/src/utils/rules/index.js +1 -0
  313. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  314. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  315. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  316. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  317. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  318. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  319. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  320. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  321. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  322. package/codeyam-cli/src/utils/scenarioCoverage.js +75 -0
  323. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  324. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  325. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  326. package/codeyam-cli/src/utils/scenariosManifest.js +241 -0
  327. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  328. package/codeyam-cli/src/utils/serverState.js +57 -2
  329. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  330. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +82 -11
  331. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  332. package/codeyam-cli/src/utils/simulationGateMiddleware.js +166 -0
  333. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  334. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  335. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  336. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  337. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  338. package/codeyam-cli/src/utils/testRunner.js +158 -0
  339. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  340. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  341. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  342. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  343. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  344. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  345. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  346. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
  347. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  348. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +567 -0
  349. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  350. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +146 -0
  351. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  352. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +65 -0
  353. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  354. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  355. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  356. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  357. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  358. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  359. package/codeyam-cli/src/webserver/backgroundServer.js +118 -18
  360. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  361. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-jNYXRRNI.js → CopyButton-BPXZwM4t.js} +1 -1
  362. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-BcgbViKV.js} +3 -3
  363. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CvzqMxcu.js → EntityTypeBadge-g3saevPb.js} +1 -1
  364. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-CQIG2qda.js} +9 -9
  365. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-yjIHlOGa.js → InteractivePreview-DYFW3lDD.js} +3 -3
  367. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-Cq5o8jL4.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-BU_OAEMP.js} +1 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-ceAyBX-H.js} +1 -1
  370. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-BzHcG7SE.js} +3 -3
  371. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CwZrv-Ok.js → SafeScreenshot-BED4B6sP.js} +1 -1
  372. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-TSD3C211.js} +3 -3
  373. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  374. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CDpEprKa.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  375. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +1 -0
  376. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-DLxKhri3.js} +3 -3
  377. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-BcY3q6nt.js} +6 -6
  378. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  379. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  382. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Bni3iiUj.js +22 -0
  383. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  384. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  385. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  386. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  387. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  391. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  392. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  393. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  397. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  398. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  399. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  402. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  403. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  405. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  406. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  408. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-BYOypzCa.js} +2 -2
  409. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-C_Pmso5S.js} +2 -2
  410. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-DB3aFuEO.js → chunk-JZWAC4HX-C4pqxYJB.js} +1 -1
  411. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-BVMi9VA5.js} +2 -2
  412. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-n2FB0_Sw.js} +3 -3
  413. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CC6AbExI.js +41 -0
  414. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Ii3inc0_.js +1 -0
  415. package/codeyam-cli/src/webserver/build/client/assets/editor-COWCNVyV.js +10 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CNB06EIa.js +41 -0
  417. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._-DwCV5__E.js} +11 -11
  418. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-CXSi2aeZ.js +6 -0
  419. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CHMiAog3.js +6 -0
  420. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  422. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-DTvKq3TY.js} +1 -1
  423. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-9sMMAiWJ.js → fileTableUtils-cPo8LiG3.js} +1 -1
  424. package/codeyam-cli/src/webserver/build/client/assets/{files-Co65J0s3.js → files-BZrlFE1F.js} +1 -1
  425. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +1 -0
  426. package/codeyam-cli/src/webserver/build/client/assets/globals-phvmGvat.css +1 -0
  427. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-10oVnAAH.js} +1 -1
  428. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-BcvgDzbZ.js} +1 -1
  429. package/codeyam-cli/src/webserver/build/client/assets/index-yHOVb4rc.js +15 -0
  430. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  431. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-DaAZ_H2w.js} +2 -2
  432. package/codeyam-cli/src/webserver/build/client/assets/manifest-6134dc40.js +1 -0
  433. package/codeyam-cli/src/webserver/build/client/assets/memory-9gnxSZlb.js +101 -0
  434. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-f5-1lKBt.js} +3 -3
  435. package/codeyam-cli/src/webserver/build/client/assets/root-BWAyuj0r.js +67 -0
  436. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-Di64LWVb.js} +2 -2
  437. package/codeyam-cli/src/webserver/build/client/assets/settings-0OrEMU6J.js +1 -0
  438. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DVNJVQgD.js → simulations-DWT-CvLy.js} +1 -1
  439. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-Br7MOqts.js} +3 -3
  440. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-BLdiCuG-.js} +2 -2
  441. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C-_hOl_g.js +1 -0
  442. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  443. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DZlYx2c4.js → useReportContext-O-jkvSPx.js} +1 -1
  444. package/codeyam-cli/src/webserver/build/client/assets/{useToast-ihdMtlf6.js → useToast-9FIWuYfK.js} +1 -1
  445. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  446. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  447. package/codeyam-cli/src/webserver/build/server/assets/index-ChX0hPcu.js +1 -0
  448. package/codeyam-cli/src/webserver/build/server/assets/init-kSNsMjj8.js +10 -0
  449. package/codeyam-cli/src/webserver/build/server/assets/server-build-Bm2xIhmh.js +439 -0
  450. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  451. package/codeyam-cli/src/webserver/build-info.json +5 -5
  452. package/codeyam-cli/src/webserver/devServer.js +39 -5
  453. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  454. package/codeyam-cli/src/webserver/editorProxy.js +877 -0
  455. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  456. package/codeyam-cli/src/webserver/idleDetector.js +73 -0
  457. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  458. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  459. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  460. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  461. package/codeyam-cli/src/webserver/server.js +300 -1
  462. package/codeyam-cli/src/webserver/server.js.map +1 -1
  463. package/codeyam-cli/src/webserver/terminalServer.js +735 -0
  464. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  465. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  466. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  467. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  468. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  469. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  470. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  471. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  472. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  473. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  474. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  475. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  476. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  477. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  478. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  479. package/codeyam-cli/templates/codeyam-editor-claude.md +147 -0
  480. package/codeyam-cli/templates/editor-step-hook.py +237 -0
  481. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  482. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  483. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  484. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  485. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  486. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  487. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  488. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  489. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  490. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  491. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  492. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  493. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  494. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  495. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  496. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  497. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  498. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  499. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  500. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  501. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  502. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  503. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  504. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  505. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  506. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  507. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  508. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  509. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  510. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  511. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  512. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  513. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  514. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  515. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  516. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  517. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  518. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  519. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  520. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  521. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  522. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  523. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  524. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +92 -0
  525. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  526. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  527. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  528. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  529. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  530. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  531. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  532. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  533. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  534. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  535. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  536. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  537. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  538. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  539. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  540. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  541. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  542. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  543. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  544. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  545. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  546. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  547. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  548. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  549. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  550. package/codeyam-cli/templates/rule-reflection-hook.py +25 -5
  551. package/codeyam-cli/templates/rules-instructions.md +34 -88
  552. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  553. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +149 -0
  554. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  555. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  556. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  557. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  558. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  559. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  560. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  561. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  562. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  563. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  564. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  565. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  566. package/package.json +21 -14
  567. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  568. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  569. package/packages/ai/src/lib/completionCall.js +10 -7
  570. package/packages/ai/src/lib/completionCall.js.map +1 -1
  571. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +234 -3
  572. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  573. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  574. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  575. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  576. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  577. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  578. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  579. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  580. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  581. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  582. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  583. package/packages/analyze/src/lib/asts/index.js +4 -2
  584. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  585. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  586. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  587. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  588. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  589. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  590. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  591. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  592. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  593. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  594. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  595. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  596. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  597. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  598. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  599. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  600. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  601. package/packages/database/index.js +1 -0
  602. package/packages/database/index.js.map +1 -1
  603. package/packages/database/src/lib/kysely/db.js +5 -0
  604. package/packages/database/src/lib/kysely/db.js.map +1 -1
  605. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +121 -0
  606. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  607. package/packages/database/src/lib/loadCommits.js +23 -13
  608. package/packages/database/src/lib/loadCommits.js.map +1 -1
  609. package/packages/database/src/lib/loadEntities.js +0 -6
  610. package/packages/database/src/lib/loadEntities.js.map +1 -1
  611. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  612. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  613. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  614. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  615. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  616. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  617. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  618. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  619. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  620. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  621. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  622. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  623. package/packages/types/src/enums/ProjectFramework.js +2 -0
  624. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  625. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  626. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  627. package/scripts/npm-post-install.cjs +34 -0
  628. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  629. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  630. package/codeyam-cli/src/commands/list.js +0 -31
  631. package/codeyam-cli/src/commands/list.js.map +0 -1
  632. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  633. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  634. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  635. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  636. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +0 -34
  637. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  638. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-D1zB-pYc.js +0 -21
  639. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +0 -1
  640. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +0 -6
  641. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +0 -6
  642. package/codeyam-cli/src/webserver/build/client/assets/git-BdHOxVfg.js +0 -15
  643. package/codeyam-cli/src/webserver/build/client/assets/globals-CCgBKWy4.css +0 -1
  644. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  645. package/codeyam-cli/src/webserver/build/client/assets/manifest-390cb8fa.js +0 -1
  646. package/codeyam-cli/src/webserver/build/client/assets/memory-CzZySbBE.js +0 -78
  647. package/codeyam-cli/src/webserver/build/client/assets/root-DnbDhvTU.js +0 -62
  648. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +0 -1
  649. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +0 -1
  650. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DAFqfEDH.js +0 -2
  651. package/codeyam-cli/src/webserver/build/server/assets/index-CxaRxKVt.js +0 -1
  652. package/codeyam-cli/src/webserver/build/server/assets/server-build-D4DT0nM_.js +0 -259
  653. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  654. package/scripts/finalize-analyzer.cjs +0 -13
  655. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  656. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  657. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  658. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  659. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  660. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -0,0 +1,237 @@
1
+ ---
2
+ name: codeyam-dev-mode
3
+ autoApprove: true
4
+ description: |
5
+ Use this skill when working in CodeYam Dev Mode — an interactive environment for iterating on
6
+ components and scenarios with a live preview panel alongside a Claude Code terminal.
7
+ Use when: The embedded terminal in Dev Mode auto-invokes this skill to provide entity/scenario context.
8
+ ---
9
+
10
+ # CodeYam Dev Mode
11
+
12
+ You are working inside CodeYam Dev Mode — a split-screen environment with this Claude Code terminal on the left and a live preview on the right.
13
+
14
+ ## Step 1: Read Session Context
15
+
16
+ Read the dev mode context file to understand the current entity and scenario:
17
+
18
+ ```
19
+ cat .codeyam/dev-mode-context.md
20
+ ```
21
+
22
+ The context file contains all the specific paths you need — source file, mock data, dev server project, and **server log**. All paths are fully resolved; no placeholders to fill in.
23
+
24
+ ## Step 2: Gather Context While Server Sets Up
25
+
26
+ The dev server needs time to set up the sandboxed project (copying files, installing deps, starting Vite). The mock data files in the tmp project **do not exist yet** when you first start. Use this time productively.
27
+
28
+ **Do these in parallel:**
29
+
30
+ 1. **Read the source file** from the real repo (exists immediately).
31
+
32
+ 2. **Query the database** for all scenarios belonging to this entity's analysis. Use the **Analysis ID** from the context file:
33
+
34
+ ```
35
+ sqlite3 .codeyam/db.sqlite3 "SELECT name, description FROM scenarios WHERE analysis_id = '<ANALYSIS_ID>'"
36
+ ```
37
+
38
+ Each scenario's `description` explains what data shape it tests — e.g. "empty list", "many items", "error state". This tells you what data attributes matter most for the component's visual states.
39
+
40
+ 3. **Monitor the server log** listed in the context file under **Server log**:
41
+
42
+ ```
43
+ tail -f <server log path from context file>
44
+ ```
45
+
46
+ Wait until you see a local URL like `http://localhost:...` indicating the Vite server has started. Do NOT try to read mock data or other files from the tmp project until the logs confirm setup is complete.
47
+
48
+ ## Step 3: Read Mock Data and Present Overview
49
+
50
+ Once the dev server is ready, read the **mock data file** from the tmp project path listed in the context file.
51
+
52
+ Then present a **concise** overview to the user:
53
+
54
+ 1. **Component Summary** — 2-3 sentences on what the component does and the current scenario being previewed.
55
+
56
+ 2. **Suggested Tests** — Compare the component's code paths (conditionals, edge cases, visual states) against the existing scenarios from the database. Recommend 2-4 specific ways to test the component that are **not yet covered** by saved scenarios. Focus on interesting visual states — e.g. "What does this look like with a very long title?", "What happens when the list is empty?", "How does the error state render?". Also suggest ways to enrich the _existing_ scenario's data to better exercise the component (more realistic content, populated optional fields, diverse values). Be specific to this component, not generic.
57
+
58
+ Keep it brief — no tables, no exhaustive attribute lists. The user can see the preview and wants actionable suggestions, not a data dump.
59
+
60
+ ## How Dev Mode Works
61
+
62
+ **Layout:**
63
+
64
+ - **Left panel** — This Claude Code terminal (you)
65
+ - **Right panel** — Live preview iframe showing the rendered component/scenario
66
+
67
+ **Architecture:**
68
+
69
+ - The preview runs from a sandboxed project at the tmp path listed in the context file
70
+ - Source code edits in the real repo auto-sync to the preview via HMR (hot module replacement)
71
+ - Mock data files live in the tmp project under `__codeyamMocks__/`
72
+
73
+ **What you can edit:**
74
+
75
+ - **Source code** (the entity's file in the real repo) — edits sync automatically to the preview
76
+ - **Mock data** (the `MockData_*.tsx` file in the tmp project) — edits also sync via HMR
77
+ - Both types of edits show up in the preview almost instantly
78
+
79
+ **CRITICAL — What you must NEVER edit for functional changes:**
80
+
81
+ - **Shimmed component files** (`*_Scenario.tsx` in the tmp project) — these are auto-generated files that wire up the component with mocked dependencies. **NEVER modify these to change what renders.** Any functional changes you make here:
82
+ - Will be lost when the scenario is recaptured or regenerated
83
+ - Cannot be saved as a scenario (only mock data is persisted to the database)
84
+ - Break the ability to reproduce the scenario in the future
85
+ - To change what the component displays, **always edit the `MockData_*.tsx` file**. The shimmed component reads mock data via `scenarios().data()` — that's the mechanism for controlling component behavior and visual state.
86
+ - The ONLY acceptable edit to a shimmed component file is adding temporary `console.log` statements for debugging (see Client-Side Logging below). Never change imports, state initialization, hooks, memos, or rendering logic.
87
+
88
+ ## Workflow
89
+
90
+ 1. Read the context file (`.codeyam/dev-mode-context.md`)
91
+ 2. While dev server sets up, do in parallel:
92
+ - Read the source file (from real repo — available immediately)
93
+ - Query database for scenario names/descriptions (available immediately)
94
+ - Monitor server log until dev server is ready
95
+ 3. Read the mock data file (from tmp project — only after setup completes)
96
+ 4. Present concise overview: component summary + suggested untested scenarios
97
+ 5. Ask the user what they want to change
98
+ 6. Make incremental edits to **source code or mock data only** — the preview updates live
99
+ 7. After making changes, refresh the preview (curl command from context file)
100
+ 8. Iterate based on user feedback
101
+
102
+ ## Client-Side Logging (Required)
103
+
104
+ **Always add `console.log` statements to trace the execution flow when making changes.** This is critical — you cannot see the preview, so logging is your only way to verify the component renders as expected.
105
+
106
+ Client-side `console.log` and `console.error` calls are automatically captured by the `/api/client-log` endpoint and written to the server log file. This means you can add logging in component code and read it from the server log.
107
+
108
+ **When to add logging:**
109
+
110
+ - Before and after every change you make to the shimmed component or mock data
111
+ - At key data flow checkpoints: after state initialization, after useMemo computations, before the render return
112
+ - In useEffect callbacks to confirm they fire
113
+ - Around conditional branches you're targeting (e.g. "this condition should now be true")
114
+
115
+ **How to log:**
116
+
117
+ Add `console.log` with a `[CY-DEBUG]` prefix in the shimmed component file (the `*_Default_Scenario.tsx` file in the tmp project). **This is the ONLY acceptable edit to shimmed component files — temporary debug logging. Never change the component's logic, imports, state, or rendering in these files.**
118
+
119
+ ```typescript
120
+ // After state declarations:
121
+ console.log(
122
+ '[CY-DEBUG] render: myState:',
123
+ myState?.length,
124
+ 'otherData:',
125
+ otherData,
126
+ );
127
+
128
+ // Inside useEffect:
129
+ useEffect(() => {
130
+ console.log('[CY-DEBUG] useEffect fired, setting data');
131
+ // ...
132
+ }, []);
133
+
134
+ // Before return:
135
+ console.log(
136
+ '[CY-DEBUG] PRE-RENDER: showThumbnails:',
137
+ items?.length > 0,
138
+ 'showLoader:',
139
+ !items,
140
+ );
141
+ ```
142
+
143
+ **After refreshing, always check the log** for your `[CY-DEBUG]` lines:
144
+
145
+ ```
146
+ tail -30 <server log path from context file>
147
+ ```
148
+
149
+ If you don't see your debug logs but see `[CLIENT CONSOLE.ERROR]` or `Application Error`, the component is crashing before your code runs. Read the error stack trace to find the failing component.
150
+
151
+ **Keep logging in place** as you iterate — it costs nothing and saves significant debugging time.
152
+
153
+ ## Refreshing the Preview
154
+
155
+ After making changes, refresh the live preview so it picks up your edits. The exact curl command is in the context file under **Server > Refresh preview** — copy and run it:
156
+
157
+ ```
158
+ curl -s -X POST http://localhost:<port>/api/dev-mode-preview
159
+ ```
160
+
161
+ **Always refresh after making changes.** This triggers the preview iframe to reload, **clears the server log file**, waits for the page to re-render, and then fetches the preview URL to check for SSR errors.
162
+
163
+ **The response includes preview health info.** Check the `preview` field in the JSON response:
164
+
165
+ ```json
166
+ {
167
+ "success": true,
168
+ "sessionsNotified": 1,
169
+ "logCleared": true,
170
+ "preview": {
171
+ "status": 200,
172
+ "healthy": true
173
+ }
174
+ }
175
+ ```
176
+
177
+ If the preview is unhealthy (e.g., SSR error caught by an error boundary), the response will include the error:
178
+
179
+ ```json
180
+ {
181
+ "preview": {
182
+ "status": 500,
183
+ "healthy": false,
184
+ "error": "ReferenceError: myVariable is not defined\n at Component (/path/to/file.tsx:42:5)"
185
+ }
186
+ }
187
+ ```
188
+
189
+ **After every refresh:**
190
+
191
+ 1. **Check `preview.healthy`** in the JSON response. If `false`, the `error` field contains the SSR error — fix it before proceeding.
192
+ 2. **Check the log** for your `[CY-DEBUG]` lines to confirm the execution path:
193
+
194
+ ```
195
+ tail -30 <server log path from context file>
196
+ ```
197
+
198
+ If the preview was unhealthy, the log will also contain `[DEV-MODE-CHECK]` lines with the error details.
199
+
200
+ Look for your `[CY-DEBUG]` lines to confirm the execution path. If you see errors instead, the component is crashing. If you see nothing, the page may still be loading — wait a moment and check again.
201
+
202
+ ## Debugging with Server Logs
203
+
204
+ The **Server log** path in the context file captures all output from the dev server process — Vite compilation errors, SSR errors, HMR updates, and runtime warnings. **Client-side errors** (React rendering errors, unhandled exceptions, console.error calls) are also automatically reported to this log via the `/api/client-log` endpoint. This means both server and client errors appear in the same log file.
205
+
206
+ Since the log is **cleared on every refresh**, you always see fresh output. No need to scroll past old errors.
207
+
208
+ **When to check the server log:**
209
+
210
+ - **After every refresh** — always verify your debug logs appear and no errors are present
211
+ - The preview shows a blank page, error boundary, or 500 error
212
+ - HMR updates aren't taking effect after edits
213
+ - The preview is stuck loading or shows unexpected content
214
+
215
+ **How to check:**
216
+
217
+ ```
218
+ tail -50 <server log path from context file>
219
+ ```
220
+
221
+ **What to look for:**
222
+
223
+ - `[CY-DEBUG]` — your trace logs confirming the execution path and data values
224
+ - `[CLIENT CONSOLE.ERROR]` — client-side React errors or unhandled exceptions
225
+ - `[vite]` error messages — TypeScript compilation failures
226
+ - `Application Error` — React error boundary activated (component crashed during render)
227
+ - No output at all — the page hasn't loaded yet, or the component never rendered
228
+
229
+ ## Tips
230
+
231
+ - **NEVER modify shimmed component files** (`*_Scenario.tsx`) to change rendering behavior — only edit `MockData_*.tsx` files to change what the component displays. Shimmed components are auto-generated; functional changes to them won't persist and can't be saved as scenarios.
232
+ - **Refresh the preview frequently** — the user is watching the preview panel as you work. Make small changes, then refresh so they see visual progress. Don't batch multiple edits into one big refresh at the end. Aim for a refresh after every meaningful edit (new data values, layout changes, style tweaks).
233
+ - **Always add `[CY-DEBUG]` logging before refreshing** — never refresh without a way to verify the result
234
+ - Mock data files are TypeScript (`.tsx`) — they export scenario-specific props/data
235
+ - The database at `.codeyam/db.sqlite3` has entity and scenario metadata if you need deeper investigation
236
+ - If the preview breaks, check the server log (path in context file) for compilation or runtime errors
237
+ - You can also modify other files in the repo that the entity imports — those changes sync too
@@ -0,0 +1,149 @@
1
+ ---
2
+ name: codeyam-editor
3
+ autoApprove: true
4
+ description: CodeYam Editor Mode — scaffold a project and build code + data scenarios together
5
+ ---
6
+
7
+ # CodeYam Editor Mode
8
+
9
+ You are in **Editor Mode**. The user sees a split-screen: this terminal on the left, live preview on the right.
10
+
11
+ ## CRITICAL: How This Works
12
+
13
+ You MUST follow a step-by-step workflow driven by `codeyam editor` commands. Each command tells you exactly what to do next. **You do NOT have all the instructions upfront** — the commands provide them incrementally.
14
+
15
+ **Your first action:** Run `codeyam editor steps`.
16
+
17
+ **The rule:** After completing what a command tells you to do, run the NEXT command it specifies. The commands are your instructions — follow them one at a time.
18
+
19
+ ## The Cycle
20
+
21
+ Every feature follows 13 gated steps:
22
+
23
+ ```
24
+ codeyam editor steps → Setup (if new) or cycle overview
25
+ codeyam editor 1 → Plan the feature (confirm with user)
26
+ codeyam editor 2 → Build a working prototype fast
27
+ codeyam editor 3 → Confirm prototype with user
28
+ codeyam editor 4 → Plan extraction (read code, list everything to extract)
29
+ codeyam editor 5 → Execute extraction (TDD for functions, extract components)
30
+ codeyam editor 6 → Record functions in glossary
31
+ codeyam editor 7 → Analyze and verify components
32
+ codeyam editor 8 → Create app-level scenarios
33
+ codeyam editor 9 → Create user-persona scenarios
34
+ codeyam editor 10 → Verify screenshots and check for errors
35
+ codeyam editor 11 → Create/update journal entry
36
+ codeyam editor 12 → Verify screenshots and audit
37
+ codeyam editor 13 → Present summary, get final approval
38
+ ```
39
+
40
+ **You MUST run each command and follow its checklist before moving to the next.** Steps 1, 3, and 13 require user confirmation. After step 13, loop back to step 1.
41
+
42
+ ## Handling User Feedback / Changes
43
+
44
+ When the user asks for changes — whether through the menu, a direct request, or even a question that implies a change (e.g., "Can the cards have images?") — you MUST run `codeyam editor change` **before** making any modifications. This includes:
45
+
46
+ - Code changes (components, routes, lib functions, styles)
47
+ - Scenario data updates (seed data, localStorage data, mock data)
48
+ - Style adjustments (CSS, Tailwind classes, layout tweaks)
49
+ - Even small fixes (typos, color tweaks, spacing)
50
+
51
+ This command gives you the post-change checklist (re-register scenarios, re-run tests, update journal, etc.). Never make changes without running the change workflow first.
52
+
53
+ **CRITICAL:** The change workflow MUST end with `codeyam editor 13`, which shows Working Session Results to the user. Skipping this step is a broken experience — the user will not see what changed and cannot approve or request further changes. Every change, no matter how small, must conclude with results being shown.
54
+
55
+ ## Key Rules
56
+
57
+ - **Run the commands** — they ARE your instructions, not suggestions
58
+ - **Every feature gets scenarios** — this is the core value of CodeYam
59
+ - **Always scaffold with a database** (Prisma + SQLite)
60
+ - **Build real API routes** — the proxy handles scenario data transparently
61
+ - **Start the dev server via the CodeYam API** — it handles proxy setup automatically
62
+ - **Keep the preview moving** — the user watches the preview panel as you work. Refresh it frequently so they see progress, not a static screen. See below.
63
+
64
+ ## Keep the Preview Moving
65
+
66
+ The user is watching the live preview panel while you work. A static preview makes it feel like nothing is happening. **Refresh the preview after every meaningful change** — not just at the end of a step.
67
+
68
+ **During prototyping (step 2):**
69
+
70
+ - Refresh after creating the first visible page, even if it's bare
71
+ - Refresh after adding each major UI section (header, list, form, etc.)
72
+ - Refresh after seeding data so the user sees real content appear
73
+ - Refresh after styling changes so the user sees the visual progress
74
+
75
+ **During extraction (step 5):**
76
+
77
+ - Refresh after extracting each batch of components to confirm nothing broke
78
+
79
+ **During changes:**
80
+
81
+ - Refresh after each individual change, not after all changes are done
82
+
83
+ **How to refresh:**
84
+
85
+ ```
86
+ codeyam editor preview '{"dimension":"<name from screenSizes>"}'
87
+ ```
88
+
89
+ Navigate to a specific path or switch scenario:
90
+
91
+ ```
92
+ codeyam editor preview '{"path":"/drinks/1","dimension":"<name from screenSizes>"}'
93
+ codeyam editor preview '{"scenarioId":"abc-123"}'
94
+ ```
95
+
96
+ The goal: the user should see the preview update 4-8+ times during a typical building session, not just once at the end.
97
+
98
+ ## Collaboration
99
+
100
+ Isolation routes are committed to git (not gitignored). They are protected by a layout guard at `app/isolated-components/layout.tsx` that returns `notFound()` in production, so they are safe to commit. Scenarios, screenshots, journal entries, and the glossary are also committed. Only the local database and secrets are gitignored.
101
+
102
+ When a collaborator clones the repo and runs `codeyam editor`, scenarios are auto-imported from `scenarios-manifest.json`. Run `codeyam editor sync` to manually re-sync after pulling new changes.
103
+
104
+ ## Quick Reference
105
+
106
+ ```bash
107
+ # Register component scenario (auto-captures screenshot)
108
+ # ALWAYS include "dimensions" — use the project's default screen size name from setup
109
+ codeyam editor register '{"name":"DrinkCard - Default","componentName":"DrinkCard","componentPath":"app/components/DrinkCard.tsx","url":"/isolated-components/DrinkCard?s=Default","dimensions":["<name from screenSizes>"],"mockData":{"routes":{"/api/...":{"body":[...]}}}}'
110
+
111
+ # Register app scenario with seed data (ALWAYS include "url" and "dimensions")
112
+ codeyam editor register '{"name":"Full Catalog","type":"application","url":"/","dimensions":["<name from screenSizes>"],"seed":{"drinks":[...]}}'
113
+
114
+ # Register app scenario with localStorage (for apps using client-side storage instead of a database)
115
+ codeyam editor register '{"name":"Full Library","type":"application","url":"/","dimensions":["<name from screenSizes>"],"localStorage":{"articles":[...],"collections":[...]}}'
116
+
117
+ # For large seed/localStorage data, write JSON to a temp file and use @ prefix:
118
+ codeyam editor register @/tmp/scenario-data.json
119
+
120
+ # Journal entry (one per feature, references scenario names)
121
+ codeyam editor journal '{"title":"...","type":"feature","description":"..."}'
122
+
123
+ # Update journal with commit info
124
+ codeyam editor journal-update '{"time":"...","commitSha":"...","commitMessage":"..."}'
125
+
126
+ # Refresh preview / navigate / switch scenario (ALWAYS include "dimension")
127
+ codeyam editor preview '{"dimension":"<name from screenSizes>"}'
128
+ codeyam editor preview '{"path":"/drinks/1","dimension":"<name from screenSizes>"}'
129
+ codeyam editor preview '{"scenarioId":"abc-123"}'
130
+
131
+ # Show/hide results panel
132
+ codeyam editor show-results
133
+ codeyam editor hide-results
134
+
135
+ # Commit feature
136
+ codeyam editor commit '{"message":"feat: Add drinks page"}'
137
+
138
+ # Restart dev server (only for config/dependency changes)
139
+ codeyam editor dev-server '{"action":"restart"}'
140
+
141
+ # Check for client-side errors
142
+ codeyam editor client-errors
143
+
144
+ # Verify all images load (extracts URLs from pages, HTTP-checks each one)
145
+ codeyam editor verify-images '{"paths":["/","/drinks/1"]}'
146
+
147
+ # Sync scenarios from manifest (after pulling collaborator changes)
148
+ codeyam editor sync
149
+ ```
@@ -208,6 +208,215 @@ Prioritize areas with stronger confusion signals:
208
208
 
209
209
  Focus your documentation efforts on areas with the highest confusion scores.
210
210
 
211
+ Holistic source analysis signals (from the Holistic Source Analysis phase below) also feed into this scoring. Session mining signals (from the Session Log Mining phase below) feed into this same table.
212
+
213
+ ---
214
+
215
+ ## Phase 3B: Analysis Sizing & Menu
216
+
217
+ Before running the expensive LLM-powered analysis phases, run the fast extraction scripts to gather sizing metrics and let the user choose which phases to run.
218
+
219
+ ### Step 1: Run fast extraction scripts (concurrent)
220
+
221
+ Clear stale data from any previous run, then run all three scripts in parallel:
222
+
223
+ ```bash
224
+ rm -rf /tmp/codeyam-memory/ /tmp/cc-session-analysis/
225
+ ```
226
+
227
+ ```bash
228
+ node .claude/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs
229
+ ```
230
+
231
+ ```bash
232
+ node .claude/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs
233
+ ```
234
+
235
+ ```bash
236
+ node .claude/skills/codeyam-memory/scripts/session-mining/preprocess.mjs 2>/dev/null
237
+ ```
238
+
239
+ Capture the stdout of `preprocess.mjs` — each line is a path to a filtered session file.
240
+
241
+ ### Step 2: Extract sizing metrics
242
+
243
+ Use quick one-liners to extract counts — do NOT read the full JSON files into the main context:
244
+
245
+ ```bash
246
+ node .claude/skills/codeyam-memory/scripts/lib/read-json-field.mjs /tmp/codeyam-memory/deprecated-scan.json '.dependencies | length'
247
+ node .claude/skills/codeyam-memory/scripts/lib/read-json-field.mjs /tmp/codeyam-memory/deprecated-scan.json '.explicit_markers | length'
248
+ node .claude/skills/codeyam-memory/scripts/lib/read-json-field.mjs /tmp/codeyam-memory/exports-scan.json '.stats.total_exports'
249
+ node .claude/skills/codeyam-memory/scripts/lib/read-json-field.mjs /tmp/codeyam-memory/exports-scan.json '.stats.total_files'
250
+ ```
251
+
252
+ The session count is the number of lines from `preprocess.mjs` stdout.
253
+
254
+ **Time estimate formulas:**
255
+
256
+ | Phase | Formula | Example |
257
+ | ------------------------ | --------------------------------------- | ----------------------- |
258
+ | Holistic source analysis | `3 + (total_exports / 500)` min, cap 12 | 3,470 exports → ~10 min |
259
+ | Session log mining | `1 + (sessions × 0.25)` min, cap 12 | 25 sessions → ~7 min |
260
+
261
+ ### Step 3: Present the menu
262
+
263
+ Use `AskUserQuestion` with `multiSelect: true`. Include actual numbers from Step 2:
264
+
265
+ > **Which additional analysis phases would you like to run?**
266
+ >
267
+ > 📦 **Holistic Source Analysis** — {exports} exports across {files} files, {deps} dependencies, {markers} deprecation markers. Estimated: ~{N} min
268
+ >
269
+ > 💬 **Session Log Mining** — {sessions} qualifying sessions found. Estimated: ~{N} min
270
+
271
+ Options (as `multiSelect: true`):
272
+
273
+ - **Holistic Source Analysis (~N min)** — "Deep-read exports to find misleading APIs and deprecated patterns"
274
+ - **Session Log Mining (~N min)** — "Mine Claude session history for confusion signals"
275
+ - **Skip both** — "Proceed with git archaeology results only"
276
+
277
+ Omit any option where the data count is zero (e.g., if no sessions qualify, don't show the session mining option). If both counts are zero, skip the menu entirely and proceed to Phase 4.
278
+
279
+ ### Step 4: Execute selected phases
280
+
281
+ Based on the user's selection:
282
+
283
+ - **Holistic Source Analysis selected:** Jump to the "Holistic Source Analysis" section below, starting at **Step 2** (scripts already ran in Step 1 above).
284
+ - **Session Log Mining selected:** Jump to the "Session Log Mining" section below, starting at **Step 2** (preprocessing already ran in Step 1 above). Use the session file paths captured in Step 1.
285
+ - **Both selected:** Run both, starting each at Step 2.
286
+ - **Skip both:** Proceed directly to Phase 4.
287
+
288
+ ### Step 5: Cleanup
289
+
290
+ Regardless of what the user selected, clean up temporary files before proceeding to Phase 4:
291
+
292
+ ```bash
293
+ rm -rf /tmp/codeyam-memory/ /tmp/cc-session-analysis/
294
+ ```
295
+
296
+ ---
297
+
298
+ ## Additional Analysis Phase: Holistic Source Analysis
299
+
300
+ Holistic analysis reads the codebase cross-cuttingly to find **latent confusion** — problems
301
+ that haven't caused bugs yet but will mislead a future agent reading code locally.
302
+
303
+ ### Prerequisites
304
+
305
+ - Project must contain `.ts`, `.tsx`, `.js`, or `.jsx` source files
306
+ - If no source files are found, skip this phase entirely
307
+
308
+ ### Step 1: Run extraction scripts
309
+
310
+ Handled by Phase 3B. Proceed to Step 2.
311
+
312
+ ### Step 2: Launch analysis subagents (concurrent)
313
+
314
+ Read the prompt templates and launch both as Task agents concurrently. **Do NOT read the
315
+ scan data into the main context** — it can be hundreds of KB. Each subagent reads its own
316
+ data file via the Read tool.
317
+
318
+ 1. **Deprecated Pattern agent** — Read `.claude/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md` for the
319
+ prompt template. Launch as a foreground Task agent (model: sonnet) with the prompt template
320
+ content. The agent reads `/tmp/codeyam-memory/deprecated-scan.json` itself, uses Grep to
321
+ find remaining callsites, and returns its findings JSON in the response.
322
+
323
+ 2. **Misleading API agent** — Read `.claude/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md` for the
324
+ prompt template. Launch as a foreground Task agent (model: sonnet) with the prompt template
325
+ content. The agent reads `/tmp/codeyam-memory/exports-scan.json` itself, uses Read to
326
+ inspect suspicious functions, and returns its findings JSON in the response.
327
+
328
+ Both agents return their findings JSON and a brief summary directly in their response.
329
+
330
+ **Context budget note:** The exports index alone can be 400KB+. Never read it into the main
331
+ context. Subagents run as foreground Task agents and have full filesystem access including
332
+ `/tmp/`.
333
+
334
+ ### Step 3: Integrate findings
335
+
336
+ Parse the findings JSON from each subagent's response. For each finding:
337
+
338
+ - **Deprecated patterns** get confusion score **4** (comparable to "workaround/hack" signal).
339
+ If an explicit `@deprecated` marker exists, bump to **5**.
340
+ - **Misleading APIs** get confusion score **4** for medium severity, **6** for high severity
341
+ (where "high" means the mismatch could cause data corruption or silent failures).
342
+
343
+ Add findings to the evidence pool alongside git archaeology results. They flow into
344
+ Phase 4 (evidence-based user questions) and Phase 5 (rule generation) normally.
345
+
346
+ ### Step 4: Cleanup
347
+
348
+ Handled by Phase 3B Step 5.
349
+
350
+ ---
351
+
352
+ ## Additional Analysis Phase: Session Log Mining
353
+
354
+ This phase mines Claude Code session transcripts for empirical confusion: user corrections, wrong assumptions, re-edits, tribal knowledge gaps. It complements the git archaeology in Phase 2 with direct evidence from actual Claude sessions.
355
+
356
+ ### Step 1: Preprocess Sessions
357
+
358
+ Handled by Phase 3B. Use the session file paths captured there.
359
+
360
+ ### Step 2: Launch Haiku Subagents
361
+
362
+ Read the prompt template from `.claude/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md`.
363
+
364
+ For each filtered session file from Step 1:
365
+
366
+ - If the file is **<200KB**: launch one Haiku Task agent
367
+ - If the file is **>200KB**: chunk into ~200KB segments, launch one agent per chunk
368
+
369
+ **Do NOT read session files into the main context** — they can be 20-40KB each and will
370
+ exhaust the context window. Each subagent reads its own file via the Read tool. Each agent
371
+ receives:
372
+
373
+ 1. The prompt template content
374
+ 2. The `/tmp/` file path to read (the agent reads it itself)
375
+ 3. Instruction to return a JSON array
376
+
377
+ Launch agents in batches of **10** using the Task tool with `model: "haiku"`. **Use unique descriptions** for each agent (e.g., "Session mining batch 1 - session 1", "Session mining batch 1 - session 2", etc.; increment the batch number for each batch of 10). Wait for each batch to complete before launching the next. This keeps machine load manageable — a poweruser may have 30+ sessions qualifying.
378
+
379
+ ### Step 3: Collect and Validate Findings
380
+
381
+ Parse each agent's response as JSON. Validate:
382
+
383
+ - Must be an array
384
+ - Each element must have `signal` and `summary` fields
385
+ - `signal` must be one of: `USER_CORRECTION`, `RE_EDIT`, `FAILED_PIVOT`, `WRONG_ASSUMPTION`, `TRIBAL_KNOWLEDGE`, `APPROACH_PIVOT`
386
+
387
+ If >50% of agents return invalid output, warn the user before continuing. Otherwise, silently skip invalid results.
388
+
389
+ **Filter out environment-specific findings.** Discard any finding that relates to the developer's local machine setup rather than the project's codebase — e.g., bare repo checkout layouts, local tool versions, IDE configuration, shell aliases, filesystem paths, or permission issues. The rules we generate must be useful to _any_ developer cloning the repo, not just the one whose sessions we mined.
390
+
391
+ ### Step 4: Deduplicate Across Sessions
392
+
393
+ Three-pass merge:
394
+
395
+ 1. **Cluster by `topic`** — group all findings with the same topic label
396
+ 2. **Rank within each cluster** — priority order: `USER_CORRECTION` > `TRIBAL_KNOWLEDGE` > `WRONG_ASSUMPTION` > `FAILED_PIVOT` > `RE_EDIT` > `APPROACH_PIVOT`
397
+ 3. **Count session occurrences** — add `session_count` to each merged finding
398
+
399
+ Output: one merged finding per topic, with `session_count`, strongest signal type, and collected file paths.
400
+
401
+ ### Step 5: Feed into Phase 3 Scoring
402
+
403
+ Additional scoring weights for session-mining signals:
404
+
405
+ | Signal | Weight |
406
+ | ----------------------------------- | -------- |
407
+ | User correction (session) | 7 |
408
+ | Tribal knowledge provided (session) | 6 |
409
+ | Wrong assumption caught (session) | 5 |
410
+ | Re-edit of same file (session) | 4 |
411
+ | Failed-then-pivoted (session) | 3 |
412
+ | Appearing in 3+ sessions | +3 bonus |
413
+
414
+ These merge into the Phase 3 scoring table above. Session-mined findings then flow into Phase 4 (evidence-based questions) and Phase 5 (rule generation) alongside git archaeology findings.
415
+
416
+ ### Step 6: Cleanup
417
+
418
+ Handled by Phase 3B Step 5.
419
+
211
420
  ---
212
421
 
213
422
  ## Phase 4: Ask Evidence-Based Questions
@@ -282,6 +491,12 @@ Before generating each rule, verify it passes these tests:
282
491
  - If YES → definitely document it
283
492
  - If NO → reconsider its value
284
493
 
494
+ **For holistic analysis findings**, the validation checks apply with these adjustments:
495
+
496
+ - **Evidence check:** Satisfied by structural evidence from source analysis (e.g., "name implies pure computation but implementation writes to cache on line 47") rather than git commit history.
497
+ - **Code-derivable check:** These findings ARE derived from code — but from a cross-cutting read that a local reader wouldn't perform. The rule is valuable if it captures insight that requires reading multiple files or tracing non-obvious call chains.
498
+ - **Prevention check:** "Would this rule prevent a future agent from being misled?" rather than "would it have prevented a past commit?"
499
+
285
500
  ### Rule Quality Examples
286
501
 
287
502
  **✅ Good rule** (passes all tests):