@codeyam/codeyam-cli 0.1.8 → 0.1.10

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 (343) hide show
  1. package/analyzer-template/.build-info.json +8 -8
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +4 -4
  4. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +0 -33
  5. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +13 -7
  6. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  7. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  8. package/analyzer-template/packages/aws/package.json +1 -1
  9. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +76 -0
  10. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  11. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +0 -65
  12. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +7 -0
  13. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
  14. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +76 -0
  15. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  16. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  17. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  18. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  19. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  20. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +0 -25
  21. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  22. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  23. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  24. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  25. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  26. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  27. package/analyzer-template/packages/ui-components/package.json +1 -1
  28. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  29. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  30. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  31. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  32. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  33. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  34. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  35. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  36. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  37. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  38. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +45 -0
  39. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  40. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  41. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  42. package/codeyam-cli/src/commands/default.js +3 -46
  43. package/codeyam-cli/src/commands/default.js.map +1 -1
  44. package/codeyam-cli/src/commands/editor.js +1793 -257
  45. package/codeyam-cli/src/commands/editor.js.map +1 -1
  46. package/codeyam-cli/src/commands/init.js +67 -34
  47. package/codeyam-cli/src/commands/init.js.map +1 -1
  48. package/codeyam-cli/src/data/techStacks.js +77 -0
  49. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  50. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  51. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  52. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  53. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  54. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  55. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  56. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +137 -0
  57. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  58. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +742 -1
  59. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  60. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  61. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  62. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +181 -3
  63. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -1
  64. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +121 -0
  65. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  66. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  67. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  68. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +249 -2
  69. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -1
  70. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +520 -0
  71. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  72. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +118 -1
  73. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -1
  74. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +209 -3
  75. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  76. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  77. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  78. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  79. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  80. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  81. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  82. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +985 -2
  83. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  84. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +213 -0
  85. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  86. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1742 -0
  87. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  88. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  89. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  90. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  91. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  92. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +227 -0
  93. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  94. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +454 -0
  95. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  96. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +25 -5
  97. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  98. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  99. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  100. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  101. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  102. package/codeyam-cli/src/utils/analyzer.js +9 -0
  103. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  104. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  105. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  106. package/codeyam-cli/src/utils/backgroundServer.js +94 -18
  107. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  108. package/codeyam-cli/src/utils/database.js +37 -2
  109. package/codeyam-cli/src/utils/database.js.map +1 -1
  110. package/codeyam-cli/src/utils/devServerState.js +71 -0
  111. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  112. package/codeyam-cli/src/utils/editorApi.js +79 -0
  113. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  114. package/codeyam-cli/src/utils/editorAudit.js +135 -7
  115. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  116. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  117. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  118. package/codeyam-cli/src/utils/editorDevServer.js +100 -1
  119. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -1
  120. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  121. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  122. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  123. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  124. package/codeyam-cli/src/utils/editorJournal.js +92 -4
  125. package/codeyam-cli/src/utils/editorJournal.js.map +1 -1
  126. package/codeyam-cli/src/utils/editorLoaderHelpers.js +113 -0
  127. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  128. package/codeyam-cli/src/utils/editorMockState.js +1 -1
  129. package/codeyam-cli/src/utils/editorPreloadHelpers.js +72 -1
  130. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -1
  131. package/codeyam-cli/src/utils/editorPreview.js +72 -1
  132. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  133. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  134. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  135. package/codeyam-cli/src/utils/editorScenarios.js +331 -0
  136. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  137. package/codeyam-cli/src/utils/editorSeedAdapter.js +173 -0
  138. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  139. package/codeyam-cli/src/utils/entityChangeStatus.js +349 -0
  140. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  141. package/codeyam-cli/src/utils/entityChangeStatus.server.js +158 -0
  142. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  143. package/codeyam-cli/src/utils/install-skills.js +1 -1
  144. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  145. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  146. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  147. package/codeyam-cli/src/utils/progress.js +2 -2
  148. package/codeyam-cli/src/utils/progress.js.map +1 -1
  149. package/codeyam-cli/src/utils/scenarioCoverage.js +75 -0
  150. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  151. package/codeyam-cli/src/utils/scenariosManifest.js +241 -0
  152. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  153. package/codeyam-cli/src/utils/serverState.js +30 -0
  154. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  155. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +46 -16
  156. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  157. package/codeyam-cli/src/utils/simulationGateMiddleware.js +8 -1
  158. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  159. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  160. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  161. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  162. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  163. package/codeyam-cli/src/utils/webappDetection.js +21 -0
  164. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  165. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
  166. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  167. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +567 -0
  168. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  169. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +146 -0
  170. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  171. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +65 -0
  172. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  173. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  174. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  175. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-DmJveP3T.js → CopyButton-BPXZwM4t.js} +1 -1
  176. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-C76mRRiF.js → EntityItem-BcgbViKV.js} +3 -3
  177. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CobE682z.js → EntityTypeIcon-CQIG2qda.js} +9 -9
  178. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-djPLI-WV.js → ReportIssueModal-BzHcG7SE.js} +3 -3
  179. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-B76aig_2.js → ScenarioViewer-TSD3C211.js} +3 -3
  180. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +1 -0
  181. package/codeyam-cli/src/webserver/build/client/assets/{_index-C96V0n15.js → _index-DLxKhri3.js} +3 -3
  182. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BpKzcsJz.js → activity.(_tab)-BcY3q6nt.js} +6 -6
  183. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  184. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  185. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  186. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-D9hemwl6.js → agent-transcripts-Bni3iiUj.js} +5 -5
  187. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  188. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  189. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  190. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  191. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D_nMCFmP.js → book-open-BYOypzCa.js} +2 -2
  192. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BH2h1Ea2.js → chevron-down-C_Pmso5S.js} +2 -2
  193. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DyIKORY6.js → circle-check-BVMi9VA5.js} +2 -2
  194. package/codeyam-cli/src/webserver/build/client/assets/{copy-NDbZjXao.js → copy-n2FB0_Sw.js} +3 -3
  195. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CC6AbExI.js +41 -0
  196. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Ii3inc0_.js +1 -0
  197. package/codeyam-cli/src/webserver/build/client/assets/editor-COWCNVyV.js +10 -0
  198. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CNB06EIa.js +41 -0
  199. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CrjR3zZW.js → entity._sha._-DwCV5__E.js} +3 -3
  200. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-CXSi2aeZ.js +6 -0
  201. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CHMiAog3.js +6 -0
  202. package/codeyam-cli/src/webserver/build/client/assets/{files-DO4CZ16O.js → files-BZrlFE1F.js} +1 -1
  203. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +1 -0
  204. package/codeyam-cli/src/webserver/build/client/assets/globals-phvmGvat.css +1 -0
  205. package/codeyam-cli/src/webserver/build/client/assets/index-yHOVb4rc.js +15 -0
  206. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BAXYRVEO.js → loader-circle-DaAZ_H2w.js} +2 -2
  207. package/codeyam-cli/src/webserver/build/client/assets/manifest-6134dc40.js +1 -0
  208. package/codeyam-cli/src/webserver/build/client/assets/memory-9gnxSZlb.js +101 -0
  209. package/codeyam-cli/src/webserver/build/client/assets/{pause-DTAcYxBt.js → pause-f5-1lKBt.js} +3 -3
  210. package/codeyam-cli/src/webserver/build/client/assets/root-BWAyuj0r.js +67 -0
  211. package/codeyam-cli/src/webserver/build/client/assets/{search-fKo7v0Zo.js → search-Di64LWVb.js} +2 -2
  212. package/codeyam-cli/src/webserver/build/client/assets/{settings-DfuTtcJP.js → settings-0OrEMU6J.js} +1 -1
  213. package/codeyam-cli/src/webserver/build/client/assets/{simulations-B3aOzpCZ.js → simulations-DWT-CvLy.js} +1 -1
  214. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BG4heKCG.js → terminal-Br7MOqts.js} +3 -3
  215. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DtSmdtM4.js → triangle-alert-BLdiCuG-.js} +2 -2
  216. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C-_hOl_g.js +1 -0
  217. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  218. package/codeyam-cli/src/webserver/build/server/assets/index-ChX0hPcu.js +1 -0
  219. package/codeyam-cli/src/webserver/build/server/assets/init-kSNsMjj8.js +10 -0
  220. package/codeyam-cli/src/webserver/build/server/assets/server-build-Bm2xIhmh.js +439 -0
  221. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  222. package/codeyam-cli/src/webserver/build-info.json +5 -5
  223. package/codeyam-cli/src/webserver/editorProxy.js +487 -50
  224. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  225. package/codeyam-cli/src/webserver/idleDetector.js +73 -0
  226. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  227. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  228. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +242 -3
  229. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +94 -4
  230. package/codeyam-cli/src/webserver/server.js +90 -16
  231. package/codeyam-cli/src/webserver/server.js.map +1 -1
  232. package/codeyam-cli/src/webserver/terminalServer.js +71 -34
  233. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  234. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  235. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  236. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  237. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  238. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  239. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  240. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  241. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  242. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  243. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  244. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  245. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  246. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  247. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  248. package/codeyam-cli/templates/codeyam-editor-claude.md +84 -5
  249. package/codeyam-cli/templates/editor-step-hook.py +98 -8
  250. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  251. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  252. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  253. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  254. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  255. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  256. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  257. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  258. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  259. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  260. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  261. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  262. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  263. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  264. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  265. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  266. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  267. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  268. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  269. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  270. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  271. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  272. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +9 -4
  273. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  274. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +21 -0
  275. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +5 -1
  276. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +4 -1
  277. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +92 -0
  278. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  279. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  280. package/codeyam-cli/templates/{nextjs-prisma-sqlite/PRISMA_SETUP.md → nextjs-prisma-supabase/SUPABASE_SETUP.md} +37 -17
  281. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  282. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  283. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  284. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  285. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  286. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  287. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  288. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  289. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  290. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  291. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  292. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  293. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  294. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  295. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  296. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  297. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +2 -2
  298. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +97 -17
  299. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +10 -10
  300. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  301. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  302. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  303. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  304. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  305. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  306. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  307. package/package.json +14 -9
  308. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  309. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  310. package/packages/analyze/src/lib/ProjectAnalyzer.js +10 -4
  311. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  312. package/packages/analyze/src/lib/asts/index.js +4 -2
  313. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  314. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  315. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  316. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +76 -0
  317. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  318. package/packages/database/src/lib/loadEntities.js +0 -6
  319. package/packages/database/src/lib/loadEntities.js.map +1 -1
  320. package/packages/database/src/lib/updateCommitMetadata.js +0 -25
  321. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  322. package/packages/types/src/enums/ProjectFramework.js +2 -0
  323. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  324. package/codeyam-cli/src/webserver/build/client/assets/Terminal-Dnj5CY9R.js +0 -41
  325. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +0 -1
  326. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CMT1jU2q.js +0 -21
  327. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +0 -1
  328. package/codeyam-cli/src/webserver/build/client/assets/editor-D1DAKXtT.js +0 -8
  329. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DkzqFzFj.js +0 -6
  330. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +0 -6
  331. package/codeyam-cli/src/webserver/build/client/assets/git-CFCTYk9I.js +0 -15
  332. package/codeyam-cli/src/webserver/build/client/assets/globals-B17TBSS6.css +0 -1
  333. package/codeyam-cli/src/webserver/build/client/assets/manifest-a632de18.js +0 -1
  334. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +0 -96
  335. package/codeyam-cli/src/webserver/build/client/assets/root-DUKqhFlb.js +0 -67
  336. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-ByhSyh0W.js +0 -1
  337. package/codeyam-cli/src/webserver/build/server/assets/index-HfLydfDq.js +0 -1
  338. package/codeyam-cli/src/webserver/build/server/assets/server-build-CUu_F-oo.js +0 -366
  339. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.sh +0 -108
  340. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.sh +0 -69
  341. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.sh +0 -12
  342. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter.jq +0 -45
  343. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.sh +0 -139
