@codeyam/codeyam-cli 0.1.0-staging.1a2737b → 0.1.0-staging.27d5a59

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 (458) 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 +9 -9
  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/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  11. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  12. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  13. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  14. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  15. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  16. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  17. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  18. package/analyzer-template/packages/aws/package.json +1 -1
  19. package/analyzer-template/packages/database/index.ts +1 -0
  20. package/analyzer-template/packages/database/package.json +3 -3
  21. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  22. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  23. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  24. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  25. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  26. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  27. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  28. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  29. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  30. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  31. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  32. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  33. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  34. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  35. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  36. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  37. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  38. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  39. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  40. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  41. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  42. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  43. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  44. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  45. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  46. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  47. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  48. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  49. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  50. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  51. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  52. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  54. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  55. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  58. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  60. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  61. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  62. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  63. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  64. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  65. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  66. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  67. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  68. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/package.json +1 -1
  70. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  71. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  72. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  73. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  74. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  75. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  76. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  77. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  78. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  79. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  80. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  81. package/analyzer-template/project/constructMockCode.ts +136 -43
  82. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  83. package/analyzer-template/project/start.ts +3 -0
  84. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  85. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  86. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  87. package/analyzer-template/project/writeScenarioComponents.ts +36 -7
  88. package/analyzer-template/tsconfig.json +13 -1
  89. package/background/src/lib/virtualized/project/constructMockCode.js +115 -34
  90. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  91. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  92. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  93. package/background/src/lib/virtualized/project/start.js +2 -0
  94. package/background/src/lib/virtualized/project/start.js.map +1 -1
  95. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  96. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  97. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  98. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  99. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  100. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  101. package/background/src/lib/virtualized/project/writeScenarioComponents.js +29 -7
  102. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  103. package/codeyam-cli/scripts/apply-setup.js +208 -11
  104. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  105. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  106. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  107. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  108. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  109. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  110. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  111. package/codeyam-cli/src/cli.js +9 -12
  112. package/codeyam-cli/src/cli.js.map +1 -1
  113. package/codeyam-cli/src/commands/analyze.js +17 -7
  114. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  115. package/codeyam-cli/src/commands/default.js +7 -2
  116. package/codeyam-cli/src/commands/default.js.map +1 -1
  117. package/codeyam-cli/src/commands/editor.js +1982 -0
  118. package/codeyam-cli/src/commands/editor.js.map +1 -0
  119. package/codeyam-cli/src/commands/init.js +40 -11
  120. package/codeyam-cli/src/commands/init.js.map +1 -1
  121. package/codeyam-cli/src/commands/memory.js +29 -58
  122. package/codeyam-cli/src/commands/memory.js.map +1 -1
  123. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +246 -0
  124. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  125. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +126 -0
  126. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  127. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +295 -0
  128. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  129. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  130. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  131. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +100 -0
  132. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  133. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +147 -0
  134. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  135. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +76 -0
  136. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  137. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  138. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  139. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +6 -0
  140. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  141. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  142. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  143. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  144. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  145. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  146. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  147. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +26 -0
  148. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  149. package/codeyam-cli/src/utils/backgroundServer.js +21 -5
  150. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  151. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  152. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  153. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  154. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  155. package/codeyam-cli/src/utils/editorAudit.js +82 -0
  156. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  157. package/codeyam-cli/src/utils/editorDevServer.js +98 -0
  158. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  159. package/codeyam-cli/src/utils/editorJournal.js +137 -0
  160. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  161. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  162. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  163. package/codeyam-cli/src/utils/editorPreloadHelpers.js +64 -0
  164. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  165. package/codeyam-cli/src/utils/editorPreview.js +66 -0
  166. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  167. package/codeyam-cli/src/utils/editorScenarios.js +56 -0
  168. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  169. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  170. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  171. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  172. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  173. package/codeyam-cli/src/utils/git.js +103 -0
  174. package/codeyam-cli/src/utils/git.js.map +1 -1
  175. package/codeyam-cli/src/utils/install-skills.js +57 -15
  176. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  177. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  178. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  179. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  180. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  181. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  182. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  183. package/codeyam-cli/src/utils/project.js +15 -5
  184. package/codeyam-cli/src/utils/project.js.map +1 -1
  185. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  186. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  187. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  188. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  189. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  190. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  191. package/codeyam-cli/src/utils/queue/job.js +70 -1
  192. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  193. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  194. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  195. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  196. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  197. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  198. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  199. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +2 -5
  200. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  201. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  202. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  203. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  204. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  205. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  206. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  207. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  208. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  209. package/codeyam-cli/src/utils/rules/index.js +1 -0
  210. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  211. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  212. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  213. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  214. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  215. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  216. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  217. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  218. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  219. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  220. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  221. package/codeyam-cli/src/utils/serverState.js +27 -2
  222. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  223. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +45 -4
  224. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  225. package/codeyam-cli/src/utils/simulationGateMiddleware.js +63 -42
  226. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  227. package/codeyam-cli/src/utils/testRunner.js +158 -0
  228. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  229. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  230. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  231. package/codeyam-cli/src/utils/versionInfo.js +21 -0
  232. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  233. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  234. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  235. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  236. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  237. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  238. package/codeyam-cli/src/webserver/backgroundServer.js +118 -18
  239. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  240. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-jNYXRRNI.js → CopyButton-DmJveP3T.js} +1 -1
  241. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-C76mRRiF.js} +1 -1
  242. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CvzqMxcu.js → EntityTypeBadge-g3saevPb.js} +1 -1
  243. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-CobE682z.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-yjIHlOGa.js → InteractivePreview-DYFW3lDD.js} +3 -3
  246. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-Cq5o8jL4.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  247. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-BU_OAEMP.js} +1 -1
  248. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-ceAyBX-H.js} +1 -1
  249. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-djPLI-WV.js} +1 -1
  250. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CwZrv-Ok.js → SafeScreenshot-BED4B6sP.js} +1 -1
  251. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-B76aig_2.js} +1 -1
  252. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  253. package/codeyam-cli/src/webserver/build/client/assets/Terminal-nZNBALox.js +41 -0
  254. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CDpEprKa.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  255. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-C96V0n15.js} +1 -1
  256. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-BpKzcsJz.js} +1 -1
  257. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  258. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  259. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  260. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  261. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  262. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  263. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  264. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  265. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  266. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  267. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  268. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  269. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  270. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  271. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  272. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  273. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  274. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  275. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  276. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  277. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  278. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  279. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  280. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  281. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  282. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-D_nMCFmP.js} +1 -1
  283. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-BH2h1Ea2.js} +1 -1
  284. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-DB3aFuEO.js → chunk-JZWAC4HX-C4pqxYJB.js} +1 -1
  285. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-DyIKORY6.js} +1 -1
  286. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-NDbZjXao.js} +1 -1
  287. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-D1zB-pYc.js → createLucideIcon-CMT1jU2q.js} +1 -1
  288. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  289. package/codeyam-cli/src/webserver/build/client/assets/editor-B2KwhQph.js +8 -0
  290. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._-CrjR3zZW.js} +10 -10
  291. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DjACbfdI.js +6 -0
  292. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  293. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  294. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  295. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-DTvKq3TY.js} +1 -1
  296. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-9sMMAiWJ.js → fileTableUtils-cPo8LiG3.js} +1 -1
  297. package/codeyam-cli/src/webserver/build/client/assets/{files-Co65J0s3.js → files-DO4CZ16O.js} +1 -1
  298. package/codeyam-cli/src/webserver/build/client/assets/{git-BdHOxVfg.js → git-CFCTYk9I.js} +1 -1
  299. package/codeyam-cli/src/webserver/build/client/assets/globals-B17TBSS6.css +1 -0
  300. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-10oVnAAH.js} +1 -1
  301. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-BcvgDzbZ.js} +1 -1
  302. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  303. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-BAXYRVEO.js} +1 -1
  304. package/codeyam-cli/src/webserver/build/client/assets/manifest-af20abcd.js +1 -0
  305. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +96 -0
  306. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-DTAcYxBt.js} +1 -1
  307. package/codeyam-cli/src/webserver/build/client/assets/root-DUKqhFlb.js +67 -0
  308. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-fKo7v0Zo.js} +1 -1
  309. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  310. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DVNJVQgD.js → simulations-B3aOzpCZ.js} +1 -1
  311. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-BG4heKCG.js} +1 -1
  312. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-DtSmdtM4.js} +1 -1
  313. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BqgrAzs3.js → useCustomSizes-ByhSyh0W.js} +1 -1
  314. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  315. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DZlYx2c4.js → useReportContext-O-jkvSPx.js} +1 -1
  316. package/codeyam-cli/src/webserver/build/client/assets/{useToast-ihdMtlf6.js → useToast-9FIWuYfK.js} +1 -1
  317. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  318. package/codeyam-cli/src/webserver/build/server/assets/index-D_kZbNJs.js +1 -0
  319. package/codeyam-cli/src/webserver/build/server/assets/server-build-CWy5OIH9.js +366 -0
  320. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  321. package/codeyam-cli/src/webserver/build-info.json +5 -5
  322. package/codeyam-cli/src/webserver/devServer.js +39 -5
  323. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  324. package/codeyam-cli/src/webserver/editorProxy.js +440 -0
  325. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  326. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +175 -0
  327. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +140 -0
  328. package/codeyam-cli/src/webserver/server.js +226 -1
  329. package/codeyam-cli/src/webserver/server.js.map +1 -1
  330. package/codeyam-cli/src/webserver/terminalServer.js +698 -0
  331. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  332. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  333. package/codeyam-cli/templates/editor-step-hook.py +147 -0
  334. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  335. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  336. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  337. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  338. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  339. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  340. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  341. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  342. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  343. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  344. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  345. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  346. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  347. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  348. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +43 -0
  349. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  350. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  351. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  352. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  353. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  354. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  355. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  356. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  357. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  358. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  359. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  360. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  361. package/codeyam-cli/templates/rule-reflection-hook.py +24 -4
  362. package/codeyam-cli/templates/rules-instructions.md +34 -88
  363. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  364. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +69 -0
  365. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  366. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  367. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  368. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  369. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  370. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  371. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  372. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  373. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  374. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  375. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  376. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  377. package/package.json +12 -10
  378. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  379. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  380. package/packages/ai/src/lib/completionCall.js +10 -7
  381. package/packages/ai/src/lib/completionCall.js.map +1 -1
  382. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +21 -0
  383. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  384. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  385. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  386. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  387. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  388. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  389. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  390. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  391. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  392. package/packages/analyze/src/lib/asts/index.js +4 -2
  393. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  394. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  395. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  396. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  397. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  398. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  399. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  400. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  401. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  402. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  403. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  404. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  405. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  406. package/packages/database/index.js +1 -0
  407. package/packages/database/index.js.map +1 -1
  408. package/packages/database/src/lib/kysely/db.js +5 -0
  409. package/packages/database/src/lib/kysely/db.js.map +1 -1
  410. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  411. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  412. package/packages/database/src/lib/loadCommits.js +23 -13
  413. package/packages/database/src/lib/loadCommits.js.map +1 -1
  414. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  415. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  416. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  417. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  418. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  419. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  420. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  421. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  422. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  423. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  424. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  425. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  426. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  427. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  428. package/scripts/npm-post-install.cjs +34 -0
  429. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  430. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  431. package/codeyam-cli/src/commands/list.js +0 -31
  432. package/codeyam-cli/src/commands/list.js.map +0 -1
  433. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  434. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  435. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  436. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  437. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +0 -34
  438. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  439. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +0 -1
  440. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +0 -6
  441. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +0 -6
  442. package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +0 -1
  443. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  444. package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +0 -1
  445. package/codeyam-cli/src/webserver/build/client/assets/memory-UIDVz141.js +0 -92
  446. package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +0 -62
  447. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +0 -1
  448. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DAFqfEDH.js +0 -2
  449. package/codeyam-cli/src/webserver/build/server/assets/index-B3dE0r28.js +0 -1
  450. package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +0 -273
  451. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  452. package/scripts/finalize-analyzer.cjs +0 -13
  453. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  454. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  455. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  456. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  457. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  458. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -0,0 +1,52 @@
