@codeyam/codeyam-cli 0.1.0-staging.2ea44f6 → 0.1.0-staging.30dc541

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 (410) 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 +3 -3
  4. package/analyzer-template/packages/ai/package.json +1 -1
  5. package/analyzer-template/packages/aws/package.json +1 -1
  6. package/analyzer-template/packages/database/package.json +1 -1
  7. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +99 -0
  8. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  9. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +0 -65
  10. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +8 -0
  11. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
  12. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +101 -0
  13. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  14. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  15. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  16. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  17. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  18. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +0 -25
  19. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  20. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  21. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  22. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  23. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  24. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  25. package/analyzer-template/packages/ui-components/package.json +1 -1
  26. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  27. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  28. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  29. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  30. package/codeyam-cli/src/cli.js +24 -0
  31. package/codeyam-cli/src/cli.js.map +1 -1
  32. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  33. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  34. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  35. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  36. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  37. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  38. package/codeyam-cli/src/commands/editor.js +3077 -509
  39. package/codeyam-cli/src/commands/editor.js.map +1 -1
  40. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  41. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  42. package/codeyam-cli/src/commands/init.js +69 -34
  43. package/codeyam-cli/src/commands/init.js.map +1 -1
  44. package/codeyam-cli/src/commands/telemetry.js +37 -0
  45. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  46. package/codeyam-cli/src/data/techStacks.js +77 -0
  47. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  48. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  49. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  50. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  51. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  52. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +18 -8
  53. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -1
  54. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +2201 -1
  55. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  56. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  57. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  58. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  59. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  60. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  61. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  62. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +152 -3
  63. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -1
  64. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +76 -3
  65. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -1
  66. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  67. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  68. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  69. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  70. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +140 -12
  71. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -1
  72. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +238 -2
  73. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -1
  74. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +202 -1
  75. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -1
  76. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  77. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  78. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +191 -5
  79. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -1
  80. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  81. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  82. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  83. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  84. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +291 -0
  85. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  86. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1437 -2
  87. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  88. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +280 -0
  89. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  90. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  91. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  92. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  93. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  94. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  95. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  96. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +641 -45
  97. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  98. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  99. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  100. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  101. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  102. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  103. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  104. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  105. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  106. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  107. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  108. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +649 -223
  109. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
  110. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +14 -5
  111. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  112. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  113. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  114. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  115. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  116. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  117. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  118. package/codeyam-cli/src/utils/analysisRunner.js +3 -1
  119. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  120. package/codeyam-cli/src/utils/analyzer.js +9 -0
  121. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  122. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  123. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  124. package/codeyam-cli/src/utils/backgroundServer.js +93 -17
  125. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  126. package/codeyam-cli/src/utils/database.js +37 -2
  127. package/codeyam-cli/src/utils/database.js.map +1 -1
  128. package/codeyam-cli/src/utils/editorApi.js +11 -5
  129. package/codeyam-cli/src/utils/editorApi.js.map +1 -1
  130. package/codeyam-cli/src/utils/editorAudit.js +410 -6
  131. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  132. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  133. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  134. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  135. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  136. package/codeyam-cli/src/utils/editorDevServer.js +89 -1
  137. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -1
  138. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +13 -7
  139. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -1
  140. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  141. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  142. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  143. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  144. package/codeyam-cli/src/utils/editorImageVerifier.js +45 -10
  145. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -1
  146. package/codeyam-cli/src/utils/editorJournal.js +78 -3
  147. package/codeyam-cli/src/utils/editorJournal.js.map +1 -1
  148. package/codeyam-cli/src/utils/editorLoaderHelpers.js +72 -1
  149. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -1
  150. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  151. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  152. package/codeyam-cli/src/utils/editorPreview.js +43 -2
  153. package/codeyam-cli/src/utils/editorPreview.js.map +1 -1
  154. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  155. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  156. package/codeyam-cli/src/utils/editorScenarioSwitch.js +134 -0
  157. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  158. package/codeyam-cli/src/utils/editorScenarios.js +488 -0
  159. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  160. package/codeyam-cli/src/utils/editorSeedAdapter.js +422 -0
  161. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  162. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  163. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  164. package/codeyam-cli/src/utils/entityChangeStatus.js +89 -21
  165. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
  166. package/codeyam-cli/src/utils/entityChangeStatus.server.js +97 -8
  167. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  168. package/codeyam-cli/src/utils/fileWatcher.js +38 -0
  169. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  170. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  171. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  172. package/codeyam-cli/src/utils/install-skills.js +14 -0
  173. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  174. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  175. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  176. package/codeyam-cli/src/utils/progress.js +2 -2
  177. package/codeyam-cli/src/utils/progress.js.map +1 -1
  178. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  179. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  180. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  181. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  182. package/codeyam-cli/src/utils/scenariosManifest.js +269 -74
  183. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
  184. package/codeyam-cli/src/utils/serverState.js +30 -0
  185. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  186. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +14 -5
  187. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  188. package/codeyam-cli/src/utils/simulationGateMiddleware.js +17 -1
  189. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -1
  190. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  191. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  192. package/codeyam-cli/src/utils/syncMocksMiddleware.js +2 -2
  193. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  194. package/codeyam-cli/src/utils/telemetry.js +106 -0
  195. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  196. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  197. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  198. package/codeyam-cli/src/utils/webappDetection.js +21 -0
  199. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  200. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  201. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  202. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +80 -0
  203. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  204. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +628 -0
  205. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  206. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +228 -0
  207. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  208. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +79 -0
  209. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  210. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +71 -0
  211. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  212. package/codeyam-cli/src/webserver/app/lib/git.js +3 -2
  213. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -1
  214. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  215. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  216. package/codeyam-cli/src/webserver/backgroundServer.js +60 -61
  217. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  218. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CLe80MMu.js +1 -0
  219. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-C76mRRiF.js → EntityItem-Crt_KN_U.js} +5 -5
  220. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  221. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CobE682z.js → EntityTypeIcon-CD7lGABo.js} +9 -9
  222. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-CgTNOhnu.js +1 -0
  223. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CKeQT5Ty.js +25 -0
  224. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-D3s1MFkb.js +3 -0
  225. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BU_OAEMP.js → LoadingDots-By5zI316.js} +1 -1
  226. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-ceAyBX-H.js → LogViewer-CM5zg40N.js} +3 -3
  227. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-djPLI-WV.js → ReportIssueModal-C2PLkej3.js} +4 -4
  228. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DanvyBPb.js +1 -0
  229. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-ZlRKbhrq.js → ScenarioViewer-DUMfcNVK.js} +3 -3
  230. package/codeyam-cli/src/webserver/build/client/assets/Spinner-D0LgAaSa.js +34 -0
  231. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  232. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BA_Ry-rs.js +1 -0
  233. package/codeyam-cli/src/webserver/build/client/assets/{_index-C96V0n15.js → _index-BAWd-Xjf.js} +4 -4
  234. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BpKzcsJz.js → activity.(_tab)-BOARiB-g.js} +8 -8
  235. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-Duc5hnl7.js → addon-web-links-CHx25PAe.js} +1 -1
  236. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-D9hemwl6.js → agent-transcripts-Bg3e7q4S.js} +7 -7
  237. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  238. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  239. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  240. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  241. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  242. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  243. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  244. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D_nMCFmP.js → book-open-CL-lMgHh.js} +2 -2
  245. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-BH2h1Ea2.js → chevron-down-GmAjGS9-.js} +2 -2
  246. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BAdwhyCx.js +43 -0
  247. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-DyIKORY6.js → circle-check-DFcQkN5j.js} +2 -2
  248. package/codeyam-cli/src/webserver/build/client/assets/{copy-NDbZjXao.js → copy-C6iF61Xs.js} +3 -3
  249. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-4ImjHTVC.js +41 -0
  250. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C8y4mmyv.js +1 -0
  251. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-Gbk_i5Js.js +1 -0
  252. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-CGzKlIHg.js +58 -0
  253. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-oepecPae.js +41 -0
  254. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-DItJnD8s.js → entity._sha._-Blfy9UlN.js} +3 -3
  255. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-KTQuL0aj.js +6 -0
  256. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C6eeL24i.js +6 -0
  257. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DQM8E7L4.js +6 -0
  258. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMvVHNXU.js → entity._sha_.edit._scenarioId-CAoXLsQr.js} +2 -2
  259. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DTvKq3TY.js → entry.client-SuW9syRS.js} +6 -6
  260. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  261. package/codeyam-cli/src/webserver/build/client/assets/files-D-xGrg29.js +1 -0
  262. package/codeyam-cli/src/webserver/build/client/assets/git-Bq_fbXP5.js +1 -0
  263. package/codeyam-cli/src/webserver/build/client/assets/globals-Yn9W3zp3.css +1 -0
  264. package/codeyam-cli/src/webserver/build/client/assets/{index-BcvgDzbZ.js → index-Bp1l4hSv.js} +1 -1
  265. package/codeyam-cli/src/webserver/build/client/assets/{index-10oVnAAH.js → index-CWV9XZiG.js} +1 -1
  266. package/codeyam-cli/src/webserver/build/client/assets/{index-yHOVb4rc.js → index-DE3jI_dv.js} +1 -1
  267. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  268. package/codeyam-cli/src/webserver/build/client/assets/labs-B_IX45ih.js +1 -0
  269. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-BAXYRVEO.js → loader-circle-De-7qQ2u.js} +2 -2
  270. package/codeyam-cli/src/webserver/build/client/assets/manifest-2ef99f38.js +1 -0
  271. package/codeyam-cli/src/webserver/build/client/assets/memory-Cx2xEx7s.js +101 -0
  272. package/codeyam-cli/src/webserver/build/client/assets/{pause-DTAcYxBt.js → pause-CFxEKL1u.js} +3 -3
  273. package/codeyam-cli/src/webserver/build/client/assets/root-BxUQigda.js +67 -0
  274. package/codeyam-cli/src/webserver/build/client/assets/{search-fKo7v0Zo.js → search-BdBb5aqc.js} +2 -2
  275. package/codeyam-cli/src/webserver/build/client/assets/settings-DdE-Untf.js +1 -0
  276. package/codeyam-cli/src/webserver/build/client/assets/simulations-DSCdE99u.js +1 -0
  277. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BG4heKCG.js → terminal-CrplD4b1.js} +3 -3
  278. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-DtSmdtM4.js → triangle-alert-DqJ0j69l.js} +2 -2
  279. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-DhXHbEjP.js +1 -0
  280. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-C14nCb1q.js → useLastLogLine-BNd5hYuW.js} +1 -1
  281. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-Cy5Qg_UR.js +1 -0
  282. package/codeyam-cli/src/webserver/build/client/assets/useToast-5HR2j9ZE.js +1 -0
  283. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  284. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-BPmOG9bE.js +13 -0
  285. package/codeyam-cli/src/webserver/build/server/assets/index-Cd-ufawF.js +1 -0
  286. package/codeyam-cli/src/webserver/build/server/assets/init-CzeBGOto.js +10 -0
  287. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  288. package/codeyam-cli/src/webserver/build/server/assets/server-build-Dht7CKXY.js +552 -0
  289. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  290. package/codeyam-cli/src/webserver/build-info.json +5 -5
  291. package/codeyam-cli/src/webserver/editorProxy.js +586 -17
  292. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  293. package/codeyam-cli/src/webserver/idleDetector.js +106 -0
  294. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  295. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  296. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  297. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  298. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +21 -3
  299. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +130 -4
  300. package/codeyam-cli/src/webserver/server.js +100 -34
  301. package/codeyam-cli/src/webserver/server.js.map +1 -1
  302. package/codeyam-cli/src/webserver/terminalServer.js +242 -48
  303. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  304. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  305. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  306. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  307. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  308. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  309. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  310. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  311. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  312. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  313. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  314. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  315. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  316. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  317. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  318. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  319. package/codeyam-cli/templates/codeyam-editor-claude.md +86 -5
  320. package/codeyam-cli/templates/codeyam-editor-reference.md +214 -0
  321. package/codeyam-cli/templates/editor-step-hook.py +193 -54
  322. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  323. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  324. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  325. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  326. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  327. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  328. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  329. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  330. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  331. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  332. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  333. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  334. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  335. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  336. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  337. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  338. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  339. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  340. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  341. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  342. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  343. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +9 -4
  344. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  345. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +1 -0
  346. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +2 -1
  347. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +4 -1
  348. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +127 -0
  349. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  350. package/codeyam-cli/templates/{nextjs-prisma-sqlite/PRISMA_SETUP.md → nextjs-prisma-supabase/SUPABASE_SETUP.md} +37 -17
  351. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  352. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  353. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  354. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  355. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  356. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  357. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  358. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  359. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  360. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  361. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  362. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  363. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  364. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  365. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  366. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  367. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  368. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +1 -1
  369. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +90 -9
  370. package/package.json +2 -1
  371. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +101 -0
  372. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  373. package/packages/database/src/lib/loadEntities.js +0 -6
  374. package/packages/database/src/lib/loadEntities.js.map +1 -1
  375. package/packages/database/src/lib/updateCommitMetadata.js +0 -25
  376. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  377. package/packages/types/src/enums/ProjectFramework.js +2 -0
  378. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  379. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DmJveP3T.js +0 -1
  380. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-g3saevPb.js +0 -1
  381. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +0 -1
  382. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +0 -25
  383. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +0 -3
  384. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +0 -1
  385. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +0 -34
  386. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C8OKAR5x.js +0 -1
  387. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +0 -1
  388. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-C4pqxYJB.js +0 -51
  389. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-CMT1jU2q.js +0 -21
  390. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CltMNppm.js +0 -1
  391. package/codeyam-cli/src/webserver/build/client/assets/editor-Rfq_y0VR.js +0 -10
  392. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-GNwaLSmC.js +0 -41
  393. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-CCa2trIL.js +0 -6
  394. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CF164ouH.js +0 -6
  395. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +0 -6
  396. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +0 -1
  397. package/codeyam-cli/src/webserver/build/client/assets/files-DO4CZ16O.js +0 -1
  398. package/codeyam-cli/src/webserver/build/client/assets/git-CdN8sCqs.js +0 -1
  399. package/codeyam-cli/src/webserver/build/client/assets/globals-Bd0cs8vw.css +0 -1
  400. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +0 -1
  401. package/codeyam-cli/src/webserver/build/client/assets/manifest-9ab0aba3.js +0 -1
  402. package/codeyam-cli/src/webserver/build/client/assets/memory-Dg0mvYrI.js +0 -96
  403. package/codeyam-cli/src/webserver/build/client/assets/root-3ciuWk-c.js +0 -67
  404. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +0 -1
  405. package/codeyam-cli/src/webserver/build/client/assets/simulations-B3aOzpCZ.js +0 -1
  406. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-CrAK28Bc.js +0 -1
  407. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +0 -1
  408. package/codeyam-cli/src/webserver/build/client/assets/useToast-9FIWuYfK.js +0 -1
  409. package/codeyam-cli/src/webserver/build/server/assets/index-DCxIbVvl.js +0 -1
  410. package/codeyam-cli/src/webserver/build/server/assets/server-build-E-peu3XZ.js +0 -367
