@codeyam/codeyam-cli 0.1.0-staging.415103 → 0.1.0-staging.435c1ad

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 (623) 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 +11 -11
  4. package/analyzer-template/packages/ai/package.json +2 -2
  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 +2 -2
  28. package/analyzer-template/packages/database/package.json +4 -4
  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/github/package.json +1 -1
  56. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  57. package/analyzer-template/packages/ui-components/package.json +1 -1
  58. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  59. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  60. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  61. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  62. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  63. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  64. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  65. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  66. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  67. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  68. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  69. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  70. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  71. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  72. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  73. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  74. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  75. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  76. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  77. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  78. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  79. package/codeyam-cli/src/cli.js +24 -0
  80. package/codeyam-cli/src/cli.js.map +1 -1
  81. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  82. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  83. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  84. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  85. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  86. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  87. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  88. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  89. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  90. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  91. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  92. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  93. package/codeyam-cli/src/commands/default.js +3 -46
  94. package/codeyam-cli/src/commands/default.js.map +1 -1
  95. package/codeyam-cli/src/commands/editor.js +5366 -356
  96. package/codeyam-cli/src/commands/editor.js.map +1 -1
  97. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  98. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  99. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  100. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  101. package/codeyam-cli/src/commands/init.js +75 -35
  102. package/codeyam-cli/src/commands/init.js.map +1 -1
  103. package/codeyam-cli/src/commands/telemetry.js +37 -0
  104. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  105. package/codeyam-cli/src/data/designSystems.js +27 -0
  106. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  107. package/codeyam-cli/src/data/techStacks.js +77 -0
  108. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  109. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  110. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  111. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  112. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  113. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  114. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  115. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  116. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  117. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +4014 -0
  118. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  119. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  120. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  121. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  122. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  123. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  124. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  125. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  126. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  127. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  128. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  129. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  130. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  131. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  132. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  133. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  134. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  135. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  136. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  137. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  138. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  139. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  140. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  141. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  142. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  143. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  144. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  145. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  146. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  147. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +361 -0
  148. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  149. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  150. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  151. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  152. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  153. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +291 -0
  154. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  155. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1768 -0
  156. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  157. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +329 -0
  158. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  159. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  160. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  161. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  162. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  163. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  164. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  165. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2121 -0
  166. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  167. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  168. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  169. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  170. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  171. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  172. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  173. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  174. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  175. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  176. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  177. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  178. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  179. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  180. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  181. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  182. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  183. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  184. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  185. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  186. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  187. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  188. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  189. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  190. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  191. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +26 -5
  192. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  193. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  194. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  195. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  196. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  197. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +217 -0
  198. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  199. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  200. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  201. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  202. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  203. package/codeyam-cli/src/utils/analyzer.js +19 -0
  204. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  205. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  206. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  207. package/codeyam-cli/src/utils/backgroundServer.js +95 -19
  208. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  209. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  210. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  211. package/codeyam-cli/src/utils/database.js +37 -2
  212. package/codeyam-cli/src/utils/database.js.map +1 -1
  213. package/codeyam-cli/src/utils/devServerState.js +71 -0
  214. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  215. package/codeyam-cli/src/utils/editorApi.js +95 -0
  216. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  217. package/codeyam-cli/src/utils/editorAudit.js +827 -0
  218. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  219. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  220. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  221. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  222. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  223. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  224. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  225. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  226. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  227. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  228. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  229. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  230. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  231. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  232. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  233. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  234. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  235. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  236. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  237. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  238. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  239. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  240. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  241. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  242. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  243. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  244. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  245. package/codeyam-cli/src/utils/editorPreview.js +139 -0
  246. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  247. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  248. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  249. package/codeyam-cli/src/utils/editorScenarioSwitch.js +134 -0
  250. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  251. package/codeyam-cli/src/utils/editorScenarios.js +676 -0
  252. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  253. package/codeyam-cli/src/utils/editorSeedAdapter.js +462 -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 +212 -0
  260. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  261. package/codeyam-cli/src/utils/fileWatcher.js +38 -0
  262. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  263. package/codeyam-cli/src/utils/git.js +51 -0
  264. package/codeyam-cli/src/utils/git.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/install-skills.js +42 -17
  268. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  269. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  270. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  271. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  272. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  273. package/codeyam-cli/src/utils/progress.js +2 -2
  274. package/codeyam-cli/src/utils/progress.js.map +1 -1
  275. package/codeyam-cli/src/utils/project.js +15 -5
  276. package/codeyam-cli/src/utils/project.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/scenarioMarkers.js +134 -0
  288. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  289. package/codeyam-cli/src/utils/scenariosManifest.js +307 -0
  290. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  291. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  292. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  293. package/codeyam-cli/src/utils/serverState.js +30 -0
  294. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  295. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +47 -16
  296. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  297. package/codeyam-cli/src/utils/simulationGateMiddleware.js +17 -1
  298. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  299. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  300. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  301. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  302. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  303. package/codeyam-cli/src/utils/telemetry.js +106 -0
  304. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  305. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  306. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  307. package/codeyam-cli/src/utils/testRunner.js +200 -2
  308. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  309. package/codeyam-cli/src/utils/webappDetection.js +21 -0
  310. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  311. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +98 -0
  312. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  313. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  314. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  315. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  316. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  317. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +647 -0
  318. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  319. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +283 -0
  320. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  321. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  322. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  323. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  324. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  325. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  326. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  327. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  328. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  329. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  330. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  331. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  332. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  333. package/codeyam-cli/src/webserver/backgroundServer.js +60 -61
  334. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  335. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CLe80MMu.js +1 -0
  336. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-C76mRRiF.js → EntityItem-Crt_KN_U.js} +5 -5
  337. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  338. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CobE682z.js → EntityTypeIcon-CD7lGABo.js} +9 -9
  339. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CgTNOhnu.js +1 -0
  340. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DtYTSPL2.js +25 -0
  341. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-D3s1MFkb.js +3 -0
  342. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BU_OAEMP.js → LoadingDots-By5zI316.js} +1 -1
  343. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-ceAyBX-H.js → LogViewer-CM5zg40N.js} +3 -3
  344. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  345. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-djPLI-WV.js → ReportIssueModal-C2PLkej3.js} +4 -4
  346. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DanvyBPb.js +1 -0
  347. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-B76aig_2.js → ScenarioViewer-CefgqbCr.js} +3 -3
  348. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bc8BG-Lw.js +34 -0
  349. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  350. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BA_Ry-rs.js +1 -0
  351. package/codeyam-cli/src/webserver/build/client/assets/{_index-C96V0n15.js → _index-C1YkzTAV.js} +4 -4
  352. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BpKzcsJz.js → activity.(_tab)-yH46LLUz.js} +8 -8
  353. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  354. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-Duc5hnl7.js → addon-web-links-CHx25PAe.js} +1 -1
  356. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  357. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-D9hemwl6.js → agent-transcripts-Bg3e7q4S.js} +7 -7
  358. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  359. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  360. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  361. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  362. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  365. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  366. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  367. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  371. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  372. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  373. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  374. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D_nMCFmP.js → book-open-CL-lMgHh.js} +2 -2
  375. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BH2h1Ea2.js → chevron-down-GmAjGS9-.js} +2 -2
  376. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +43 -0
  377. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DyIKORY6.js → circle-check-DFcQkN5j.js} +2 -2
  378. package/codeyam-cli/src/webserver/build/client/assets/{copy-NDbZjXao.js → copy-C6iF61Xs.js} +3 -3
  379. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-4ImjHTVC.js +41 -0
  380. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  382. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CRepiabR.js +1 -0
  383. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
  384. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-oBrbke_R.js +96 -0
  385. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
  386. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CrjR3zZW.js → entity._sha._-DYJRGiDI.js} +14 -13
  387. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js +6 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js +6 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DxfhekTZ.js +6 -0
  390. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMvVHNXU.js → entity._sha_.edit._scenarioId-CRXJWmpB.js} +2 -2
  391. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DTvKq3TY.js → entry.client-SuW9syRS.js} +6 -6
  392. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  393. package/codeyam-cli/src/webserver/build/client/assets/files-D-xGrg29.js +1 -0
  394. package/codeyam-cli/src/webserver/build/client/assets/git-Bq_fbXP5.js +1 -0
  395. package/codeyam-cli/src/webserver/build/client/assets/globals-oyPmV37k.css +1 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/{index-BcvgDzbZ.js → index-Bp1l4hSv.js} +1 -1
  397. package/codeyam-cli/src/webserver/build/client/assets/{index-10oVnAAH.js → index-CWV9XZiG.js} +1 -1
  398. package/codeyam-cli/src/webserver/build/client/assets/index-DE3jI_dv.js +15 -0
  399. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/labs-B_IX45ih.js +1 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BAXYRVEO.js → loader-circle-De-7qQ2u.js} +2 -2
  402. package/codeyam-cli/src/webserver/build/client/assets/manifest-694b698a.js +1 -0
  403. package/codeyam-cli/src/webserver/build/client/assets/memory-Cx2xEx7s.js +101 -0
  404. package/codeyam-cli/src/webserver/build/client/assets/{pause-DTAcYxBt.js → pause-CFxEKL1u.js} +3 -3
  405. package/codeyam-cli/src/webserver/build/client/assets/root-DXjFYOxD.js +80 -0
  406. package/codeyam-cli/src/webserver/build/client/assets/{search-fKo7v0Zo.js → search-BdBb5aqc.js} +2 -2
  407. package/codeyam-cli/src/webserver/build/client/assets/settings-DdE-Untf.js +1 -0
  408. package/codeyam-cli/src/webserver/build/client/assets/simulations-DSCdE99u.js +1 -0
  409. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BG4heKCG.js → terminal-CrplD4b1.js} +3 -3
  410. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DtSmdtM4.js → triangle-alert-DqJ0j69l.js} +2 -2
  411. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DhXHbEjP.js +1 -0
  412. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-D9QZKaLJ.js +2 -0
  413. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-Cy5Qg_UR.js +1 -0
  414. package/codeyam-cli/src/webserver/build/client/assets/useToast-5HR2j9ZE.js +1 -0
  415. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  416. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  417. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-zEYtiv0T.js +16 -0
  418. package/codeyam-cli/src/webserver/build/server/assets/index-CcHPEbhi.js +1 -0
  419. package/codeyam-cli/src/webserver/build/server/assets/init-D68IyWbU.js +10 -0
  420. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  421. package/codeyam-cli/src/webserver/build/server/assets/server-build-Cxzo0Zp2.js +688 -0
  422. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  423. package/codeyam-cli/src/webserver/build-info.json +5 -5
  424. package/codeyam-cli/src/webserver/editorProxy.js +807 -51
  425. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  426. package/codeyam-cli/src/webserver/idleDetector.js +121 -0
  427. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  428. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  429. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  430. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  431. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  432. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +170 -8
  433. package/codeyam-cli/src/webserver/server.js +214 -12
  434. package/codeyam-cli/src/webserver/server.js.map +1 -1
  435. package/codeyam-cli/src/webserver/terminalServer.js +367 -23
  436. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  437. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  438. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  439. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  440. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  441. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  442. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  443. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  444. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  445. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  446. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  447. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  448. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  449. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  450. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  451. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  452. package/codeyam-cli/templates/codeyam-editor-claude.md +86 -5
  453. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  454. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  455. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  456. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  457. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  458. package/codeyam-cli/templates/editor-step-hook.py +262 -37
  459. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  460. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  461. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  462. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  463. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  464. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  465. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  466. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  467. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  468. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  469. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  470. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  471. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  472. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  473. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  474. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  475. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  476. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  477. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  478. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  479. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  480. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  481. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +9 -4
  482. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  483. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  484. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +6 -2
  485. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +4 -1
  486. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  487. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  488. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  489. package/codeyam-cli/templates/{nextjs-prisma-sqlite/PRISMA_SETUP.md → nextjs-prisma-supabase/SUPABASE_SETUP.md} +37 -17
  490. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  491. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  492. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  493. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  494. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  495. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  496. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  497. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  498. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  499. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  500. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  501. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  502. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  503. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  504. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  505. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  506. package/codeyam-cli/templates/seed-adapters/supabase.ts +291 -0
  507. package/codeyam-cli/templates/{codeyam-dev-mode.md → skills/codeyam-dev-mode/SKILL.md} +3 -3
  508. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +229 -0
  509. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  510. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  511. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  512. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  513. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  514. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  515. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  516. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  517. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  518. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  519. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  520. package/package.json +16 -10
  521. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  522. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  523. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  524. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  525. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  526. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  527. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  528. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  529. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  530. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  531. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  532. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  533. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  534. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  535. package/packages/analyze/index.js +1 -1
  536. package/packages/analyze/index.js.map +1 -1
  537. package/packages/analyze/src/lib/ProjectAnalyzer.js +10 -4
  538. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  539. package/packages/analyze/src/lib/asts/index.js +4 -2
  540. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  541. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  542. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  543. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  544. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  545. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  546. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  547. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  548. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  549. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  550. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  551. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  552. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  553. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  554. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  555. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  556. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  557. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  558. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  559. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
  560. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  561. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  562. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  563. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
  564. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  565. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +104 -0
  566. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  567. package/packages/database/src/lib/loadAnalysis.js +7 -1
  568. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  569. package/packages/database/src/lib/loadEntities.js +0 -6
  570. package/packages/database/src/lib/loadEntities.js.map +1 -1
  571. package/packages/database/src/lib/loadEntity.js +5 -5
  572. package/packages/database/src/lib/loadEntity.js.map +1 -1
  573. package/packages/database/src/lib/updateCommitMetadata.js +0 -25
  574. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  575. package/packages/types/src/enums/ProjectFramework.js +2 -0
  576. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  577. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  578. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  579. package/scripts/npm-post-install.cjs +34 -0
  580. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +0 -1
  581. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-g3saevPb.js +0 -1
  582. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +0 -1
  583. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +0 -25
  584. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +0 -3
  585. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +0 -1
  586. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +0 -34
  587. package/codeyam-cli/src/webserver/build/client/assets/Terminal-BaIiqg_w.js +0 -41
  588. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C8OKAR5x.js +0 -1
  589. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +0 -1
  590. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-C4pqxYJB.js +0 -51
  591. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CMT1jU2q.js +0 -21
  592. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  593. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +0 -1
  594. package/codeyam-cli/src/webserver/build/client/assets/editor-BaC8lHDG.js +0 -7
  595. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DloHYjtt.js +0 -6
  596. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +0 -6
  597. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +0 -6
  598. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +0 -1
  599. package/codeyam-cli/src/webserver/build/client/assets/files-DO4CZ16O.js +0 -1
  600. package/codeyam-cli/src/webserver/build/client/assets/git-CFCTYk9I.js +0 -15
  601. package/codeyam-cli/src/webserver/build/client/assets/globals-BH6uYxPM.css +0 -1
  602. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +0 -1
  603. package/codeyam-cli/src/webserver/build/client/assets/manifest-fb3128c3.js +0 -1
  604. package/codeyam-cli/src/webserver/build/client/assets/memory-FweZHj5U.js +0 -93
  605. package/codeyam-cli/src/webserver/build/client/assets/root-Dzn8nIkU.js +0 -67
  606. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +0 -1
  607. package/codeyam-cli/src/webserver/build/client/assets/simulations-B3aOzpCZ.js +0 -1
  608. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-ByhSyh0W.js +0 -1
  609. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +0 -2
  610. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +0 -1
  611. package/codeyam-cli/src/webserver/build/client/assets/useToast-9FIWuYfK.js +0 -1
  612. package/codeyam-cli/src/webserver/build/client/assets/xterm-DMSzMhqy.js +0 -9
  613. package/codeyam-cli/src/webserver/build/server/assets/index-DeSuKbSF.js +0 -1
  614. package/codeyam-cli/src/webserver/build/server/assets/server-build-BbQ8YBP-.js +0 -362
  615. package/codeyam-cli/templates/codeyam-editor.md +0 -67
  616. package/scripts/finalize-analyzer.cjs +0 -13
  617. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  618. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  619. /package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -0
  620. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  621. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  622. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  623. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -0,0 +1,118 @@