1
+ /**
2
+ * MSW Server Setup — CodeYam Editor Mode
3
+ *
4
+ * This file sets up Mock Service Worker for server-side interception (Node.js).
5
+ * For Next.js: import in `instrumentation.ts`.
6
+ * For Vite SSR: import in the server entry.
7
+ *
8
+ * Usage:
9
+ * import { startMSWServer } from './__codeyam-msw__/server';
10
+ * startMSWServer();
11
+ */
12
+ import { setupServer } from 'msw/node';
13
+ import { getHandlers } from './index';
14
+ import * as fs from 'fs';
15
+ import * as path from 'path';
16
+
17
+ let started = false;
18
+
19
+ export function startMSWServer() {
20
+ if (started) return;
21
+
22
+ try {
23
+ // Read active scenario from .codeyam/active-scenario.json
24
+ let scenarioSlug = 'Default';
25
+ try {
26
+ const activeScenarioPath = path.join(
27
+ process.cwd(),
28
+ '.codeyam',
29
+ 'active-scenario.json',
30
+ );
31
+ if (fs.existsSync(activeScenarioPath)) {
32
+ const data = JSON.parse(fs.readFileSync(activeScenarioPath, 'utf8'));
33
+ scenarioSlug = data.scenarioSlug || 'Default';
34
+ }
35
+ } catch {
36
+ // Use default
37
+ }
38
+
39
+ const handlers = getHandlers(scenarioSlug);
40
+ if (handlers.length === 0) return;
41
+
42
+ const server = setupServer(...handlers);
43
+ server.listen({
44
+ onUnhandledRequest: 'bypass',
45
+ });
46
+
47
+ started = true;
48
+ console.log(`[CodeYam MSW] Server mocking started (scenario: ${scenarioSlug})`);
49
+ } catch (error) {
50
+ console.warn('[CodeYam MSW] Failed to start server mocking:', error);
51
+ }
52
+ }
@@ -0,0 +1,84 @@
1
+ # Prisma 7 + SQLite Setup
2
+
3
+ This project uses Prisma 7 with SQLite via the `better-sqlite3` driver adapter.
4
+
5
+ ## How it works
6
+
7
+ Prisma 7 requires a **driver adapter** — you cannot use `new PrismaClient()` alone.
8
+ Every file that creates a PrismaClient must use this pattern:
9
+
10
+ ```typescript
11
+ import { PrismaClient } from '@prisma/client';
12
+ import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
13
+
14
+ const adapter = new PrismaBetterSqlite3({ url: 'file:./dev.db' });
15
+ const prisma = new PrismaClient({ adapter });
16
+ ```
17
+
18
+ The singleton in `app/lib/prisma.ts` is already configured. Import it in your code:
19
+
20
+ ```typescript
21
+ import { prisma } from '@/app/lib/prisma';
22
+ ```
23
+
24
+ ## Important: do NOT change these settings
25
+
26
+ - **Generator must be `prisma-client-js`** (not `prisma-client`). The `prisma-client`
27
+ generator requires a custom output path that breaks Turbopack import resolution.
28
+ - **Do NOT add an `output` field** to the generator. The default output to
29
+ `node_modules/@prisma/client` works with standard imports everywhere.
30
+ - **Do NOT add `url` to the datasource block** in `schema.prisma`. Prisma 7
31
+ moved the URL to `prisma.config.ts`. Adding it to the schema causes a validation error.
32
+ - **Keep `serverExternalPackages: ["better-sqlite3"]`** in `next.config.ts`.
33
+ Without it, Next.js tries to bundle the native module and fails.
34
+ - **Keep `turbopack: { root: "." }`** in `next.config.ts`. Without it,
35
+ Turbopack may infer a parent directory as root and break imports.
36
+ - **Database file is at project root** (`./dev.db`), not in `prisma/`.
37
+ - **Always run `npx prisma generate`** after `npx prisma db push` (or use
38
+ `npm run db:push` which does both). Without this, the client module is missing.
39
+
40
+ ## Common tasks
41
+
42
+ ```bash
43
+ # Edit your schema
44
+ vim prisma/schema.prisma
45
+
46
+ # Push schema changes to the database (also regenerates client)
47
+ npm run db:push
48
+
49
+ # Seed the database
50
+ npx tsx prisma/seed.ts
51
+ # or: npm run db:seed
52
+
53
+ # Reset the database (delete + recreate + seed)
54
+ npm run db:reset
55
+
56
+ # Open Prisma Studio (database browser)
57
+ npx prisma studio
58
+ ```
59
+
60
+ ## Writing seed scripts
61
+
62
+ Seed scripts run outside of Next.js, so they must create their own PrismaClient
63
+ with the adapter (they cannot import from `@/app/lib/prisma`). See `prisma/seed.ts`
64
+ for the correct pattern.
65
+
66
+ ## Writing API routes
67
+
68
+ ```typescript
69
+ // app/api/todos/route.ts
70
+ import { prisma } from '@/app/lib/prisma';
71
+
72
+ export async function GET() {
73
+ const todos = await prisma.todo.findMany({
74
+ orderBy: { createdAt: 'desc' },
75
+ });
76
+ return Response.json(todos);
77
+ }
78
+
79
+ export async function POST(request: Request) {
80
+ const { title } = await request.json();
81
+ const todo = await prisma.todo.create({ data: { title } });
82
+ return Response.json(todo);
83
+ }
84
+ ```
@@ -0,0 +1,17 @@
1
+ // Example API route using Prisma.
2
+ // Import prisma from the singleton — do NOT create a new PrismaClient here.
3
+
4
+ import { prisma } from '@/app/lib/prisma';
5
+
6
+ export async function GET() {
7
+ const todos = await prisma.todo.findMany({
8
+ orderBy: { createdAt: 'desc' },
9
+ });
10
+ return Response.json(todos);
11
+ }
12
+
13
+ export async function POST(request: Request) {
14
+ const { title } = await request.json();
15
+ const todo = await prisma.todo.create({ data: { title } });
16
+ return Response.json(todo);
17
+ }
@@ -0,0 +1,26 @@
1
+ @import "tailwindcss";
2
+
3
+ :root {
4
+ --background: #ffffff;
5
+ --foreground: #171717;
6
+ }
7
+
8
+ @theme inline {
9
+ --color-background: var(--background);
10
+ --color-foreground: var(--foreground);
11
+ --font-sans: var(--font-geist-sans);
12
+ --font-mono: var(--font-geist-mono);
13
+ }
14
+
15
+ @media (prefers-color-scheme: dark) {
16
+ :root {
17
+ --background: #0a0a0a;
18
+ --foreground: #ededed;
19
+ }
20
+ }
21
+
22
+ body {
23
+ background: var(--background);
24
+ color: var(--foreground);
25
+ font-family: Arial, Helvetica, sans-serif;
26
+ }
@@ -0,0 +1,34 @@
1
+ import type { Metadata } from 'next';
2
+ import { Geist, Geist_Mono } from 'next/font/google';
3
+ import './globals.css';
4
+
5
+ const geistSans = Geist({
6
+ variable: '--font-geist-sans',
7
+ subsets: ['latin'],
8
+ });
9
+
10
+ const geistMono = Geist_Mono({
11
+ variable: '--font-geist-mono',
12
+ subsets: ['latin'],
13
+ });
14
+
15
+ export const metadata: Metadata = {
16
+ title: 'CodeYam App',
17
+ description: 'Built with CodeYam Editor',
18
+ };
19
+
20
+ export default function RootLayout({
21
+ children,
22
+ }: Readonly<{
23
+ children: React.ReactNode;
24
+ }>) {
25
+ return (
26
+ <html lang="en">
27
+ <body
28
+ className={`${geistSans.variable} ${geistMono.variable} antialiased`}
29
+ >
30
+ {children}
31
+ </body>
32
+ </html>
33
+ );
34
+ }
@@ -0,0 +1,19 @@
1
+ // Prisma 7 requires a driver adapter for database access.
2
+ // This file uses better-sqlite3 for SQLite.
3
+ //
4
+ // Usage in API routes and server components:
5
+ // import { prisma } from "@/app/lib/prisma";
6
+ // const items = await prisma.todo.findMany();
7
+
8
+ import { PrismaClient } from '@prisma/client';
9
+ import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
10
+
11
+ const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };
12
+
13
+ const adapter = new PrismaBetterSqlite3({ url: 'file:./dev.db' });
14
+
15
+ export const prisma = globalForPrisma.prisma ?? new PrismaClient({ adapter });
16
+
17
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
18
+
19
+ export default prisma;
@@ -0,0 +1,10 @@
1
+ export default function Home() {
2
+ return (
3
+ <main className="min-h-screen flex items-center justify-center">
4
+ <div className="text-center">
5
+ <h1 className="text-4xl font-bold mb-4">Welcome</h1>
6
+ <p className="text-gray-600">Your app is ready. Start building!</p>
7
+ </div>
8
+ </main>
9
+ );
10
+ }
@@ -0,0 +1,11 @@
1
+ import { defineConfig, globalIgnores } from "eslint/config";
2
+ import nextVitals from "eslint-config-next/core-web-vitals";
3
+ import nextTs from "eslint-config-next/typescript";
4
+
5
+ const eslintConfig = defineConfig([
6
+ ...nextVitals,
7
+ ...nextTs,
8
+ globalIgnores([".next/**", "out/**", "build/**", "next-env.d.ts"]),
9
+ ]);
10
+
11
+ export default eslintConfig;
@@ -0,0 +1,43 @@
1
+ # dependencies
2
+ /node_modules
3
+ /.pnp
4
+ .pnp.*
5
+ .yarn/*
6
+ !.yarn/patches
7
+ !.yarn/plugins
8
+ !.yarn/releases
9
+ !.yarn/versions
10
+
11
+ # testing
12
+ /coverage
13
+
14
+ # next.js
15
+ /.next/
16
+ /out/
17
+
18
+ # production
19
+ /build
20
+
21
+ # misc
22
+ .DS_Store
23
+ *.pem
24
+
25
+ # debug
26
+ npm-debug.log*
27
+ yarn-debug.log*
28
+ yarn-error.log*
29
+ .pnpm-debug.log*
30
+
31
+ # env files
32
+ .env*.local
33
+
34
+ # vercel
35
+ .vercel
36
+
37
+ # typescript
38
+ *.tsbuildinfo
39
+ next-env.d.ts
40
+
41
+ # database
42
+ dev.db
43
+ dev.db-journal
@@ -0,0 +1,14 @@
1
+ import type { NextConfig } from 'next';
2
+
3
+ const nextConfig: NextConfig = {
4
+ // Required: better-sqlite3 is a native module that can't be bundled
5
+ serverExternalPackages: ['better-sqlite3'],
6
+
7
+ turbopack: {
8
+ // Required: prevents Turbopack from inferring a parent directory as root
9
+ // when .codeyam/ exists above the project (which breaks import resolution)
10
+ root: '.',
11
+ },
12
+ };
13
+
14
+ export default nextConfig;
@@ -0,0 +1,35 @@
1
+ {
2
+ "name": "codeyam-project",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "scripts": {
6
+ "dev": "next dev --turbopack",
7
+ "build": "next build",
8
+ "start": "next start",
9
+ "lint": "eslint",
10
+ "db:push": "npx prisma db push && npx prisma generate",
11
+ "db:seed": "npx tsx prisma/seed.ts",
12
+ "db:reset": "rm -f dev.db && npm run db:push && npx tsx prisma/seed.ts"
13
+ },
14
+ "dependencies": {
15
+ "@prisma/adapter-better-sqlite3": "^7.4.1",
16
+ "@prisma/client": "^7.4.1",
17
+ "better-sqlite3": "^12.6.2",
18
+ "next": "^15.3.3",
19
+ "prisma": "^7.4.1",
20
+ "react": "^19.1.0",
21
+ "react-dom": "^19.1.0"
22
+ },
23
+ "devDependencies": {
24
+ "@tailwindcss/postcss": "^4",
25
+ "@types/better-sqlite3": "^7.6.13",
26
+ "@types/node": "^20",
27
+ "@types/react": "^19",
28
+ "@types/react-dom": "^19",
29
+ "eslint": "^9",
30
+ "eslint-config-next": "^15.3.3",
31
+ "tailwindcss": "^4",
32
+ "tsx": "^4.19.4",
33
+ "typescript": "^5"
34
+ }
35
+ }
@@ -0,0 +1,7 @@
1
+ const config = {
2
+ plugins: {
3
+ "@tailwindcss/postcss": {},
4
+ },
5
+ };
6
+
7
+ export default config;
@@ -0,0 +1,27 @@
1
+ // Prisma 7 with SQLite via better-sqlite3 driver adapter.
2
+ //
3
+ // IMPORTANT: Use "prisma-client-js" (NOT "prisma-client").
4
+ // The "prisma-client" generator requires a custom output path which
5
+ // breaks Turbopack import resolution and seed script imports.
6
+ // "prisma-client-js" outputs to node_modules/@prisma/client which
7
+ // works everywhere with standard imports.
8
+
9
+ generator client {
10
+ provider = "prisma-client-js"
11
+ }
12
+
13
+ datasource db {
14
+ provider = "sqlite"
15
+ }
16
+
17
+ // ──────────────────────────────────────────────
18
+ // Replace these placeholder models with your own.
19
+ // After editing, run: npx prisma db push
20
+ // ──────────────────────────────────────────────
21
+
22
+ model Todo {
23
+ id Int @id @default(autoincrement())
24
+ title String
25
+ completed Boolean @default(false)
26
+ createdAt DateTime @default(now())
27
+ }
@@ -0,0 +1,37 @@
1
+ // Seed script for populating the database with demo data.
2
+ //
3
+ // Run with: npx tsx prisma/seed.ts
4
+ // Or: npm run db:seed
5
+ //
6
+ // IMPORTANT: This file must use the same adapter pattern as app/lib/prisma.ts.
7
+ // Do NOT use `new PrismaClient()` without the adapter — Prisma 7 requires it.
8
+
9
+ import { PrismaClient } from '@prisma/client';
10
+ import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
11
+
12
+ const adapter = new PrismaBetterSqlite3({ url: 'file:./dev.db' });
13
+ const prisma = new PrismaClient({ adapter });
14
+
15
+ async function main() {
16
+ // Clear existing data
17
+ await prisma.todo.deleteMany();
18
+
19
+ // Seed with demo data
20
+ await prisma.todo.createMany({
21
+ data: [
22
+ { title: 'Set up the project', completed: true },
23
+ { title: 'Build the first feature' },
24
+ { title: 'Add more scenarios' },
25
+ ],
26
+ });
27
+
28
+ const count = await prisma.todo.count();
29
+ console.log(`Seeded ${count} todos`);
30
+ }
31
+
32
+ main()
33
+ .then(() => prisma.$disconnect())
34
+ .catch((e) => {
35
+ console.error(e);
36
+ process.exit(1);
37
+ });
@@ -0,0 +1,12 @@
1
+ import 'dotenv/config';
2
+ import { defineConfig } from 'prisma/config';
3
+
4
+ export default defineConfig({
5
+ schema: 'prisma/schema.prisma',
6
+ migrations: {
7
+ path: 'prisma/migrations',
8
+ },
9
+ datasource: {
10
+ url: process.env['DATABASE_URL'],
11
+ },
12
+ });
@@ -0,0 +1,34 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2017",
4
+ "lib": ["dom", "dom.iterable", "esnext"],
5
+ "allowJs": true,
6
+ "skipLibCheck": true,
7
+ "strict": true,
8
+ "noEmit": true,
9
+ "esModuleInterop": true,
10
+ "module": "esnext",
11
+ "moduleResolution": "bundler",
12
+ "resolveJsonModule": true,
13
+ "isolatedModules": true,
14
+ "jsx": "react-jsx",
15
+ "incremental": true,
16
+ "plugins": [
17
+ {
18
+ "name": "next"
19
+ }
20
+ ],
21
+ "paths": {
22
+ "@/*": ["./*"]
23
+ }
24
+ },
25
+ "include": [
26
+ "next-env.d.ts",
27
+ "**/*.ts",
28
+ "**/*.tsx",
29
+ ".next/types/**/*.ts",
30
+ ".next/dev/types/**/*.ts",
31
+ "**/*.mts"
32
+ ],
33
+ "exclude": ["node_modules"]
34
+ }
@@ -0,0 +1,44 @@
1
+ ### What to look for
2
+
3
+ Read the full transcript for these signals:
4
+
5
+ **User corrections or redirections**
6
+ - "no", "actually", "that's not right", "you need to also...", "you missed..."
7
+ - User provides information Claude didn't know or couldn't infer from code
8
+ - User reminds Claude of a step, pattern, or relationship
9
+ - A correction about something other than current task requirements is ALWAYS rule-worthy
10
+
11
+ **Investigation and debugging**
12
+ - Claude tried multiple approaches, read logs, or tested hypotheses
13
+ - Investigation revealed non-obvious behavior or root causes
14
+ - Debugging strategies that worked (or didn't) for specific areas
15
+
16
+ **Architecture not evident in code**
17
+ - Files that must change together (templates + installation, routes + registration)
18
+ - Complex files, data flows, pipelines, or system interactions that would benefit from an overview
19
+
20
+ **Commands and workflows**
21
+ - Specific commands or flags needed for this area
22
+ - Order of operations that matters ("must run X before Y")
23
+
24
+ **Ignore:**
25
+ - Corrections to requirements for the current feature or bug
26
+ - Confusion isolated to the current work session (won't recur)
27
+
28
+ ### Before creating a rule
29
+
30
+ **Critical check:** Read the actual source files that were modified. If the code already contains comments, guard patterns, or tests that explain the insight, the code is the documentation — skip the rule unless the file is complex and you've made a mistake or the user had to interrupt and correct you.
31
+
32
+ Show your thinking before proceeding with creating or updating rules.
33
+
34
+ ### How to write rules
35
+
36
+ **Rules must be forward-looking, not historical.** You are reading a session transcript where bugs were found and fixed, but the rule should describe the *current* codebase, not tell the story of what went wrong, what was fixed, etc. The code has already been updated — past bugs are no longer relevant.
37
+
38
+ - **DO**: State constraints and requirements ("this script MUST copy directories recursively, not just files")
39
+ - **DO**: Explain *why* something matters ("errors in prompt copying are silently caught, so missing directories won't surface as errors")
40
+ - **DON'T**: Describe what old code did ("the old version only copied files, causing X to be missing")
41
+ - **DON'T**: Narrate the debugging journey ("we discovered that the catch block was swallowing errors")
42
+ - **DON'T**: Note issues or known gaps if they are actively being worked on!
43
+
44
+ Think of the reader as a developer about to modify these files. They need to know what constraints to preserve and what pitfalls to watch for — not what happened in the past if it is no longer relevant.
@@ -0,0 +1,28 @@
1
+ FIRST: Read `.codeyam/rules/instructions.md` — it contains the required format, rule placement via the rule-path API, and an example rule. You MUST follow this format exactly when creating or editing rules.
2
+
3
+ THEN: Read the file {{CONTEXT_FILE}} and follow the instructions inside.
4
+
5
+ Analyze the conversation transcript for rule-worthy learnings:
6
+ - User corrections, redirections, or information Claude didn't know
7
+ - Investigation results and debugging knowledge
8
+ - Architecture and relationships not obvious from code
9
+ - Commands, workflows, and processes
10
+
11
+ Access and read files in the repo or in the .claude folder as needed.
12
+
13
+ Create new rules only when the learnings meet the guidelines in the context file.
14
+
15
+ IMPORTANT: If you create ANY rule files, write a short summary to `{{NOTIFICATION_FILE}}`. The summary should list each rule change, e.g.:
16
+ ```
17
+ The background rule-reflection agent created the following rules:
18
+ - Created `.claude/rules/tooling/new-pattern.md` — documents X pattern
19
+ ```
20
+ Only write the notification file when rules are created.
21
+
22
+ The project root is {{PROJECT_DIR}}
23
+
24
+ CRITICAL: All rule files MUST be written to {{PROJECT_DIR}}/.claude/rules/ (the project directory). Always use the full absolute path when writing rule files.
25
+
26
+ CRITICAL: Before writing any rule file, you MUST run the rule-path command to determine the correct subdirectory:
27
+ codeyam memory rule-path path/one path/two
28
+ Pass all paths from your frontmatter. The command returns the correct .claude/rules/ subdirectory as JSON. Do NOT guess the placement from the first path — rules with paths spanning multiple directories belong at their common ancestor.
@@ -0,0 +1,31 @@
1
+ FIRST: Read `.codeyam/rules/instructions.md` — it contains the required format, rule placement via the rule-path API, and an example rule. You MUST follow this format exactly when creating or editing rules.
2
+
3
+ THEN: Read the file {{CONTEXT_FILE}} and follow the instructions inside.
4
+
5
+ The user interrupted Claude mid-response — a strong signal of confusion or misunderstanding.
6
+ Analyze both Claude's interrupted output and the user's follow-up to determine what went wrong.
7
+
8
+ Look for:
9
+ - Claude heading in a wrong direction that the user had to correct
10
+ - Misunderstanding of project conventions, architecture, or dependencies
11
+ - Missing context that caused Claude to make incorrect assumptions
12
+ - Patterns that would recur in future sessions without a rule
13
+
14
+ Access and read files in the repo or in the .claude folder as needed.
15
+
16
+ Create new rules only when the learnings meet the guidelines in the context file.
17
+
18
+ IMPORTANT: If you create ANY rule files, write a short summary to `{{NOTIFICATION_FILE}}`. The summary should list each rule change, e.g.:
19
+ ```
20
+ The background rule-reflection agent created the following rules:
21
+ - Created `.claude/rules/tooling/new-pattern.md` — documents X pattern
22
+ ```
23
+ Only write the notification file when rules are created.
24
+
25
+ The project root is {{PROJECT_DIR}}
26
+
27
+ CRITICAL: All rule files MUST be written to {{PROJECT_DIR}}/.claude/rules/ (the project directory). Always use the full absolute path when writing rule files.
28
+
29
+ CRITICAL: Before writing any rule file, you MUST run the rule-path command to determine the correct subdirectory:
30
+ codeyam memory rule-path path/one path/two
31
+ Pass all paths from your frontmatter. The command returns the correct .claude/rules/ subdirectory as JSON. Do NOT guess the placement from the first path — rules with paths spanning multiple directories belong at their common ancestor.
@@ -0,0 +1,24 @@
1
+ FIRST: Read `.codeyam/rules/instructions.md` — it contains the required format, rule placement via the rule-path API, and an example rule. You MUST follow this format exactly when creating or editing rules.
2
+
3
+ THEN: Read the file {{CONTEXT_FILE}} and follow the instructions inside.
4
+
5
+ For each stale rule:
6
+ 1. Review the inline rule content and the diff to determine if the rule needs updating
7
+ 2. If it needs updating, edit the rule file in .claude/rules/ — also trim prose and unnecessary headers (most rules should be a few bullets)
8
+ 3. Run `codeyam memory touch <rule-path1> <rule-path2> ...` with the SPECIFIC rule paths you reviewed to mark them as audited in .claude/codeyam-rule-state.json
9
+ Example: `codeyam memory touch tooling/cli-build.md packages/ai/execution-flow-prioritization.md`
10
+
11
+ Write a summary to `{{NOTIFICATION_FILE}}` listing each action taken, even if you only ran `codeyam memory touch` without content changes. Example:
12
+ ```
13
+ The background rule-reflection agent updated the following rules:
14
+ - Reviewed `.claude/rules/example.md` — no content changes, ran `codeyam memory touch`
15
+ - Created `.claude/rules/tooling/new-pattern.md` — documents X pattern
16
+ ```
17
+
18
+ The project root is {{PROJECT_DIR}}
19
+
20
+ CRITICAL: All rule files MUST be written to {{PROJECT_DIR}}/.claude/rules/ (the project directory), NOT ~/.claude/rules/ (the user home directory). Always use the full absolute path when writing rule files.
21
+
22
+ CRITICAL: Before writing any rule file, you MUST run the rule-path command to determine the correct subdirectory:
23
+ codeyam memory rule-path path/one path/two
24
+ Pass all paths from your frontmatter. The command returns the correct .claude/rules/ subdirectory as JSON. Do NOT guess the placement from the first path — rules with paths spanning multiple directories belong at their common ancestor.