@codeyam/codeyam-cli 0.1.0-staging.b8f4f94 → 0.1.0-staging.ba3f279

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 (580) 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 +5 -5
  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/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  14. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -36
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +10 -6
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  18. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  19. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  20. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  21. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  22. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +239 -58
  23. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  24. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1684 -1462
  25. package/analyzer-template/packages/aws/package.json +2 -2
  26. package/analyzer-template/packages/database/package.json +2 -2
  27. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +102 -0
  28. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  29. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  30. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  31. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +0 -65
  32. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +9 -0
  33. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
  34. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +104 -0
  35. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  36. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  37. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  38. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  39. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  40. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  41. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  42. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  43. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  44. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  45. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  46. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  47. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +0 -25
  48. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  49. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  50. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  51. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  52. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  53. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  54. package/analyzer-template/packages/ui-components/package.json +1 -1
  55. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  56. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  57. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  58. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  59. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  60. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  61. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +22 -1
  62. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  63. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +27 -0
  64. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  65. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  66. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  67. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  68. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  69. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  70. package/codeyam-cli/src/cli.js +24 -0
  71. package/codeyam-cli/src/cli.js.map +1 -1
  72. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  73. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  74. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  75. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  76. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  77. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  78. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  79. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  80. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  81. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  82. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  83. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  84. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  85. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  86. package/codeyam-cli/src/commands/editor.js +4623 -678
  87. package/codeyam-cli/src/commands/editor.js.map +1 -1
  88. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  89. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  90. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  91. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  92. package/codeyam-cli/src/commands/init.js +69 -34
  93. package/codeyam-cli/src/commands/init.js.map +1 -1
  94. package/codeyam-cli/src/commands/telemetry.js +37 -0
  95. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  96. package/codeyam-cli/src/data/designSystems.js +27 -0
  97. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  98. package/codeyam-cli/src/data/techStacks.js +77 -0
  99. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  100. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  101. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  102. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  103. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  104. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  105. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  106. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  107. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  108. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +3545 -1
  109. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  110. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  111. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  112. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  113. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  114. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  115. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  116. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  117. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  118. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +181 -3
  119. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -1
  120. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  121. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  122. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  123. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  124. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  125. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  126. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  127. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  128. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +238 -2
  129. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -1
  130. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  131. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  132. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  133. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  134. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +118 -1
  135. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -1
  136. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +217 -3
  137. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  138. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  139. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  140. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  141. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  142. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +411 -0
  143. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  144. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1665 -2
  145. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  146. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +413 -0
  147. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  148. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  149. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  150. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  151. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  152. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  153. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +905 -1
  155. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  156. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  157. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  158. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  159. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  160. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  161. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  162. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  163. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  164. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  165. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  167. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  168. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  169. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  170. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  171. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  172. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  173. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  174. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +26 -5
  175. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  176. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  177. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  178. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  179. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  180. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  181. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  182. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +148 -0
  183. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  184. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  185. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  186. package/codeyam-cli/src/utils/analyzer.js +19 -0
  187. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  188. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  189. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  190. package/codeyam-cli/src/utils/backgroundServer.js +93 -17
  191. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  192. package/codeyam-cli/src/utils/database.js +37 -2
  193. package/codeyam-cli/src/utils/database.js.map +1 -1
  194. package/codeyam-cli/src/utils/devServerState.js +71 -0
  195. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  196. package/codeyam-cli/src/utils/editorApi.js +95 -0
  197. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  198. package/codeyam-cli/src/utils/editorAudit.js +732 -10
  199. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  200. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  201. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  202. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  203. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  204. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  205. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  206. package/codeyam-cli/src/utils/editorDevServer.js +100 -1
  207. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -1
  208. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  209. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  210. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  211. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  212. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  213. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  214. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  215. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  216. package/codeyam-cli/src/utils/editorJournal.js +85 -4
  217. package/codeyam-cli/src/utils/editorJournal.js.map +1 -1
  218. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  219. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  220. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  221. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  222. package/codeyam-cli/src/utils/editorMockState.js +1 -1
  223. package/codeyam-cli/src/utils/editorPreloadHelpers.js +72 -1
  224. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -1
  225. package/codeyam-cli/src/utils/editorPreview.js +74 -1
  226. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  227. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  228. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  229. package/codeyam-cli/src/utils/editorScenarioSwitch.js +149 -0
  230. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  231. package/codeyam-cli/src/utils/editorScenarios.js +621 -0
  232. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  233. package/codeyam-cli/src/utils/editorSeedAdapter.js +475 -0
  234. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  235. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  236. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  237. package/codeyam-cli/src/utils/entityChangeStatus.js +143 -4
  238. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
  239. package/codeyam-cli/src/utils/entityChangeStatus.server.js +227 -0
  240. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  241. package/codeyam-cli/src/utils/fileWatcher.js +38 -0
  242. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  243. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  244. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  245. package/codeyam-cli/src/utils/install-skills.js +14 -0
  246. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  247. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  248. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  249. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  250. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  251. package/codeyam-cli/src/utils/progress.js +2 -2
  252. package/codeyam-cli/src/utils/progress.js.map +1 -1
  253. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  254. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  255. package/codeyam-cli/src/utils/queue/job.js +35 -6
  256. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  257. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  258. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  259. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  260. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  261. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  262. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  263. package/codeyam-cli/src/utils/scenariosManifest.js +313 -0
  264. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  265. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  266. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  267. package/codeyam-cli/src/utils/serverState.js +30 -0
  268. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  269. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +42 -15
  270. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  271. package/codeyam-cli/src/utils/simulationGateMiddleware.js +17 -1
  272. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  273. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  274. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  275. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  276. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  277. package/codeyam-cli/src/utils/telemetry.js +106 -0
  278. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  279. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  280. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  281. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  282. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  283. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  284. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  285. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  286. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  287. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  288. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  289. package/codeyam-cli/src/utils/testRunner.js +193 -1
  290. package/codeyam-cli/src/utils/testRunner.js.map +1 -1
  291. package/codeyam-cli/src/utils/webappDetection.js +25 -2
  292. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  293. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +98 -0
  294. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  295. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  296. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  297. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  298. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  299. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +647 -0
  300. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  301. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +315 -0
  302. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  303. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  304. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  305. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  306. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  307. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  308. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  309. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  310. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  311. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  312. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  313. package/codeyam-cli/src/webserver/backgroundServer.js +60 -61
  314. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  315. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CLe80MMu.js +1 -0
  316. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-C76mRRiF.js → EntityItem-Crt_KN_U.js} +5 -5
  317. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  318. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CobE682z.js → EntityTypeIcon-CD7lGABo.js} +9 -9
  319. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CgTNOhnu.js +1 -0
  320. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DtYTSPL2.js +25 -0
  321. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-D3s1MFkb.js +3 -0
  322. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BU_OAEMP.js → LoadingDots-By5zI316.js} +1 -1
  323. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-ceAyBX-H.js → LogViewer-CM5zg40N.js} +3 -3
  324. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-CQENLSrF.js +36 -0
  325. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-djPLI-WV.js → ReportIssueModal-C2PLkej3.js} +4 -4
  326. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DanvyBPb.js +1 -0
  327. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-B76aig_2.js → ScenarioViewer-CefgqbCr.js} +3 -3
  328. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bc8BG-Lw.js +34 -0
  329. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  330. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BA_Ry-rs.js +1 -0
  331. package/codeyam-cli/src/webserver/build/client/assets/{_index-C96V0n15.js → _index-C1YkzTAV.js} +4 -4
  332. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BpKzcsJz.js → activity.(_tab)-yH46LLUz.js} +8 -8
  333. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  334. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  335. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-Duc5hnl7.js → addon-web-links-CHx25PAe.js} +1 -1
  336. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  337. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-D9hemwl6.js → agent-transcripts-Bg3e7q4S.js} +7 -7
  338. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  339. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  340. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  341. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  342. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  343. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  344. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  345. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  346. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  347. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  348. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  349. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D_nMCFmP.js → book-open-CL-lMgHh.js} +2 -2
  350. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BH2h1Ea2.js → chevron-down-GmAjGS9-.js} +2 -2
  351. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +43 -0
  352. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DyIKORY6.js → circle-check-DFcQkN5j.js} +2 -2
  353. package/codeyam-cli/src/webserver/build/client/assets/{copy-NDbZjXao.js → copy-C6iF61Xs.js} +3 -3
  354. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-4ImjHTVC.js +41 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  356. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  357. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CRepiabR.js +1 -0
  358. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
  359. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CRxPi2BB.js +96 -0
  360. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CluPkvXJ.js +41 -0
  361. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-CrjR3zZW.js → entity._sha._-DYJRGiDI.js} +14 -13
  362. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-wdiwx5-Z.js +6 -0
  363. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-BrkN-40Y.js +6 -0
  364. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DxfhekTZ.js +6 -0
  365. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMvVHNXU.js → entity._sha_.edit._scenarioId-CRXJWmpB.js} +2 -2
  366. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DTvKq3TY.js → entry.client-SuW9syRS.js} +6 -6
  367. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  368. package/codeyam-cli/src/webserver/build/client/assets/files-D-xGrg29.js +1 -0
  369. package/codeyam-cli/src/webserver/build/client/assets/git-Bq_fbXP5.js +1 -0
  370. package/codeyam-cli/src/webserver/build/client/assets/globals-BsGHu8WX.css +1 -0
  371. package/codeyam-cli/src/webserver/build/client/assets/{index-BcvgDzbZ.js → index-Bp1l4hSv.js} +1 -1
  372. package/codeyam-cli/src/webserver/build/client/assets/{index-10oVnAAH.js → index-CWV9XZiG.js} +1 -1
  373. package/codeyam-cli/src/webserver/build/client/assets/{index-yHOVb4rc.js → index-DE3jI_dv.js} +1 -1
  374. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  375. package/codeyam-cli/src/webserver/build/client/assets/labs-B_IX45ih.js +1 -0
  376. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BAXYRVEO.js → loader-circle-De-7qQ2u.js} +2 -2
  377. package/codeyam-cli/src/webserver/build/client/assets/manifest-9032538f.js +1 -0
  378. package/codeyam-cli/src/webserver/build/client/assets/memory-Cx2xEx7s.js +101 -0
  379. package/codeyam-cli/src/webserver/build/client/assets/{pause-DTAcYxBt.js → pause-CFxEKL1u.js} +3 -3
  380. package/codeyam-cli/src/webserver/build/client/assets/root-dKFRTYcy.js +80 -0
  381. package/codeyam-cli/src/webserver/build/client/assets/{search-fKo7v0Zo.js → search-BdBb5aqc.js} +2 -2
  382. package/codeyam-cli/src/webserver/build/client/assets/settings-DdE-Untf.js +1 -0
  383. package/codeyam-cli/src/webserver/build/client/assets/simulations-DSCdE99u.js +1 -0
  384. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BG4heKCG.js → terminal-CrplD4b1.js} +3 -3
  385. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DtSmdtM4.js → triangle-alert-DqJ0j69l.js} +2 -2
  386. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DhXHbEjP.js +1 -0
  387. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-D9QZKaLJ.js +2 -0
  388. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-Cy5Qg_UR.js +1 -0
  389. package/codeyam-cli/src/webserver/build/client/assets/useToast-5HR2j9ZE.js +1 -0
  390. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  391. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-OLsM110H.js +16 -0
  392. package/codeyam-cli/src/webserver/build/server/assets/index-WHdB6WTN.js +1 -0
  393. package/codeyam-cli/src/webserver/build/server/assets/init-DbSiZoE6.js +10 -0
  394. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  395. package/codeyam-cli/src/webserver/build/server/assets/server-build-DZbLY6O_.js +690 -0
  396. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  397. package/codeyam-cli/src/webserver/build-info.json +5 -5
  398. package/codeyam-cli/src/webserver/editorProxy.js +638 -50
  399. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  400. package/codeyam-cli/src/webserver/idleDetector.js +130 -0
  401. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  402. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  403. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  404. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  405. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +242 -3
  406. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +147 -4
  407. package/codeyam-cli/src/webserver/server.js +153 -26
  408. package/codeyam-cli/src/webserver/server.js.map +1 -1
  409. package/codeyam-cli/src/webserver/terminalServer.js +305 -51
  410. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  411. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  412. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  413. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  414. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  415. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  416. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  417. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  418. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  419. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  420. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  421. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  422. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  423. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  424. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  425. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  426. package/codeyam-cli/templates/codeyam-editor-claude.md +86 -5
  427. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  428. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  429. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  430. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  431. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  432. package/codeyam-cli/templates/editor-step-hook.py +219 -45
  433. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +288 -0
  434. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  435. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  436. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +15 -0
  437. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  438. package/codeyam-cli/templates/expo-react-native/app.json +29 -0
  439. package/codeyam-cli/templates/expo-react-native/babel.config.js +10 -0
  440. package/codeyam-cli/templates/expo-react-native/gitignore +14 -0
  441. package/codeyam-cli/templates/expo-react-native/global.css +10 -0
  442. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  443. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  444. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  445. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  446. package/codeyam-cli/templates/expo-react-native/package.json +54 -0
  447. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  448. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  449. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  450. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  451. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  452. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  453. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  454. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  455. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  456. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  457. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +9 -4
  458. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  459. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +21 -0
  460. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +6 -2
  461. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +4 -1
  462. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  463. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  464. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  465. package/codeyam-cli/templates/{nextjs-prisma-sqlite/PRISMA_SETUP.md → nextjs-prisma-supabase/SUPABASE_SETUP.md} +37 -17
  466. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  467. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  468. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  469. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  470. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  471. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  472. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  473. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  474. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  475. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  476. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  477. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  478. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  479. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  480. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  481. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  482. package/codeyam-cli/templates/seed-adapters/supabase.ts +374 -0
  483. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +2 -2
  484. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +183 -13
  485. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +0 -0
  486. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +0 -0
  487. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +0 -0
  488. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +0 -0
  489. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +0 -0
  490. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +0 -0
  491. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +0 -0
  492. package/package.json +7 -1
  493. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  494. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  495. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  496. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  497. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  498. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  499. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +27 -10
  500. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  501. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  502. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  503. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  504. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  505. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  506. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  507. package/packages/analyze/index.js +1 -1
  508. package/packages/analyze/index.js.map +1 -1
  509. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  510. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  511. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +6 -26
  512. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  513. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +3 -2
  514. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  515. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  516. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  517. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  518. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  519. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  520. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  521. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  522. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  523. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  524. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  525. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  526. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  527. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +120 -28
  528. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  529. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  530. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  531. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1368 -1193
  532. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  533. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +104 -0
  534. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  535. package/packages/database/src/lib/loadAnalysis.js +7 -1
  536. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  537. package/packages/database/src/lib/loadEntities.js +0 -6
  538. package/packages/database/src/lib/loadEntities.js.map +1 -1
  539. package/packages/database/src/lib/loadEntity.js +5 -5
  540. package/packages/database/src/lib/loadEntity.js.map +1 -1
  541. package/packages/database/src/lib/updateCommitMetadata.js +0 -25
  542. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  543. package/packages/types/src/enums/ProjectFramework.js +2 -0
  544. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  545. package/packages/utils/src/lib/fs/rsyncCopy.js +22 -1
  546. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  547. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +0 -1
  548. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-g3saevPb.js +0 -1
  549. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +0 -1
  550. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +0 -25
  551. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +0 -3
  552. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +0 -1
  553. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +0 -34
  554. package/codeyam-cli/src/webserver/build/client/assets/Terminal-nZNBALox.js +0 -41
  555. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C8OKAR5x.js +0 -1
  556. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +0 -1
  557. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-C4pqxYJB.js +0 -51
  558. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CMT1jU2q.js +0 -21
  559. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  560. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +0 -1
  561. package/codeyam-cli/src/webserver/build/client/assets/editor-DTwKl1Xu.js +0 -10
  562. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DjACbfdI.js +0 -6
  563. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +0 -6
  564. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +0 -6
  565. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +0 -1
  566. package/codeyam-cli/src/webserver/build/client/assets/files-DO4CZ16O.js +0 -1
  567. package/codeyam-cli/src/webserver/build/client/assets/git-CdN8sCqs.js +0 -1
  568. package/codeyam-cli/src/webserver/build/client/assets/globals-h1-1oFYI.css +0 -1
  569. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +0 -1
  570. package/codeyam-cli/src/webserver/build/client/assets/manifest-9422aeab.js +0 -1
  571. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +0 -96
  572. package/codeyam-cli/src/webserver/build/client/assets/root-BzQgN2ff.js +0 -67
  573. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +0 -1
  574. package/codeyam-cli/src/webserver/build/client/assets/simulations-B3aOzpCZ.js +0 -1
  575. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-ByhSyh0W.js +0 -1
  576. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +0 -2
  577. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +0 -1
  578. package/codeyam-cli/src/webserver/build/client/assets/useToast-9FIWuYfK.js +0 -1
  579. package/codeyam-cli/src/webserver/build/server/assets/index-Bh_pNxNA.js +0 -1
  580. package/codeyam-cli/src/webserver/build/server/assets/server-build-Bqr22tlO.js +0 -367