@@ -0,0 +1,149 @@
1
+ import { execFileSync } from 'child_process';
2
+ import * as fs from 'fs';
3
+ import * as os from 'os';
4
+ import * as path from 'path';
5
+ const SCRIPTS_DIR = path.resolve(__dirname, '../../../templates/skills/codeyam-memory/scripts');
6
+ const RG_FALLBACK = path.resolve(SCRIPTS_DIR, 'lib/ripgrep-fallback.mjs');
7
+ let tmpDir;
8
+ let harnessPath;
9
+ beforeAll(() => {
10
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'rg-fallback-test-'));
11
+ // Create test source files
12
+ const srcDir = path.join(tmpDir, 'src');
13
+ fs.mkdirSync(srcDir);
14
+ fs.writeFileSync(path.join(srcDir, 'hello.ts'), [
15
+ 'export function greet(name: string) {',
16
+ ' return `Hello, ${name}!`;',
17
+ '}',
18
+ '',
19
+ 'export const DEFAULT_NAME = "World";',
20
+ ].join('\n'));
21
+ fs.writeFileSync(path.join(srcDir, 'math.ts'), [
22
+ 'export function add(a: number, b: number) {',
23
+ ' return a + b;',
24
+ '}',
25
+ ].join('\n'));
26
+ // A file in node_modules that should be excluded
27
+ const nmDir = path.join(tmpDir, 'node_modules', 'some-pkg');
28
+ fs.mkdirSync(nmDir, { recursive: true });
29
+ fs.writeFileSync(path.join(nmDir, 'index.ts'), 'export function shouldNotMatch() {}');
30
+ // Harness that calls _nodeFallback directly (the pure-Node path)
31
+ harnessPath = path.join(tmpDir, 'harness.mjs');
32
+ fs.writeFileSync(harnessPath, `const { _nodeFallback } = await import(${JSON.stringify(RG_FALLBACK)});
33
+ const result = await _nodeFallback(process.argv[2], JSON.parse(process.argv[3]));
34
+ process.stdout.write(result);
35
+ `);
36
+ });
37
+ afterAll(() => {
38
+ fs.rmSync(tmpDir, { recursive: true, force: true });
39
+ });
40
+ function runFallback(pattern, opts) {
41
+ return execFileSync('node', [harnessPath, pattern, JSON.stringify({ cwd: tmpDir, ...opts })], { encoding: 'utf-8', timeout: 10000 });
42
+ }
43
+ describe('ripgrep-fallback.mjs — Node fallback path', () => {
44
+ it('finds matching lines with file:line:text format', () => {
45
+ const result = runFallback('^export', { types: ['ts'] });
46
+ const lines = result.trim().split('\n').filter(Boolean);
47
+ expect(lines.length).toBeGreaterThanOrEqual(3);
48
+ for (const line of lines) {
49
+ expect(line).toMatch(/^[^:]+:\d+:.+$/);
50
+ }
51
+ });
52
+ it('filters by file type', () => {
53
+ const result = runFallback('^export', { types: ['ts'] });
54
+ const files = result
55
+ .trim()
56
+ .split('\n')
57
+ .filter(Boolean)
58
+ .map((l) => l.split(':')[0]);
59
+ for (const f of files) {
60
+ expect(f).toMatch(/\.ts$/);
61
+ }
62
+ });
63
+ it('respects glob ignore patterns', () => {
64
+ const result = runFallback('export function', {
65
+ types: ['ts'],
66
+ globs: ['!node_modules'],
67
+ });
68
+ const files = result
69
+ .trim()
70
+ .split('\n')
71
+ .filter(Boolean)
72
+ .map((l) => l.split(':')[0]);
73
+ for (const f of files) {
74
+ expect(f).not.toContain('node_modules');
75
+ }
76
+ });
77
+ it('returns empty string for no matches', () => {
78
+ const result = runFallback('xyzzy_no_match_12345', { types: ['ts'] });
79
+ expect(result).toBe('');
80
+ });
81
+ it('includes correct line numbers', () => {
82
+ const result = runFallback('DEFAULT_NAME', {
83
+ types: ['ts'],
84
+ lineNumbers: true,
85
+ });
86
+ const lines = result.trim().split('\n').filter(Boolean);
87
+ expect(lines).toHaveLength(1);
88
+ // Line 5 of hello.ts: export const DEFAULT_NAME = "World";
89
+ expect(lines[0]).toMatch(/hello\.ts:5:/);
90
+ });
91
+ it('excludes files matching negative glob extensions', () => {
92
+ // Add a .d.ts file that should be excluded
93
+ fs.writeFileSync(path.join(tmpDir, 'src', 'types.d.ts'), 'export type Foo = string;');
94
+ const result = runFallback('^export', {
95
+ types: ['ts'],
96
+ globs: ['!*.d.ts'],
97
+ });
98
+ const files = result
99
+ .trim()
100
+ .split('\n')
101
+ .filter(Boolean)
102
+ .map((l) => l.split(':')[0]);
103
+ for (const f of files) {
104
+ expect(f).not.toMatch(/\.d\.ts$/);
105
+ }
106
+ });
107
+ });
108
+ // Test the full ripgrepSearch (rg path) if rg is installed
109
+ const rgAvailable = (() => {
110
+ try {
111
+ execFileSync('rg', ['--version'], { encoding: 'utf-8' });
112
+ return true;
113
+ }
114
+ catch {
115
+ return false;
116
+ }
117
+ })();
118
+ (rgAvailable ? describe : describe.skip)('ripgrep-fallback.mjs — rg path (rg installed)', () => {
119
+ let rgHarness;
120
+ beforeAll(() => {
121
+ rgHarness = path.join(tmpDir, 'harness-rg.mjs');
122
+ fs.writeFileSync(rgHarness, `const { ripgrepSearch } = await import(${JSON.stringify(RG_FALLBACK)});
123
+ const result = await ripgrepSearch(process.argv[2], JSON.parse(process.argv[3]));
124
+ process.stdout.write(result);
125
+ `);
126
+ });
127
+ function runRg(pattern, opts) {
128
+ return execFileSync('node', [rgHarness, pattern, JSON.stringify({ cwd: tmpDir, ...opts })], { encoding: 'utf-8', timeout: 10000 });
129
+ }
130
+ it('finds matching lines', () => {
131
+ const result = runRg('^export', { types: ['ts'] });
132
+ const lines = result.trim().split('\n').filter(Boolean);
133
+ expect(lines.length).toBeGreaterThanOrEqual(3);
134
+ });
135
+ it('returns empty string for no matches', () => {
136
+ const result = runRg('xyzzy_no_match_12345', { types: ['ts'] });
137
+ expect(result).toBe('');
138
+ });
139
+ it('completes without hanging (regression: rg must not read stdin)', () => {
140
+ // Without explicit '.' path arg, rg reads stdin and hangs under execFile.
141
+ const result = runRg('DEFAULT_NAME', {
142
+ types: ['ts'],
143
+ lineNumbers: true,
144
+ });
145
+ const lines = result.trim().split('\n').filter(Boolean);
146
+ expect(lines).toHaveLength(1);
147
+ });
148
+ });
149
+ //# sourceMappingURL=ripgrep-fallback.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ripgrep-fallback.test.js","sourceRoot":"","sources":["../../../../../src/__tests__/memory-scripts/ripgrep-fallback.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Structural test: the CLI dispatch switch in editor.ts must have case labels
5
+ * for every step 1–16. Without this test, it's easy to add new steps
6
+ * (e.g. 14, 15, 16) to the printStep functions and STEP_LABELS but forget
7
+ * to add matching case labels to the switch statement — causing `codeyam editor N`
8
+ * to silently do nothing for the missing steps.
9
+ *
10
+ * This test reads the source file and parses the switch block that dispatches
11
+ * step numbers to their handlers.
12
+ */
13
+ describe('editor CLI step dispatch', () => {
14
+ const editorSource = fs.readFileSync(path.join(__dirname, '..', 'editor.ts'), 'utf8');
15
+ it('should have switch case labels for all steps 1–16', () => {
16
+ // Find the switch(step) block in the CLI dispatch section.
17
+ // There are two stepFns definitions in editor.ts:
18
+ // 1. Test/debug scenario generator (~line 4658) — uses a for-loop, not a switch
19
+ // 2. CLI dispatch (~line 5263) — uses switch(step) { case N: ... }
20
+ //
21
+ // We need to verify the second one (CLI dispatch) has cases for all 16 steps.
22
+ // Find all `case N:` labels in the file. The CLI dispatch switch is the
23
+ // only switch on `step` that uses numbered cases.
24
+ const switchMatch = editorSource.match(/switch\s*\(step\)\s*\{([\s\S]*?)\n\s{4}\}/);
25
+ expect(switchMatch).not.toBeNull();
26
+ const switchBody = switchMatch[1];
27
+ for (let step = 1; step <= 16; step++) {
28
+ const casePattern = new RegExp(`case\\s+${step}\\s*[:{]`);
29
+ expect(switchBody).toMatch(casePattern);
30
+ }
31
+ });
32
+ it('should have STEP_LABELS entries for all steps 1–16', () => {
33
+ for (let step = 1; step <= 16; step++) {
34
+ const labelPattern = new RegExp(`${step}:\\s*'[^']+'`);
35
+ expect(editorSource).toMatch(labelPattern);
36
+ }
37
+ });
38
+ it('should have printStep functions defined for all steps 1–16', () => {
39
+ for (let step = 1; step <= 16; step++) {
40
+ const fnPattern = new RegExp(`function\\s+printStep${step}\\s*\\(`);
41
+ expect(editorSource).toMatch(fnPattern);
42
+ }
43
+ });
44
+ });
45
+ //# sourceMappingURL=editor.stepDispatch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.stepDispatch.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.stepDispatch.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;;GASG;AACH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;IACxC,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EACvC,MAAM,CACP,CAAC;IAEF,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,2DAA2D;QAC3D,kDAAkD;QAClD,kFAAkF;QAClF,qEAAqE;QACrE,EAAE;QACF,8EAA8E;QAE9E,wEAAwE;QACxE,kDAAkD;QAClD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CACpC,2CAA2C,CAC5C,CAAC;QACF,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,WAAY,CAAC,CAAC,CAAC,CAAC;QAEnC,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,WAAW,IAAI,UAAU,CAAC,CAAC;YAC1D,MAAM,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,YAAY,GAAG,IAAI,MAAM,CAAC,GAAG,IAAI,cAAc,CAAC,CAAC;YACvD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,KAAK,IAAI,IAAI,GAAG,CAAC,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;YACtC,MAAM,SAAS,GAAG,IAAI,MAAM,CAAC,wBAAwB,IAAI,SAAS,CAAC,CAAC;YACpE,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,39 +2,74 @@ import * as fs from 'fs/promises';
2
2
  import * as path from 'path';
