@codeyam/codeyam-cli 0.1.0-staging.8421896 → 0.1.0-staging.8778565

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 (627) 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/dataStructureChunking.ts +15 -6
  11. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  12. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +96 -33
  13. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  14. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  15. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  18. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  19. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  20. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  21. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  22. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  23. package/analyzer-template/packages/aws/package.json +10 -10
  24. package/analyzer-template/packages/database/index.ts +1 -0
  25. package/analyzer-template/packages/database/package.json +3 -3
  26. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  27. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +82 -0
  28. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  29. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  30. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  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 +24 -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 +65 -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/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  54. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  57. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  58. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  60. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  63. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  64. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  66. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  69. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  70. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  71. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  73. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  75. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  77. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  78. package/analyzer-template/packages/github/package.json +1 -1
  79. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  80. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  81. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  82. package/analyzer-template/packages/ui-components/package.json +1 -1
  83. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  84. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  85. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  86. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  87. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  88. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  89. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  90. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  91. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  92. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  93. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  94. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  95. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  96. package/analyzer-template/project/constructMockCode.ts +170 -50
  97. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  98. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  99. package/analyzer-template/project/start.ts +3 -0
  100. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  101. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  102. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  103. package/analyzer-template/project/writeScenarioComponents.ts +110 -17
  104. package/analyzer-template/tsconfig.json +13 -1
  105. package/background/src/lib/virtualized/project/constructMockCode.js +145 -41
  106. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  107. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  108. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  109. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  110. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  111. package/background/src/lib/virtualized/project/start.js +2 -0
  112. package/background/src/lib/virtualized/project/start.js.map +1 -1
  113. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  114. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  115. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  116. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  117. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  118. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  119. package/background/src/lib/virtualized/project/writeScenarioComponents.js +83 -12
  120. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  121. package/codeyam-cli/scripts/apply-setup.js +208 -11
  122. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  123. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  124. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  125. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  126. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  127. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  128. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  129. package/codeyam-cli/src/cli.js +32 -25
  130. package/codeyam-cli/src/cli.js.map +1 -1
  131. package/codeyam-cli/src/commands/analyze.js +17 -7
  132. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  133. package/codeyam-cli/src/commands/default.js +14 -2
  134. package/codeyam-cli/src/commands/default.js.map +1 -1
  135. package/codeyam-cli/src/commands/editor.js +2787 -0
  136. package/codeyam-cli/src/commands/editor.js.map +1 -0
  137. package/codeyam-cli/src/commands/init.js +40 -11
  138. package/codeyam-cli/src/commands/init.js.map +1 -1
  139. package/codeyam-cli/src/commands/memory.js +89 -75
  140. package/codeyam-cli/src/commands/memory.js.map +1 -1
  141. package/codeyam-cli/src/data/techStacks.js +77 -0
  142. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  143. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  144. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  145. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  146. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  147. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +127 -0
  148. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  149. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +635 -0
  150. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  151. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  152. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  153. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  154. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  155. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +121 -0
  156. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  157. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  158. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  159. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  160. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  161. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +393 -0
  162. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  163. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  164. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  165. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  166. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  167. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +266 -0
  168. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  169. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +107 -0
  170. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  171. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  172. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  173. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  174. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  175. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +275 -0
  176. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  177. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +213 -0
  178. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  179. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1737 -0
  180. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  181. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  182. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  183. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  184. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  185. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  186. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  187. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +101 -0
  188. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  189. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  190. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  191. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  192. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  193. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  194. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  195. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +246 -0
  196. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  197. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +50 -4
  198. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  199. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  200. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  201. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  202. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  203. package/codeyam-cli/src/utils/backgroundServer.js +198 -39
  204. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  205. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  206. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  207. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  208. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  209. package/codeyam-cli/src/utils/devServerState.js +71 -0
  210. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  211. package/codeyam-cli/src/utils/editorApi.js +73 -0
  212. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  213. package/codeyam-cli/src/utils/editorAudit.js +159 -0
  214. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  215. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  216. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  217. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  218. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  219. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  220. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  221. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  222. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  223. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  224. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  225. package/codeyam-cli/src/utils/editorLoaderHelpers.js +81 -0
  226. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  227. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  228. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  229. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  230. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  231. package/codeyam-cli/src/utils/editorPreview.js +106 -0
  232. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  233. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  234. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  235. package/codeyam-cli/src/utils/editorScenarios.js +126 -0
  236. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  237. package/codeyam-cli/src/utils/editorSeedAdapter.js +173 -0
  238. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  239. package/codeyam-cli/src/utils/entityChangeStatus.js +347 -0
  240. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  241. package/codeyam-cli/src/utils/entityChangeStatus.server.js +158 -0
  242. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  243. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  244. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  245. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  246. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  247. package/codeyam-cli/src/utils/git.js +103 -0
  248. package/codeyam-cli/src/utils/git.js.map +1 -1
  249. package/codeyam-cli/src/utils/install-skills.js +57 -15
  250. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  251. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  252. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  253. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  254. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  255. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  256. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  257. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  258. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  259. package/codeyam-cli/src/utils/project.js +15 -5
  260. package/codeyam-cli/src/utils/project.js.map +1 -1
  261. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  262. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  263. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  264. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  265. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  266. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  267. package/codeyam-cli/src/utils/queue/job.js +70 -1
  268. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  269. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  270. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  271. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  272. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  273. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  274. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  275. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  276. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  277. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  278. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  279. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +2 -4
  280. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  281. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  282. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  283. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +1 -1
  284. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  285. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  286. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  287. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  288. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  289. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  290. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  291. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  292. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  293. package/codeyam-cli/src/utils/rules/index.js +1 -0
  294. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  295. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  296. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  297. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  298. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  299. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  300. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  301. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  302. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  303. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  304. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  305. package/codeyam-cli/src/utils/scenariosManifest.js +112 -0
  306. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  307. package/codeyam-cli/src/utils/serverState.js +57 -2
  308. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  309. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +82 -11
  310. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  311. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  312. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  313. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  314. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  315. package/codeyam-cli/src/utils/testRunner.js +158 -0
  316. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  317. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  318. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  319. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  320. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  321. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  322. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  323. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  324. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  325. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +410 -0
  326. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  327. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  328. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  329. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  330. package/codeyam-cli/src/webserver/app/lib/git.js +396 -0
  331. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  332. package/codeyam-cli/src/webserver/backgroundServer.js +144 -18
  333. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  334. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  335. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  336. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-BPXZwM4t.js +1 -0
  337. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-HdckCi0m.js → EntityItem-BcgbViKV.js} +3 -3
  338. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-Dh5RJMOE.js → EntityTypeBadge-g3saevPb.js} +1 -1
  339. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BnjjBHJu.js → EntityTypeIcon-CQIG2qda.js} +9 -9
  340. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  341. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-Coll1aD6.js → InteractivePreview-DYFW3lDD.js} +3 -3
  342. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-lYMY8h-y.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  343. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-ay8XeA59.js → LoadingDots-BU_OAEMP.js} +1 -1
  344. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Dpul1_ik.js → LogViewer-ceAyBX-H.js} +1 -1
  345. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-CRBCfV2W.js → ReportIssueModal-BzHcG7SE.js} +3 -3
  346. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DRTFDNFt.js → SafeScreenshot-BED4B6sP.js} +1 -1
  347. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-d6PSFxhS.js → ScenarioViewer-0DY_NKil.js} +3 -3
  348. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  349. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DDEOQ6Iw.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  350. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +1 -0
  351. package/codeyam-cli/src/webserver/build/client/assets/{_index-CkziGg5F.js → _index-DLxKhri3.js} +3 -3
  352. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-B2v1pm9w.js → activity.(_tab)-BcY3q6nt.js} +6 -6
  353. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  354. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  356. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  357. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-Bni3iiUj.js +22 -0
  358. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  359. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  360. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  361. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  362. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  365. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  367. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  371. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  373. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  374. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  375. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  376. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  377. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  378. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  379. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  382. package/codeyam-cli/src/webserver/build/client/assets/{book-open-qbapxy6o.js → book-open-BYOypzCa.js} +2 -2
  383. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-C-mKrwr1.js → chevron-down-C_Pmso5S.js} +2 -2
  384. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-BAvUl1nT.js → chunk-JZWAC4HX-C4pqxYJB.js} +11 -11
  385. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DlrT-SzI.js → circle-check-BVMi9VA5.js} +2 -2
  386. package/codeyam-cli/src/webserver/build/client/assets/{copy-clIxnCqQ.js → copy-n2FB0_Sw.js} +3 -3
  387. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CC6AbExI.js +41 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Csi0_PMl.js +1 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/editor-DgN1LTTt.js +10 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-BLQMSKZa.js +41 -0
  391. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-BF4oLwaE.js +23 -0
  392. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C7YX6r3H.js +6 -0
  393. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CF164ouH.js +6 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-DESSZGQp.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  396. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-D5Yb90Ad.js → entry.client-DTvKq3TY.js} +1 -1
  397. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DuObVYgh.js → fileTableUtils-cPo8LiG3.js} +1 -1
  398. package/codeyam-cli/src/webserver/build/client/assets/{files-CDfz4Y-i.js → files-BZrlFE1F.js} +1 -1
  399. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +1 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/globals-BkWJ_UNc.css +1 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/{index-DvOt1KIt.js → index-10oVnAAH.js} +1 -1
  402. package/codeyam-cli/src/webserver/build/client/assets/{index-WfQFdoWK.js → index-BcvgDzbZ.js} +1 -1
  403. package/codeyam-cli/src/webserver/build/client/assets/index-yHOVb4rc.js +15 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  405. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-Bb7Y9k5O.js → loader-circle-DaAZ_H2w.js} +2 -2
  406. package/codeyam-cli/src/webserver/build/client/assets/manifest-c26eb85b.js +1 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/memory-Bl2rpw8u.js +96 -0
  408. package/codeyam-cli/src/webserver/build/client/assets/{pause-DaAHX2on.js → pause-f5-1lKBt.js} +3 -3
  409. package/codeyam-cli/src/webserver/build/client/assets/root-ClvYBUSA.js +67 -0
  410. package/codeyam-cli/src/webserver/build/client/assets/{search-DIqAPIrO.js → search-Di64LWVb.js} +2 -2
  411. package/codeyam-cli/src/webserver/build/client/assets/settings-0OrEMU6J.js +1 -0
  412. package/codeyam-cli/src/webserver/build/client/assets/{simulations-C6n_fNQY.js → simulations-DWT-CvLy.js} +1 -1
  413. package/codeyam-cli/src/webserver/build/client/assets/{terminal-CmPsszJy.js → terminal-Br7MOqts.js} +3 -3
  414. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-Beg-oV50.js → triangle-alert-BLdiCuG-.js} +2 -2
  415. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-CrAK28Bc.js +1 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  417. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-B4D3wj27.js → useReportContext-O-jkvSPx.js} +1 -1
  418. package/codeyam-cli/src/webserver/build/client/assets/{useToast-BDt_-DnY.js → useToast-9FIWuYfK.js} +1 -1
  419. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  420. package/codeyam-cli/src/webserver/build/server/assets/index-DflIr5SD.js +1 -0
  421. package/codeyam-cli/src/webserver/build/server/assets/server-build-OhKy839M.js +416 -0
  422. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  423. package/codeyam-cli/src/webserver/build-info.json +5 -5
  424. package/codeyam-cli/src/webserver/devServer.js +39 -5
  425. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  426. package/codeyam-cli/src/webserver/editorProxy.js +785 -0
  427. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  428. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  429. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  430. package/codeyam-cli/src/webserver/server.js +258 -1
  431. package/codeyam-cli/src/webserver/server.js.map +1 -1
  432. package/codeyam-cli/src/webserver/terminalServer.js +726 -0
  433. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  434. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  435. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  436. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  437. package/codeyam-cli/templates/chrome-extension-react/package.json +26 -0
  438. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  439. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  440. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  441. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  442. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  443. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  444. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  445. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  446. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  447. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  448. package/codeyam-cli/templates/editor-step-hook.py +231 -0
  449. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  450. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  451. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  452. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  453. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  454. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  455. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  456. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  457. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  458. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  459. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  460. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  461. package/codeyam-cli/templates/expo-react-native/package.json +37 -0
  462. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  463. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  464. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  465. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  466. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  467. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  468. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  469. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  470. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  471. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  472. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  473. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +112 -0
  474. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  475. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  476. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  477. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  478. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  479. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  480. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  481. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  482. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  483. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  484. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  485. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +38 -0
  486. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  487. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  488. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  489. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  490. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +92 -0
  491. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  492. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  493. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  494. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  495. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  496. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  497. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  498. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  499. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  500. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  501. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  502. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  503. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  504. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +36 -0
  505. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  506. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  507. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  508. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  509. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  510. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  511. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  512. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  513. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  514. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  515. package/codeyam-cli/templates/rule-reflection-hook.py +25 -5
  516. package/codeyam-cli/templates/rules-instructions.md +34 -88
  517. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  518. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +145 -0
  519. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +220 -1
  520. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  521. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  522. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  523. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  524. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  525. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  526. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  527. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  528. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  529. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  530. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  531. package/package.json +22 -15
  532. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  533. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  534. package/packages/ai/src/lib/completionCall.js +10 -7
  535. package/packages/ai/src/lib/completionCall.js.map +1 -1
  536. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +234 -3
  537. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  538. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  539. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  540. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  541. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  542. package/packages/ai/src/lib/dataStructureChunking.js +9 -5
  543. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  544. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  545. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  546. package/packages/ai/src/lib/generateExecutionFlows.js +81 -11
  547. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  548. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  549. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  550. package/packages/analyze/src/lib/asts/index.js +4 -2
  551. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  552. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  553. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  554. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  555. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  556. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  557. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  558. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  559. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  560. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  561. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  562. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  563. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  564. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  565. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  566. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  567. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  568. package/packages/database/index.js +1 -0
  569. package/packages/database/index.js.map +1 -1
  570. package/packages/database/src/lib/kysely/db.js +5 -0
  571. package/packages/database/src/lib/kysely/db.js.map +1 -1
  572. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +65 -0
  573. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  574. package/packages/database/src/lib/loadCommits.js +23 -13
  575. package/packages/database/src/lib/loadCommits.js.map +1 -1
  576. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  577. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  578. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  579. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  580. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  581. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  582. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  583. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  584. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  585. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  586. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  587. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  588. package/packages/types/src/enums/ProjectFramework.js +2 -0
  589. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  590. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  591. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  592. package/scripts/npm-post-install.cjs +34 -0
  593. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  594. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  595. package/codeyam-cli/src/commands/list.js +0 -31
  596. package/codeyam-cli/src/commands/list.js.map +0 -1
  597. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  598. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  599. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  600. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  601. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CQ-wF3Tv.js +0 -1
  602. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CUSfu6W5.js +0 -34
  603. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-BXIaK8Md.js +0 -11
  604. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-B931Etud.js +0 -21
  605. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BoPM6KnE.js +0 -1
  606. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-oVRMh9Hl.js +0 -16
  607. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-BjyzwQ7H.js +0 -6
  608. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DxuyDmZA.js +0 -6
  609. package/codeyam-cli/src/webserver/build/client/assets/git-D6jOlDQw.js +0 -15
  610. package/codeyam-cli/src/webserver/build/client/assets/globals-CKT08Djd.css +0 -1
  611. package/codeyam-cli/src/webserver/build/client/assets/labs-BbGyC1RY.js +0 -1
  612. package/codeyam-cli/src/webserver/build/client/assets/manifest-fd06e67a.js +0 -1
  613. package/codeyam-cli/src/webserver/build/client/assets/memory-BXebUPaL.js +0 -78
  614. package/codeyam-cli/src/webserver/build/client/assets/root-CvNE9MaT.js +0 -62
  615. package/codeyam-cli/src/webserver/build/client/assets/settings-DCIzBZM9.js +0 -1
  616. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-D7TLbP3M.js +0 -1
  617. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-Ce5rnai3.js +0 -2
  618. package/codeyam-cli/src/webserver/build/server/assets/index-DDr9Cp9M.js +0 -1
  619. package/codeyam-cli/src/webserver/build/server/assets/server-build-DjwiujaU.js +0 -257
  620. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  621. package/scripts/finalize-analyzer.cjs +0 -13
  622. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  623. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  624. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  625. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  626. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  627. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -0,0 +1,112 @@