@@ -0,0 +1,294 @@
1
+ # Neo-Brutalist Design System
2
+
3
+ > Hard-edged, warm, editorial UI. Offset shadows, bold borders, hot pink accent. For any web or mobile app.
4
+
5
+ ## Philosophy
6
+
7
+ Heavy black borders and offset box shadows create a "printed" feel. Warm off-white base (never pure white or grey). Typography is heavy and confident. No gradients. No rounded corners over 18px.
8
+
9
+ **Rules:**
10
+
11
+ 1. Cards always have `border: 2px solid` + offset box shadow
12
+ 2. Interactive elements "press" on hover/active (`translate(2px, 2px)`, shadow removed)
13
+ 3. Dark mode inverts backgrounds but keeps accent colors identical
14
+ 4. Dark cards/sidebar stay dark in both modes
15
+
16
+ ---
17
+
18
+ ## Colors
19
+
20
+ ### Light Mode
21
+
22
+ ```css
23
+ [data-theme='light'] {
24
+ --bg-base: #f5f0e8; /* warm off-white page bg */
25
+ --bg-surface: #ffffff; /* cards, panels */
26
+ --bg-muted: #ede8de; /* subtle sections, table headers */
27
+ --bg-inverse: #0d0d0d; /* dark surfaces */
28
+
29
+ --text-primary: #0d0d0d;
30
+ --text-secondary: #666666;
31
+ --text-muted: #999999;
32
+ --text-inverse: #ffffff;
33
+
34
+ --border: #0d0d0d;
35
+ --border-light: #e5ddd0; /* internal dividers */
36
+
37
+ --shadow-sm: 2px 2px 0px #0d0d0d;
38
+ --shadow-md: 4px 4px 0px #0d0d0d;
39
+ --shadow-lg: 6px 6px 0px #0d0d0d;
40
+ --shadow-accent: 4px 4px 0px #ff90e8;
41
+ }
42
+ ```
43
+
44
+ ### Dark Mode
45
+
46
+ ```css
47
+ [data-theme='dark'] {
48
+ --bg-base: #111111;
49
+ --bg-surface: #1a1a1a;
50
+ --bg-muted: #222222;
51
+ --text-primary: #f5f0e8;
52
+ --text-secondary: #aaaaaa;
53
+ --text-muted: #666666;
54
+ --text-inverse: #0d0d0d;
55
+ --border: #f5f0e8;
56
+ --border-light: #2a2a2a;
57
+ --shadow-sm: 2px 2px 0px #f5f0e8;
58
+ --shadow-md: 4px 4px 0px #f5f0e8;
59
+ --shadow-lg: 6px 6px 0px #f5f0e8;
60
+ /* Accents unchanged. Dark cards/sidebar unchanged. */
61
+ }
62
+ ```
63
+
64
+ Respect `@media (prefers-color-scheme: dark)` on `:root:not([data-theme="light"])`.
65
+
66
+ ### Accents
67
+
68
+ ```css
69
+ /* These don't change between modes */
70
+ --pink: #ff90e8; /* primary: CTAs, active nav, highlights */
71
+ --pink-light: #ffe4f8;
72
+ --teal: #14b8a6; /* secondary: success states, live data */
73
+ --teal-light: #ccfbf1;
74
+ --teal-dark: #0f766e;
75
+ --yellow: #facc15; /* tertiary: alerts, featured labels */
76
+ --yellow-light: #fef9c3;
77
+ --yellow-dark: #ca8a04;
78
+ --orange: #fb923c; /* quaternary: warnings */
79
+ ```
80
+
81
+ ### Semantic
82
+
83
+ ```css
84
+ --success-bg: #d1fae5;
85
+ --success-text: #065f46;
86
+ --danger-bg: #fee2e2;
87
+ --danger-text: #991b1b;
88
+ --warning-bg: #fef9c3;
89
+ --warning-text: #854d0e;
90
+ /* Dark mode: --success-bg: #052e16; --success-text: #86efac; etc. */
91
+ ```
92
+
93
+ ### Ordered Palette
94
+
95
+ ```css
96
+ /* For any categorical sequence: tags, categories, avatars, etc. */
97
+ --palette-1: #ff90e8; /* pink */
98
+ --palette-2: #14b8a6; /* teal */
99
+ --palette-3: #facc15; /* yellow */
100
+ --palette-4: #fb923c; /* orange */
101
+ --palette-5: #818cf8; /* purple */
102
+ ```
103
+
104
+ ---
105
+
106
+ ## Typography
107
+
108
+ **Font stack:** `'DM Sans', sans-serif` (body), `'DM Serif Display', serif` (display/h1), `'DM Mono', monospace` (code)
109
+
110
+ | Style | Size | Weight | Notes |
111
+ | ----------- | ------------------------ | ------------------- | ----------------------------------------------------- |
112
+ | Display | `clamp(28px, 4vw, 48px)` | 400 (Serif Display) | `letter-spacing: -1.5px; line-height: 1.1` |
113
+ | H1 | `clamp(22px, 3vw, 36px)` | 900 | `letter-spacing: -1px` |
114
+ | H2 | 20px | 900 | `letter-spacing: -0.5px` |
115
+ | H3 | 15px | 700 | |
116
+ | Label | 11px | 700 | `uppercase; letter-spacing: 1px; color: --text-muted` |
117
+ | Body | 14px | 400 | `line-height: 1.6` |
118
+ | Body SM | 13px | 400 | `line-height: 1.5` |
119
+ | Large Value | `clamp(22px, 3vw, 32px)` | 900 | `letter-spacing: -1px` — for emphasized numbers |
120
+
121
+ **Common pattern — eyebrow + title:** Label above H2 in almost every section.
122
+
123
+ ---
124
+
125
+ ## Spacing & Radius
126
+
127
+ Base unit: 4px. Scale: 4, 8, 12, 16, 20, 24, 28, 32, 40, 48px.
128
+
129
+ | Context | Value |
130
+ | ---------------------- | ----------- |
131
+ | Card padding (compact) | `16px 18px` |
132
+ | Card padding (default) | `22px 24px` |
133
+ | Card padding (large) | `28px 28px` |
134
+ | Grid gap | 18px |
135
+
136
+ ```css
137
+ --radius-sm: 8px;
138
+ --radius-md: 12px;
139
+ --radius-lg: 18px; /* cards — max radius in the system */
140
+ --radius-pill: 999px; /* badges, avatars */
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Layout
146
+
147
+ ### Common Patterns
148
+
149
+ - **Sidebar:** 220px fixed left, `--bg-inverse`, always dark in both modes
150
+ - **Top nav:** Sticky, 64px height, `--bg-base`, bottom border
151
+ - **Bottom nav (mobile):** Fixed, 64px, `--pink-light` active bg. Add `env(safe-area-inset-bottom)` padding
152
+ - **Main content:** flex-1, `--bg-base`, padding `36px 40px`
153
+
154
+ ### Navigation States
155
+
156
+ - Logo mark: 36px accent square + bold name
157
+ - Nav items: 14px, `10px 14px` padding, rounded 10px. Hover/active → `--pink` bg + dark text
158
+ - Top nav active link: inverse bg pill
159
+
160
+ ### Mobile / Small Viewport
161
+
162
+ - Single column, 16px padding
163
+ - Cards stack vertically, buttons full-width in forms
164
+ - Reduce shadows to `--shadow-sm`
165
+
166
+ ---
167
+
168
+ ## Components
169
+
170
+ ### Card
171
+
172
+ ```css
173
+ .card {
174
+ background: var(--bg-surface);
175
+ border: 2px solid var(--border);
176
+ border-radius: var(--radius-lg);
177
+ padding: 22px 24px;
178
+ box-shadow: var(--shadow-md);
179
+ position: relative;
180
+ overflow: hidden;
181
+ }
182
+ ```
183
+
184
+ **Variants:** `default` (white), `dark` (inverse bg + accent shadow), `pink`, `teal`, `yellow`, `muted` (base bg).
185
+
186
+ **Interactive states:** hover → `translateY(-3px)` + `shadow-lg`. Active → `translate(2px, 2px)` + `shadow-sm`.
187
+
188
+ ### Value Card
189
+
190
+ Card with: decorative accent circle (top-right, 64px, 20% opacity), icon box (40px, accent bg, 2px border, rounded 10px), label (eyebrow), emphasized value (Large Value style), optional trend badge (pill, success/danger colors).
191
+
192
+ ### Button
193
+
194
+ ```css
195
+ .btn {
196
+ padding: 11px 22px;
197
+ border-radius: var(--radius-md);
198
+ font-weight: 700;
199
+ font-size: 14px;
200
+ border: 2px solid var(--border);
201
+ }
202
+ .btn:hover {
203
+ transform: translate(-1px, -1px);
204
+ }
205
+ .btn:active {
206
+ transform: translate(2px, 2px);
207
+ box-shadow: none;
208
+ }
209
+ ```
210
+
211
+ | Variant | Background | Text | Border/Shadow |
212
+ | --------- | -------------- | ---------------- | ------------------------- |
213
+ | Primary | `--pink` | `--text-primary` | `--shadow-md` |
214
+ | Secondary | `--bg-surface` | `--text-primary` | `--shadow-sm` |
215
+ | Teal | `--teal` | `--text-primary` | `--shadow-md` |
216
+ | Yellow | `--yellow` | `--text-primary` | `--shadow-md` |
217
+ | Dark | `--bg-inverse` | `--text-inverse` | `--shadow-accent` |
218
+ | Ghost | transparent | `--text-primary` | none; hover: `--bg-muted` |
219
+
220
+ | Size | Padding | Font Size |
221
+ | ------------ | ----------- | --------- |
222
+ | SM | `7px 14px` | 12px |
223
+ | MD (default) | `11px 22px` | 14px |
224
+ | LG | `15px 30px` | 16px |
225
+
226
+ Icon-only: 40x40, no padding, `--radius-sm`.
227
+
228
+ ### Badge / Pill
229
+
230
+ `padding: 3px 10px; border-radius: 999px; font-size: 11px; font-weight: 700; border: 1.5px solid currentColor`. Semantic variants: success, danger, warning, pink, teal, yellow, neutral. Solid variant: inverse bg+text.
231
+
232
+ ### Input
233
+
234
+ `padding: 11px 16px; border: 2px solid var(--border); border-radius: var(--radius-md); font-size: 14px`. Focus: `box-shadow: 0 0 0 3px var(--pink)`. Input-group: input + button joined with zero'd inner radii.
235
+
236
+ ### Table
237
+
238
+ Container: card shell (border, radius-lg, shadow-md, overflow hidden). Header: `--bg-muted`, 11px uppercase labels. Rows: `16px 28px` padding, `--border-light` divider, hover → muted bg.
239
+
240
+ ### Progress Bar
241
+
242
+ Track: 12px height, `--bg-muted`, pill radius, 2px border. Fill: pill radius, accent color. Animate: `width 0.8s cubic-bezier(0.34, 1.56, 0.64, 1)`.
243
+
244
+ ### Avatar
245
+
246
+ Square-ish (`--radius-sm`), 2px border. Sizes: 28/36/48px. Cycle through ordered palette colors.
247
+
248
+ ### Tag / Chip
249
+
250
+ `padding: 5px 12px; border-radius: 999px; border: 2px solid var(--border); font-size: 13px; font-weight: 600`. Hover → pink bg. Active → inverse bg+text.
251
+
252
+ ### Tooltip
253
+
254
+ `background: --bg-inverse; border: 2px solid --pink; border-radius: --radius-md; padding: 10px 16px; color: --text-inverse; font-size: 13px`. Bold label + bold value.
255
+
256
+ ---
257
+
258
+ ## Motion
259
+
260
+ ```css
261
+ --transition-fast: 120ms ease; /* button press */
262
+ --transition-base: 180ms ease; /* card hover, general */
263
+ ```
264
+
265
+ Bouncy and tactile — elements lift and press. Staggered fade-up on page load:
266
+
267
+ ```css
268
+ @keyframes fadeUp {
269
+ from {
270
+ opacity: 0;
271
+ transform: translateY(12px);
272
+ }
273
+ to {
274
+ opacity: 1;
275
+ transform: translateY(0);
276
+ }
277
+ }
278
+ /* animation: fadeUp 0.4s ease forwards; delay: n * 0.05s */
279
+ ```
280
+
281
+ ---
282
+
283
+ ## Checklist
284
+
285
+ - [ ] Background is `#F5F0E8` (light) or `#111111` (dark) — never pure white or grey
286
+ - [ ] Every card has 2px border + offset box shadow
287
+ - [ ] Interactive elements press-shift on :active
288
+ - [ ] DM Sans (body) + DM Serif Display (headlines) + DM Mono (code)
289
+ - [ ] At least one pink element visible on every screen
290
+ - [ ] Labels: 11px uppercase, letter-spacing 1px
291
+ - [ ] Badges are pill-shaped with border
292
+ - [ ] Dark sidebar/cards unchanged in dark mode
293
+ - [ ] No gradients anywhere
294
+ - [ ] Spacing follows 4px grid
@@ -15,34 +15,70 @@ from datetime import datetime, timezone
15
15
 