1
+ import { execFileSync } from 'child_process';
2
+ import fs from 'fs';
3
+ import os from 'os';
4
+ import path from 'path';
5
+
6
+ /**
7
+ * Tests for the prompt capture logic in editor-step-hook.py.
8
+ *
9
+ * The hook captures the user's feature request text on UserPromptSubmit events
10
+ * and writes it to `.codeyam/editor-user-prompt.txt`. This prompt is later
11
+ * recorded in the journal entry.
12
+ *
13
+ * The critical invariant: when a new feature starts (previous feature at step 18
14
+ * or no state file), the hook must overwrite the stale prompt from the previous
15
+ * feature — not skip writing because the file already exists.
16
+ */
17
+ describe('editor-step-hook prompt capture', () => {
18
+ const hookPath = path.join(__dirname, '..', 'editor-step-hook.py');
19
+ let tmpDir: string;
20
+ let codeyamDir: string;
21
+ let promptPath: string;
22
+ let statePath: string;
23
+
24
+ beforeEach(() => {
25
+ tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'hook-prompt-test-'));
26
+ codeyamDir = path.join(tmpDir, '.codeyam');
27
+ fs.mkdirSync(codeyamDir, { recursive: true });
28
+ promptPath = path.join(codeyamDir, 'editor-user-prompt.txt');
29
+ statePath = path.join(codeyamDir, 'editor-step.json');
30
+ });
31
+
32
+ afterEach(() => {
33
+ fs.rmSync(tmpDir, { recursive: true, force: true });
34
+ });
35
+
36
+ function runHook(input: object): string {
37
+ try {
38
+ return execFileSync('python3', [hookPath], {
39
+ input: JSON.stringify(input),
40
+ env: {
41
+ ...process.env,
42
+ CODEYAM_EDITOR_ACTIVE: '1',
43
+ CLAUDE_PROJECT_DIR: tmpDir,
44
+ },
45
+ encoding: 'utf8',
46
+ timeout: 5000,
47
+ });
48
+ } catch (e: unknown) {
49
+ // Hook may exit with non-zero or produce stderr; capture stdout
50
+ return (e as { stdout?: string }).stdout || '';
51
+ }
52
+ }
53
+
54
+ function writeState(step: number, label: string): void {
55
+ fs.writeFileSync(
56
+ statePath,
57
+ JSON.stringify({ step, label, feature: 'Test Feature' }),
58
+ );
59
+ }
60
+
61
+ it('should capture the first user prompt when no prompt file exists', () => {
62
+ // No state file, no prompt file — brand new session
63
+ runHook({ prompt: 'CUJ 28 — Add author column to library table' });
64
+
65
+ expect(fs.existsSync(promptPath)).toBe(true);
66
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
67
+ 'CUJ 28 — Add author column to library table',
68
+ );
69
+ });
70
+
71
+ it('should NOT overwrite prompt during an active feature (step < 18)', () => {
72
+ // Feature in progress at step 5
73
+ writeState(5, 'Confirm');
74
+ fs.writeFileSync(promptPath, 'Original feature request');
75
+
76
+ runHook({ prompt: 'ok sounds good' });
77
+
78
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
79
+ 'Original feature request',
80
+ );
81
+ });
82
+
83
+ it('should overwrite stale prompt when previous feature is done (step >= 18)', () => {
84
+ // Previous feature completed (step 18), prompt file has stale content
85
+ writeState(18, 'Push');
86
+ fs.writeFileSync(promptPath, 'Previous feature request — STALE');
87
+
88
+ runHook({ prompt: 'CUJ 29 — User can write notes about articles' });
89
+
90
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
91
+ 'CUJ 29 — User can write notes about articles',
92
+ );
93
+ });
94
+
95
+ it('should overwrite stale prompt when no state file exists (between features)', () => {
96
+ // State file was cleared (between features), but prompt file persists
97
+ fs.writeFileSync(promptPath, 'Previous feature request — STALE');
98
+ // No state file — it was deleted
99
+
100
+ runHook({ prompt: 'CUJ 30 — New article highlights in collections' });
101
+
102
+ expect(fs.readFileSync(promptPath, 'utf8')).toBe(
103
+ 'CUJ 30 — New article highlights in collections',
104
+ );
105
+ });
106
+
107
+ it('should NOT capture slash commands as user prompts', () => {
108
+ runHook({ prompt: '/codeyam-dev-mode' });
109
+
110
+ expect(fs.existsSync(promptPath)).toBe(false);
111
+ });
112
+
113
+ it('should NOT capture empty prompts', () => {
114
+ runHook({ prompt: ' ' });
115
+
116
+ expect(fs.existsSync(promptPath)).toBe(false);
117
+ });
118
+ });
@@ -0,0 +1,75 @@
1
+ # Chrome Extension Setup
2
+
3
+ This project is a Chrome Extension built with React 19, TypeScript, Vite, and Tailwind CSS 4.
4
+
5
+ ## Development
6
+
7
+ During development, the popup runs as a regular web page in the browser:
8
+
9
+ ```bash
10
+ npm run dev
11
+ ```
12
+
13
+ This starts a Vite dev server with hot reload. You can develop and test the popup
14
+ UI in a normal browser tab — no need to load it as an extension during development.
15
+
16
+ Data persistence uses `localStorage` in dev mode and `chrome.storage.local` when
17
+ running as an actual extension (see `src/lib/storage.ts`).
18
+
19
+ ## Building the extension
20
+
21
+ ```bash
22
+ npm run build:extension
23
+ ```
24
+
25
+ This creates a `dist/` folder with the built extension. To load it in Chrome:
26
+
27
+ 1. Open `chrome://extensions/`
28
+ 2. Enable "Developer mode" (top right)
29
+ 3. Click "Load unpacked"
30
+ 4. Select the `dist/` folder
31
+
32
+ ## Project structure
33
+
34
+ ```
35
+ src/
36
+ popup/ # Popup UI (React app shown when clicking the extension icon)
37
+ main.tsx # Entry point
38
+ App.tsx # Root component
39
+ background/ # Background service worker
40
+ service-worker.ts
41
+ lib/ # Shared utilities
42
+ storage.ts # Type-safe chrome.storage wrapper with localStorage fallback
43
+ globals.css # Global styles (Tailwind)
44
+ public/
45
+ manifest.json # Chrome extension manifest (Manifest V3)
46
+ popup.html # Popup HTML entry point (used by extension build)
47
+ index.html # Dev server entry point (same app, served as regular page)
48
+ ```
49
+
50
+ ## Key patterns
51
+
52
+ - **Storage**: Import `storage` from `@/lib/storage` for data persistence.
53
+ It automatically uses `chrome.storage.local` in the extension and `localStorage`
54
+ during development.
55
+ - **Popup size**: Set width/height on the root element in your popup component.
56
+ Chrome extension popups don't have a default size.
57
+ - **Permissions**: Add any needed permissions to `public/manifest.json`.
58
+ Common ones: `storage`, `tabs`, `activeTab`, `alarms`.
59
+
60
+ ## Adding content scripts
61
+
62
+ To inject scripts into web pages, add a `content_scripts` entry to `manifest.json`:
63
+
64
+ ```json
65
+ {
66
+ "content_scripts": [
67
+ {
68
+ "matches": ["<all_urls>"],
69
+ "js": ["content.js"]
70
+ }
71
+ ]
72
+ }
73
+ ```
74
+
75
+ Then create `src/content/content.ts` and add it as a Vite entry point.
@@ -0,0 +1,46 @@
1
+ # Project Name
2
+
3
+ Brief description of what this Chrome extension does.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ npm run setup
9
+ ```
10
+
11
+ ## Development
12
+
13
+ Start the dev server for local development:
14
+
15
+ ```bash
16
+ npm run dev
17
+ ```
18
+
19
+ Open [http://localhost:5173](http://localhost:5173) in your browser to preview the popup.
20
+
21
+ ## Build Extension
22
+
23
+ Build the extension for Chrome:
24
+
25
+ ```bash
26
+ npm run build:extension
27
+ ```
28
+
29
+ Then load the `dist/` folder as an unpacked extension in `chrome://extensions`.
30
+
31
+ ## Using CodeYam Editor
32
+
33
+ This project was built with [CodeYam](https://codeyam.com). To launch the editor:
34
+
35
+ ```bash
36
+ codeyam editor
37
+ ```
38
+
39
+ ## Scripts
40
+
41
+ | Script | Description |
42
+ | ------------------------- | ------------------------- |
43
+ | `npm run setup` | Install dependencies |
44
+ | `npm run dev` | Start Vite dev server |
45
+ | `npm run build` | Build for production |
46
+ | `npm run build:extension` | Build as Chrome extension |
@@ -0,0 +1,15 @@
1
+ # dependencies
2
+ /node_modules
3
+
4
+ # build output
5
+ /dist
6
+
7
+ # misc
8
+ .DS_Store
9
+
10
+ # debug
11
+ npm-debug.log*
12
+
13
+ # env files
14
+ .env
15
+ .env*.local
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>CodeYam App</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/popup/main.tsx"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,27 @@
1
+ {
2
+ "name": "codeyam-chrome-extension",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "type": "module",
6
+ "scripts": {
7
+ "setup": "npm install",
8
+ "dev": "vite",
9
+ "build": "tsc -b && vite build",
10
+ "preview": "vite preview",
11
+ "build:extension": "tsc -b && vite build --mode extension"
12
+ },
13
+ "dependencies": {
14
+ "react": "^19.1.0",
15
+ "react-dom": "^19.1.0"
16
+ },
17
+ "devDependencies": {
18
+ "@tailwindcss/vite": "^4",
19
+ "@types/chrome": "^0.0.300",
20
+ "@types/react": "^19",
21
+ "@types/react-dom": "^19",
22
+ "@vitejs/plugin-react": "^4.4.1",
23
+ "tailwindcss": "^4",
24
+ "typescript": "^5",
25
+ "vite": "^6.3.5"
26
+ }
27
+ }
@@ -0,0 +1,12 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>CodeYam App</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/popup/main.tsx"></script>
11
+ </body>
12
+ </html>
@@ -0,0 +1,15 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "CodeYam App",
4
+ "version": "0.1.0",
5
+ "description": "Built with CodeYam Editor",
6
+ "action": {
7
+ "default_popup": "popup.html",
8
+ "default_title": "CodeYam App"
9
+ },
10
+ "permissions": ["storage"],
11
+ "background": {
12
+ "service_worker": "background.js",
13
+ "type": "module"
14
+ }
15
+ }
@@ -0,0 +1,7 @@
1
+ // Background service worker for the Chrome extension.
2
+ // This runs in the background and can handle events like
3
+ // extension install, alarms, messages from popup/content scripts, etc.
4
+
5
+ chrome.runtime.onInstalled.addListener(() => {
6
+ console.log('Extension installed');
7
+ });
@@ -0,0 +1,6 @@
1
+ @import "tailwindcss";
2
+
3
+ body {
4
+ margin: 0;
5
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
6
+ }
@@ -0,0 +1,37 @@
1
+ // Wrapper around chrome.storage.local for type-safe data persistence.
2
+ // Falls back to localStorage when running in a regular browser (during development).
3
+ //
4
+ // Usage:
5
+ // import { storage } from "@/lib/storage";
6
+ // await storage.get<Todo[]>("todos", []);
7
+ // await storage.set("todos", updatedTodos);
8
+
9
+ const isChromeExtension =
10
+ typeof chrome !== 'undefined' && chrome.storage?.local;
11
+
12
+ export const storage = {
13
+ async get<T>(key: string, defaultValue: T): Promise<T> {
14
+ if (isChromeExtension) {
15
+ const result = await chrome.storage.local.get(key);
16
+ return (result[key] as T) ?? defaultValue;
17
+ }
18
+ const item = localStorage.getItem(key);
19
+ return item ? (JSON.parse(item) as T) : defaultValue;
20
+ },
21
+
22
+ async set<T>(key: string, value: T): Promise<void> {
23
+ if (isChromeExtension) {
24
+ await chrome.storage.local.set({ [key]: value });
25
+ return;
26
+ }
27
+ localStorage.setItem(key, JSON.stringify(value));
28
+ },
29
+
30
+ async remove(key: string): Promise<void> {
31
+ if (isChromeExtension) {
32
+ await chrome.storage.local.remove(key);
33
+ return;
34
+ }
35
+ localStorage.removeItem(key);
36
+ },
37
+ };
@@ -0,0 +1,12 @@
1
+ export default function App() {
2
+ return (
3
+ <main className="w-80 min-h-48 p-4 flex items-center justify-center">
4
+ <div className="text-center">
5
+ <h1 className="text-xl font-bold mb-2">Welcome</h1>
6
+ <p className="text-gray-600 text-sm">
7
+ Your extension is ready. Start building!
8
+ </p>
9
+ </div>
10
+ </main>
11
+ );
12
+ }
@@ -0,0 +1,10 @@
1
+ import { StrictMode } from 'react';
2
+ import { createRoot } from 'react-dom/client';
3
+ import '../globals.css';
4
+ import App from './App';
5
+
6
+ createRoot(document.getElementById('root')!).render(
7
+ <StrictMode>
8
+ <App />
9
+ </StrictMode>,
10
+ );
@@ -0,0 +1,24 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "ES2020",
4
+ "useDefineForClassFields": true,
5
+ "lib": ["ES2020", "DOM", "DOM.Iterable"],
6
+ "module": "ESNext",
7
+ "skipLibCheck": true,
8
+ "moduleResolution": "bundler",
9
+ "allowImportingTsExtensions": true,
10
+ "isolatedModules": true,
11
+ "moduleDetection": "force",
12
+ "noEmit": true,
13
+ "jsx": "react-jsx",
14
+ "strict": true,
15
+ "noUnusedLocals": true,
16
+ "noUnusedParameters": true,
17
+ "noFallthroughCasesInSwitch": true,
18
+ "noUncheckedSideEffectImports": true,
19
+ "paths": {
20
+ "@/*": ["./src/*"]
21
+ }
22
+ },
23
+ "include": ["src"]
24
+ }
@@ -0,0 +1,41 @@
1
+ import { defineConfig } from 'vite';
2
+ import react from '@vitejs/plugin-react';
3
+ import tailwindcss from '@tailwindcss/vite';
4
+ import { resolve } from 'path';
5
+
6
+ // In "extension" mode, build produces a Chrome extension in dist/.
7
+ // In default mode, `vite dev` serves the popup as a regular web page
8
+ // so you can develop and test it in a normal browser tab.
9
+
10
+ export default defineConfig(({ mode }) => ({
11
+ plugins: [react(), tailwindcss()],
12
+ server: {
13
+ // Bind to the port provided by CodeYam editor (via PORT env var) or default 5173.
14
+ // Use 0.0.0.0 so the dev server is reachable on both IPv4 and IPv6 loopback.
15
+ port: process.env.PORT ? parseInt(process.env.PORT, 10) : 5173,
16
+ host: '0.0.0.0',
17
+ },
18
+ resolve: {
19
+ alias: {
20
+ '@': resolve(__dirname, 'src'),
21
+ },
22
+ },
23
+ build:
24
+ mode === 'extension'
25
+ ? {
26
+ rollupOptions: {
27
+ input: {
28
+ popup: resolve(__dirname, 'popup.html'),
29
+ },
30
+ output: {
31
+ entryFileNames: '[name].js',
32
+ chunkFileNames: '[name].js',
33
+ assetFileNames: '[name].[ext]',
34
+ },
35
+ },
36
+ outDir: 'dist',
37
+ emptyOutDir: true,
38
+ copyPublicDir: true,
39
+ }
40
+ : undefined,
41
+ }));
@@ -26,14 +26,22 @@ A **scenario** is a named set of data that drives how the app renders. Scenarios
26
26
  - **App-level scenarios**: Full application state — what the database contains, what API responses return. Example: "Empty Dashboard", "Dashboard with 50 Tasks", "Dashboard with Overdue Tasks"
