@codeyam/codeyam-cli 0.1.0-staging.4057bd2 → 0.1.0-staging.40645bb

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 (628) 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 +9 -9
  4. package/analyzer-template/packages/ai/package.json +1 -1
  5. package/analyzer-template/packages/ai/src/lib/astScopes/methodSemantics.ts +135 -0
  6. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +36 -9
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  11. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +0 -33
  12. package/analyzer-template/packages/analyze/index.ts +4 -1
  13. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +13 -7
  14. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  18. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  19. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  20. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  21. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  22. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  23. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  24. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
  25. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  26. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
  27. package/analyzer-template/packages/aws/package.json +7 -7
  28. package/analyzer-template/packages/database/package.json +3 -3
  29. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +102 -0
  30. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  31. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  32. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  33. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +0 -65
  34. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +9 -0
  35. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
  36. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +104 -0
  37. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  38. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  39. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  40. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  41. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  42. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  43. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  44. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  45. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  46. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  47. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  48. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  49. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +0 -25
  50. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  51. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  52. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  53. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  54. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  55. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  56. package/analyzer-template/packages/ui-components/package.json +1 -1
  57. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  58. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  59. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  60. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  61. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  62. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  63. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  64. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  65. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  66. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  67. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  68. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  69. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  70. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  71. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  72. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  73. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  74. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  75. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  76. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  77. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  78. package/codeyam-cli/src/cli.js +24 -0
  79. package/codeyam-cli/src/cli.js.map +1 -1
  80. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  81. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  82. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  83. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  84. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  85. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  86. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  87. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  88. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  89. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  90. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  91. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  92. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +137 -47
  93. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  94. package/codeyam-cli/src/commands/default.js +3 -46
  95. package/codeyam-cli/src/commands/default.js.map +1 -1
  96. package/codeyam-cli/src/commands/editor.js +5268 -794
  97. package/codeyam-cli/src/commands/editor.js.map +1 -1
  98. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  99. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  100. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  101. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  102. package/codeyam-cli/src/commands/init.js +89 -34
  103. package/codeyam-cli/src/commands/init.js.map +1 -1
  104. package/codeyam-cli/src/commands/telemetry.js +37 -0
  105. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  106. package/codeyam-cli/src/data/designSystems.js +27 -0
  107. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  108. package/codeyam-cli/src/data/techStacks.js +77 -0
  109. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  110. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  111. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  112. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  113. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  114. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  115. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  116. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  117. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  118. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +3915 -1
  119. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  120. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  121. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  122. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  123. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  124. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  125. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  126. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  127. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  128. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +181 -3
  129. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -1
  130. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  131. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  132. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  133. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  134. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  135. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  136. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  137. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  138. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +249 -2
  139. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -1
  140. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  141. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  142. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  143. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  144. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +118 -1
  145. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -1
  146. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +217 -3
  147. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  148. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +250 -0
  149. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  150. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
  151. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  152. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  153. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +411 -0
  155. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  156. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1694 -2
  157. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  158. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +413 -0
  159. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  160. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  161. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  162. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  163. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  164. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  165. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2121 -0
  167. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  168. package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
  169. package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
  170. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  171. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  172. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
  173. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
  174. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  175. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  176. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  177. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  178. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  179. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  180. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  181. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  182. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  183. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  184. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  185. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  186. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  187. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  188. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  189. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  190. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +26 -5
  191. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  192. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  193. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  194. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  195. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  196. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  197. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  198. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +148 -0
  199. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  200. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  201. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  202. package/codeyam-cli/src/utils/analyzer.js +19 -0
  203. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  204. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  205. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  206. package/codeyam-cli/src/utils/backgroundServer.js +95 -19
  207. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  208. package/codeyam-cli/src/utils/database.js +37 -2
  209. package/codeyam-cli/src/utils/database.js.map +1 -1
  210. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  211. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  212. package/codeyam-cli/src/utils/devServerState.js +71 -0
  213. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  214. package/codeyam-cli/src/utils/editorApi.js +95 -0
  215. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  216. package/codeyam-cli/src/utils/editorAudit.js +780 -13
  217. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  218. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  219. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  220. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  221. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  222. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  223. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  224. package/codeyam-cli/src/utils/editorDevServer.js +100 -1
  225. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -1
  226. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  227. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  228. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  229. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  230. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  231. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  232. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  233. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  234. package/codeyam-cli/src/utils/editorJournal.js +92 -4
  235. package/codeyam-cli/src/utils/editorJournal.js.map +1 -1
  236. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  237. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  238. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  239. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  240. package/codeyam-cli/src/utils/editorMockState.js +1 -1
  241. package/codeyam-cli/src/utils/editorPreloadHelpers.js +72 -1
  242. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -1
  243. package/codeyam-cli/src/utils/editorPreview.js +74 -1
  244. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  245. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  246. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  247. package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
  248. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  249. package/codeyam-cli/src/utils/editorScenarioSwitch.js +149 -0
  250. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  251. package/codeyam-cli/src/utils/editorScenarios.js +631 -0
  252. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  253. package/codeyam-cli/src/utils/editorSeedAdapter.js +475 -0
  254. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  255. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  256. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  257. package/codeyam-cli/src/utils/entityChangeStatus.js +394 -0
  258. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  259. package/codeyam-cli/src/utils/entityChangeStatus.server.js +227 -0
  260. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  261. package/codeyam-cli/src/utils/envFile.js +90 -0
  262. package/codeyam-cli/src/utils/envFile.js.map +1 -0
  263. package/codeyam-cli/src/utils/fileWatcher.js +38 -0
  264. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  265. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  266. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  267. package/codeyam-cli/src/utils/handoffContext.js +257 -0
  268. package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
  269. package/codeyam-cli/src/utils/install-skills.js +51 -7
  270. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  271. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  272. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  273. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  274. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  275. package/codeyam-cli/src/utils/progress.js +2 -2
  276. package/codeyam-cli/src/utils/progress.js.map +1 -1
  277. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  278. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  279. package/codeyam-cli/src/utils/queue/job.js +35 -6
  280. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  281. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  282. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  283. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  284. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  285. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  286. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  287. package/codeyam-cli/src/utils/scenariosManifest.js +313 -0
  288. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  289. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  290. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  291. package/codeyam-cli/src/utils/serverState.js +30 -0
  292. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  293. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +47 -16
  294. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  295. package/codeyam-cli/src/utils/simulationGateMiddleware.js +17 -1
  296. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  297. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  298. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  299. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  300. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  301. package/codeyam-cli/src/utils/techStackConfig.js +38 -0
  302. package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
  303. package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
  304. package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
  305. package/codeyam-cli/src/utils/telemetry.js +106 -0
  306. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  307. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  308. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  309. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  310. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  311. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  312. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  313. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  314. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  315. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  316. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  317. package/codeyam-cli/src/utils/testRunner.js +193 -1
  318. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  319. package/codeyam-cli/src/utils/webappDetection.js +25 -2
  320. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  321. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +99 -0
  322. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  323. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +153 -0
  324. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  325. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  326. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  327. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +762 -0
  328. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  329. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +315 -0
  330. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  331. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  332. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  333. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  334. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  335. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  336. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  337. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  338. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  339. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  340. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  341. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  342. package/codeyam-cli/src/webserver/backgroundServer.js +60 -61
  343. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  344. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DTBZZfSk.js +1 -0
  345. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-C76mRRiF.js → EntityItem-BxclONWq.js} +5 -5
  346. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  347. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CobE682z.js → EntityTypeIcon-BsnEOJZ_.js} +9 -9
  348. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ByaELMbv.js +1 -0
  349. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-6WjVfhxX.js +25 -0
  350. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-ChX-Hp7W.js +3 -0
  351. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BU_OAEMP.js → LoadingDots-By5zI316.js} +1 -1
  352. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-ceAyBX-H.js → LogViewer-C-9zQdXg.js} +3 -3
  353. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-Bs2_Oua4.js +36 -0
  354. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-djPLI-WV.js → ReportIssueModal-DQsceHVv.js} +4 -4
  355. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DThcm_9M.js +1 -0
  356. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-B76aig_2.js → ScenarioViewer-Cl4oOA3A.js} +3 -3
  357. package/codeyam-cli/src/webserver/build/client/assets/Spinner-CIil5-gb.js +34 -0
  358. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  359. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BqkA9zyZ.js +1 -0
  360. package/codeyam-cli/src/webserver/build/client/assets/{_index-C96V0n15.js → _index-DnOgyseQ.js} +4 -4
  361. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BpKzcsJz.js → activity.(_tab)-DqM9hbNE.js} +8 -8
  362. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-Duc5hnl7.js → addon-web-links-C58dYPwR.js} +1 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-D9hemwl6.js → agent-transcripts-B8NCeOrm.js} +7 -7
  367. package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
  371. package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-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-recapture-stale-l0sNRNKZ.js +1 -0
  375. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  376. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  377. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  378. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  379. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  382. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  383. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  384. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  385. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D_nMCFmP.js → book-open-BFSIqZgO.js} +2 -2
  386. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BH2h1Ea2.js → chevron-down-B9fDzFVh.js} +2 -2
  387. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DyIKORY6.js → circle-check-DLPObLUx.js} +2 -2
  389. package/codeyam-cli/src/webserver/build/client/assets/{copy-NDbZjXao.js → copy-DXEmO0TD.js} +3 -3
  390. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BwyFiRot.js +41 -0
  391. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  392. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  393. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-iRhRIFlp.js +1 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DOXe0Qx7.js +161 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-C6fEYHrh.js +41 -0
  397. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CrjR3zZW.js → entity._sha._-pc-vc6wO.js} +14 -13
  398. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js +6 -0
  399. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js +6 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BTcpgIpC.js +6 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMvVHNXU.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +2 -2
  402. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DTvKq3TY.js → entry.client-j1Vi0bco.js} +6 -6
  403. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/files-kuny2Q_s.js +1 -0
  405. package/codeyam-cli/src/webserver/build/client/assets/git-DgCZPMie.js +1 -0
  406. package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
  407. package/codeyam-cli/src/webserver/build/client/assets/{index-BcvgDzbZ.js → index-BliGSSpl.js} +1 -1
  408. package/codeyam-cli/src/webserver/build/client/assets/index-SqjQKTdH.js +15 -0
  409. package/codeyam-cli/src/webserver/build/client/assets/{index-10oVnAAH.js → index-vyrZD2g4.js} +1 -1
  410. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  411. package/codeyam-cli/src/webserver/build/client/assets/labs-c3yLxSEp.js +1 -0
  412. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BAXYRVEO.js → loader-circle-D-q28GLF.js} +2 -2
  413. package/codeyam-cli/src/webserver/build/client/assets/manifest-30c44d84.js +1 -0
  414. package/codeyam-cli/src/webserver/build/client/assets/memory-CEWIUC4t.js +101 -0
  415. package/codeyam-cli/src/webserver/build/client/assets/{pause-DTAcYxBt.js → pause-BP6fitdh.js} +3 -3
  416. package/codeyam-cli/src/webserver/build/client/assets/root-CLedrjXQ.js +80 -0
  417. package/codeyam-cli/src/webserver/build/client/assets/{search-fKo7v0Zo.js → search-BooqacKS.js} +2 -2
  418. package/codeyam-cli/src/webserver/build/client/assets/settings-BM0nbryO.js +1 -0
  419. package/codeyam-cli/src/webserver/build/client/assets/simulations-ovy6FjRY.js +1 -0
  420. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BG4heKCG.js → terminal-DHemCJIs.js} +3 -3
  421. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DtSmdtM4.js → triangle-alert-D87ekDl8.js} +2 -2
  422. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dk0Tciqg.js +1 -0
  423. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C8QvIe05.js +2 -0
  424. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-jkCytuYz.js +1 -0
  425. package/codeyam-cli/src/webserver/build/client/assets/useToast-BgqkixU9.js +1 -0
  426. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  427. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-CuR5TvUx.js +16 -0
  428. package/codeyam-cli/src/webserver/build/server/assets/index-D4MWAsqb.js +1 -0
  429. package/codeyam-cli/src/webserver/build/server/assets/init-JObA4lXD.js +14 -0
  430. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  431. package/codeyam-cli/src/webserver/build/server/assets/server-build-i8OXK4oL.js +765 -0
  432. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  433. package/codeyam-cli/src/webserver/build-info.json +5 -5
  434. package/codeyam-cli/src/webserver/editorProxy.js +711 -50
  435. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  436. package/codeyam-cli/src/webserver/idleDetector.js +130 -0
  437. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  438. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  439. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  440. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  441. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +242 -3
  442. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +147 -4
  443. package/codeyam-cli/src/webserver/server.js +236 -16
  444. package/codeyam-cli/src/webserver/server.js.map +1 -1
  445. package/codeyam-cli/src/webserver/terminalServer.js +400 -58
  446. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  447. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  448. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  449. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  450. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  451. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  452. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  453. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  454. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  455. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  456. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  457. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  458. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  459. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  460. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  461. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  462. package/codeyam-cli/templates/codeyam-editor-claude.md +86 -5
  463. package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
  464. package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
  465. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  466. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  467. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  468. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  469. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  470. package/codeyam-cli/templates/editor-step-hook.py +262 -41
  471. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +288 -0
  472. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  473. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  474. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +15 -0
  475. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  476. package/codeyam-cli/templates/expo-react-native/app.json +29 -0
  477. package/codeyam-cli/templates/expo-react-native/babel.config.js +10 -0
  478. package/codeyam-cli/templates/expo-react-native/gitignore +14 -0
  479. package/codeyam-cli/templates/expo-react-native/global.css +10 -0
  480. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  481. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  482. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  483. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  484. package/codeyam-cli/templates/expo-react-native/package.json +54 -0
  485. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  486. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  487. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  488. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  489. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  490. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  491. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  492. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  493. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  494. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  495. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +9 -4
  496. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  497. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +22 -0
  498. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +6 -2
  499. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +4 -1
  500. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  501. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  502. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  503. package/codeyam-cli/templates/{nextjs-prisma-sqlite/PRISMA_SETUP.md → nextjs-prisma-supabase/SUPABASE_SETUP.md} +37 -17
  504. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  505. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  506. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  507. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  508. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  509. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  510. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  511. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  512. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  513. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  514. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  515. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  516. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  517. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  518. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  519. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  520. package/codeyam-cli/templates/seed-adapters/supabase.ts +475 -0
  521. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +2 -2
  522. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +192 -17
  523. package/codeyam-cli/templates/skills/codeyam-memory/SKILL.md +10 -10
  524. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  525. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  526. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  527. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  528. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  529. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  530. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  531. package/package.json +15 -9
  532. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  533. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  534. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  535. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  536. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  537. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  538. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  539. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  540. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  541. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  542. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  543. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  544. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  545. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  546. package/packages/analyze/index.js +1 -1
  547. package/packages/analyze/index.js.map +1 -1
  548. package/packages/analyze/src/lib/ProjectAnalyzer.js +10 -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/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  553. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  554. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  555. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  556. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  557. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  558. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  559. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  560. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  561. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  562. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  563. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  564. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  565. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  566. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  567. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  568. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  569. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  570. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
  571. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  572. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  573. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  574. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
  575. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  576. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +104 -0
  577. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  578. package/packages/database/src/lib/loadAnalysis.js +7 -1
  579. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  580. package/packages/database/src/lib/loadEntities.js +0 -6
  581. package/packages/database/src/lib/loadEntities.js.map +1 -1
  582. package/packages/database/src/lib/loadEntity.js +5 -5
  583. package/packages/database/src/lib/loadEntity.js.map +1 -1
  584. package/packages/database/src/lib/updateCommitMetadata.js +0 -25
  585. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  586. package/packages/types/src/enums/ProjectFramework.js +2 -0
  587. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  588. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  589. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  590. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +0 -1
  591. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-g3saevPb.js +0 -1
  592. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +0 -1
  593. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +0 -25
  594. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +0 -3
  595. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +0 -1
  596. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +0 -34
  597. package/codeyam-cli/src/webserver/build/client/assets/Terminal-Dnj5CY9R.js +0 -41
  598. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C8OKAR5x.js +0 -1
  599. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +0 -1
  600. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-C4pqxYJB.js +0 -51
  601. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CMT1jU2q.js +0 -21
  602. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  603. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +0 -1
  604. package/codeyam-cli/src/webserver/build/client/assets/editor-D1DAKXtT.js +0 -8
  605. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DkzqFzFj.js +0 -6
  606. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +0 -6
  607. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +0 -6
  608. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +0 -1
  609. package/codeyam-cli/src/webserver/build/client/assets/files-DO4CZ16O.js +0 -1
  610. package/codeyam-cli/src/webserver/build/client/assets/git-CFCTYk9I.js +0 -15
  611. package/codeyam-cli/src/webserver/build/client/assets/globals-B17TBSS6.css +0 -1
  612. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +0 -1
  613. package/codeyam-cli/src/webserver/build/client/assets/manifest-a632de18.js +0 -1
  614. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +0 -96
  615. package/codeyam-cli/src/webserver/build/client/assets/root-DUKqhFlb.js +0 -67
  616. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +0 -1
  617. package/codeyam-cli/src/webserver/build/client/assets/simulations-B3aOzpCZ.js +0 -1
  618. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-ByhSyh0W.js +0 -1
  619. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +0 -2
  620. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +0 -1
  621. package/codeyam-cli/src/webserver/build/client/assets/useToast-9FIWuYfK.js +0 -1
  622. package/codeyam-cli/src/webserver/build/server/assets/index-HfLydfDq.js +0 -1
  623. package/codeyam-cli/src/webserver/build/server/assets/server-build-CUu_F-oo.js +0 -366
  624. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.sh +0 -108
  625. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.sh +0 -69
  626. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.sh +0 -12
  627. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter.jq +0 -45
  628. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.sh +0 -139