16
16
  STEP_LABELS = {
17
17
  1: "Plan",
18
- 2: "Prototype",
19
- 3: "Confirm",
20
- 4: "Deconstruct",
21
- 5: "Extract",
22
- 6: "Glossary",
23
- 7: "Analyze",
24
- 8: "App Scenarios",
25
- 9: "User Scenarios",
26
- 10: "Verify",
27
- 11: "Journal",
28
- 12: "Review",
29
- 13: "Present",
18
+ 2: "Prepare",
19
+ 3: "Prototype",
20
+ 4: "Verify Prototype",
21
+ 5: "Confirm",
22
+ 6: "Deconstruct",
23
+ 7: "Extract",
24
+ 8: "Glossary",
25
+ 9: "Analyze",
26
+ 10: "App Scenarios",
27
+ 11: "User Scenarios",
28
+ 12: "Verify",
29
+ 13: "Journal",
30
+ 14: "Review",
31
+ 15: "Present",
32
+ 16: "Commit",
33
+ 17: "Finalize",
34
+ 18: "Push",
30
35
  }
31
36
 
32
37
  STEP_RESTRICTIONS = {
33
38
  1: "Do NOT write any code. Plan and describe only. Wait for user confirmation.",
34
- 2: "Do NOT create scenarios or run codeyam analyze. Build fast working prototype with real data.",
35
- 3: "Present a selection menu (AskUserQuestion) for confirmation. Do NOT refactor or create scenarios until approved.",
36
- 4: "Do NOT write any code. Read every file, identify all extractable pieces, write a numbered plan. Planning only.",
37
- 5: "Execute the extraction plan from step 4. Components first (no tests), then library functions via TDD. Page files must contain ZERO direct JSX.",
38
- 6: "Do NOT write application code or scenarios. Update the glossary only.",
39
- 7: "Create isolation routes for visual components, run tests for library functions. Register component scenarios via codeyam editor register.",
40
- 8: "Do NOT modify application code. Create and register app-level scenarios only.",
41
- 9: "Do NOT modify application code. Create user-persona scenarios only (or skip if no users).",
42
- 10: "Verify component isolation screenshots AND editor scenarios. After ANY code fix, re-register affected components. Fix only — do NOT add features.",
43
- 11: "Create or update the journal entry for this feature. Do NOT create a duplicate check if one exists first.",
44
- 12: "Verify ALL screenshots exist and NO client-side errors (/api/editor-client-errors). Run codeyam editor audit. Do not proceed until all checks pass.",
45
- 13: "Show the results panel, present summary, then selection menu (AskUserQuestion): Save or make changes.",
39
+ 2: "Do NOT write any code or build features. Set up the project and prepare the database only.",
40
+ 3: "Do NOT create scenarios or run codeyam analyze. Build fast working prototype with real data.",
41
+ 4: "Verify the prototype works. Do NOT add features only fix broken functionality.",
42
+ 5: "Present a selection menu (AskUserQuestion) for confirmation. Do NOT refactor or create scenarios until approved.",
43
+ 6: "Do NOT write any code. Read every file, identify all extractable pieces, write a numbered plan. Planning only.",
44
+ 7: "Execute the extraction plan from step 6. Components first (no tests), then library functions via TDD. Page files must contain ZERO direct JSX.",
45
+ 8: "Do NOT write application code or scenarios. Update the glossary only.",
46
+ 9: "Create isolation routes for visual components, run tests for library functions. Register component scenarios via codeyam editor register.",
47
+ 10: "Do NOT modify application code. Create and register app-level scenarios only.",
48
+ 11: "Do NOT modify application code. Create user-persona scenarios only (or skip if no users).",
49
+ 12: "Verify component isolation screenshots AND editor scenarios. After ANY code fix, re-register affected components. Fix only do NOT add features.",
50
+ 13: "Create or update the journal entry for this feature. Do NOT create a duplicate check if one exists first.",
51
+ 14: "Verify ALL screenshots exist and NO client-side errors (/api/editor-client-errors). Run codeyam editor audit. Do not proceed until all checks pass.",
52
+ 15: "Show the results panel, present summary, then selection menu (AskUserQuestion): Save or make changes.",
53
+ 16: "Hide the results panel and commit all changes. Do NOT push — that happens in step 18.",
54
+ 17: "Update the journal entry with the commit SHA and amend the commit to include the journal update.",
55
+ 18: "Check for a git remote and offer to push. WAIT for the user's answer before starting the next feature.",
56
+ }
57
+
58
+ MIGRATION_STEP_LABELS = {
59
+ 1: "Survey",
60
+ 2: "App Scenarios",
61
+ 3: "Component Scenarios",
62
+ 4: "Preview",
63
+ 5: "Discuss",
64
+ 6: "Decompose",
65
+ 7: "Extract",
66
+ 8: "Recapture",
67
+ 9: "Journal",
68
+ 10: "Present",
69
+ }
70
+
71
+ MIGRATION_STEP_RESTRICTIONS = {
72
+ 1: "Survey the page and start the dev server. Read all files and map data flow. Do NOT register scenarios yet.",
73
+ 2: "Set up seed adapter if needed, then register application scenarios for the ACTUAL page route with seed data.",
74
+ 3: "Create isolation routes and register component scenarios for individual visual components.",
75
+ 4: "Verify screenshots and show results to the user. Do NOT modify application code.",
76
+ 5: "Assess complexity and ask user about decomposition. Wait for user decision before proceeding.",
77
+ 6: "Plan-only. Identify all extractions, mark existing components as REUSE. Do NOT write code.",
78
+ 7: "Execute the extraction plan. Components first, then functions via TDD.",
79
+ 8: "Update glossary, re-register scenarios after code changes, verify screenshots. Fix issues only.",
80
+ 9: "Create the journal entry for this page's migration.",
81
+ 10: "Show results, present summary, commit or make changes. After commit run `codeyam editor migrate complete` then `codeyam editor migrate next`.",
46
82
  }