27
27
  - **Component-level scenarios**: Props for a single component in isolation. Example: "TaskCard - Default", "TaskCard - Overdue", "TaskCard - Completed"
28
28
 
29
- **Always register scenarios with CodeYam** after creating them:
29
+ **Name scenarios by data state** ("Rich Data", "Empty", "Mobile"), not by feature. When adding a feature, enhance an existing scenario's data — rename it if the scope has grown.
30
+
31
+ **Only create scenarios for states the current code can render.** If you seed 10 articles but the app doesn't have an article list component yet, the screenshot will show an empty page — that's a broken scenario. After registering, always view the captured screenshot to verify the data is actually visible.
32
+
33
+ **Always register scenarios with CodeYam** using the CLI:
30
34
 
31
35
  ```bash
32
- curl -s -X POST http://localhost:${CODEYAM_PORT:-3111}/api/editor-register-scenario \
33
- -H 'Content-Type: application/json' \
34
- -d '{"name": "...", "componentName": "...", "zoomLevel": "component", "mockData": {...}}'
36
+ # Small inline JSON:
37
+ codeyam editor register '{"name":"TaskCard - Default","componentName":"TaskCard","url":"/isolated-components/TaskCard?s=Default","dimensions":["<name from screenSizes>"]}'
38
+
39
+ # Large JSON — use the Write tool to write to .codeyam/tmp/scenario.json, then:
40
+ codeyam editor register @.codeyam/tmp/scenario.json
35
41
  ```