3
3
  import * as os from 'os';
4
4
  /**
5
- * Extract the ensureGitignoreEntry function for testing
6
- * This is the same implementation as in init.ts
5
+ * Granular .codeyam ignore patterns machine-local files only.
6
+ * Shared files (config.json, editor-scenarios/, etc.) are NOT ignored
7
+ * so they can be committed and shared via git.
7
8
  */
8
- async function ensureGitignoreEntry(projectRoot, entry) {
9
+ const CODEYAM_GITIGNORE_ENTRIES = [
10
+ '.codeyam/db.sqlite3',
11
+ '.codeyam/db.sqlite3-wal',
12
+ '.codeyam/db.sqlite3-shm',
13
+ '.codeyam/secrets.json',
14
+ '.codeyam/server.json',
15
+ '.codeyam/server-state.json',
16
+ '.codeyam/queue.json',
17
+ '.codeyam/active-scenario.json',
18
+ '.codeyam/editor-step.json',
19
+ '.codeyam/editor-user-prompt.txt',
20
+ '.codeyam/editor-mode-context.md',
21
+ '.codeyam/dev-mode-context.md',
22
+ '.codeyam/logs/',
23
+ '.codeyam/llm-calls/',
24
+ '.codeyam/captures/',
25
+ '.codeyam/results/',
26
+ '.codeyam/tmp/',
27
+ '.codeyam/rules/',
28
+ '.codeyam/bin/',
29
+ ];
30
+ /**
31
+ * Extract the ensureGitignoreEntry function for testing.
32
+ * Uses granular patterns instead of blanket .codeyam.
33
+ */
34
+ async function ensureGitignoreEntry(projectRoot) {
9
35
  const gitignorePath = path.join(projectRoot, '.gitignore');
10
36
  let gitignoreContent = '';
11
- // Read existing .gitignore if it exists
12
37
  try {
13
38
  gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
14
39
  }
15
40
  catch (error) {
16
41
  // File doesn't exist, will create it
17
42
  }
18
- // Check if entry already exists
19
43
  const lines = gitignoreContent.split('\n');
20
- const entryExists = lines.some((line) => line.trim() === entry || line.trim() === `/${entry}`);
21
- if (!entryExists) {
22
- // Add entry with a comment
44
+ // If there's already a blanket .codeyam ignore, replace it with granular patterns
45
+ const blanketIndex = lines.findIndex((line) => line.trim() === '.codeyam' || line.trim() === '/.codeyam');
46
+ if (blanketIndex !== -1) {
47
+ // Remove the blanket entry (and preceding comment if it's ours)
48
+ const removeStart = blanketIndex > 0 &&
49
+ lines[blanketIndex - 1].trim().startsWith('# CodeYam local files')
50
+ ? blanketIndex - 1
51
+ : blanketIndex;
52
+ lines.splice(removeStart, blanketIndex - removeStart + 1);
53
+ gitignoreContent = lines.join('\n');
54
+ }
55
+ // Check if granular patterns already exist
56
+ const hasGranularPatterns = CODEYAM_GITIGNORE_ENTRIES.some((entry) => lines.some((line) => line.trim() === entry));
57
+ if (!hasGranularPatterns) {
58
+ const block = '\n# CodeYam - local only (not shared)\n' +
59
+ CODEYAM_GITIGNORE_ENTRIES.join('\n') +
60
+ '\n';
23
61
  const newContent = gitignoreContent +
24
62
  (gitignoreContent && !gitignoreContent.endsWith('\n') ? '\n' : '') +
25
- '\n# CodeYam local files (contains secrets and local database)\n' +
26
- `.codeyam\n`;
63
+ block;
27
64
  await fs.writeFile(gitignorePath, newContent, 'utf8');
28
65
  }
29
66
  }
30
67
  describe('init command - gitignore management', () => {
31
68
  let testDir;
32
69
  beforeEach(async () => {
33
- // Create a unique temp directory for each test
34
70
  testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'codeyam-test-'));
35
71
  });
36
72
  afterEach(async () => {
37
- // Clean up test directory
38
73
  try {
39
74
  await fs.rm(testDir, { recursive: true, force: true });
40
75
  }
@@ -43,62 +78,74 @@ describe('init command - gitignore management', () => {
43
78
  }
44
79
  });
45
80
  describe('ensureGitignoreEntry', () => {
46
- test('creates new .gitignore with .codeyam entry when file does not exist', async () => {
47
- await ensureGitignoreEntry(testDir, '.codeyam');
81
+ test('creates new .gitignore with granular .codeyam patterns when file does not exist', async () => {
82
+ await ensureGitignoreEntry(testDir);
48
83
  const gitignorePath = path.join(testDir, '.gitignore');
49
84
  const content = await fs.readFile(gitignorePath, 'utf8');
50
- expect(content).toContain('.codeyam');
51
- expect(content).toContain('# CodeYam local files (contains secrets and local database)');
85
+ expect(content).toContain('.codeyam/db.sqlite3');
86
+ expect(content).toContain('.codeyam/secrets.json');
87
+ expect(content).toContain('.codeyam/server.json');
88
+ expect(content).toContain('.codeyam/logs/');
89
+ expect(content).toContain('# CodeYam - local only (not shared)');
90
+ // Should NOT have blanket .codeyam
91
+ expect(content).not.toMatch(/^\.codeyam$/m);
52
92
  });
53
- test('adds .codeyam to existing .gitignore that does not have it', async () => {
93
+ test('adds granular patterns to existing .gitignore', async () => {
54
94
  const gitignorePath = path.join(testDir, '.gitignore');
55
- const existingContent = 'node_modules\n.env\n';
56
- await fs.writeFile(gitignorePath, existingContent, 'utf8');
57
- await ensureGitignoreEntry(testDir, '.codeyam');
95
+ await fs.writeFile(gitignorePath, 'node_modules\n.env\n', 'utf8');
96
+ await ensureGitignoreEntry(testDir);
58
97
  const content = await fs.readFile(gitignorePath, 'utf8');
59
98
  expect(content).toContain('node_modules');
60
99
  expect(content).toContain('.env');
61
- expect(content).toContain('.codeyam');
62
- expect(content).toContain('# CodeYam local files (contains secrets and local database)');
100
+ expect(content).toContain('.codeyam/db.sqlite3');
101
+ expect(content).toContain('.codeyam/secrets.json');
63
102
  });
64
- test('does not duplicate .codeyam entry when it already exists', async () => {
103
+ test('does not duplicate when granular patterns already exist', async () => {
65
104
  const gitignorePath = path.join(testDir, '.gitignore');
66
- const existingContent = 'node_modules\n.codeyam\n.env\n';
67
- await fs.writeFile(gitignorePath, existingContent, 'utf8');
68
- await ensureGitignoreEntry(testDir, '.codeyam');
105
+ await fs.writeFile(gitignorePath, 'node_modules\n.codeyam/db.sqlite3\n.codeyam/secrets.json\n', 'utf8');
106
+ await ensureGitignoreEntry(testDir);
69
107
  const content = await fs.readFile(gitignorePath, 'utf8');
70
- const matches = content.match(/\.codeyam/g);
71
- // Should only appear once
108
+ const matches = content.match(/\.codeyam\/db\.sqlite3/g);
72
109
  expect(matches).toHaveLength(1);
73
110
  });
74
- test('handles .codeyam with leading slash in existing .gitignore', async () => {
111
+ test('replaces blanket .codeyam with granular patterns', async () => {
75
112
  const gitignorePath = path.join(testDir, '.gitignore');
76
- const existingContent = 'node_modules\n/.codeyam\n.env\n';
77
- await fs.writeFile(gitignorePath, existingContent, 'utf8');
78
- await ensureGitignoreEntry(testDir, '.codeyam');
113
+ await fs.writeFile(gitignorePath, 'node_modules\n\n# CodeYam local files (contains secrets and local database)\n.codeyam\n', 'utf8');
114
+ await ensureGitignoreEntry(testDir);
79
115
  const content = await fs.readFile(gitignorePath, 'utf8');
80
- const matches = content.match(/\.codeyam/g);
81
- // Should not add another entry since /.codeyam already exists
82
- expect(matches).toHaveLength(1);
116
+ // Blanket entry should be removed
117
+ expect(content).not.toMatch(/^\.codeyam$/m);
118
+ // Granular patterns should be added
119
+ expect(content).toContain('.codeyam/db.sqlite3');
120
+ expect(content).toContain('.codeyam/secrets.json');
121
+ // Existing content preserved
122
+ expect(content).toContain('node_modules');
123
+ });
124
+ test('replaces blanket /.codeyam with granular patterns', async () => {
125
+ const gitignorePath = path.join(testDir, '.gitignore');
126
+ await fs.writeFile(gitignorePath, 'node_modules\n/.codeyam\n.env\n', 'utf8');
127
+ await ensureGitignoreEntry(testDir);
128
+ const content = await fs.readFile(gitignorePath, 'utf8');
129
+ expect(content).not.toMatch(/^\/\.codeyam$/m);
130
+ expect(content).toContain('.codeyam/db.sqlite3');
131
+ expect(content).toContain('.env');
83
132
  });
84
133
  test('properly handles .gitignore without trailing newline', async () => {
85
134
  const gitignorePath = path.join(testDir, '.gitignore');
86
- const existingContent = 'node_modules';
87
- await fs.writeFile(gitignorePath, existingContent, 'utf8');
88
- await ensureGitignoreEntry(testDir, '.codeyam');
135
+ await fs.writeFile(gitignorePath, 'node_modules', 'utf8');
136
+ await ensureGitignoreEntry(testDir);
89
137
  const content = await fs.readFile(gitignorePath, 'utf8');
90
138
  expect(content).toContain('node_modules');
91
- expect(content).toContain('.codeyam');
92
- // Should have proper newlines
139
+ expect(content).toContain('.codeyam/db.sqlite3');
93
140
  expect(content).toMatch(/node_modules\n/);
94
141
  });
95
142
  test('handles empty .gitignore file', async () => {
96
143
  const gitignorePath = path.join(testDir, '.gitignore');
97
144
  await fs.writeFile(gitignorePath, '', 'utf8');
98
- await ensureGitignoreEntry(testDir, '.codeyam');
145
+ await ensureGitignoreEntry(testDir);
99
146
  const content = await fs.readFile(gitignorePath, 'utf8');
100
- expect(content).toContain('.codeyam');
101
- expect(content).toContain('# CodeYam local files (contains secrets and local database)');
147
+ expect(content).toContain('.codeyam/db.sqlite3');
148
+ expect(content).toContain('# CodeYam - local only (not shared)');
102
149
  });
103
150
  test('preserves existing content formatting', async () => {
104
151
  const gitignorePath = path.join(testDir, '.gitignore');
@@ -115,17 +162,24 @@ dist
115
162
  build
116
163
  `;
117
164
  await fs.writeFile(gitignorePath, existingContent, 'utf8');
118
- await ensureGitignoreEntry(testDir, '.codeyam');
165
+ await ensureGitignoreEntry(testDir);
119
166
  const content = await fs.readFile(gitignorePath, 'utf8');
120
- // Check that existing content is preserved
121
167
  expect(content).toContain('# Dependencies');
122
168
  expect(content).toContain('node_modules');
123
169
  expect(content).toContain('# Environment');
124
170
  expect(content).toContain('.env');
125
171
  expect(content).toContain('# Build');
126
172
  expect(content).toContain('dist');
127
- // And our new entry is added
128
- expect(content).toContain('.codeyam');
173
+ expect(content).toContain('.codeyam/db.sqlite3');
174
+ });
175
+ test('config.json is NOT ignored (allows sharing via git)', async () => {
176
+ await ensureGitignoreEntry(testDir);
177
+ const gitignorePath = path.join(testDir, '.gitignore');
178
+ const content = await fs.readFile(gitignorePath, 'utf8');
179
+ // config.json should not appear in gitignore
180
+ expect(content).not.toContain('config.json');
181
+ // editor-scenarios/ should not appear in gitignore
182
+ expect(content).not.toContain('editor-scenarios/');
129
183
  });
130
184
  });
131
185
  });
@@ -1 +1 @@
1
- {"version":3,"file":"init.gitignore.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/init.gitignore.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"init.gitignore.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/init.gitignore.test.ts"],"names":[],"mappings":"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"}
@@ -6,9 +6,7 @@ import { requireBranchAndProject, testEnvironment } from "../utils/database.js";
6
6
  import { startBackgroundServer } from "../utils/backgroundServer.js";
7
7
  import { installClaudeCodeSkills } from "../utils/install-skills.js";
8
8
  import { setupClaudeCodeSettings } from "../utils/setupClaudeCodeSettings.js";
9
- import { isAnalyzerFinalized, getAnalyzerTemplatePath, } from "../utils/analyzer.js";
10
9
  import initCommand from "./init.js";
11
- import { updateProjectMetadata } from "../../../packages/database/index.js";
12
10
  import { getProjectRoot } from "../state.js";
13
11
  function logStartMessage(state) {
14
12
  console.log();
@@ -60,26 +58,9 @@ const defaultCommand = {
60
58
  }
61
59
  // Load project and branch from database
62
60
  const { project, branch } = await requireBranchAndProject(projectSlug);
63
- // Detect truly empty folder (nothing besides .codeyam/.git from init)
64
- const dirEntries = fs.readdirSync(projectRoot);
65
- const isEmptyFolder = dirEntries.every((e) => e === '.codeyam' || e === '.git' || e === '.gitignore');
66
- const editorMode = isEmptyFolder || project.metadata?.editorMode === true;
67
- if (editorMode && !project.metadata?.labs?.simulations) {
68
- try {
69
- await updateProjectMetadata({
70
- projectSlug,
71
- metadataUpdate: { editorMode: true, labs: { simulations: true } },
72
- });
73
- // Refresh project after metadata update
74
- const refreshed = await requireBranchAndProject(projectSlug);
75
- Object.assign(project, refreshed.project);
76
- }
77
- catch {
78
- // Non-fatal — editor mode will still work from the flag
79
- }
80
- }
81
61
  // Ensure skills/hooks are up to date with this CLI version
82
62
  const simulationsEnabled = project.metadata?.labs?.simulations ?? false;
63
+ const editorMode = project.metadata?.editorMode === true;
83
64
  const skillMode = simulationsEnabled
84
65
  ? 'full'
85
66
  : editorMode
@@ -93,29 +74,6 @@ const defaultCommand = {
93
74
  mode: skillMode,
94
75
  editorMode,
95
76
  });
96
- // In editor mode, auto-finalize the analyzer so codeyam analyze works
97
- if (editorMode && !isAnalyzerFinalized()) {
98
- try {
99
- const { execSync } = await import('child_process');
100
- const templatePath = getAnalyzerTemplatePath();
101
- if (fs.existsSync(templatePath)) {
102
- console.log(' Setting up simulations (first time only)...');
103
- execSync('npm install --include=dev', {
104
- cwd: templatePath,
105
- stdio: 'pipe',
106
- });
107
- execSync('npx playwright install chromium', {
108
- cwd: templatePath,
109
- stdio: 'pipe',
110
- });
111
- execSync('npm run build', { cwd: templatePath, stdio: 'pipe' });
112
- fs.writeFileSync(path.join(templatePath, '.finalized'), new Date().toISOString());
113
- }
114
- }
115
- catch {
116
- // Non-fatal — codeyam analyze just won't work until setup-simulations is run
117
- }
118
- }
119
77
  // Start background server
120
78
  const { url } = await startBackgroundServer({
121
79
  port: argv.port || 3111,
@@ -124,8 +82,7 @@ const defaultCommand = {
124
82
  branch,
125
83
  });
126
84
  logStartMessage({ url });
127
- // Auto-open browser — route to /editor when in editor mode
128
- const openUrl = editorMode ? `${url}/editor` : url;
85
+ // Auto-open browser to dashboard
129
86
  try {
130
87
  const { execSync } = await import('child_process');
131
88
  const openCommand = process.platform === 'darwin'
@@ -133,7 +90,7 @@ const defaultCommand = {
133
90
  : process.platform === 'win32'
134
91
  ? 'start ""'
135
92
  : 'xdg-open';
136
- execSync(`${openCommand} "${openUrl}"`, { stdio: 'ignore' });
93
+ execSync(`${openCommand} "${url}"`, { stdio: 'ignore' });
137
94
  }
138
95
  catch (e) {
139
96
  // Silently fail if open command doesn't work
@@ -1 +1 @@
1
- {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/commands/default.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"default.js","sourceRoot":"","sources":["../../../../src/commands/default.ts"],"names":[],"mappings":"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"}