47
83
 
48
84
 
@@ -81,8 +117,48 @@ def detect_event():
81
117
 
82
118
 
83
119
  def main():
120
+ # Only run in editor Build sessions. The env var is set by the terminal
121
+ # server when launching Claude in editor mode. Without this guard, hooks
122
+ # fire in every Claude session in the project (scenario editing, bare
123
+ # claude, etc.) and inject unwanted step restrictions.
124
+ if not os.environ.get("CODEYAM_EDITOR_ACTIVE"):
125
+ return
126
+
84
127
  project_dir = os.environ.get("CLAUDE_PROJECT_DIR", os.getcwd())
85
128
  state_path = os.path.join(project_dir, ".codeyam", "editor-step.json")
129
+ prompt_path = os.path.join(project_dir, ".codeyam", "editor-user-prompt.txt")
130
+
131
+ # Detect event early so we can capture the user prompt even before state exists
132
+ event_type, event_data = detect_event()
133
+
134
+ # Capture the user's feature request prompt.
135
+ # Write when: (a) no prompt file yet, (b) no state file (between features),
136
+ # or (c) previous feature is done (step >= 18). This ensures the prompt
137
+ # is refreshed for each new feature instead of persisting stale text.
138
+ # Skip slash commands (e.g. /codeyam-editor) — they aren't user prompts.
139
+ if event_type == "user_prompt":
140
+ prompt_text = event_data.get("prompt", "").strip()
141
+ if prompt_text and not prompt_text.startswith("/"):
142
+ should_capture = not os.path.exists(prompt_path)
143
+ if not should_capture:
144
+ # Overwrite stale prompt when between features
145
+ if not os.path.exists(state_path):
146
+ should_capture = True
147
+ else:
148
+ try:
149
+ with open(state_path, "r") as f:
150
+ prev = json.load(f)
151
+ if prev.get("step", 0) >= 18:
152
+ should_capture = True
153
+ except Exception:
154
+ pass
155
+ if should_capture:
156
+ try:
157
+ os.makedirs(os.path.dirname(prompt_path), exist_ok=True)
158
+ with open(prompt_path, "w") as f:
159
+ f.write(prompt_text)
160
+ except Exception:
161
+ pass # Best-effort
86
162
 
