@codeyam/codeyam-cli 0.1.0-staging.c276166 → 0.1.0-staging.c85943e

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 (211) 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 +2 -2
  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 +42 -16
  8. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +3 -1
  9. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -1
  10. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +44 -16
  11. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  12. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +11 -0
  13. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -1
  14. package/codeyam-cli/src/commands/editor.js +1202 -219
  15. package/codeyam-cli/src/commands/editor.js.map +1 -1
  16. package/codeyam-cli/src/commands/init.js +1 -0
  17. package/codeyam-cli/src/commands/init.js.map +1 -1
  18. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +18 -8
  19. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -1
  20. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +977 -1
  21. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -1
  22. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  23. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  24. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  25. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  26. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +6 -3
  27. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -1
  28. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +261 -0
  29. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  30. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +75 -1
  31. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -1
  32. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  33. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  34. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +471 -17
  35. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -1
  36. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +67 -0
  37. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -1
  38. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  39. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  40. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  41. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  42. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  43. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  44. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +125 -10
  45. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -1
  46. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  47. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  48. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +40 -1
  49. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -1
  50. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +1 -0
  51. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  52. package/codeyam-cli/src/utils/analysisRunner.js +3 -1
  53. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  54. package/codeyam-cli/src/utils/editorApi.js +11 -5
  55. package/codeyam-cli/src/utils/editorApi.js.map +1 -1
  56. package/codeyam-cli/src/utils/editorAudit.js +167 -0
  57. package/codeyam-cli/src/utils/editorAudit.js.map +1 -1
  58. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  59. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  60. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  61. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  62. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +1 -1
  63. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -1
  64. package/codeyam-cli/src/utils/editorEntityHelpers.js +129 -0
  65. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  66. package/codeyam-cli/src/utils/editorLoaderHelpers.js +40 -1
  67. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -1
  68. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  69. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  70. package/codeyam-cli/src/utils/editorScenarios.js +175 -2
  71. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -1
  72. package/codeyam-cli/src/utils/editorSeedAdapter.js +253 -4
  73. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -1
  74. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  75. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  76. package/codeyam-cli/src/utils/entityChangeStatus.js +19 -2
  77. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -1
  78. package/codeyam-cli/src/utils/entityChangeStatus.server.js +41 -3
  79. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -1
  80. package/codeyam-cli/src/utils/fileWatcher.js +38 -0
  81. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  82. package/codeyam-cli/src/utils/install-skills.js +9 -0
  83. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  84. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  85. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  86. package/codeyam-cli/src/utils/scenarioCoverage.js +8 -9
  87. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -1
  88. package/codeyam-cli/src/utils/scenariosManifest.js +18 -10
  89. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -1
  90. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +1 -0
  91. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  92. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  93. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  94. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +33 -0
  95. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -1
  96. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  97. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  98. package/codeyam-cli/src/webserver/backgroundServer.js +18 -4
  99. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  100. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CzTDWkF2.js +1 -0
  101. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-BcgbViKV.js → EntityItem-BFbq6iFk.js} +3 -3
  102. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  103. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CQIG2qda.js → EntityTypeIcon-B6OMi58N.js} +1 -1
  104. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-DuYodzo1.js +1 -0
  105. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CXo9EeCl.js +25 -0
  106. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DYCNb2It.js +3 -0
  107. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BU_OAEMP.js → LoadingDots-By5zI316.js} +1 -1
  108. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-ceAyBX-H.js → LogViewer-CZgY3sxX.js} +3 -3
  109. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzHcG7SE.js → ReportIssueModal-CnYYwRDw.js} +2 -2
  110. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CDoF7ZpU.js +1 -0
  111. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-TSD3C211.js → ScenarioViewer-DrnfvaLL.js} +3 -3
  112. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Df3UCi8k.js +34 -0
  113. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  114. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-DRKR9T0U.js +1 -0
  115. package/codeyam-cli/src/webserver/build/client/assets/{_index-DLxKhri3.js → _index-ClR-g3tY.js} +2 -2
  116. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BcY3q6nt.js → activity.(_tab)-DTH6ydEA.js} +3 -3
  117. package/codeyam-cli/src/webserver/build/client/assets/{addon-web-links-Duc5hnl7.js → addon-web-links-74hnHF59.js} +1 -1
  118. package/codeyam-cli/src/webserver/build/client/assets/{agent-transcripts-Bni3iiUj.js → agent-transcripts-B8CYhCO9.js} +3 -3
  119. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  120. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  121. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  122. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  123. package/codeyam-cli/src/webserver/build/client/assets/{book-open-BYOypzCa.js → book-open-CLaoh4ac.js} +1 -1
  124. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-C_Pmso5S.js → chevron-down-BZ2DZxbW.js} +1 -1
  125. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-C4pqxYJB.js → chunk-JZWAC4HX-BBXArFPl.js} +13 -21
  126. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BVMi9VA5.js → circle-check-CT4unAk-.js} +1 -1
  127. package/codeyam-cli/src/webserver/build/client/assets/{copy-n2FB0_Sw.js → copy-zK0B6Nu-.js} +1 -1
  128. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-CC6AbExI.js → createLucideIcon-DJB0YQJL.js} +1 -1
  129. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CkXFP_i-.js +1 -0
  130. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +1 -0
  131. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DmBK1JBK.js +58 -0
  132. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DBa7T2FK.js +41 -0
  133. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-DwCV5__E.js → entity._sha._-BqAN7hyG.js} +2 -2
  134. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-BOi8kpwd.js +6 -0
  135. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js +6 -0
  136. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CJX6kkkV.js +6 -0
  137. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BMvVHNXU.js → entity._sha_.edit._scenarioId-BhVjZhKg.js} +2 -2
  138. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-DTvKq3TY.js → entry.client-_gzKltPN.js} +6 -6
  139. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  140. package/codeyam-cli/src/webserver/build/client/assets/files-CV_17tZS.js +1 -0
  141. package/codeyam-cli/src/webserver/build/client/assets/git-D-YXmMbR.js +1 -0
  142. package/codeyam-cli/src/webserver/build/client/assets/globals-CGrDAxj0.css +1 -0
  143. package/codeyam-cli/src/webserver/build/client/assets/{index-yHOVb4rc.js → index-Blo6EK8G.js} +1 -1
  144. package/codeyam-cli/src/webserver/build/client/assets/{index-10oVnAAH.js → index-BsX0F-9C.js} +1 -1
  145. package/codeyam-cli/src/webserver/build/client/assets/{index-BcvgDzbZ.js → index-CCrgCshv.js} +1 -1
  146. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  147. package/codeyam-cli/src/webserver/build/client/assets/labs-Byazq8Pv.js +1 -0
  148. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-DaAZ_H2w.js → loader-circle-DVQ0oHR7.js} +1 -1
  149. package/codeyam-cli/src/webserver/build/client/assets/manifest-b3f77062.js +1 -0
  150. package/codeyam-cli/src/webserver/build/client/assets/{memory-9gnxSZlb.js → memory-b-VmA2Vj.js} +2 -2
  151. package/codeyam-cli/src/webserver/build/client/assets/{pause-f5-1lKBt.js → pause-DGcndCAa.js} +1 -1
  152. package/codeyam-cli/src/webserver/build/client/assets/{root-20m9-3-z.js → root-D5Zi3U2Z.js} +4 -4
  153. package/codeyam-cli/src/webserver/build/client/assets/{search-Di64LWVb.js → search-C0Uw0bcK.js} +1 -1
  154. package/codeyam-cli/src/webserver/build/client/assets/settings-OoNgHIfW.js +1 -0
  155. package/codeyam-cli/src/webserver/build/client/assets/simulations-Bcemfu8a.js +1 -0
  156. package/codeyam-cli/src/webserver/build/client/assets/{terminal-Br7MOqts.js → terminal-BgMmG7R9.js} +1 -1
  157. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BLdiCuG-.js → triangle-alert-Cs87hJYK.js} +1 -1
  158. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BR3Rs7JY.js +1 -0
  159. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-C14nCb1q.js → useLastLogLine-BxxP_XF9.js} +1 -1
  160. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BermyNU5.js +1 -0
  161. package/codeyam-cli/src/webserver/build/client/assets/useToast-a_QN_W9_.js +1 -0
  162. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-yTyb36j3.js +13 -0
  163. package/codeyam-cli/src/webserver/build/server/assets/{index-WJ6ysHIA.js → index-Cr7d_IsG.js} +1 -1
  164. package/codeyam-cli/src/webserver/build/server/assets/init-M_wqNAfu.js +10 -0
  165. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  166. package/codeyam-cli/src/webserver/build/server/assets/server-build-_ybRgrlc.js +551 -0
  167. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  168. package/codeyam-cli/src/webserver/build-info.json +5 -5
  169. package/codeyam-cli/src/webserver/editorProxy.js +93 -11
  170. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -1
  171. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  172. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  173. package/codeyam-cli/src/webserver/server.js +52 -43
  174. package/codeyam-cli/src/webserver/server.js.map +1 -1
  175. package/codeyam-cli/src/webserver/terminalServer.js +108 -12
  176. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -1
  177. package/codeyam-cli/templates/editor-step-hook.py +107 -22
  178. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +42 -7
  179. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  180. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +62 -0
  181. package/package.json +1 -1
  182. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +44 -16
  183. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -1
  184. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-BPXZwM4t.js +0 -1
  185. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-g3saevPb.js +0 -1
  186. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +0 -1
  187. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-DYFW3lDD.js +0 -25
  188. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DLeucoVX.js +0 -3
  189. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-BED4B6sP.js +0 -1
  190. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +0 -34
  191. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C8OKAR5x.js +0 -1
  192. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-oAf2Kqsf.js +0 -1
  193. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-Ii3inc0_.js +0 -1
  194. package/codeyam-cli/src/webserver/build/client/assets/editor-CtRVY4nn.js +0 -10
  195. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-CNB06EIa.js +0 -41
  196. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-CXSi2aeZ.js +0 -6
  197. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CHMiAog3.js +0 -6
  198. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +0 -6
  199. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-cPo8LiG3.js +0 -1
  200. package/codeyam-cli/src/webserver/build/client/assets/files-BZrlFE1F.js +0 -1
  201. package/codeyam-cli/src/webserver/build/client/assets/git-DdZcvjGh.js +0 -1
  202. package/codeyam-cli/src/webserver/build/client/assets/globals-DozjVXrE.css +0 -1
  203. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +0 -1
  204. package/codeyam-cli/src/webserver/build/client/assets/manifest-b431cb81.js +0 -1
  205. package/codeyam-cli/src/webserver/build/client/assets/settings-0OrEMU6J.js +0 -1
  206. package/codeyam-cli/src/webserver/build/client/assets/simulations-DWT-CvLy.js +0 -1
  207. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-C-_hOl_g.js +0 -1
  208. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-O-jkvSPx.js +0 -1
  209. package/codeyam-cli/src/webserver/build/client/assets/useToast-9FIWuYfK.js +0 -1
  210. package/codeyam-cli/src/webserver/build/server/assets/init-3Om_In9B.js +0 -10
  211. package/codeyam-cli/src/webserver/build/server/assets/server-build-kfIP9lFK.js +0 -439