36
42
 
43
+ **To list existing scenarios:** `codeyam editor scenarios`
44
+
37
45
  ### Database First
38
46
 
39
47
  Use a real database (SQLite + Prisma recommended) from the start. This lets scenarios represent different database states rather than just static prop variations:
@@ -54,7 +62,11 @@ Build components so they work at both zoom levels. A `TaskCard` should render co
54
62
  ## Workflow
55
63
 
56
64
  1. Build a component
57
- 2. Create 2-3 scenarios for it (happy path, empty state, edge case)
65
+ 2. Create scenarios with rich, realistic data that thoroughly exercises the component:
66
+ - Happy path with diverse, realistic content (not just "Test Item 1", "Test Item 2")
67
+ - Empty state (no data, first-time user)
68
+ - Rich data (many items, all optional fields populated, varied lengths and categories)
69
+ - Edge cases if they surface naturally from diverse data
58
70
  3. Register the scenarios with CodeYam
59
71
  4. Preview each scenario to verify the component handles all states
60
72
  5. Repeat for the next component, building up scenario coverage
@@ -66,3 +78,72 @@ Build components so they work at both zoom levels. A `TaskCard` should render co
66
78
  - Components accept props that can be provided by scenarios
67
79
  - Database seed scripts go in `prisma/seeds/` (one per scenario when using DB-level scenarios)