87
163
  if not os.path.exists(state_path):
88
164
  return
@@ -96,26 +172,61 @@ def main():
96
172
  step = state.get("step")
97
173
  label = state.get("label", "Unknown")
98
174
  feature = state.get("feature", "")
175
+ migration = state.get("migration") # Optional migration context
99
176
 
100
177
  if not step:
101
178
  return
102
179
 
103
- event_type, event_data = detect_event()
180
+ # ── Task tracking ──────────────────────────────────────────────────
181
+ # Track whether TaskCreate was called between step transitions.
182
+ # If Claude advances to the next step without creating a task, block it.
183
+ task_tracking_path = os.path.join(project_dir, ".codeyam", "editor-task-tracking.json")
184
+
185
+ if event_type == "post_tool_use":
186
+ tool_name = event_data.get("tool_name", "")
187
+
188
+ # Record when TaskCreate is called
189
+ if tool_name == "TaskCreate":
190
+ try:
191
+ tracking = {}
192
+ if os.path.exists(task_tracking_path):
193
+ with open(task_tracking_path, "r") as f:
194
+ tracking = json.load(f)
195
+ tracking["taskCreated"] = True
196
+ with open(task_tracking_path, "w") as f:
197
+ json.dump(tracking, f)
198
+ except Exception:
199
+ pass
104
200
 