@@ -0,0 +1,224 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ /** Extract an array from an object with a known wrapper key (e.g. {"components": [...]}). */
4
+ function extractArrayFromObject(obj) {
5
+ if (!obj || typeof obj !== 'object')
6
+ return [];
7
+ for (const val of Object.values(obj)) {
8
+ if (Array.isArray(val))
9
+ return val;
10
+ }
11
+ return [];
12
+ }
13
+ function getMigrationStatePath(root) {
14
+ return path.join(root, '.codeyam', 'migration-state.json');
15
+ }
16
+ export function readMigrationState(root) {
17
+ const statePath = getMigrationStatePath(root);
18
+ try {
19
+ const content = fs.readFileSync(statePath, 'utf8');
20
+ const raw = JSON.parse(content);
21
+ return sanitizeMigrationState(raw);
22
+ }
23
+ catch {
24
+ return null;
25
+ }
26
+ }
27
+ /**
28
+ * migration-state.json is written by the LLM — fields may be missing
29
+ * despite what the TypeScript types say. Fill in safe defaults.
30
+ */
31
+ function sanitizeMigrationState(raw) {
32
+ const pages = Array.isArray(raw.pages) ? raw.pages : [];
33
+ const sharedComponents = Array.isArray(raw.sharedComponents)
34
+ ? raw.sharedComponents
35
+ : [];
36
+ return {
37
+ status: raw.status || 'surveyed',
38
+ startedAt: raw.startedAt || new Date().toISOString(),
39
+ completedAt: raw.completedAt ?? null,
40
+ currentPageIndex: typeof raw.currentPageIndex === 'number' ? raw.currentPageIndex : 0,
41
+ pages: pages.map((p) => ({
42
+ name: p.name || 'Unknown',
43
+ route: p.route || '/',
44
+ filePath: p.filePath || '',
45
+ status: p.status || 'pending',
46
+ startedAt: p.startedAt ?? null,
47
+ completedAt: p.completedAt ?? null,
48
+ extractedComponents: Array.isArray(p.extractedComponents)
49
+ ? p.extractedComponents
50
+ : [],
51
+ extractedFunctions: Array.isArray(p.extractedFunctions)
52
+ ? p.extractedFunctions
53
+ : [],
54
+ scenarioCount: typeof p.scenarioCount === 'number' ? p.scenarioCount : 0,
55
+ })),
56
+ sharedComponents: sharedComponents.map((sc) => ({
57
+ name: sc.name || '',
58
+ filePath: sc.filePath || '',
59
+ extractedFromPage: sc.extractedFromPage || '',
60
+ usedInPages: Array.isArray(sc.usedInPages) ? sc.usedInPages : [],
61
+ })),
62
+ };
63
+ }
64
+ export function writeMigrationState(root, state) {
65
+ const statePath = getMigrationStatePath(root);
66
+ const dir = path.dirname(statePath);
67
+ fs.mkdirSync(dir, { recursive: true });
68
+ fs.writeFileSync(statePath, JSON.stringify(state, null, 2), 'utf8');
69
+ }
70
+ /**
71
+ * Detect whether the project is a migration candidate.
72
+ *
73
+ * A project is a candidate when ALL of these are true:
74
+ * - package.json exists (has a project)
75
+ * - No editor scenarios exist
76
+ * - No glossary entries (glossary.json missing or empty array)
77
+ * - No active feature in progress (editor-step.json missing or no feature field)
78
+ * - No completed migration (migration-state.json missing or status !== 'complete')
79
+ *
80
+ * We intentionally do NOT check for page files here — the project structure
81
+ * is unknown until Claude surveys it. The UI shows a generic migration prompt
82
+ * and Claude handles discovery.
83
+ *
84
+ * The hasEditorScenarios option allows callers to pass the DB check result
85
+ * (since this module doesn't do database queries).
86
+ */
87
+ export function detectMigrationCandidate(root, opts) {
88
+ // 1. Must have package.json
89
+ if (!fs.existsSync(path.join(root, 'package.json'))) {
90
+ return false;
91
+ }
92
+ // 2. No editor scenarios
93
+ if (opts?.hasEditorScenarios) {
94
+ return false;
95
+ }
96
+ // 3. No glossary entries (handles LLM-written object wrappers like {"components": [...]})
97
+ const glossaryPath = path.join(root, '.codeyam', 'glossary.json');
98
+ if (fs.existsSync(glossaryPath)) {
99
+ try {
100
+ const raw = JSON.parse(fs.readFileSync(glossaryPath, 'utf8'));
101
+ const entries = Array.isArray(raw) ? raw : extractArrayFromObject(raw);
102
+ if (entries.length > 0) {
103
+ return false;
104
+ }
105
+ }
106
+ catch {
107
+ // Parse failure → treat as no glossary
108
+ }
109
+ }
110
+ // 4. No active feature in progress
111
+ const stepPath = path.join(root, '.codeyam', 'editor-step.json');
112
+ if (fs.existsSync(stepPath)) {
113
+ try {
114
+ const state = JSON.parse(fs.readFileSync(stepPath, 'utf8'));
115
+ if (state.feature || state.scaffolded) {
116
+ return false;
117
+ }
118
+ }
119
+ catch {
120
+ // Parse failure → treat as no state
121
+ }
122
+ }
123
+ // 5. No completed migration
124
+ const migrationState = readMigrationState(root);
125
+ if (migrationState?.status === 'complete') {
126
+ return false;
127
+ }
128
+ return true;
129
+ }
130
+ /**
131
+ * Check if editor-step.json indicates an active migration.
132
+ * Used by the loader to detect migration even before migration-state.json exists
133
+ * (e.g. during the survey phase).
134
+ */
135
+ export function isMigrationActiveInEditorState(root) {
136
+ const stepPath = path.join(root, '.codeyam', 'editor-step.json');
137
+ try {
138
+ const content = fs.readFileSync(stepPath, 'utf8');
139
+ const state = JSON.parse(content);
140
+ return !!state.migration;
141
+ }
142
+ catch {
143
+ return false;
144
+ }
145
+ }
146
+ /**
147
+ * Pure function that determines what CLI command to resume migration with.
148
+ * Used by printCycleOverview to give Claude the right next command.
149
+ */
150
+ export function getMigrationResumeInfo(editorState, migrationState) {
151
+ // Complete
152
+ if (migrationState?.status === 'complete') {
153
+ return { mode: 'complete', resumeCommand: null };
154
+ }
155
+ // Survey phase: editor state at step 0 with migration field, or migration-state surveyed
156
+ if ((editorState?.migration && editorState.step === 0) ||
157
+ migrationState?.status === 'surveyed') {
158
+ return { mode: 'survey', resumeCommand: 'codeyam editor migrate' };
159
+ }
160
+ // In progress with editor state migration field (knows current step)
161
+ if (editorState?.migration) {
162
+ return {
163
+ mode: 'page-in-progress',
164
+ resumeCommand: `codeyam editor migrate ${editorState.step}`,
165
+ pageName: editorState.migration.pageName,
166
+ pageIndex: editorState.migration.pageIndex,
167
+ totalPages: editorState.migration.totalPages,
168
+ step: editorState.step,
169
+ stepLabel: editorState.label,
170
+ };
171
+ }
172
+ // migration-state.json in-progress but no editor state (fresh session)
173
+ if (migrationState?.status === 'in-progress') {
174
+ const currentPage = migrationState.pages[migrationState.currentPageIndex];
175
+ return {
176
+ mode: 'page-in-progress',
177
+ resumeCommand: 'codeyam editor migrate 1',
178
+ pageName: currentPage?.name ?? 'Unknown',
179
+ pageIndex: migrationState.currentPageIndex,
180
+ totalPages: migrationState.pages.length,
181
+ };
182
+ }
183
+ return { mode: 'none', resumeCommand: null };
184
+ }
185
+ /**
186
+ * Advance to the next pending page in the migration.
187
+ * Returns the page info or null if all pages are complete.
188
+ */
189
+ export function advanceToNextPage(root) {
190
+ const state = readMigrationState(root);
191
+ if (!state)
192
+ return null;
193
+ const nextIndex = state.pages.findIndex((p) => p.status === 'pending');
194
+ if (nextIndex === -1) {
195
+ // All pages done — mark migration complete
196
+ state.status = 'complete';
197
+ state.completedAt = new Date().toISOString();
198
+ writeMigrationState(root, state);
199
+ return null;
200
+ }
201
+ state.currentPageIndex = nextIndex;
202
+ state.pages[nextIndex].status = 'in-progress';
203
+ state.pages[nextIndex].startedAt = new Date().toISOString();
204
+ writeMigrationState(root, state);
205
+ return { name: state.pages[nextIndex].name, index: nextIndex };
206
+ }
207
+ /**
208
+ * Mark the current page as complete with extraction stats.
209
+ */
210
+ export function completePage(root, stats) {
211
+ const state = readMigrationState(root);
212
+ if (!state)
213
+ return;
214
+ const page = state.pages[state.currentPageIndex];
215
+ if (!page)
216
+ return;
217
+ page.status = 'complete';
218
+ page.completedAt = new Date().toISOString();
219
+ page.extractedComponents = stats.extractedComponents;
220
+ page.extractedFunctions = stats.extractedFunctions;
221
+ page.scenarioCount = stats.scenarioCount;
222
+ writeMigrationState(root, state);
223
+ }
224
+ //# sourceMappingURL=editorMigration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorMigration.js","sourceRoot":"","sources":["../../../../src/utils/editorMigration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,6FAA6F;AAC7F,SAAS,sBAAsB,CAAC,GAAY;IAC1C,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAC;IAC/C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,MAAM,CAAC,GAA8B,CAAC,EAAE,CAAC;QAChE,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;YAAE,OAAO,GAAG,CAAC;IACrC,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AA8BD,SAAS,qBAAqB,CAAC,IAAY;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,sBAAsB,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAY;IAC7C,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAChC,OAAO,sBAAsB,CAAC,GAAG,CAAC,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,sBAAsB,CAAC,GAA4B;IAC1D,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IACxD,MAAM,gBAAgB,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC1D,CAAC,CAAC,GAAG,CAAC,gBAAgB;QACtB,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,MAAM,EAAG,GAAG,CAAC,MAAmC,IAAI,UAAU;QAC9D,SAAS,EAAG,GAAG,CAAC,SAAoB,IAAI,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAChE,WAAW,EAAG,GAAG,CAAC,WAA6B,IAAI,IAAI;QACvD,gBAAgB,EACd,OAAO,GAAG,CAAC,gBAAgB,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC;QACrE,KAAK,EAAE,KAAK,CAAC,GAAG,CACd,CAAC,CAA0B,EAAiB,EAAE,CAAC,CAAC;YAC9C,IAAI,EAAG,CAAC,CAAC,IAAe,IAAI,SAAS;YACrC,KAAK,EAAG,CAAC,CAAC,KAAgB,IAAI,GAAG;YACjC,QAAQ,EAAG,CAAC,CAAC,QAAmB,IAAI,EAAE;YACtC,MAAM,EAAG,CAAC,CAAC,MAAkC,IAAI,SAAS;YAC1D,SAAS,EAAG,CAAC,CAAC,SAA2B,IAAI,IAAI;YACjD,WAAW,EAAG,CAAC,CAAC,WAA6B,IAAI,IAAI;YACrD,mBAAmB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC;gBACvD,CAAC,CAAC,CAAC,CAAC,mBAAmB;gBACvB,CAAC,CAAC,EAAE;YACN,kBAAkB,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,kBAAkB,CAAC;gBACrD,CAAC,CAAC,CAAC,CAAC,kBAAkB;gBACtB,CAAC,CAAC,EAAE;YACN,aAAa,EACX,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;SAC5D,CAAC,CACH;QACD,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CACpC,CAAC,EAA2B,EAAmB,EAAE,CAAC,CAAC;YACjD,IAAI,EAAG,EAAE,CAAC,IAAe,IAAI,EAAE;YAC/B,QAAQ,EAAG,EAAE,CAAC,QAAmB,IAAI,EAAE;YACvC,iBAAiB,EAAG,EAAE,CAAC,iBAA4B,IAAI,EAAE;YACzD,WAAW,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;SACjE,CAAC,CACH;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,KAAqB;IACrE,MAAM,SAAS,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;IAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACpC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;AACtE,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,wBAAwB,CACtC,IAAY,EACZ,IAAuC;IAEvC,4BAA4B;IAC5B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;QACpD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,yBAAyB;IACzB,IAAI,IAAI,EAAE,kBAAkB,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,0FAA0F;IAC1F,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IAClE,IAAI,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QAChC,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;YAC9D,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACvE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uCAAuC;QACzC,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5D,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACtC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,oCAAoC;QACtC,CAAC;IACH,CAAC;IAED,4BAA4B;IAC5B,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,cAAc,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,8BAA8B,CAAC,IAAY;IACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAClD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAcD;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAIQ,EACR,cAAqC;IAErC,WAAW;IACX,IAAI,cAAc,EAAE,MAAM,KAAK,UAAU,EAAE,CAAC;QAC1C,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;IACnD,CAAC;IAED,yFAAyF;IACzF,IACE,CAAC,WAAW,EAAE,SAAS,IAAI,WAAW,CAAC,IAAI,KAAK,CAAC,CAAC;QAClD,cAAc,EAAE,MAAM,KAAK,UAAU,EACrC,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,aAAa,EAAE,wBAAwB,EAAE,CAAC;IACrE,CAAC;IAED,qEAAqE;IACrE,IAAI,WAAW,EAAE,SAAS,EAAE,CAAC;QAC3B,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,0BAA0B,WAAW,CAAC,IAAI,EAAE;YAC3D,QAAQ,EAAE,WAAW,CAAC,SAAS,CAAC,QAAQ;YACxC,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,SAAS;YAC1C,UAAU,EAAE,WAAW,CAAC,SAAS,CAAC,UAAU;YAC5C,IAAI,EAAE,WAAW,CAAC,IAAI;YACtB,SAAS,EAAE,WAAW,CAAC,KAAK;SAC7B,CAAC;IACJ,CAAC;IAED,uEAAuE;IACvE,IAAI,cAAc,EAAE,MAAM,KAAK,aAAa,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,cAAc,CAAC,KAAK,CAAC,cAAc,CAAC,gBAAgB,CAAC,CAAC;QAC1E,OAAO;YACL,IAAI,EAAE,kBAAkB;YACxB,aAAa,EAAE,0BAA0B;YACzC,QAAQ,EAAE,WAAW,EAAE,IAAI,IAAI,SAAS;YACxC,SAAS,EAAE,cAAc,CAAC,gBAAgB;YAC1C,UAAU,EAAE,cAAc,CAAC,KAAK,CAAC,MAAM;SACxC,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAC/B,IAAY;IAEZ,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IAExB,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;IACvE,IAAI,SAAS,KAAK,CAAC,CAAC,EAAE,CAAC;QACrB,2CAA2C;QAC3C,KAAK,CAAC,MAAM,GAAG,UAAU,CAAC;QAC1B,KAAK,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7C,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC;IACnC,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,aAAa,CAAC;IAC9C,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5D,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAEjC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAC1B,IAAY,EACZ,KAIC;IAED,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACvC,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IACjD,IAAI,CAAC,IAAI;QAAE,OAAO;IAElB,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;IACzB,IAAI,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC,mBAAmB,CAAC;IACrD,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC,kBAAkB,CAAC;IACnD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;IAEzC,mBAAmB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACnC,CAAC"}
@@ -6,6 +6,9 @@
6
6
  */