1
+ # Database
2
+
3
+ This project uses **Prisma 7 with SQLite** for local development. No external services needed.
4
+
5
+ All application code imports from `@/app/lib/prisma` — this is the only file that changes when you upgrade to a hosted database.
6
+
7
+ ## Quick Reference
8
+
9
+ ```bash
10
+ # Edit your schema
11
+ vim prisma/schema.prisma
12
+
13
+ # Push schema changes (also regenerates Prisma client)
14
+ npm run db:push
15
+
16
+ # Seed demo data
17
+ npm run db:seed
18
+
19
+ # Reset database (delete + recreate + seed)
20
+ npm run db:reset
21
+
22
+ # Browse data visually
23
+ npx prisma studio
24
+ ```
25
+
26
+ ## Using the Database
27
+
28
+ ```typescript
29
+ import { prisma } from '@/app/lib/prisma';
30
+
31
+ // In API routes or server components:
32
+ const items = await prisma.todo.findMany();
33
+ const item = await prisma.todo.create({ data: { title: 'New item' } });
34
+ ```
35
+
36
+ ## Important: Do NOT Change These Settings
37
+
38
+ - **Generator must be `prisma-client-js`** (not `prisma-client`). The `prisma-client` generator requires a custom output path that breaks Turbopack.
39
+ - **Do NOT add an `output` field** to the generator.
40
+ - **Do NOT add `url` to the datasource block** in `schema.prisma`. Prisma 7 moved the URL to `prisma.config.ts`.
41
+ - **Keep `serverExternalPackages: ["better-sqlite3"]`** in `next.config.ts`.
42
+ - **Keep `turbopack: { root: "." }`** in `next.config.ts`.
43
+ - **Always run `npx prisma generate`** after `npx prisma db push` (or use `npm run db:push` which does both).
44
+ - **Database file is at project root** (`./dev.db`), not in `prisma/`.
45
+
46
+ ## Upgrading to a Hosted Database
47
+
48
+ When you're ready for production, you'll want a hosted database. SQLite is great for prototyping, but doesn't support concurrent connections or run in serverless environments (Vercel, etc.).
49
+
50
+ ### Option 1: Supabase (PostgreSQL)
51
+
52
+ Free tier available. Gives you PostgreSQL + auth + realtime + storage.
53
+
54
+ 1. Create a project at https://supabase.com/dashboard
55
+ 2. Get your credentials from Project Settings > Database > Connection string (URI)
56
+ 3. Replace packages:
57
+ ```bash
58
+ npm uninstall better-sqlite3 @prisma/adapter-better-sqlite3 @types/better-sqlite3
59
+ npm install @prisma/adapter-pg pg @supabase/supabase-js
60
+ npm install -D @types/pg
61
+ ```
62
+ 4. Update `prisma/schema.prisma`:
63
+ ```prisma
64
+ datasource db {
65
+ provider = "postgresql"
66
+ }
67
+ ```
68
+ 5. Update `app/lib/prisma.ts`:
69
+
70
+ ```typescript
71
+ import { PrismaClient } from '@prisma/client';
72
+ import { PrismaPg } from '@prisma/adapter-pg';
73
+
74
+ const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };
75
+ const connectionString = process.env.DATABASE_URL!;
76
+ const adapter = new PrismaPg({ connectionString });
77
+ export const prisma =
78
+ globalForPrisma.prisma ?? new PrismaClient({ adapter });
79
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
80
+ export default prisma;
81
+ ```
82
+
83
+ 6. Create `.env`:
84
+ ```
85
+ DATABASE_URL=postgresql://postgres.YOUR_PROJECT_ID:YOUR_PASSWORD@aws-0-us-east-1.pooler.supabase.com:6543/postgres
86
+ ```
87
+ 7. Remove `serverExternalPackages` from `next.config.ts`
88
+ 8. Run `npm run db:push` to create tables in Supabase
89
+ 9. Update `prisma/seed.ts` to use the new adapter (same pattern as `prisma.ts`)
90
+
91
+ ### Option 2: Other PostgreSQL Hosts (Neon, Railway, etc.)
92
+
93
+ Same steps as Supabase above (steps 3-9), just use your provider's connection string.
94
+
95
+ ### Option 3: PlanetScale / MySQL
96
+
97
+ 1. Replace packages:
98
+ ```bash
99
+ npm uninstall better-sqlite3 @prisma/adapter-better-sqlite3 @types/better-sqlite3
100
+ npm install @prisma/adapter-planetscale @planetscale/database
101
+ ```
102
+ 2. Update `schema.prisma` datasource to `provider = "mysql"`
103
+ 3. Update `app/lib/prisma.ts` to use `PrismaPlanetScale` adapter
104
+ 4. Follow PlanetScale setup docs for connection string
105
+
106
+ ### What Stays the Same
107
+
108
+ Your application code doesn't change at all. Every file that uses the database already imports from `@/app/lib/prisma`, which is the only file that gets updated. Your Prisma schema models, API routes, and server components all work identically regardless of which database backs them.
109
+
110
+ ## Writing Seed Scripts
111
+
112
+ Seed scripts run outside of Next.js, so they must create their own PrismaClient with the adapter (they cannot import from `@/app/lib/prisma`). See `prisma/seed.ts` for the correct pattern.
@@ -0,0 +1,37 @@
1
+ # Feature Patterns
2
+
3
+ When the feature you're building involves any of the patterns below, **read the linked doc before writing code**. These patterns are designed for the local SQLite dev environment and upgrade cleanly to production services later.
4
+
5
+ ## Authentication (login, sign-up, user sessions)
6
+
7
+ **Read:** `AUTH_PATTERNS.md`
8
+
9
+ Use the cookie + DB auth abstraction in `app/lib/auth.ts`. All consumer code imports from this single file. DO NOT use NextAuth, Clerk, better-auth, Supabase Auth, or any external auth provider during prototyping — they require infrastructure unavailable locally.
10
+
11
+ **For scenarios:** Include User and Session seed rows. Add `"session": {"cookieValue": "<token>"}` at the scenario top level to auto-log the user in. Omit `session` for a logged-out scenario.
12
+
13
+ **Upgrade path:** See `AUTH_UPGRADE.md` — only `app/lib/auth.ts` internals change; consumer code stays the same.
14
+
15
+ ## External Services (payments, email, maps, weather APIs, etc.)
16
+
17
+ If the user has dev/test credentials (e.g., Stripe test keys):
18
+
19
+ - Store them in `.codeyam/config.json` under `environmentVariables`
20
+ - Restart the dev server — credentials are injected into `process.env`
21
+
22
+ If no credentials are available:
23
+
24
+ - Build with real API calls in the code
25
+ - Mock responses per scenario using `externalApis` in scenario registration (Step 8)
26
+
27
+ ## File Storage / Uploads
28
+
29
+ For local prototyping, store files in the `public/uploads/` directory and serve them as static assets. Use `fs.writeFile` in API routes. For production, swap to S3/Cloudflare R2/Supabase Storage.
30
+
31
+ ## Email / Notifications
32
+
33
+ For prototyping, log emails to the console or write them to a `/api/dev/sent-emails` endpoint that stores in the database. For production, swap to Resend/SendGrid/Postmark.
34
+
35
+ ---
36
+
37
+ _This list will grow as new patterns are added. Each pattern follows the same principle: build with a simple local implementation, upgrade to a production service later by swapping one file._
@@ -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,12 @@
1
+ import { notFound } from 'next/navigation';
2
+
3
+ export default function CodeYamIsolateLayout({
4
+ children,
5
+ }: {
6
+ children: React.ReactNode;
7
+ }) {
8
+ if (process.env.NODE_ENV === 'production') {
9
+ notFound();
10
+ }
11
+ return <>{children}</>;
12
+ }
@@ -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,24 @@
1
+ // Database connection singleton.
2
+ // This is the ONLY file that changes when upgrading to a hosted database.
3
+ // All application code imports from here — API routes, server components, etc.
4
+ //
5
+ // Usage:
6
+ // import { prisma } from "@/app/lib/prisma";
7
+ // const items = await prisma.todo.findMany();
8
+ //
9
+ // To upgrade to a hosted database (e.g., Supabase PostgreSQL), see DATABASE.md.
10
+
11
+ import { PrismaClient } from '@prisma/client';
12
+ import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
13
+
14
+ const globalForPrisma = globalThis as unknown as { prisma: PrismaClient };
15
+
16
+ const adapter = new PrismaBetterSqlite3({
17
+ url: process.env.DATABASE_URL || 'file:./dev.db',
18
+ });
19
+
20
+ export const prisma = globalForPrisma.prisma ?? new PrismaClient({ adapter });
21
+
22
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma;
23
+
24
+ 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,4 @@
1
+ # Local SQLite database (no external services needed)
2
+ # This is used by Prisma CLI commands (db push, migrate, etc.)
3
+ # The app code in app/lib/prisma.ts also uses this path.
4
+ DATABASE_URL=file:./dev.db
@@ -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,64 @@
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
44
+
45
+ # CodeYam - local only (not shared)
46
+ .codeyam/db.sqlite3
47
+ .codeyam/db.sqlite3-wal
48
+ .codeyam/db.sqlite3-shm
49
+ .codeyam/secrets.json
50
+ .codeyam/server.json
51
+ .codeyam/server-state.json
52
+ .codeyam/queue.json
53
+ .codeyam/active-scenario.json
54
+ .codeyam/editor-step.json
55
+ .codeyam/editor-user-prompt.txt
56
+ .codeyam/editor-mode-context.md
57
+ .codeyam/dev-mode-context.md
58
+ .codeyam/logs/
59
+ .codeyam/llm-calls/
60
+ .codeyam/captures/
61
+ .codeyam/results/
62
+ .codeyam/tmp/
63
+ .codeyam/rules/
64
+ .codeyam/bin/
@@ -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,38 @@
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
+ "test": "vitest run",
11
+ "test:watch": "vitest",
12
+ "db:push": "npx prisma db push && npx prisma generate",
13
+ "db:seed": "npx tsx prisma/seed.ts",
14
+ "db:reset": "rm -f dev.db && npm run db:push && npx tsx prisma/seed.ts"
15
+ },
16
+ "dependencies": {
17
+ "@prisma/adapter-better-sqlite3": "^7.4.1",
18
+ "@prisma/client": "^7.4.1",
19
+ "better-sqlite3": "^12.6.2",
20
+ "next": "^15.3.3",
21
+ "prisma": "^7.4.1",
22
+ "react": "^19.1.0",
23
+ "react-dom": "^19.1.0"
24
+ },
25
+ "devDependencies": {
26
+ "@tailwindcss/postcss": "^4",
27
+ "@types/better-sqlite3": "^7.6.13",
28
+ "@types/node": "^20",
29
+ "@types/react": "^19",
30
+ "@types/react-dom": "^19",
31
+ "eslint": "^9",
32
+ "eslint-config-next": "^15.3.3",
33
+ "tailwindcss": "^4",
34
+ "tsx": "^4.19.4",
35
+ "typescript": "^5",
36
+ "vitest": "^3"
37
+ }
38
+ }
@@ -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,40 @@
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 'dotenv/config';
10
+ import { PrismaClient } from '@prisma/client';
11
+ import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
12
+
13
+ const adapter = new PrismaBetterSqlite3({
14
+ url: process.env.DATABASE_URL || 'file:./dev.db',
15
+ });
16
+ const prisma = new PrismaClient({ adapter });
17
+
18
+ async function main() {
19
+ // Clear existing data
20
+ await prisma.todo.deleteMany();
21
+
22
+ // Seed with demo data
23
+ await prisma.todo.createMany({
24
+ data: [
25
+ { title: 'Set up the project', completed: true },
26
+ { title: 'Build the first feature' },
27
+ { title: 'Add more scenarios' },
28
+ ],
29
+ });
30
+
31
+ const count = await prisma.todo.count();
32
+ console.log(`Seeded ${count} todos`);
33
+ }
34
+
35
+ main()
36
+ .then(() => prisma.$disconnect())
37
+ .catch((e) => {
38
+ console.error(e);
39
+ process.exit(1);
40
+ });
@@ -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,92 @@
1
+ /**
2
+ * CodeYam Seed Adapter for Prisma + SQLite.
3
+ *
4
+ * Reads a JSON seed data file (path passed as CLI arg), wipes all tables,
5
+ * then inserts the seed data using Prisma.
6
+ *
7
+ * Usage: npx tsx .codeyam/seed-adapter.ts <path-to-seed-data.json>
8
+ *
9
+ * The JSON file has the format:
10
+ * {
11
+ * "type": "application",
12
+ * "seed": {
13
+ * "tableName": [{ "column": "value", ... }, ...]
14
+ * },
15
+ * "externalApis": { ... } // optional, not used by this adapter
16
+ * }
17
+ */
18
+
19
+ import 'dotenv/config';
20
+ import { PrismaClient } from '@prisma/client';
21
+ import { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';
22
+ import * as fs from 'fs';
23
+
24
+ const adapter = new PrismaBetterSqlite3({
25
+ url: process.env.DATABASE_URL || 'file:./dev.db',
26
+ });
27
+ const prisma = new PrismaClient({ adapter });
28
+
29
+ async function main() {
30
+ const seedDataPath = process.argv[2];
31
+ if (!seedDataPath) {
32
+ console.error('Usage: npx tsx .codeyam/seed-adapter.ts <seed-data.json>');
33
+ process.exit(1);
34
+ }
35
+
36
+ const raw = fs.readFileSync(seedDataPath, 'utf-8');
37
+ const data = JSON.parse(raw);
38
+ const seed = data.seed || data;
39
+
40
+ console.log(`Seeding tables: ${Object.keys(seed).join(', ')}`);
41
+
42
+ // Wipe all tables in reverse order (to respect foreign keys)
43
+ const tableNames = Object.keys(seed);
44
+ for (const table of [...tableNames].reverse()) {
45
+ try {
46
+ await (prisma as any)[table].deleteMany();
47
+ console.log(` Cleared ${table}`);
48
+ } catch (err) {
49
+ console.warn(
50
+ ` Could not clear ${table}: ${err instanceof Error ? err.message : err}`,
51
+ );
52
+ }
53
+ }
54
+
55
+ // Reset auto-increment counters so IDs start from 1 after each re-seed.
56
+ // Without this, SQLite IDs keep climbing (1, 2, ... then 9, 10, ...)
57
+ // across scenario switches, causing hardcoded URLs like /drinks/1 to 404.
58
+ for (const table of tableNames) {
59
+ try {
60
+ // Prisma uses PascalCase model names; sqlite_sequence stores the actual table name.
61
+ // Try both the seed key (which matches the Prisma model) and common casings.
62
+ await prisma.$executeRawUnsafe(
63
+ `DELETE FROM sqlite_sequence WHERE name = '${table}' OR name = '${table.charAt(0).toUpperCase() + table.slice(1)}'`,
64
+ );
65
+ } catch {
66
+ // sqlite_sequence may not exist if no autoincrement columns — safe to ignore
67
+ }
68
+ }
69
+
70
+ // Insert seed data
71
+ for (const [table, rows] of Object.entries(seed)) {
72
+ if (!Array.isArray(rows) || rows.length === 0) continue;
73
+ try {
74
+ await (prisma as any)[table].createMany({ data: rows });
75
+ console.log(` Seeded ${rows.length} rows into ${table}`);
76
+ } catch (err) {
77
+ console.error(
78
+ ` Failed to seed ${table}: ${err instanceof Error ? err.message : err}`,
79
+ );
80
+ process.exit(1);
81
+ }
82
+ }
83
+
84
+ console.log('Seed complete');
85
+ }
86
+
87
+ main()
88
+ .then(() => prisma.$disconnect())
89
+ .catch((e) => {
90
+ console.error('Seed adapter error:', e);
91
+ process.exit(1);
92
+ });
@@ -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,13 @@
1
+ import { defineConfig } from 'vitest/config';
2
+ import path from 'path';
3
+
4
+ export default defineConfig({
5
+ test: {
6
+ globals: true,
7
+ },
8
+ resolve: {
9
+ alias: {
10
+ '@': path.resolve(__dirname, '.'),
11
+ },
12
+ },
13
+ });