@@ -0,0 +1,71 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /**
4
+ * Structural test: handleAudit must NOT call runAnalysisForEntities.
5
+ *
6
+ * Previously, handleAudit auto-ran full analysis for incomplete entities,
7
+ * which was slow (analyzer startup + AST scan for all glossary entries).
8
+ *
9
+ * Targeted analysis (with filePaths for 1-3 specific files) is acceptable,
10
+ * but a full scan (without filePaths) must never be used here.
11
+ * This test ensures the full auto-analysis doesn't creep back in.
12
+ */
13
+ describe('handleAudit - no auto-analysis', () => {
14
+ it('should not call runAnalysisForEntities inside handleAudit', () => {
15
+ const editorTsPath = path.join(__dirname, '..', 'editor.ts');
16
+ const source = fs.readFileSync(editorTsPath, 'utf8');
17
+ // Extract the handleAudit function body.
18
+ // It starts with "async function handleAudit" and ends at the next
19
+ // top-level "async function" or "function" declaration (unindented).
20
+ const handleAuditStart = source.indexOf('async function handleAudit');
21
+ expect(handleAuditStart).toBeGreaterThan(-1);
22
+ // Find the next top-level function declaration after handleAudit starts.
23
+ // Top-level functions start at the beginning of a line (no indentation).
24
+ const afterStart = source.slice(handleAuditStart + 1);
25
+ const nextFnMatch = afterStart.match(/\n(?:async )?function [a-zA-Z]/);
26
+ const handleAuditEnd = nextFnMatch
27
+ ? handleAuditStart + 1 + nextFnMatch.index
28
+ : source.length;
29
+ const handleAuditBody = source.slice(handleAuditStart, handleAuditEnd);
30
+ // The function body must NOT contain runAnalysisForEntities
31
+ expect(handleAuditBody).not.toContain('runAnalysisForEntities');
32
+ });
33
+ it('should report incomplete entities with guidance instead of auto-fixing', () => {
34
+ const editorTsPath = path.join(__dirname, '..', 'editor.ts');
35
+ const source = fs.readFileSync(editorTsPath, 'utf8');
36
+ const handleAuditStart = source.indexOf('async function handleAudit');
37
+ const afterStart = source.slice(handleAuditStart + 1);
38
+ const nextFnMatch = afterStart.match(/\n(?:async )?function [a-zA-Z]/);
39
+ const handleAuditEnd = nextFnMatch
40
+ ? handleAuditStart + 1 + nextFnMatch.index
41
+ : source.length;
42
+ const handleAuditBody = source.slice(handleAuditStart, handleAuditEnd);
43
+ // Should still report incomplete entities
44
+ expect(handleAuditBody).toContain('incompleteEntities');
45
+ expect(handleAuditBody).toContain('formatIncompleteEntityGuidance');
46
+ });
47
+ it('should only call handleAnalyzeImports with filePaths (targeted, not full scan)', () => {
48
+ const editorTsPath = path.join(__dirname, '..', 'editor.ts');
49
+ const source = fs.readFileSync(editorTsPath, 'utf8');
50
+ const handleAuditStart = source.indexOf('async function handleAudit');
51
+ expect(handleAuditStart).toBeGreaterThan(-1);
52
+ const afterStart = source.slice(handleAuditStart + 1);
53
+ const nextFnMatch = afterStart.match(/\n(?:async )?function [a-zA-Z]/);
54
+ const handleAuditEnd = nextFnMatch
55
+ ? handleAuditStart + 1 + nextFnMatch.index
56
+ : source.length;
57
+ const handleAuditBody = source.slice(handleAuditStart, handleAuditEnd);
58
+ // Targeted handleAnalyzeImports (with filePaths) is OK — it only
59
+ // analyzes 1-3 specific files. A full scan (without filePaths) takes
60
+ // minutes on large projects and must never be used here.
61
+ const calls = [...handleAuditBody.matchAll(/handleAnalyzeImports\s*\(/g)];
62
+ for (const call of calls) {
63
+ const afterCall = handleAuditBody.slice(call.index + call[0].length);
64
+ // Each call must include filePaths in its arguments
65
+ const closingParen = afterCall.indexOf(')');
66
+ const callArgs = afterCall.slice(0, closingParen);
67
+ expect(callArgs).toContain('filePaths');
68
+ }
69
+ });
70
+ });
71
+ //# sourceMappingURL=editor.auditNoAutoAnalysis.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.auditNoAutoAnalysis.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.auditNoAutoAnalysis.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import { DESIGN_SYSTEMS } from "../../data/designSystems.js";
4
+ /**
5
+ * Structural tests for built-in design system selection in the editor.
6
+ * Ensures template files exist, editor.ts references each design system,
7
+ * and the subcommand dispatch is wired up.
8
+ */
9
+ describe('editor design system selection', () => {
10
+ const editorSource = fs.readFileSync(path.join(__dirname, '..', 'editor.ts'), 'utf8');
11
+ const templatesDir = path.join(__dirname, '..', // commands
12
+ '..', // src
13
+ '..', // codeyam-cli
14
+ 'templates', 'design-systems');
15
+ it('should have a template file for each design system', () => {
16
+ for (const ds of DESIGN_SYSTEMS) {
17
+ const filePath = path.join(templatesDir, ds.fileName);
18
+ expect(fs.existsSync(filePath)).toBe(true);
19
+ }
20
+ });
21
+ it('should iterate over DESIGN_SYSTEMS in printSetup to output design-system commands', () => {
22
+ // printSetup dynamically iterates DESIGN_SYSTEMS and outputs
23
+ // `codeyam editor design-system ${ds.id}` for each — verify the template literal is present
24
+ expect(editorSource).toContain('codeyam editor design-system ${ds.id}');
25
+ });
26
+ it('should have a design-system subcommand dispatch', () => {
27
+ expect(editorSource).toMatch(/argv\.step === ['"]design-system['"]/);
28
+ });
29
+ });
30
+ //# sourceMappingURL=editor.designSystem.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.designSystem.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.designSystem.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D;;;;GAIG;AACH,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAClC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,CAAC,EACvC,MAAM,CACP,CAAC;IAEF,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAC5B,SAAS,EACT,IAAI,EAAE,WAAW;IACjB,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,cAAc;IACpB,WAAW,EACX,gBAAgB,CACjB,CAAC;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,KAAK,MAAM,EAAE,IAAI,cAAc,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC;YACtD,MAAM,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,6DAA6D;QAC7D,4FAA4F;QAC5F,MAAM,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;IAC1E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Tests that `codeyam editor isolate` correctly parses multiple component
3
+ * names whether passed as separate args or a single quoted string.
4
+ *
5
+ * Bug: `codeyam editor isolate A B C` failed because yargs .strict()
6
+ * rejected extra positionals beyond the two declared (step, json).
7
+ * Claude would then try one at a time, wasting time and tokens.
8
+ */
9
+ import { parseIsolateArgs } from "../editorIsolateArgs.js";
10
+ describe('parseIsolateArgs', () => {
11
+ it('should parse a single component name from json arg', () => {
12
+ expect(parseIsolateArgs('LogoMark', [])).toEqual(['LogoMark']);
13
+ });
14
+ it('should parse space-separated names from a single quoted json arg', () => {
15
+ // codeyam editor isolate "LogoMark AppHeader Button"
16
+ expect(parseIsolateArgs('LogoMark AppHeader Button', [])).toEqual([
17
+ 'LogoMark',
18
+ 'AppHeader',
19
+ 'Button',
20
+ ]);
21
+ });
22
+ it('should parse comma-separated names from json arg', () => {
23
+ expect(parseIsolateArgs('LogoMark,AppHeader,Button', [])).toEqual([
24
+ 'LogoMark',
25
+ 'AppHeader',
26
+ 'Button',
27
+ ]);
28
+ });
29
+ it('should collect extra positional args from argv._', () => {
30
+ // codeyam editor isolate LogoMark AppHeader Button
31
+ // yargs: json="LogoMark", argv._=["editor", "AppHeader", "Button"]
32
+ expect(parseIsolateArgs('LogoMark', ['editor', 'AppHeader', 'Button'])).toEqual(['LogoMark', 'AppHeader', 'Button']);
33
+ });
34
+ it('should deduplicate names from json and extras', () => {
35
+ expect(parseIsolateArgs('LogoMark', ['editor', 'LogoMark', 'AppHeader'])).toEqual(['LogoMark', 'AppHeader']);
36
+ });
37
+ it('should filter out empty strings', () => {
38
+ expect(parseIsolateArgs('LogoMark AppHeader', [])).toEqual([
39
+ 'LogoMark',
40
+ 'AppHeader',
41
+ ]);
42
+ });
43
+ it('should return empty array when no names provided', () => {
44
+ expect(parseIsolateArgs(undefined, [])).toEqual([]);
45
+ expect(parseIsolateArgs('', [])).toEqual([]);
46
+ });
47
+ it('should filter out "editor" from argv._', () => {
48
+ expect(parseIsolateArgs(undefined, ['editor', 'LogoMark', 'AppHeader'])).toEqual(['LogoMark', 'AppHeader']);
49
+ });
50
+ });
51
+ //# sourceMappingURL=editor.isolateArgs.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.isolateArgs.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.isolateArgs.test.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAExD,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kEAAkE,EAAE,GAAG,EAAE;QAC1E,qDAAqD;QACrD,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,UAAU;YACV,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,gBAAgB,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAChE,UAAU;YACV,WAAW;YACX,QAAQ;SACT,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,mDAAmD;QACnD,mEAAmE;QACnE,MAAM,CACJ,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAChE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,MAAM,CACJ,gBAAgB,CAAC,UAAU,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CAClE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YAC1D,UAAU;YACV,WAAW;SACZ,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACpD,MAAM,CAAC,gBAAgB,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CACJ,gBAAgB,CAAC,SAAS,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,WAAW,CAAC,CAAC,CACjE,CAAC,OAAO,CAAC,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,55 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Structural test: every writeState() call in editor.ts must preserve
5
+ * `techStackId` and `appFormats` from the previous state.
6
+ *
7
+ * Bug: Steps 4-18 dropped techStackId from writeState calls, causing
8
+ * getTechStackContext() to fall back to Next.js defaults. This broke
9
+ * `codeyam editor isolate` for Expo projects — it created Next.js-style
10
+ * subdirectories instead of Expo flat files.
11
+ */
12
+ describe('editor state persistence', () => {
13
+ const editorSource = fs.readFileSync(path.join(__dirname, '..', 'editor.ts'), 'utf8');
14
+ // Find all writeState blocks in the source.
15
+ // Each writeState call spans multiple lines like:
16
+ // writeState(root, {
17
+ // feature,
18
+ // step: N,
19
+ // ...
20
+ // });
21
+ const writeStateBlocks = [];
22
+ const lines = editorSource.split('\n');
23
+ for (let i = 0; i < lines.length; i++) {
24
+ if (lines[i].includes('writeState(root,')) {
25
+ // Collect lines until we find the closing `});`
26
+ let block = '';
27
+ for (let j = i; j < lines.length; j++) {
28
+ block += lines[j] + '\n';
29
+ if (lines[j].match(/^\s*\}\);/))
30
+ break;
31
+ }
32
+ writeStateBlocks.push({ lineNumber: i + 1, block });
33
+ }
34
+ }
35
+ it('should find writeState calls in editor.ts', () => {
36
+ expect(writeStateBlocks.length).toBeGreaterThan(10);
37
+ });
38
+ // Filter to only writeState blocks that set a step number (printStep functions).
39
+ // Exclude the handleTemplate/migration-survey writeState that sets step: 0.
40
+ const stepWriteStates = writeStateBlocks.filter(({ block }) => block.match(/step:\s*\d+/) && !block.match(/step:\s*0/));
41
+ it('should find step writeState calls', () => {
42
+ expect(stepWriteStates.length).toBeGreaterThanOrEqual(18);
43
+ });
44
+ for (const { lineNumber, block } of stepWriteStates) {
45
+ const stepMatch = block.match(/step:\s*(\d+)/);
46
+ const stepNum = stepMatch ? stepMatch[1] : '?';
47
+ it(`step ${stepNum} writeState (line ${lineNumber}) should preserve techStackId`, () => {
48
+ expect(block).toContain('techStackId');
49
+ });
50
+ it(`step ${stepNum} writeState (line ${lineNumber}) should preserve appFormats`, () => {
51
+ expect(block).toContain('appFormats');
52
+ });
53
+ }
54
+ });
55
+ //# sourceMappingURL=editor.statePersistence.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editor.statePersistence.test.js","sourceRoot":"","sources":["../../../../../src/commands/__tests__/editor.statePersistence.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB;;;;;;;;GAQG;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,4CAA4C;IAC5C,kDAAkD;IAClD,uBAAuB;IACvB,eAAe;IACf,eAAe;IACf,UAAU;IACV,QAAQ;IACR,MAAM,gBAAgB,GAA4C,EAAE,CAAC;IACrE,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACtC,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC1C,gDAAgD;YAChD,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;gBACzB,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;oBAAE,MAAM;YACzC,CAAC;YACD,gBAAgB,CAAC,IAAI,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;QACnD,MAAM,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,iFAAiF;IACjF,4EAA4E;IAC5E,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAC7C,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,WAAW,CAAC,CACvE,CAAC;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC,CAAC,CAAC;IAEH,KAAK,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,eAAe,EAAE,CAAC;QACpD,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAC/C,MAAM,OAAO,GAAG,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QAE/C,EAAE,CAAC,QAAQ,OAAO,qBAAqB,UAAU,+BAA+B,EAAE,GAAG,EAAE;YACrF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,QAAQ,OAAO,qBAAqB,UAAU,8BAA8B,EAAE,GAAG,EAAE;YACpF,MAAM,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,56 @@
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–18. Without this test, it's easy to add new steps
6
+ * (e.g. 16, 17, 18) 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–18', () => {
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 18 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 <= 18; 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–18', () => {
33
+ for (let step = 1; step <= 18; 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–18', () => {
39
+ for (let step = 1; step <= 18; step++) {
40
+ const fnPattern = new RegExp(`function\\s+printStep${step}\\s*\\(`);
41
+ expect(editorSource).toMatch(fnPattern);
42
+ }
43
+ });
44
+ it('should include dimension in all preview commands that contain scenarioId', () => {
45
+ // Find all lines that contain a preview command with scenarioId.
46
+ // Every such line must also include "dimension" to avoid Claude getting
47
+ // an error when copying the example command verbatim.
48
+ const lines = editorSource.split('\n');
49
+ const previewWithScenarioId = lines.filter((line) => line.includes('scenarioId') && line.includes('preview'));
50
+ expect(previewWithScenarioId.length).toBeGreaterThan(0);
51
+ for (const line of previewWithScenarioId) {
52
+ expect(line).toContain('dimension');
53
+ }
54
+ });
55
+ });
56
+ //# 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;IAEH,EAAE,CAAC,0EAA0E,EAAE,GAAG,EAAE;QAClF,iEAAiE;QACjE,wEAAwE;QACxE,sDAAsD;QACtD,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,qBAAqB,GAAG,KAAK,CAAC,MAAM,CACxC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAClE,CAAC;QAEF,MAAM,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;QACxD,KAAK,MAAM,IAAI,IAAI,qBAAqB,EAAE,CAAC;YACzC,MAAM,CAAC,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACtC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -2,39 +2,88 @@ 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/claude-session-id.txt',
21
+ '.codeyam/editor-mode-context.md',
22
+ '.codeyam/dev-mode-context.md',
23
+ '.codeyam/handoff-context.md',
24
+ '.codeyam/logs/',
25
+ '.codeyam/llm-calls/',
26
+ '.codeyam/captures/',
27
+ '.codeyam/results/',
28
+ '.codeyam/tmp/',
29
+ '.codeyam/rules/',
30
+ '.codeyam/bin/',
31
+ '.codeyam/docs/',
32
+ ];
33
+ /**
34
+ * Extract the ensureGitignoreEntry function for testing.
35
+ * Uses granular patterns instead of blanket .codeyam.
36
+ */
37
+ async function ensureGitignoreEntry(projectRoot) {
9
38
  const gitignorePath = path.join(projectRoot, '.gitignore');
10
39
  let gitignoreContent = '';
11
- // Read existing .gitignore if it exists
12
40
  try {
13
41
  gitignoreContent = await fs.readFile(gitignorePath, 'utf8');
14
42
  }
15
43
  catch (error) {
16
44
  // File doesn't exist, will create it
17
45
  }
18
- // Check if entry already exists
19
46
  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
47
+ // If there's already a blanket .codeyam ignore, replace it with granular patterns
48
+ const blanketIndex = lines.findIndex((line) => line.trim() === '.codeyam' || line.trim() === '/.codeyam');
49
+ if (blanketIndex !== -1) {
50
+ // Remove the blanket entry (and preceding comment if it's ours)
51
+ const removeStart = blanketIndex > 0 &&
52
+ lines[blanketIndex - 1].trim().startsWith('# CodeYam local files')
53
+ ? blanketIndex - 1
54
+ : blanketIndex;
55
+ lines.splice(removeStart, blanketIndex - removeStart + 1);
56
+ gitignoreContent = lines.join('\n');
57
+ }
58
+ // Check if granular patterns already exist
59
+ const hasGranularPatterns = CODEYAM_GITIGNORE_ENTRIES.some((entry) => lines.some((line) => line.trim() === entry));
60
+ if (!hasGranularPatterns) {
61
+ const block = '\n# CodeYam - local only (not shared)\n' +
62
+ CODEYAM_GITIGNORE_ENTRIES.join('\n') +
63
+ '\n';
23
64
  const newContent = gitignoreContent +
24
65
  (gitignoreContent && !gitignoreContent.endsWith('\n') ? '\n' : '') +
25
- '\n# CodeYam local files (contains secrets and local database)\n' +
26
- `.codeyam\n`;
66
+ block;
27
67
  await fs.writeFile(gitignorePath, newContent, 'utf8');
28
68
  }
69
+ else {
70
+ // Add any missing entries from the current list
71
+ const missingEntries = CODEYAM_GITIGNORE_ENTRIES.filter((entry) => !lines.some((line) => line.trim() === entry));
72
+ if (missingEntries.length > 0) {
73
+ const updatedContent = gitignoreContent +
74
+ (gitignoreContent && !gitignoreContent.endsWith('\n') ? '\n' : '') +
75
+ missingEntries.join('\n') +
76
+ '\n';
77
+ await fs.writeFile(gitignorePath, updatedContent, 'utf8');
78
+ }
79
+ }
29
80
  }