7
7
  import fs from 'fs';
8
8
  import path from 'path';
9
+ import { buildRoutePattern, routeDisplayName } from "./routePatternMatching.js";
10
+ import { pageNameFromUrl } from "./entityChangeStatus.js";
11
+ import { sanitizeGlossaryEntries } from "./editorLoaderHelpers.js";
9
12
  /**
10
13
  * Generic Map-based deduplication that keeps the last item for each key.
11
14
  * Items are iterated in order, so later entries overwrite earlier ones.
@@ -46,6 +49,18 @@ export function slugifyDimension(name) {
46
49
  export function convertIsoToSqliteTimestamp(iso) {
47
50
  return iso.replace('T', ' ').replace(/\.\d{3}Z$/, '');
48
51
  }
52
+ /**
53
+ * Check whether a scenario row belongs to the current feature session.
54
+ * A row belongs if it was created OR updated after the session start —
55
+ * re-registering a scenario updates `updated_at` but preserves `created_at`.
56
+ */
57
+ export function isRowInFeatureSession(row, sqliteTimestamp) {
58
+ if (row.created_at && row.created_at >= sqliteTimestamp)
59
+ return true;
60
+ if (row.updated_at && row.updated_at >= sqliteTimestamp)
61
+ return true;
62
+ return false;
63
+ }
49
64
  /**
50
65
  * Properties in config.json that are user-configured and must survive a re-init.
51
66
  * Auto-detected properties (projectSlug, packageManager, webapps, createdAt, etc.)
@@ -283,7 +298,6 @@ export async function upsertEditorScenario(db, params) {
283
298
  type: params.type,
284
299
  viewport_width: params.viewportWidth,
285
300
  viewport_height: params.viewportHeight,
286
- dimension: params.dimension,
287
301
  updated_at: new Date()
288
302
  .toISOString()
289
303
  .replace('T', ' ')
@@ -293,6 +307,15 @@ export async function upsertEditorScenario(db, params) {
293
307
  updateSet.dimensions = dimensionsJson;
294
308
  updateSet.screenshot_paths = screenshotPathsJson;
295
309
  }
310
+ if (params.pageFilePath !== undefined) {
311
+ updateSet.page_file_path = params.pageFilePath;
312
+ }
313
+ if (params.entitySha !== undefined) {
314
+ updateSet.entity_sha = params.entitySha;
315
+ }
316
+ if (params.displayName !== undefined) {
317
+ updateSet.display_name = params.displayName;
318
+ }
296
319
  await db
297
320
  .updateTable('editor_scenarios')
298
321
  .set(updateSet)
@@ -324,12 +347,20 @@ export async function upsertEditorScenario(db, params) {
324
347
  type: params.type,
325
348
  viewport_width: params.viewportWidth,
326
349
  viewport_height: params.viewportHeight,
327
- dimension: params.dimension,
328
350
  };
329
351
  if (params.dimensions !== undefined) {
330
352
  insertValues.dimensions = dimensionsJson;
331
353
  insertValues.screenshot_paths = screenshotPathsJson;
332
354
  }
355
+ if (params.pageFilePath !== undefined) {
356
+ insertValues.page_file_path = params.pageFilePath;
357
+ }
358
+ if (params.entitySha !== undefined) {
359
+ insertValues.entity_sha = params.entitySha;
360
+ }
361
+ if (params.displayName !== undefined) {
362
+ insertValues.display_name = params.displayName;
363
+ }
333
364
  await db.insertInto('editor_scenarios').values(insertValues).execute();
334
365
  return { scenarioId, isNew: true, cleanedUpIds: [] };
335
366
  }
@@ -372,4 +403,146 @@ export function cleanupScenarioFiles(codeyamRoot, scenarioIds) {
372
403
  }
373
404
  }
374
405
  }
406
+ /**
407
+ * Validate that an app/user scenario's file path has a glossary entry.
408
+ * For component-type scenarios, validation is skipped (they use a different flow).
409
+ *
410
+ * Returns:
411
+ * - { valid: true } if validation passes or is skipped
412
+ * - { valid: true, needsAnalysis: true } if in glossary but entity not yet created
413
+ * - { valid: false, error: "..." } if the file is not in the glossary
414
+ */
415
+ export function validateEntityLinkageForAppScenario(params) {
416
+ const { lookupFilePath, scenarioType, projectRoot } = params;
417
+ // Only validate for application/user scenarios
418
+ if (scenarioType !== 'application' && scenarioType !== 'user') {
419
+ return { valid: true };
420
+ }
421
+ // Nothing to validate if no file path
422
+ if (!lookupFilePath) {
423
+ return { valid: true };
424
+ }
425
+ // Read and parse the glossary
426
+ const glossaryPath = path.join(projectRoot, '.codeyam', 'glossary.json');
427
+ let glossaryEntries = [];
428
+ try {
429
+ const raw = JSON.parse(fs.readFileSync(glossaryPath, 'utf8'));
430
+ glossaryEntries = sanitizeGlossaryEntries(raw);
431
+ }
432
+ catch {
433
+ // Glossary doesn't exist or can't be parsed — file not in glossary
434
+ }
435
+ const inGlossary = glossaryEntries.some((entry) => entry.filePath === lookupFilePath);
436
+ if (!inGlossary) {
437
+ const hint = glossaryEntries.length === 0
438
+ ? ` glossary.json is empty or could not be parsed. It must be a JSON array: [{"name": "...", "filePath": "${lookupFilePath}", ...}]`
439
+ : ` Found ${glossaryEntries.length} entries but none with filePath "${lookupFilePath}".`;
440
+ return {
441
+ valid: false,
442
+ error: `No glossary entry found for '${lookupFilePath}'.${hint} Add this file to .codeyam/glossary.json before registering app scenarios.`,
443
+ };
444
+ }
445
+ // In glossary but entity doesn't exist yet — caller needs to run analyze-imports
446
+ return { valid: true, needsAnalysis: true };
447
+ }
448
+ /**
449
+ * Count scenarios that have null entity_sha but do have a file path
450
+ * (component_path or page_file_path) — these need entity backfill.
451
+ */
452
+ export async function countScenariosNeedingEntityBackfill(db) {
453
+ const result = await db
454
+ .selectFrom('editor_scenarios')
455
+ .select(db.fn.countAll().as('count'))
456
+ .where('entity_sha', 'is', null)
457
+ .where((eb) => eb.or([
458
+ eb('component_path', 'is not', null),
459
+ eb('page_file_path', 'is not', null),
460
+ ]))
461
+ .executeTakeFirstOrThrow();
462
+ return Number(result.count);
463
+ }
464
+ /**
465
+ * Backfill entity_sha (and display_name) on scenarios that were registered
466
+ * before analyze-imports created the entity records in the DB.
467
+ *
468
+ * Matches scenarios by component_path or page_file_path against the entities
469
+ * array. Uses the same display_name derivation as the register route.
470
+ */
471
+ /**
472
+ * Sync scenario entity_sha values to match the latest entity versions.
473
+ *
474
+ * Called proactively when entity versions change (file watcher) and during
475
+ * registration/audit. Updates scenarios with NULL or stale entity SHAs to
476
+ * point to the latest entity version. Safe because journals preserve
477
+ * screenshots and everything is version-controlled in git.
478
+ *
479
+ * @deprecated Use syncScenarioEntityShas — backfillEntityShaOnScenarios is the legacy name
480
+ */
481
+ export const backfillEntityShaOnScenarios = syncScenarioEntityShas;
482
+ export async function syncScenarioEntityShas(db, entities) {
483
+ // Build lookup maps: name+path for precise component matching,
484
+ // path-only as fallback for page scenarios (no component_name).
485
+ // A single file can export multiple entities (e.g., FullPageLibrary.tsx
486
+ // exports FullPageLibrary, FullPageEmptyState, FullPageArticleCard).
487
+ const entityByNameAndPath = new Map();
488
+ const entityByPath = new Map();
489
+ for (const entity of entities) {
490
+ if (entity.filePath) {
491
+ entityByNameAndPath.set(`${entity.name}::${entity.filePath}`, entity);
492
+ entityByPath.set(entity.filePath, entity);
493
+ }
494
+ }
495
+ // Query scenarios that need updating: either NULL entity_sha or stale
496
+ // (pointing to an older entity version). Journals preserve screenshots
497
+ // and everything is version-controlled, so keeping scenarios on the
498
+ // latest entity SHA is always correct.
499
+ const rows = await db
500
+ .selectFrom('editor_scenarios')
501
+ .selectAll()
502
+ .where((eb) => eb.or([
503
+ eb('component_path', 'is not', null),
504
+ eb('page_file_path', 'is not', null),
505
+ ]))
506
+ .execute();
507
+ if (rows.length === 0)
508
+ return { updated: 0 };
509
+ let updated = 0;
510
+ for (const row of rows) {
511
+ const r = row;
512
+ const lookupPath = r.component_path || r.page_file_path;
513
+ if (!lookupPath)
514
+ continue;
515
+ // Prefer name+path match for component scenarios (handles multi-entity files).
516
+ // Fall back to path-only for page scenarios or when name doesn't match.
517
+ const entity = (r.component_name &&
518
+ entityByNameAndPath.get(`${r.component_name}::${lookupPath}`)) ||
519
+ entityByPath.get(lookupPath);
520
+ if (!entity)
521
+ continue;
522
+ // Skip if already pointing to the latest SHA
523
+ if (r.entity_sha === entity.sha)
524
+ continue;
525
+ // Derive display_name using same logic as register route
526
+ let displayName = null;
527
+ if (r.component_name) {
528
+ displayName = r.component_name;
529
+ }
530
+ else if (r.page_file_path && r.page_file_path.startsWith('app/')) {
531
+ displayName = routeDisplayName(buildRoutePattern(r.page_file_path));
532
+ }
533
+ else if (r.url) {
534
+ displayName = pageNameFromUrl(r.url);
535
+ }
536
+ await db
537
+ .updateTable('editor_scenarios')
538
+ .set({
539
+ entity_sha: entity.sha,
540
+ ...(displayName ? { display_name: displayName } : {}),
541
+ })
542
+ .where('id', '=', r.id)
543
+ .execute();
544
+ updated++;
545
+ }
546
+ return { updated };
547
+ }
375
548
  //# sourceMappingURL=editorScenarios.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"editorScenarios.js","sourceRoot":"","sources":["../../../../src/utils/editorScenarios.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"editorScenarios.js","sourceRoot":"","sources":["../../../../src/utils/editorScenarios.ts"],"names":[],"mappings":"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"}