68
80
  - MSW handler files go in `.codeyam/msw-handlers/` (one per scenario for API mocking)
81
+
82
+ ## Design System
83
+
84
+ If `.codeyam/design-system.md` exists, it contains the project's design tokens and brand guidelines. The editor step instructions will automatically show its contents inline — you don't need to read the file separately.
85
+
86
+ - Define **every** design token as a CSS custom property in `globals.css` — not just colors:
87
+ - Colors: `--bg-surface`, `--text-primary`, `--accent-green-a`, etc.
88
+ - Typography: `--text-xs: 12px`, `--text-sm: 14px`, `--text-lg: 18px`, etc.
89
+ - Font weights: `--font-weight-normal: 400`, `--font-weight-medium: 500`, `--font-weight-semibold: 600`
90
+ - Spacing: `--spacing-xs: 4px`, `--spacing-sm: 8px`, `--spacing-md: 12px`, `--spacing-lg: 16px`, etc.
91
+ - Border radius, shadows, and transitions
92
+ - Components must reference tokens — **zero hardcoded px values** for font-size, padding, margin, gap, or colors
93
+ - Bad: `fontSize: 14`, `padding: '12px 16px'`, `gap: 8`
94
+ - Good: `fontSize: 'var(--text-sm)'`, `padding: 'var(--spacing-md) var(--spacing-lg)'`, `gap: 'var(--spacing-sm)'`
95
+ - This ensures the entire app updates when the design system changes
96
+
97
+ ## Avoiding Permission Prompts
98
+
99
+ These patterns cause unnecessary approval prompts in Claude Code. Follow these rules:
100
+
101
+ ### Writing JSON files — use the Write tool, not bash
102
+
103
+ **BAD** (triggers "expansion obfuscation" security warning due to braces+quotes in heredoc):
104
+
105
+ ```bash
106
+ cat > /tmp/scenario.json << 'EOF'
107
+ {"name":"My Scenario","localStorage":{"key":"[{\"id\":\"1\"}]"}}
108
+ EOF
109
+ ```
110
+
111
+ **GOOD** (Write tool is pre-approved, no bash prompt):
112
+ Use the **Write tool** to create `.codeyam/tmp/scenario.json`, then register:
113
+
114
+ ```bash
115
+ codeyam editor register @.codeyam/tmp/scenario.json
116
+ ```
117
+
118
+ ### Listing scenarios — use the CLI subcommand
119
+
120
+ **BAD** (triggers bash approval):
121
+
122
+ ```bash
123
+ cat .codeyam/editor-scenarios/*.json | grep -o '"name":"[^"]*"'
124
+ ls .codeyam/editor-scenarios/*.json
125
+ ```
126
+
127
+ **GOOD** (pre-approved):
128
+
129
+ ```bash
130
+ codeyam editor scenarios
131
+ ```
132
+
133
+ ### Database schema changes — never force-reset
134
+
135
+ **BAD** (destructive, triggers approval, drops all data):
136
+
137
+ ```bash
138
+ npx prisma db push --force-reset
139
+ ```
140
+
141
+ **GOOD** (preserves data by providing defaults for new required columns):
142
+
143
+ ```prisma
144
+ userId Int @default(0) // existing rows get 0
145
+ ```
146
+
147
+ Then: `npm run db:push`
148
+
149
+ If you must add a required column without a default, make it optional (`Int?`) or provide a `@default()` value. Never destroy user data with `--force-reset`.