30
81
  describe('init command - gitignore management', () => {
31
82
  let testDir;
32
83
  beforeEach(async () => {
33
- // Create a unique temp directory for each test
34
84
  testDir = await fs.mkdtemp(path.join(os.tmpdir(), 'codeyam-test-'));
35
85
  });
36
86
  afterEach(async () => {
37
- // Clean up test directory
38
87
  try {
39
88
  await fs.rm(testDir, { recursive: true, force: true });
40
89
  }
@@ -43,62 +92,77 @@ describe('init command - gitignore management', () => {
43
92
  }
44
93
  });
45
94
  describe('ensureGitignoreEntry', () => {
46
- test('creates new .gitignore with .codeyam entry when file does not exist', async () => {
47
- await ensureGitignoreEntry(testDir, '.codeyam');
95
+ test('creates new .gitignore with granular .codeyam patterns when file does not exist', async () => {
96
+ await ensureGitignoreEntry(testDir);
48
97
  const gitignorePath = path.join(testDir, '.gitignore');
49
98
  const content = await fs.readFile(gitignorePath, 'utf8');
50
- expect(content).toContain('.codeyam');
51
- expect(content).toContain('# CodeYam local files (contains secrets and local database)');
99
+ expect(content).toContain('.codeyam/db.sqlite3');
100
+ expect(content).toContain('.codeyam/secrets.json');
101
+ expect(content).toContain('.codeyam/server.json');
102
+ expect(content).toContain('.codeyam/logs/');
103
+ expect(content).toContain('# CodeYam - local only (not shared)');
104
+ // Should NOT have blanket .codeyam
105
+ expect(content).not.toMatch(/^\.codeyam$/m);
52
106
  });
53
- test('adds .codeyam to existing .gitignore that does not have it', async () => {
107
+ test('adds granular patterns to existing .gitignore', async () => {
54
108
  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');
109
+ await fs.writeFile(gitignorePath, 'node_modules\n.env\n', 'utf8');
110
+ await ensureGitignoreEntry(testDir);
58
111
  const content = await fs.readFile(gitignorePath, 'utf8');
59
112
  expect(content).toContain('node_modules');
60
113
  expect(content).toContain('.env');
61
- expect(content).toContain('.codeyam');
62
- expect(content).toContain('# CodeYam local files (contains secrets and local database)');
114
+ expect(content).toContain('.codeyam/db.sqlite3');
115
+ expect(content).toContain('.codeyam/secrets.json');
63
116
  });
64
- test('does not duplicate .codeyam entry when it already exists', async () => {
117
+ test('does not duplicate when all granular patterns already exist', async () => {
65
118
  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');
119
+ await fs.writeFile(gitignorePath, 'node_modules\n\n# CodeYam - local only (not shared)\n' +
120
+ CODEYAM_GITIGNORE_ENTRIES.join('\n') +
121
+ '\n', 'utf8');
122
+ await ensureGitignoreEntry(testDir);
69
123
  const content = await fs.readFile(gitignorePath, 'utf8');
70
- const matches = content.match(/\.codeyam/g);
71
- // Should only appear once
124
+ // Exact match on the line — no duplicates
125
+ const matches = content.match(/^\.codeyam\/db\.sqlite3$/gm);
72
126
  expect(matches).toHaveLength(1);
73
127
  });
74
- test('handles .codeyam with leading slash in existing .gitignore', async () => {
128
+ test('replaces blanket .codeyam with granular patterns', async () => {
75
129
  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');
130
+ await fs.writeFile(gitignorePath, 'node_modules\n\n# CodeYam local files (contains secrets and local database)\n.codeyam\n', 'utf8');
131
+ await ensureGitignoreEntry(testDir);
79
132
  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);
133
+ // Blanket entry should be removed
134
+ expect(content).not.toMatch(/^\.codeyam$/m);
135
+ // Granular patterns should be added
136
+ expect(content).toContain('.codeyam/db.sqlite3');
137
+ expect(content).toContain('.codeyam/secrets.json');
138
+ // Existing content preserved
139
+ expect(content).toContain('node_modules');
140
+ });
141
+ test('replaces blanket /.codeyam with granular patterns', async () => {
142
+ const gitignorePath = path.join(testDir, '.gitignore');
143
+ await fs.writeFile(gitignorePath, 'node_modules\n/.codeyam\n.env\n', 'utf8');
144
+ await ensureGitignoreEntry(testDir);
145
+ const content = await fs.readFile(gitignorePath, 'utf8');
146
+ expect(content).not.toMatch(/^\/\.codeyam$/m);
147
+ expect(content).toContain('.codeyam/db.sqlite3');
148
+ expect(content).toContain('.env');
83
149
  });
84
150
  test('properly handles .gitignore without trailing newline', async () => {
85
151
  const gitignorePath = path.join(testDir, '.gitignore');
86
- const existingContent = 'node_modules';
87
- await fs.writeFile(gitignorePath, existingContent, 'utf8');
88
- await ensureGitignoreEntry(testDir, '.codeyam');
152
+ await fs.writeFile(gitignorePath, 'node_modules', 'utf8');
153
+ await ensureGitignoreEntry(testDir);
89
154
  const content = await fs.readFile(gitignorePath, 'utf8');
90
155
  expect(content).toContain('node_modules');
91
- expect(content).toContain('.codeyam');
92
- // Should have proper newlines
156
+ expect(content).toContain('.codeyam/db.sqlite3');
93
157
  expect(content).toMatch(/node_modules\n/);
94
158
  });
95
159
  test('handles empty .gitignore file', async () => {
96
160
  const gitignorePath = path.join(testDir, '.gitignore');
97
161
  await fs.writeFile(gitignorePath, '', 'utf8');
98
- await ensureGitignoreEntry(testDir, '.codeyam');
162
+ await ensureGitignoreEntry(testDir);
99
163
  const content = await fs.readFile(gitignorePath, 'utf8');
100
- expect(content).toContain('.codeyam');
101
- expect(content).toContain('# CodeYam local files (contains secrets and local database)');
164
+ expect(content).toContain('.codeyam/db.sqlite3');
165
+ expect(content).toContain('# CodeYam - local only (not shared)');
102
166
  });
103
167
  test('preserves existing content formatting', async () => {
104
168
  const gitignorePath = path.join(testDir, '.gitignore');
@@ -115,17 +179,43 @@ dist
115
179
  build
116
180
  `;
117
181
  await fs.writeFile(gitignorePath, existingContent, 'utf8');
118
- await ensureGitignoreEntry(testDir, '.codeyam');
182
+ await ensureGitignoreEntry(testDir);
119
183
  const content = await fs.readFile(gitignorePath, 'utf8');
120
- // Check that existing content is preserved
121
184
  expect(content).toContain('# Dependencies');
122
185
  expect(content).toContain('node_modules');
123
186
  expect(content).toContain('# Environment');
124
187
  expect(content).toContain('.env');
125
188
  expect(content).toContain('# Build');
126
189
  expect(content).toContain('dist');
127
- // And our new entry is added
128
- expect(content).toContain('.codeyam');
190
+ expect(content).toContain('.codeyam/db.sqlite3');
191
+ });
192
+ test('adds missing entries to existing granular block', async () => {
193
+ const gitignorePath = path.join(testDir, '.gitignore');
194
+ // Simulate an older gitignore that has most entries but is missing claude-session-id.txt and docs/
195
+ const oldEntries = CODEYAM_GITIGNORE_ENTRIES.filter((e) => e !== '.codeyam/claude-session-id.txt' && e !== '.codeyam/docs/');
196
+ await fs.writeFile(gitignorePath, 'node_modules\n\n# CodeYam - local only (not shared)\n' +
197
+ oldEntries.join('\n') +
198
+ '\n', 'utf8');
199
+ await ensureGitignoreEntry(testDir);
200
+ const content = await fs.readFile(gitignorePath, 'utf8');
201
+ // New entries should be added
202
+ expect(content).toContain('.codeyam/claude-session-id.txt');
203
+ expect(content).toContain('.codeyam/docs/');
204
+ // Existing entries should still be there
205
+ expect(content).toContain('.codeyam/db.sqlite3');
206
+ expect(content).toContain('.codeyam/secrets.json');
207
+ // No duplicates
208
+ const dbMatches = content.match(/\.codeyam\/db\.sqlite3$/gm);
209
+ expect(dbMatches).toHaveLength(1);
210
+ });
211
+ test('config.json is NOT ignored (allows sharing via git)', async () => {
212
+ await ensureGitignoreEntry(testDir);
213
+ const gitignorePath = path.join(testDir, '.gitignore');
214
+ const content = await fs.readFile(gitignorePath, 'utf8');
215
+ // config.json should not appear in gitignore
216
+ expect(content).not.toContain('config.json');
217
+ // editor-scenarios/ should not appear in gitignore
218
+ expect(content).not.toContain('editor-scenarios/');
129
219
  });
130
220
  });
131
221
  });
@@ -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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"}