105
201
  # Log the hook firing
106
202
  log_data = {"step": step, "label": label, "feature": feature, "hook": event_type}
203
+ if migration:
204
+ log_data["migration"] = True
107
205
  if event_type == "post_tool_use":
108
206
  log_data["tool"] = event_data.get("tool_name", "")
109
207
  log_event(project_dir, "hook", log_data)
110
208
 
111
- restriction = STEP_RESTRICTIONS.get(step, "")
112
- next_cmd = f"codeyam editor {step + 1}" if step < 13 else "codeyam editor 1"
209
+ # Use migration-specific labels/restrictions when in migration mode
210
+ if migration:
211
+ restriction = MIGRATION_STEP_RESTRICTIONS.get(step, "")
212
+ next_cmd = f"codeyam editor migrate {step + 1}" if step < 10 else "codeyam editor migrate next"
213
+ else:
214
+ restriction = STEP_RESTRICTIONS.get(step, "")
215
+ next_cmd = f"codeyam editor {step + 1}" if step < 18 else "codeyam editor 1"
113
216
 
114
217
  # UserPromptSubmit: concise workflow reminder injected before Claude processes the user's message
115
218
  if event_type == "user_prompt":
219
+ mode_label = "Migration Mode" if migration else "Editor Mode"
220
+ page_info = ""
221
+ if migration:
222
+ page_name = migration.get("pageName", "")
223
+ page_idx = migration.get("pageIndex", 0)
224
+ total = migration.get("totalPages", 0)
225
+ page_info = f" — Page {page_idx + 1}/{total} ({page_name})"
226
+
116
227
  lines = [
117
228
  f'<user-prompt-submit-hook>',
118
- f'Editor Mode — Step {step} ({label}): "{feature}"',
229
+ f'{mode_label} — Step {step} ({label}): "{feature}"{page_info}',
119
230
  ]