@@ -4,6 +4,7 @@
4
4
  * Cross-references glossary entries against registered scenarios (components)
5
5
  * and test files (functions) to detect gaps Claude may have missed.
6
6
  */
7
+ import { isIsolationUrl, } from "./entityChangeStatus.js";
7
8
  // ─── Logic ───────────────────────────────────────────────────────────
8
9
  const COMPONENT_RETURN_PATTERNS = ['JSX', 'React', 'Element', 'ReactNode'];
9
10
  /**
@@ -39,14 +40,38 @@ export function classifyGlossaryEntries(entries) {
39
40
  * @param scenarioCounts - Map of component_name → number of registered scenarios
40
41
  * @param testFileExistence - Map of testFile path → whether the file exists on disk
41
42
  */
42
- export function computeAudit({ components, functions, scenarioCounts, testFileExistence, testResults, }) {
43
+ export function computeAudit({ components, functions, scenarioCounts, testFileExistence, testResults, clientErrors, totalScenarioCounts, entityChangeStatus, }) {
43
44
  const componentResults = components.map((c) => {
44
45
  const count = scenarioCounts[c.name] || 0;
46
+ const totalCount = totalScenarioCounts?.[c.name] || 0;
47
+ const changeStatus = entityChangeStatus?.[c.name];
48
+ const errors = clientErrors?.[c.name];
49
+ const hasErrors = count > 0 && errors && errors.length > 0;
50
+ let status;
51
+ if (count === 0) {
52
+ // Entities with existing scenarios from prior sessions don't need
53
+ // new scenarios — they need recapture. This applies to both "edited"
54
+ // and "impacted" entities: an edited page may not have been re-registered
55
+ // this session, and an impacted page's dependency changed.
56
+ if (changeStatus && totalCount > 0) {
57
+ status = 'needs_recapture';
58
+ }
59
+ else {
60
+ status = 'missing';
61
+ }
62
+ }
63
+ else if (hasErrors) {
64
+ status = 'has_errors';
65
+ }
66
+ else {
67
+ status = 'ok';
68
+ }
45
69
  return {
46
70
  name: c.name,
47
71
  filePath: c.filePath,
48
- scenarioCount: count,
49
- status: count > 0 ? 'ok' : 'missing',
72
+ scenarioCount: status === 'needs_recapture' ? totalCount : count,
73
+ status,
74
+ ...(hasErrors ? { clientErrors: errors } : {}),
50
75
  };
51
76
  });
52
77
  const functionResults = functions.map((f) => {
@@ -75,7 +100,10 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
75
100
  };
76
101
  }
77
102
  let status;
78
- if (!tr.passing) {
103
+ if (!tr.passing && tr.errorMessage) {
104
+ status = 'runner_error';
105
+ }
106
+ else if (!tr.passing) {
79
107
  status = 'failing';
80
108
  }
81
109
  else if (!tr.hasEntityNameDescribe) {
@@ -92,12 +120,16 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
92
120
  testsPassing: tr.passing,
93
121
  testsVisibleInUi: tr.hasEntityNameDescribe,
94
122
  status,
123
+ ...(tr.errorMessage ? { errorMessage: tr.errorMessage } : {}),
95
124
  };
96
125
  });
97
- const componentsOk = componentResults.filter((c) => c.status === 'ok').length;
98
- const componentsMissing = componentResults.length - componentsOk;
126
+ const componentsOk = componentResults.filter((c) => c.status === 'ok' || c.status === 'needs_recapture').length;
127
+ const componentsWithErrors = componentResults.filter((c) => c.status === 'has_errors').length;
128
+ const componentsMissing = componentResults.filter((c) => c.status === 'missing').length;
129
+ const componentsNeedingRecapture = componentResults.filter((c) => c.status === 'needs_recapture').length;
99
130
  const functionsOk = functionResults.filter((f) => f.status === 'ok').length;
100
131
  const functionsFailing = functionResults.filter((f) => f.status === 'failing').length;
132
+ const functionsRunnerError = functionResults.filter((f) => f.status === 'runner_error').length;
101
133
  const functionsNameMismatch = functionResults.filter((f) => f.status === 'name_mismatch').length;
102
134
  const functionsMissing = functionResults.filter((f) => f.status === 'missing').length;
103
135
  return {
@@ -107,16 +139,388 @@ export function computeAudit({ components, functions, scenarioCounts, testFileEx
107
139
  totalComponents: componentResults.length,
108
140
  componentsOk,
109
141
  componentsMissing,
142
+ componentsWithErrors,
143
+ componentsNeedingRecapture,
110
144
  totalFunctions: functionResults.length,
111
145
  functionsOk,
112
146
  functionsMissing,
113
147
  functionsFailing,
148
+ functionsRunnerError,
114
149
  functionsNameMismatch,
115
150
  allPassing: componentsMissing === 0 &&
151
+ componentsWithErrors === 0 &&
116
152
  functionsFailing === 0 &&
153
+ functionsRunnerError === 0 &&
117
154
  functionsNameMismatch === 0 &&
118
155
  functionsMissing === 0,
119
156
  },
120
157
  };
121
158
  }
159
+ /**
160
+ * Returns true when the audit failure can be auto-fixed by running
161
+ * analyze-imports: incomplete entities are the only issue AND we haven't
162
+ * already tried (to prevent infinite retry loops when analysis has errors).
163
+ */
164
+ export function isAutoRemediable(summary, alreadyAttempted) {
165
+ if (alreadyAttempted)
166
+ return false;
167
+ if (!summary.incompleteEntities || summary.incompleteEntities === 0)
168
+ return false;
169
+ return isOnlyIncompleteEntities(summary);
170
+ }
171
+ /**
172
+ * Returns true when incompleteEntities is the ONLY audit failure —
173
+ * all other failure counts are zero. Used to decide whether auto-running
174
+ * analyze-imports can fix the audit without manual intervention.
175
+ */
176
+ export function isOnlyIncompleteEntities(summary) {
177
+ return ((summary.componentsMissing ?? 0) === 0 &&
178
+ (summary.componentsWithErrors ?? 0) === 0 &&
179
+ (summary.functionsFailing ?? 0) === 0 &&
180
+ (summary.functionsNameMismatch ?? 0) === 0 &&
181
+ (summary.functionsMissing ?? 0) === 0 &&
182
+ (summary.missingFromGlossary ?? 0) === 0 &&
183
+ (summary.miscategorizedScenarios ?? 0) === 0 &&
184
+ (summary.scenariosNeedingRecapture ?? 0) === 0);
185
+ }
186
+ /**
187
+ * Ensures the two audit filters — glossary scoping and scenario-count scoping —
188
+ * are consistent. When entityChangeStatus is empty/undefined (meaning the glossary
189
+ * will fall back to "audit all entries"), we must also drop the featureStartedAt
190
+ * filter so scenario counts include ALL scenarios, not just the current session.
191
+ *
192
+ * Without this, Feature 1 components get audited but their scenarios (created before
193
+ * the current feature session) aren't counted, causing false "no scenarios" failures.
194
+ */
195
+ export function resolveAuditSessionScope({ featureStartedAt, entityChangeStatus, }) {
196
+ const hasChangeStatus = entityChangeStatus && Object.keys(entityChangeStatus).length > 0;
197
+ if (!hasChangeStatus) {
198
+ // Glossary will include all entries — scenario counts must also include all
199
+ return { featureStartedAt: null, entityChangeStatus };
200
+ }
201
+ return { featureStartedAt, entityChangeStatus };
202
+ }
203
+ /**
204
+ * Filter glossary entries to only those whose entities are new, edited, or impacted
205
+ * in the current working session. When entityChangeStatus is empty or undefined,
206
+ * falls back to returning all entries (no filtering).
207
+ *
208
+ * Matches by entity name first, then by filePath as a fallback.
209
+ */
210
+ export function filterGlossaryByChangeStatus(entries, entityChangeStatus) {
211
+ if (!entityChangeStatus || Object.keys(entityChangeStatus).length === 0) {
212
+ return entries;
213
+ }
214
+ return entries.filter((entry) => {
215
+ // Match by entity name
216
+ if (entityChangeStatus[entry.name])
217
+ return true;
218
+ // Match by file path (entity names in changeStatus may be file-path keyed)
219
+ if (entityChangeStatus[entry.filePath])
220
+ return true;
221
+ return false;
222
+ });
223
+ }
224
+ /**
225
+ * Find entities that have scenarios but no analysis records.
226
+ * These entities need `codeyam editor analyze-imports` to run.
227
+ *
228
+ * Optionally scoped to the current feature session via featureStartedAt.
229
+ */
230
+ export async function queryIncompleteEntities(db, projectId, featureStartedAt) {
231
+ // Step 1: Get distinct entity SHAs from scenarios (with counts)
232
+ // No time filter — we check ALL scenarios to catch entities whose
233
+ // scenario SHAs were updated mid-session without touching updated_at.
234
+ const scenarioQuery = db
235
+ .selectFrom('editor_scenarios')
236
+ .select(['entity_sha'])
237
+ .select(db.fn.count('id').as('count'))
238
+ .where('project_id', '=', projectId)
239
+ .where('entity_sha', 'is not', null)
240
+ .groupBy('entity_sha');
241
+ const scenarioRows = await scenarioQuery.execute();
242
+ if (scenarioRows.length === 0)
243
+ return [];
244
+ const scenarioShas = scenarioRows.map((r) => r.entity_sha);
245
+ // Step 2: Get entity SHAs that have analyses
246
+ const analysisRows = await db
247
+ .selectFrom('analyses')
248
+ .select('entity_sha')
249
+ .where('entity_sha', 'in', scenarioShas)
250
+ .groupBy('entity_sha')
251
+ .execute();
252
+ const analyzedShas = new Set(analysisRows.map((r) => r.entity_sha));
253
+ // Step 3: Find scenario entity SHAs without direct analyses
254
+ const incompleteShas = scenarioRows.filter((r) => !analyzedShas.has(r.entity_sha));
255
+ if (incompleteShas.length === 0)
256
+ return [];
257
+ // Step 4: Look up entity names for incomplete SHAs
258
+ const incompleteShalist = incompleteShas.map((r) => r.entity_sha);
259
+ const entityRows = await db
260
+ .selectFrom('entities')
261
+ .select(['sha', 'name', 'file_path'])
262
+ .where('sha', 'in', incompleteShalist)
263
+ .execute();
264
+ const entityNameMap = new Map(entityRows.map((r) => [r.sha, r.name]));
265
+ // Step 4.5: Check for inherited analyses from sibling entity versions.
266
+ // A new entity version (created by the file watcher) may not have direct
267
+ // analyses, but an older version (same name+filePath) might. This matches
268
+ // getAllEntities() behavior which inherits analyses across versions.
269
+ // IMPORTANT: Must match by name+filePath, not name alone. When a component
270
+ // is extracted to a new file, the old version (different filePath) may have
271
+ // analyses but getAllEntities() won't inherit across different file paths.
272
+ const entityFilePathMap = new Map(entityRows.map((r) => [r.sha, r.file_path]));
273
+ const entityKeys = [
274
+ ...new Set(entityRows
275
+ .map((r) => `${r.name}::${r.file_path}`)
276
+ .filter((k) => !k.startsWith('::') && !k.endsWith('::'))),
277
+ ];
278
+ let keysWithInheritedAnalyses = new Set();
279
+ if (entityKeys.length > 0) {
280
+ // We need to find entities that share name+filePath AND have analyses.
281
+ // Since Kysely doesn't support WHERE (name || '::' || file_path) IN (...),
282
+ // query by the entity names and filter by filePath in JS.
283
+ const entityNames = [
284
+ ...new Set(entityRows.map((r) => r.name).filter(Boolean)),
285
+ ];
286
+ const siblingRows = await db
287
+ .selectFrom('entities')
288
+ .innerJoin('analyses', 'analyses.entity_sha', 'entities.sha')
289
+ .select(['entities.name', 'entities.file_path'])
290
+ .where('entities.name', 'in', entityNames)
291
+ .groupBy(['entities.name', 'entities.file_path'])
292
+ .execute();
293
+ keysWithInheritedAnalyses = new Set(siblingRows.map((r) => `${r.name}::${r.file_path}`));
294
+ }
295
+ // Filter out entities that have inherited analyses (same name+filePath)
296
+ const trulyIncompleteShas = incompleteShas.filter((r) => {
297
+ const sha = r.entity_sha;
298
+ const name = entityNameMap.get(sha);
299
+ const filePath = entityFilePathMap.get(sha);
300
+ if (!name)
301
+ return true; // No entity record — keep as incomplete
302
+ const key = `${name}::${filePath}`;
303
+ return !keysWithInheritedAnalyses.has(key);
304
+ });
305
+ if (trulyIncompleteShas.length === 0)
306
+ return [];
307
+ const trulyIncompleteShalist = trulyIncompleteShas.map((r) => r.entity_sha);
308
+ // Step 5: Also get component_name from scenarios as fallback for name
309
+ const scenarioNameRows = await db
310
+ .selectFrom('editor_scenarios')
311
+ .select(['entity_sha', 'component_name'])
312
+ .where('project_id', '=', projectId)
313
+ .where('entity_sha', 'in', trulyIncompleteShalist)
314
+ .where('component_name', 'is not', null)
315
+ .groupBy('entity_sha')
316
+ .execute();
317
+ const scenarioNameMap = new Map(scenarioNameRows.map((r) => [
318
+ r.entity_sha,
319
+ r.component_name,
320
+ ]));
321
+ // Step 6: Determine preExisting flag — if featureStartedAt is provided,
322
+ // check which entity SHAs have at least one scenario created/updated
323
+ // during the session. Those without any are pre-existing issues.
324
+ let sessionShas = new Set();
325
+ if (featureStartedAt) {
326
+ const sqliteTimestamp = featureStartedAt
327
+ .replace('T', ' ')
328
+ .replace(/\.\d{3}Z$/, '');
329
+ const sessionRows = await db
330
+ .selectFrom('editor_scenarios')
331
+ .select('entity_sha')
332
+ .where('project_id', '=', projectId)
333
+ .where('entity_sha', 'in', trulyIncompleteShalist)
334
+ .where((eb) => eb.or([
335
+ eb('created_at', '>=', sqliteTimestamp),
336
+ eb('updated_at', '>=', sqliteTimestamp),
337
+ ]))
338
+ .groupBy('entity_sha')
339
+ .execute();
340
+ sessionShas = new Set(sessionRows.map((r) => r.entity_sha));
341
+ }
342
+ return trulyIncompleteShas.map((r) => {
343
+ const sha = r.entity_sha;
344
+ return {
345
+ entitySha: sha,
346
+ name: entityNameMap.get(sha) || scenarioNameMap.get(sha) || 'Unknown',
347
+ scenarioCount: Number(r.count),
348
+ preExisting: featureStartedAt ? !sessionShas.has(sha) : false,
349
+ };
350
+ });
351
+ }
352
+ /**
353
+ * Find component scenarios that use non-isolation URLs.
354
+ *
355
+ * Component scenarios should always use `/isolated-components/...` URLs.
356
+ * When a component scenario points at a real page URL (e.g., `/library`),
357
+ * it's miscategorized — it should either be an application scenario
358
+ * (no componentName, with pageFilePath) or use an isolation route.
359
+ *
360
+ * Optionally scoped to the current feature session via featureStartedAt.
361
+ */
362
+ export async function queryMiscategorizedScenarios(db, projectId, featureStartedAt) {
363
+ let query = db
364
+ .selectFrom('editor_scenarios')
365
+ .select(['component_name', 'name', 'url'])
366
+ .where('project_id', '=', projectId)
367
+ .where('component_name', 'is not', null)
368
+ .where('url', 'is not', null);
369
+ if (featureStartedAt) {
370
+ const sqliteTimestamp = featureStartedAt
371
+ .replace('T', ' ')
372
+ .replace(/\.\d{3}Z$/, '');
373
+ query = query.where((eb) => eb.or([
374
+ eb('created_at', '>=', sqliteTimestamp),
375
+ eb('updated_at', '>=', sqliteTimestamp),
376
+ ]));
377
+ }
378
+ const rows = await query.execute();
379
+ // Filter to only rows where URL is NOT an isolation route
380
+ const miscategorized = rows.filter((r) => r.url && !isIsolationUrl(r.url));
381
+ if (miscategorized.length === 0)
382
+ return [];
383
+ // Group by (component_name, url)
384
+ const groups = new Map();
385
+ for (const row of miscategorized) {
386
+ const key = `${row.component_name}::${row.url}`;
387
+ const existing = groups.get(key);
388
+ if (existing) {
389
+ existing.scenarioNames.push(row.name);
390
+ }
391
+ else {
392
+ groups.set(key, {
393
+ componentName: row.component_name,
394
+ scenarioNames: [row.name],
395
+ url: row.url,
396
+ });
397
+ }
398
+ }
399
+ return [...groups.values()];
400
+ }
401
+ /**
402
+ * Query scenario counts per component, optionally scoped to the current
403
+ * feature session via featureStartedAt.
404
+ *
405
+ * A scenario belongs to the current session if it was created OR updated
406
+ * after featureStartedAt — re-registering a scenario during a new feature
407
+ * session updates `updated_at` but preserves the original `created_at`.
408
+ */
409
+ export async function queryScenarioCounts(db, projectId, featureStartedAt) {
410
+ let query = db
411
+ .selectFrom('editor_scenarios')
412
+ .select(['component_name'])
413
+ .select(db.fn.count('id').as('count'))
414
+ .where('project_id', '=', projectId)
415
+ .where('component_name', 'is not', null)
416
+ .groupBy('component_name');
417
+ if (featureStartedAt) {
418
+ const sqliteTimestamp = featureStartedAt
419
+ .replace('T', ' ')
420
+ .replace(/\.\d{3}Z$/, '');
421
+ query = query.where((eb) => eb.or([
422
+ eb('created_at', '>=', sqliteTimestamp),
423
+ eb('updated_at', '>=', sqliteTimestamp),
424
+ ]));
425
+ }
426
+ const rows = await query.execute();
427
+ const counts = {};
428
+ for (const row of rows) {
429
+ if (row.component_name) {
430
+ counts[row.component_name] = Number(row.count);
431
+ }
432
+ }
433
+ return counts;
434
+ }
435
+ /**
436
+ * Query scenario counts per page file path for app-level scenarios.
437
+ *
438
+ * App-level scenarios have `component_name = null` and are linked to pages
439
+ * via `page_file_path`. This mirrors `queryScenarioCounts` but groups by
440
+ * `page_file_path` instead of `component_name`.
441
+ */
442
+ export async function queryPageScenarioCounts(db, projectId, featureStartedAt) {
443
+ let query = db
444
+ .selectFrom('editor_scenarios')
445
+ .select(['page_file_path'])
446
+ .select(db.fn.count('id').as('count'))
447
+ .where('project_id', '=', projectId)
448
+ .where('component_name', 'is', null)
449
+ .where('page_file_path', 'is not', null)
450
+ .groupBy('page_file_path');
451
+ if (featureStartedAt) {
452
+ const sqliteTimestamp = featureStartedAt
453
+ .replace('T', ' ')
454
+ .replace(/\.\d{3}Z$/, '');
455
+ query = query.where((eb) => eb.or([
456
+ eb('created_at', '>=', sqliteTimestamp),
457
+ eb('updated_at', '>=', sqliteTimestamp),
458
+ ]));
459
+ }
460
+ const rows = await query.execute();
461
+ const counts = {};
462
+ for (const row of rows) {
463
+ if (row.page_file_path) {
464
+ counts[row.page_file_path] = Number(row.count);
465
+ }
466
+ }
467
+ return counts;
468
+ }
469
+ // ─── Duplicate Name Detection ─────────────────────────────────────────
470
+ /**
471
+ * Detect glossary entries that share the same `name`.
472
+ *
473
+ * Returns a Map of name → entries[] for names that appear more than once.
474
+ * Single-occurrence names are excluded. Used to warn Claude that ambiguous
475
+ * names will make audit output confusing (e.g., three entries all named "Page").
476
+ */
477
+ export function detectDuplicateNames(entries) {
478
+ const groups = new Map();
479
+ for (const entry of entries) {
480
+ const existing = groups.get(entry.name);
481
+ if (existing)
482
+ existing.push(entry);
483
+ else
484
+ groups.set(entry.name, [entry]);
485
+ }
486
+ // Only return groups with duplicates
487
+ for (const [name, group] of groups) {
488
+ if (group.length <= 1)
489
+ groups.delete(name);
490
+ }
491
+ return groups;
492
+ }
493
+ /**
494
+ * Identify scenarios that need recapture because their entity (or an entity
495
+ * in their dependency tree) has changed.
496
+ *
497
+ * Each scenario's entity name is resolved from its entity_sha (which points
498
+ * to the default export for app-level scenarios). The caller joins
499
+ * editor_scenarios.entity_sha → entities.name before calling this function.
500
+ *
501
+ * A scenario needs recapture when its entity has status 'edited' or 'impacted'
502
+ * AND the scenario was NOT re-registered in the current feature session.
503
+ */
504
+ export function identifyScenariosNeedingRecapture(params) {
505
+ const { scenarios, entityChangeStatus } = params;
506
+ if (!entityChangeStatus || Object.keys(entityChangeStatus).length === 0) {
507
+ return [];
508
+ }
509
+ const result = [];
510
+ for (const scenario of scenarios) {
511
+ if (scenario.updatedInSession)
512
+ continue;
513
+ if (!scenario.entityName)
514
+ continue;
515
+ const changeStatus = entityChangeStatus[scenario.entityName];
516
+ if (!changeStatus)
517
+ continue;
518
+ result.push({
519
+ scenarioName: scenario.name,
520
+ entityName: scenario.entityName,
521
+ status: changeStatus,
522
+ });
523
+ }
524
+ return result;
525
+ }
122
526
  //# sourceMappingURL=editorAudit.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editorAudit.js","sourceRoot":"","sources":["../../../../src/utils/editorAudit.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editorAudit.js","sourceRoot":"","sources":["../../../../src/utils/editorAudit.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ import { broadcastSetViewport, broadcastPreviewRefresh, } from "../webserver/terminalServer.js";
2
+ /**
3
+ * Broadcast viewport change THEN preview refresh.
4
+ *
5
+ * Order matters: the browser must resize the iframe before it starts
6
+ * reloading, otherwise the content renders at the wrong viewport size.
7
+ * Both the preview endpoint and register endpoint need this sequence.
8
+ */
9
+ export function broadcastViewportThenRefresh(opts) {
10
+ // 1. Set viewport (only when a named dimension is present)
11
+ if (opts.dimension) {
12
+ try {
13
+ broadcastSetViewport({
14
+ name: opts.dimension,
15
+ width: opts.viewport.width,
16
+ height: opts.viewport.height,
17
+ });
18
+ }
19
+ catch {
20
+ // Non-critical — viewport broadcast failure shouldn't block refresh
21
+ }
22
+ }
23
+ // 2. Refresh preview iframe
24
+ broadcastPreviewRefresh(opts.refreshPath, opts.scenarioId);
25
+ }
26
+ //# sourceMappingURL=editorBroadcastViewport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorBroadcastViewport.js","sourceRoot":"","sources":["../../../../src/utils/editorBroadcastViewport.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,UAAU,4BAA4B,CAAC,IAK5C;IACC,2DAA2D;IAC3D,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,IAAI,CAAC;YACH,oBAAoB,CAAC;gBACnB,IAAI,EAAE,IAAI,CAAC,SAAS;gBACpB,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;gBAC1B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;aAC7B,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC;YACP,oEAAoE;QACtE,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,uBAAuB,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;AAC7D,CAAC"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * CLI wrapper for deleting a scenario via the editor API.
3
+ *
4
+ * Looks up the scenario name from the editor-scenarios endpoint,
5
+ * then calls the delete-scenario endpoint to remove it.
6
+ */
7
+ /**
8
+ * Delete a scenario by ID via the running editor server.
9
+ *
10
+ * 1. Fetches scenario list to resolve the scenario name (for user feedback)
11
+ * 2. Calls the delete-scenario API
12
+ */
13
+ export async function deleteScenarioViaCli(scenarioId, port) {
14
+ const baseUrl = `http://localhost:${port}`;
15
+ // Step 1: Look up the scenario to confirm it exists and get its name
16
+ let scenarios;
17
+ try {
18
+ const listRes = await fetch(`${baseUrl}/api/editor-scenarios`);
19
+ if (!listRes.ok) {
20
+ return {
21
+ success: false,
22
+ message: `Failed to fetch scenarios (HTTP ${listRes.status})`,
23
+ };
24
+ }
25
+ const data = await listRes.json();
26
+ scenarios = data.scenarios;
27
+ }
28
+ catch (err) {
29
+ return {
30
+ success: false,
31
+ message: `Could not reach the CodeYam server. Is it running? (${err instanceof Error ? err.message : String(err)})`,
32
+ };
33
+ }
34
+ const scenario = scenarios.find((s) => s.id === scenarioId);
35
+ if (!scenario) {
36
+ return {
37
+ success: false,
38
+ message: `Scenario "${scenarioId}" not found. Use \`codeyam editor scenarios\` to list available scenarios.`,
39
+ };
40
+ }
41
+ // Step 2: Delete the scenario
42
+ try {
43
+ const deleteRes = await fetch(`${baseUrl}/api/delete-scenario`, {
44
+ method: 'POST',
45
+ headers: { 'Content-Type': 'application/json' },
46
+ body: JSON.stringify({ scenarioId }),
47
+ });
48
+ if (!deleteRes.ok) {
49
+ return {
50
+ success: false,
51
+ message: `Failed to delete scenario (HTTP ${deleteRes.status})`,
52
+ };
53
+ }
54
+ return {
55
+ success: true,
56
+ scenarioName: scenario.name,
57
+ message: `Deleted scenario "${scenario.name}" (${scenarioId})`,
58
+ };
59
+ }
60
+ catch (err) {
61
+ return {
62
+ success: false,
63
+ message: `Failed to delete scenario: ${err instanceof Error ? err.message : String(err)}`,
64
+ };
65
+ }
66
+ }
67
+ //# sourceMappingURL=editorDeleteScenario.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorDeleteScenario.js","sourceRoot":"","sources":["../../../../src/utils/editorDeleteScenario.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,UAAkB,EAClB,IAAY;IAEZ,MAAM,OAAO,GAAG,oBAAoB,IAAI,EAAE,CAAC;IAE3C,qEAAqE;IACrE,IAAI,SAAuE,CAAC;IAC5E,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,uBAAuB,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YAChB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,mCAAmC,OAAO,CAAC,MAAM,GAAG;aAC9D,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,IAAI,EAAE,CAAC;QAClC,SAAS,GAAI,IAAwC,CAAC,SAAS,CAAC;IAClE,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,uDAAuD,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG;SACpH,CAAC;IACJ,CAAC;IAED,MAAM,QAAQ,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAC;IAC5D,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,aAAa,UAAU,4EAA4E;SAC7G,CAAC;IACJ,CAAC;IAED,8BAA8B;IAC9B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,GAAG,OAAO,sBAAsB,EAAE;YAC9D,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;SACrC,CAAC,CAAC;QAEH,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC;YAClB,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,OAAO,EAAE,mCAAmC,SAAS,CAAC,MAAM,GAAG;aAChE,CAAC;QACJ,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,QAAQ,CAAC,IAAI;YAC3B,OAAO,EAAE,qBAAqB,QAAQ,CAAC,IAAI,MAAM,UAAU,GAAG;SAC/D,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,OAAO,EAAE,8BAA8B,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;SAC1F,CAAC;IACJ,CAAC;AACH,CAAC"}