120
231
 
121
232
  # Include the active scenario so Claude knows what the user is looking at
@@ -135,13 +246,26 @@ def main():
135
246
  except (IOError, json.JSONDecodeError):
136
247
  pass
137
248
 
138
- if step == 13:
249
+ if migration and step == 8:
250
+ lines.append(
251
+ "If the user is requesting changes (even indirectly), "
252
+ "run `codeyam editor change` BEFORE making any modifications. "
253
+ "The change workflow ensures Working Session Results are shown to the user. "
254
+ "If the user chose to commit, run `codeyam editor migrate next` to advance to the next page."
255
+ )
256
+ elif step in (15, 16, 17, 18) and not migration:
139
257
  lines.append(
140
258
  "If the user is requesting changes (even indirectly), "
141
- "run `codeyam editor change` BEFORE writing any code. "
259
+ "run `codeyam editor change` BEFORE making any modifications "
260
+ "(code, scenarios, data, styles — everything). "
142
261
  "The change command gives you the post-change checklist. "
143
- "If the user chose to commit, run `codeyam editor steps` after committing "
144
- "to start the next feature."
262
+ "The change workflow ensures Working Session Results are shown to the user. "
263
+ "If the user chose to commit, run `codeyam editor 16` to advance to the commit step."
264
+ )
265
+ elif migration:
266
+ lines.append(
267
+ f"You are on migration step {step}. Follow the `codeyam editor migrate` workflow. "
268
+ f"Do NOT skip ahead or make changes outside the current step."
145
269
  )
146
270
  else:
147
271
  lines.append(
@@ -154,8 +278,9 @@ def main():
154
278
  print("\n".join(lines))
155
279
  return
156
280
 
281
+ mode_label = "Migration Mode" if migration else "Editor Mode"
157
282
  lines = [
158
- f'Editor Mode \u2014 Step {step} ({label}): "{feature}"',
283
+ f'{mode_label} \u2014 Step {step} ({label}): "{feature}"',
159
284
  ]
160
285
  if restriction:
161
286
  lines.append(restriction)
@@ -166,18 +291,40 @@ def main():
166
291
  BOLD_CYAN = "\033[1;36m"
167
292
  DIM = "\033[2m"
168
293
  RESET = "\033[0m"
169
- tracker = [f"{DIM} \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510{RESET}"]
170
- for i in range(1, 14):
171
- lbl = STEP_LABELS[i].ljust(28)
172
- num = f" {i}" if i < 10 else f"{i}"
173
- content = f"{num}. {lbl}"
174
- if i < step:
175
- tracker.append(f"{DIM} \u2502{RESET}{GREEN} \u2713 {content}{RESET}{DIM}\u2502{RESET}")
176
- elif i == step:
177
- tracker.append(f"{DIM} \u2502{RESET}{BOLD_CYAN} \u2192 {content}{RESET}{DIM}\u2502{RESET}")
178
- else:
179
- tracker.append(f"{DIM} \u2502 \u25cb {content}\u2502{RESET}")
180
- tracker.append(f"{DIM} \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518{RESET}")
294
+
295
+ if migration:
296
+ # Migration progress tracker (10 steps)
297
+ page_name = migration.get("pageName", "")
298
+ page_idx = migration.get("pageIndex", 0)
299
+ total = migration.get("totalPages", 0)
300
+ tracker = [f"{DIM} Migration: Page {page_idx + 1}/{total} ({page_name}){RESET}"]
301
+ tracker.append(f"{DIM} \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510{RESET}")
302
+ for i in range(1, 11):
303
+ lbl = MIGRATION_STEP_LABELS[i].ljust(28)
304
+ num = f" {i}" if i < 10 else f"{i}"
305
+ cntnt = f"{num}. {lbl}"
306
+ if i < step:
307
+ tracker.append(f"{DIM} \u2502{RESET}{GREEN} \u2713 {cntnt}{RESET}{DIM}\u2502{RESET}")
308
+ elif i == step:
309
+ tracker.append(f"{DIM} \u2502{RESET}{BOLD_CYAN} \u2192 {cntnt}{RESET}{DIM}\u2502{RESET}")
310
+ else:
311
+ tracker.append(f"{DIM} \u2502 \u25cb {cntnt}\u2502{RESET}")
312
+ tracker.append(f"{DIM} \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518{RESET}")
313
+ else:
314
+ # Standard progress tracker (18 steps)
315
+ tracker = [f"{DIM} \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510{RESET}"]
316
+ for i in range(1, 19):
317
+ lbl = STEP_LABELS[i].ljust(28)
318
+ num = f" {i}" if i < 10 else f"{i}"
319
+ content = f"{num}. {lbl}"
320
+ if i < step:
321
+ tracker.append(f"{DIM} \u2502{RESET}{GREEN} \u2713 {content}{RESET}{DIM}\u2502{RESET}")
322
+ elif i == step:
323
+ tracker.append(f"{DIM} \u2502{RESET}{BOLD_CYAN} \u2192 {content}{RESET}{DIM}\u2502{RESET}")
324
+ else:
325
+ tracker.append(f"{DIM} \u2502 \u25cb {content}\u2502{RESET}")
326
+ tracker.append(f"{DIM} \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518{RESET}")
327
+
181
328
  lines.append("Present this progress tracker to the user (copy verbatim):")
182
329
  lines.extend(tracker)
183
330
  lines.append(
@@ -185,6 +332,33 @@ def main():
185
332
  "\u2713 (done) or \u2717 (skipped + reason)."
186
333
  )
187
334
 
335
+ if event_type == "stop" and ((step in (15, 16) and not migration) or (step == 8 and migration)):
336
+ import subprocess as _sp
337
+ try:
338
+ _result = _sp.run(
339
+ ["git", "status", "--porcelain"],
340
+ cwd=project_dir,
341
+ capture_output=True, text=True, timeout=5
342
+ )
343
+ has_uncommitted = bool(_result.stdout.strip())
344
+ except Exception:
345
+ has_uncommitted = False
346
+
347
+ if has_uncommitted:
348
+ lines.append(
349
+ "\n\033[1;31m⚠️ You have uncommitted changes but haven't shown Working Session Results.\033[0m"
350
+ )
351
+ lines.append(
352
+ f"\033[31mRun `codeyam editor change` if you haven't already, then complete the "
353
+ f"checklist and run `{'codeyam editor migrate 8' if migration else 'codeyam editor 15'}` to show results to the user.\033[0m"
354
+ )
355
+
356
+ if event_type == "stop":
357
+ lines.append(
358
+ f"\n\033[2mReminder: Only use `codeyam editor` subcommands in the Build terminal. "
359
+ f"Follow `codeyam editor steps` when changing code.\033[0m"
360
+ )
361
+
188
362
  lines.append(f"When this step is complete, run: {next_cmd}")
189
363
 
190
364
  print("\n".join(lines))