@codeyam/codeyam-cli 0.1.0-staging.d3e886e → 0.1.0-staging.d52b24f

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 (716) 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 +23 -23
  4. package/analyzer-template/packages/ai/package.json +3 -3
  5. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  6. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +259 -5
  8. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  9. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  10. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  11. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +0 -33
  12. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  13. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  14. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  15. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  16. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  17. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  18. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  19. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  20. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  21. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +23 -4
  22. package/analyzer-template/packages/aws/package.json +10 -10
  23. package/analyzer-template/packages/database/index.ts +1 -0
  24. package/analyzer-template/packages/database/package.json +3 -3
  25. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  26. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  27. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  28. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  29. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  30. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  31. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  32. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  33. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  34. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  35. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  36. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  37. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  38. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  39. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  40. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  41. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  42. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  43. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  44. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  45. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  46. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  47. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  48. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  49. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  50. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  51. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  52. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  54. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  57. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  58. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  60. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  63. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  66. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  68. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  69. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  70. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  71. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  72. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  73. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  74. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  75. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  76. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  77. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  78. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  80. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  81. package/analyzer-template/packages/github/package.json +1 -1
  82. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  83. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  84. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  85. package/analyzer-template/packages/ui-components/package.json +1 -1
  86. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  87. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  88. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  89. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  90. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  91. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  92. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  93. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  94. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  95. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  96. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  97. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  98. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  99. package/analyzer-template/project/constructMockCode.ts +168 -48
  100. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  101. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  102. package/analyzer-template/project/start.ts +3 -0
  103. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  104. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  105. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  106. package/analyzer-template/project/writeScenarioComponents.ts +96 -17
  107. package/analyzer-template/tsconfig.json +13 -1
  108. package/background/src/lib/virtualized/project/constructMockCode.js +143 -39
  109. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  110. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  111. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  112. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  113. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  114. package/background/src/lib/virtualized/project/start.js +2 -0
  115. package/background/src/lib/virtualized/project/start.js.map +1 -1
  116. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  117. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  118. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  119. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  120. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  121. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  122. package/background/src/lib/virtualized/project/writeScenarioComponents.js +73 -12
  123. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  124. package/codeyam-cli/scripts/apply-setup.js +208 -11
  125. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  126. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  127. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  128. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  129. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  130. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  131. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  132. package/codeyam-cli/src/cli.js +32 -25
  133. package/codeyam-cli/src/cli.js.map +1 -1
  134. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  135. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  136. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +101 -47
  137. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  138. package/codeyam-cli/src/commands/analyze.js +17 -7
  139. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  140. package/codeyam-cli/src/commands/default.js +14 -2
  141. package/codeyam-cli/src/commands/default.js.map +1 -1
  142. package/codeyam-cli/src/commands/editor.js +4283 -0
  143. package/codeyam-cli/src/commands/editor.js.map +1 -0
  144. package/codeyam-cli/src/commands/init.js +108 -45
  145. package/codeyam-cli/src/commands/init.js.map +1 -1
  146. package/codeyam-cli/src/commands/memory.js +89 -75
  147. package/codeyam-cli/src/commands/memory.js.map +1 -1
  148. package/codeyam-cli/src/data/techStacks.js +77 -0
  149. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  150. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  151. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  152. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  153. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +134 -0
  155. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  156. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +137 -0
  157. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  158. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +987 -0
  159. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  160. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  161. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  162. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  163. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  164. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  165. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  166. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  167. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  168. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +124 -0
  169. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  170. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +261 -0
  171. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  172. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  173. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  174. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  175. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  176. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  177. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  178. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  179. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  180. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  181. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  182. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  183. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  184. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +353 -0
  185. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  186. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +153 -0
  187. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  188. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  189. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  190. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +221 -0
  191. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  192. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1483 -0
  193. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  194. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +280 -0
  195. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  196. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  197. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  198. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  199. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  200. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  201. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  202. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +1857 -0
  203. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  204. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  205. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  206. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +107 -0
  207. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  208. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +26 -20
  209. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  210. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  211. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  212. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  213. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  214. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  215. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  216. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  217. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  218. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +227 -0
  219. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  220. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  221. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  222. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +493 -0
  223. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  224. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +51 -4
  225. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  226. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  227. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  228. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +142 -0
  229. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  230. package/codeyam-cli/src/utils/analysisRunner.js +3 -1
  231. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  232. package/codeyam-cli/src/utils/analyzer.js +9 -0
  233. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  234. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  235. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  236. package/codeyam-cli/src/utils/backgroundServer.js +104 -12
  237. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  238. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  239. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  240. package/codeyam-cli/src/utils/database.js +37 -2
  241. package/codeyam-cli/src/utils/database.js.map +1 -1
  242. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  243. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  244. package/codeyam-cli/src/utils/devServerState.js +71 -0
  245. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  246. package/codeyam-cli/src/utils/editorApi.js +79 -0
  247. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  248. package/codeyam-cli/src/utils/editorAudit.js +210 -0
  249. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  250. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  251. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  252. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  253. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  254. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  255. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  256. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  257. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  258. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +44 -0
  259. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  260. package/codeyam-cli/src/utils/editorEntityHelpers.js +129 -0
  261. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  262. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  263. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  264. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  265. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  266. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  267. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  268. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  269. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  270. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  271. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  272. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  273. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  274. package/codeyam-cli/src/utils/editorPreview.js +137 -0
  275. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  276. package/codeyam-cli/src/utils/editorScenarioSwitch.js +112 -0
  277. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  278. package/codeyam-cli/src/utils/editorScenarios.js +548 -0
  279. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  280. package/codeyam-cli/src/utils/editorSeedAdapter.js +422 -0
  281. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  282. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  283. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  284. package/codeyam-cli/src/utils/entityChangeStatus.js +366 -0
  285. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  286. package/codeyam-cli/src/utils/entityChangeStatus.server.js +196 -0
  287. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  288. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  289. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  290. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  291. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  292. package/codeyam-cli/src/utils/git.js +103 -0
  293. package/codeyam-cli/src/utils/git.js.map +1 -1
  294. package/codeyam-cli/src/utils/install-skills.js +66 -15
  295. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  296. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  297. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  298. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  299. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  300. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  301. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  302. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  303. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  304. package/codeyam-cli/src/utils/progress.js +2 -2
  305. package/codeyam-cli/src/utils/progress.js.map +1 -1
  306. package/codeyam-cli/src/utils/project.js +15 -5
  307. package/codeyam-cli/src/utils/project.js.map +1 -1
  308. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  309. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  310. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  311. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  312. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  313. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  314. package/codeyam-cli/src/utils/queue/job.js +70 -1
  315. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  316. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  317. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  318. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  319. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  320. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  321. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  322. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  323. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  324. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  325. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  326. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  327. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  328. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +2 -4
  329. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  330. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  331. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  332. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +1 -1
  333. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  334. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  335. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  336. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  337. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  338. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  339. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  340. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  341. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  342. package/codeyam-cli/src/utils/rules/index.js +1 -0
  343. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  344. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  345. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  346. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  347. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  348. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  349. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  350. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  351. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  352. package/codeyam-cli/src/utils/scenarioCoverage.js +74 -0
  353. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  354. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  355. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  356. package/codeyam-cli/src/utils/scenariosManifest.js +249 -0
  357. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  358. package/codeyam-cli/src/utils/serverState.js +57 -2
  359. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  360. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +83 -11
  361. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  362. package/codeyam-cli/src/utils/simulationGateMiddleware.js +166 -0
  363. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  364. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  365. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  366. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  367. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  368. package/codeyam-cli/src/utils/testRunner.js +158 -0
  369. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  370. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  371. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  372. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  373. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  374. package/codeyam-cli/src/utils/webappDetection.js +35 -2
  375. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  376. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +35 -0
  377. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  378. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +40 -0
  379. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  380. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +567 -0
  381. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  382. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +146 -0
  383. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  384. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +65 -0
  385. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  386. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  387. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  388. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  389. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  390. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  391. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  392. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  393. package/codeyam-cli/src/webserver/backgroundServer.js +134 -20
  394. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  395. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-CzTDWkF2.js +1 -0
  396. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-BFbq6iFk.js} +5 -5
  397. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  398. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-B6OMi58N.js} +9 -9
  399. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-DuYodzo1.js +1 -0
  400. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-CXo9EeCl.js +25 -0
  401. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DYCNb2It.js +3 -0
  402. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-By5zI316.js} +1 -1
  403. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-CZgY3sxX.js} +3 -3
  404. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-CnYYwRDw.js} +4 -4
  405. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CDoF7ZpU.js +1 -0
  406. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-DrnfvaLL.js} +3 -3
  407. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Df3UCi8k.js +34 -0
  408. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  409. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-DRKR9T0U.js +1 -0
  410. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-ClR-g3tY.js} +4 -4
  411. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-DTH6ydEA.js} +8 -8
  412. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  413. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  414. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-74hnHF59.js +1 -0
  415. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  416. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8CYhCO9.js +22 -0
  417. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  418. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  419. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  420. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  421. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  422. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  423. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  424. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  425. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  426. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  427. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  428. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  429. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  430. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  431. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  432. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  433. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  434. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  435. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  436. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  437. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  438. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  439. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  440. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  441. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  442. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  443. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  444. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  445. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  446. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-CLaoh4ac.js} +2 -2
  447. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-BZ2DZxbW.js} +2 -2
  448. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-DB3aFuEO.js → chunk-JZWAC4HX-BBXArFPl.js} +13 -21
  449. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-CT4unAk-.js} +2 -2
  450. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-zK0B6Nu-.js} +3 -3
  451. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DJB0YQJL.js +41 -0
  452. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-CkXFP_i-.js +1 -0
  453. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-DPw7NZHc.js +1 -0
  454. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-B2KVBVj4.js +58 -0
  455. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-DBa7T2FK.js +41 -0
  456. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._-BqAN7hyG.js} +11 -11
  457. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-BOi8kpwd.js +6 -0
  458. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Dg1NhIms.js +6 -0
  459. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CJX6kkkV.js +6 -0
  460. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-BhVjZhKg.js} +2 -2
  461. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-_gzKltPN.js} +6 -6
  462. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  463. package/codeyam-cli/src/webserver/build/client/assets/files-CV_17tZS.js +1 -0
  464. package/codeyam-cli/src/webserver/build/client/assets/git-D-YXmMbR.js +1 -0
  465. package/codeyam-cli/src/webserver/build/client/assets/globals-CGrDAxj0.css +1 -0
  466. package/codeyam-cli/src/webserver/build/client/assets/index-Blo6EK8G.js +15 -0
  467. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-BsX0F-9C.js} +1 -1
  468. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-CCrgCshv.js} +1 -1
  469. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  470. package/codeyam-cli/src/webserver/build/client/assets/labs-Byazq8Pv.js +1 -0
  471. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-DVQ0oHR7.js} +2 -2
  472. package/codeyam-cli/src/webserver/build/client/assets/manifest-a6273a24.js +1 -0
  473. package/codeyam-cli/src/webserver/build/client/assets/memory-b-VmA2Vj.js +101 -0
  474. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-DGcndCAa.js} +3 -3
  475. package/codeyam-cli/src/webserver/build/client/assets/root-D5Zi3U2Z.js +67 -0
  476. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-C0Uw0bcK.js} +2 -2
  477. package/codeyam-cli/src/webserver/build/client/assets/settings-OoNgHIfW.js +1 -0
  478. package/codeyam-cli/src/webserver/build/client/assets/simulations-Bcemfu8a.js +1 -0
  479. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-BgMmG7R9.js} +3 -3
  480. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-Cs87hJYK.js} +2 -2
  481. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BR3Rs7JY.js +1 -0
  482. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-BxxP_XF9.js +2 -0
  483. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BermyNU5.js +1 -0
  484. package/codeyam-cli/src/webserver/build/client/assets/useToast-a_QN_W9_.js +1 -0
  485. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  486. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  487. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-H_bGKza6.js +13 -0
  488. package/codeyam-cli/src/webserver/build/server/assets/index-BjsaHnnW.js +1 -0
  489. package/codeyam-cli/src/webserver/build/server/assets/init-CmahXA_a.js +10 -0
  490. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  491. package/codeyam-cli/src/webserver/build/server/assets/server-build-BYvtz6_N.js +501 -0
  492. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  493. package/codeyam-cli/src/webserver/build-info.json +5 -5
  494. package/codeyam-cli/src/webserver/devServer.js +39 -5
  495. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  496. package/codeyam-cli/src/webserver/editorProxy.js +901 -0
  497. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  498. package/codeyam-cli/src/webserver/idleDetector.js +73 -0
  499. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  500. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  501. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  502. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  503. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  504. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +230 -0
  505. package/codeyam-cli/src/webserver/server.js +309 -1
  506. package/codeyam-cli/src/webserver/server.js.map +1 -1
  507. package/codeyam-cli/src/webserver/terminalServer.js +831 -0
  508. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  509. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  510. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  511. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  512. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  513. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  514. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  515. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  516. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  517. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  518. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  519. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  520. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  521. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  522. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  523. package/codeyam-cli/templates/codeyam-editor-claude.md +147 -0
  524. package/codeyam-cli/templates/editor-step-hook.py +321 -0
  525. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +89 -0
  526. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  527. package/codeyam-cli/templates/expo-react-native/app/(tabs)/_layout.tsx +33 -0
  528. package/codeyam-cli/templates/expo-react-native/app/(tabs)/index.tsx +12 -0
  529. package/codeyam-cli/templates/expo-react-native/app/(tabs)/settings.tsx +12 -0
  530. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +12 -0
  531. package/codeyam-cli/templates/expo-react-native/app.json +18 -0
  532. package/codeyam-cli/templates/expo-react-native/babel.config.js +9 -0
  533. package/codeyam-cli/templates/expo-react-native/gitignore +12 -0
  534. package/codeyam-cli/templates/expo-react-native/global.css +3 -0
  535. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  536. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  537. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  538. package/codeyam-cli/templates/expo-react-native/package.json +38 -0
  539. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  540. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  541. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  542. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  543. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  544. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  545. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  546. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  547. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  548. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  549. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  550. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  551. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  552. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  553. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  554. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  555. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  556. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  557. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  558. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  559. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  560. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  561. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +64 -0
  562. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  563. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  564. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  565. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  566. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  567. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  568. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +127 -0
  569. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  570. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  571. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  572. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  573. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  574. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  575. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  576. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  577. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  578. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  579. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  580. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  581. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  582. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  583. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  584. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  585. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  586. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  587. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  588. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  589. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  590. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  591. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  592. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  593. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  594. package/codeyam-cli/templates/rule-reflection-hook.py +25 -5
  595. package/codeyam-cli/templates/rules-instructions.md +34 -88
  596. package/codeyam-cli/templates/seed-adapters/supabase.ts +282 -0
  597. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  598. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +211 -0
  599. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  600. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  601. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  602. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  603. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  604. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  605. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  606. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  607. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  608. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  609. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  610. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  611. package/package.json +21 -14
  612. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  613. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  614. package/packages/ai/src/lib/completionCall.js +10 -7
  615. package/packages/ai/src/lib/completionCall.js.map +1 -1
  616. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +234 -3
  617. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  618. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  619. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  620. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  621. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  622. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  623. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  624. package/packages/ai/src/lib/generateExecutionFlows.js +0 -11
  625. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  626. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  627. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  628. package/packages/analyze/src/lib/asts/index.js +4 -2
  629. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  630. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  631. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  632. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  633. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  634. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  635. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  636. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  637. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  638. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  639. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  640. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  641. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  642. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  643. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  644. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +18 -4
  645. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  646. package/packages/database/index.js +1 -0
  647. package/packages/database/index.js.map +1 -1
  648. package/packages/database/src/lib/kysely/db.js +5 -0
  649. package/packages/database/src/lib/kysely/db.js.map +1 -1
  650. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  651. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  652. package/packages/database/src/lib/loadCommits.js +23 -13
  653. package/packages/database/src/lib/loadCommits.js.map +1 -1
  654. package/packages/database/src/lib/loadEntities.js +0 -6
  655. package/packages/database/src/lib/loadEntities.js.map +1 -1
  656. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  657. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  658. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  659. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  660. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  661. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  662. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  663. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  664. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  665. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  666. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  667. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  668. package/packages/types/src/enums/ProjectFramework.js +2 -0
  669. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  670. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  671. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  672. package/scripts/npm-post-install.cjs +34 -0
  673. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  674. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  675. package/codeyam-cli/src/commands/list.js +0 -31
  676. package/codeyam-cli/src/commands/list.js.map +0 -1
  677. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  678. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  679. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  680. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  681. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +0 -1
  682. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CvzqMxcu.js +0 -1
  683. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-EhOseatT.js +0 -34
  684. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-yjIHlOGa.js +0 -25
  685. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-Cq5o8jL4.js +0 -3
  686. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-CwZrv-Ok.js +0 -1
  687. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CDpEprKa.js +0 -1
  688. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  689. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-D1zB-pYc.js +0 -21
  690. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-JTAjQ54M.js +0 -1
  691. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js +0 -6
  692. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-CtYowLOt.js +0 -6
  693. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-9sMMAiWJ.js +0 -1
  694. package/codeyam-cli/src/webserver/build/client/assets/files-Co65J0s3.js +0 -1
  695. package/codeyam-cli/src/webserver/build/client/assets/git-BdHOxVfg.js +0 -15
  696. package/codeyam-cli/src/webserver/build/client/assets/globals-CCgBKWy4.css +0 -1
  697. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  698. package/codeyam-cli/src/webserver/build/client/assets/manifest-390cb8fa.js +0 -1
  699. package/codeyam-cli/src/webserver/build/client/assets/memory-CzZySbBE.js +0 -78
  700. package/codeyam-cli/src/webserver/build/client/assets/root-DnbDhvTU.js +0 -62
  701. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +0 -1
  702. package/codeyam-cli/src/webserver/build/client/assets/simulations-DVNJVQgD.js +0 -1
  703. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-BqgrAzs3.js +0 -1
  704. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DAFqfEDH.js +0 -2
  705. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-DZlYx2c4.js +0 -1
  706. package/codeyam-cli/src/webserver/build/client/assets/useToast-ihdMtlf6.js +0 -1
  707. package/codeyam-cli/src/webserver/build/server/assets/index-CxaRxKVt.js +0 -1
  708. package/codeyam-cli/src/webserver/build/server/assets/server-build-D4DT0nM_.js +0 -259
  709. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  710. package/scripts/finalize-analyzer.cjs +0 -13
  711. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  712. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  713. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  714. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  715. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  716. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -0,0 +1,548 @@
1
+ /**
2
+ * Shared scenario utilities used across editor routes and components.
3
+ *
4
+ * Extracted from inline logic in editor.tsx, api.editor-journal-entry.ts,
5
+ * and api.editor-register-scenario.ts.
6
+ */
7
+ import fs from 'fs';
8
+ import path from 'path';
9
+ import { buildRoutePattern, routeDisplayName } from "./routePatternMatching.js";
10
+ import { pageNameFromUrl } from "./entityChangeStatus.js";
11
+ import { sanitizeGlossaryEntries } from "./editorLoaderHelpers.js";
12
+ /**
13
+ * Generic Map-based deduplication that keeps the last item for each key.
14
+ * Items are iterated in order, so later entries overwrite earlier ones.
15
+ * Map preserves insertion order of first appearance.
16
+ */
17
+ export function deduplicateByName(items, keyFn) {
18
+ const byKey = new Map();
19
+ for (const item of items) {
20
+ byKey.set(keyFn(item), item);
21
+ }
22
+ return [...byKey.values()];
23
+ }
24
+ /**
25
+ * Convert a scenario name to a URL-safe slug.
26
+ * Replaces any run of non-alphanumeric, non-underscore characters with a single underscore.
27
+ */
28
+ export function generateScenarioSlug(name) {
29
+ return name.replace(/[^a-zA-Z0-9_]+/g, '_');
30
+ }
31
+ /**
32
+ * Convert a dimension name to a filename-safe slug for screenshot paths.
33
+ * Lowercase, spaces→hyphens, strip non-alphanumeric, collapse multiple hyphens.
34
+ * "Extension Popup" → "extension-popup"
35
+ */
36
+ export function slugifyDimension(name) {
37
+ return name
38
+ .toLowerCase()
39
+ .replace(/[^a-z0-9]+/g, '-')
40
+ .replace(/^-+|-+$/g, '');
41
+ }
42
+ /**
43
+ * Convert an ISO 8601 timestamp (e.g. "2026-02-28T19:00:00.000Z") to
44
+ * SQLite-compatible format (e.g. "2026-02-28 19:00:00").
45
+ *
46
+ * SQLite's CURRENT_TIMESTAMP uses space-separated "YYYY-MM-DD HH:MM:SS" format,
47
+ * so we need this conversion for date comparisons.
48
+ */
49
+ export function convertIsoToSqliteTimestamp(iso) {
50
+ return iso.replace('T', ' ').replace(/\.\d{3}Z$/, '');
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
+ }
64
+ /**
65
+ * Properties in config.json that are user-configured and must survive a re-init.
66
+ * Auto-detected properties (projectSlug, packageManager, webapps, createdAt, etc.)
67
+ * are intentionally NOT preserved — init should re-detect them.
68
+ */
69
+ const PRESERVED_CONFIG_KEYS = [
70
+ 'defaultScreenSize',
71
+ 'screenSizes',
72
+ 'projectTitle',
73
+ 'projectDescription',
74
+ ];
75
+ /**
76
+ * Read user-configured properties from an existing config.json that should be
77
+ * preserved when `codeyam init --force` overwrites the file.
78
+ *
79
+ * Returns only the properties listed in PRESERVED_CONFIG_KEYS.
80
+ * Returns an empty object if the file doesn't exist or can't be parsed.
81
+ */
82
+ export function readPreservedConfigProperties(configPath) {
83
+ try {
84
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
85
+ const preserved = {};
86
+ for (const key of PRESERVED_CONFIG_KEYS) {
87
+ if (config[key] !== undefined) {
88
+ preserved[key] = config[key];
89
+ }
90
+ }
91
+ return preserved;
92
+ }
93
+ catch {
94
+ return {};
95
+ }
96
+ }
97
+ /**
98
+ * Validate that a step transition is allowed.
99
+ *
100
+ * Rules:
101
+ * - Step 1 is always allowed (starts a new feature).
102
+ * - Steps 2–13 require the current state step to be at least (requestedStep - 1),
103
+ * i.e. you can advance one step at a time or re-run the current step, but
104
+ * you cannot skip ahead.
105
+ *
106
+ * Returns null if valid, or an error message string if invalid.
107
+ */
108
+ export function validateStepTransition(requestedStep, currentStep) {
109
+ // Step 1 always allowed — it starts or restarts a feature
110
+ if (requestedStep === 1)
111
+ return null;
112
+ // No state at all — must start from step 1
113
+ if (currentStep === null) {
114
+ return `Cannot jump to step ${requestedStep} — no feature in progress. Run step 1 first.`;
115
+ }
116
+ // Allow re-running the current step or advancing to the next step
117
+ if (requestedStep <= currentStep + 1)
118
+ return null;
119
+ return `Cannot jump from step ${currentStep} to step ${requestedStep}. Complete step ${currentStep + 1} first.`;
120
+ }
121
+ /**
122
+ * Resolve which URL to use for Playwright screenshot capture.
123
+ *
124
+ * Priority:
125
+ * 1. Path-based URL + proxy → combine (component isolation with API interception)
126
+ * 2. Full URL → use directly (legacy)
127
+ * 3. No URL → proxy root or dev server root (page scenarios)
128
+ */
129
+ /**
130
+ * Resolve the navigation path for preview refresh.
131
+ * Priority: explicit path > scenario URL from DB > undefined (plain refresh).
132
+ */
133
+ export function resolvePreviewNavPath(explicitPath, scenarioUrl) {
134
+ if (explicitPath)
135
+ return explicitPath;
136
+ if (scenarioUrl)
137
+ return scenarioUrl;
138
+ return undefined;
139
+ }
140
+ /**
141
+ * Clear the editor step state file (for starting a new feature).
142
+ * This should NOT touch the user prompt file — the prompt is captured
143
+ * by the hook before step 1 runs, so deleting it here would lose it.
144
+ */
145
+ export function clearEditorState(root) {
146
+ const statePath = path.join(root, '.codeyam', 'editor-step.json');
147
+ try {
148
+ fs.unlinkSync(statePath);
149
+ }
150
+ catch {
151
+ // File doesn't exist, that's fine
152
+ }
153
+ }
154
+ /**
155
+ * Clear the user prompt file so the hook can capture the next feature request.
156
+ * Call this after a feature is committed, not during step 1.
157
+ */
158
+ export function clearEditorUserPrompt(root) {
159
+ const promptPath = path.join(root, '.codeyam', 'editor-user-prompt.txt');
160
+ try {
161
+ fs.unlinkSync(promptPath);
162
+ }
163
+ catch {
164
+ // File doesn't exist, that's fine
165
+ }
166
+ }
167
+ export function determineCaptureUrl(url, proxyUrl, devServerUrl) {
168
+ const isPath = url && url.startsWith('/');
169
+ if (isPath && proxyUrl) {
170
+ return `${proxyUrl}${url}`;
171
+ }
172
+ else if (url && !isPath) {
173
+ return url;
174
+ }
175
+ else {
176
+ return proxyUrl || devServerUrl || null;
177
+ }
178
+ }
179
+ /**
180
+ * Read the project's default screen size from .codeyam/config.json.
181
+ * Returns { width, height } or null if not configured.
182
+ */
183
+ export function readDefaultScreenSize(codeyamRoot) {
184
+ try {
185
+ const configPath = path.join(codeyamRoot, '.codeyam', 'config.json');
186
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
187
+ if (config.defaultScreenSize?.width && config.defaultScreenSize?.height) {
188
+ return {
189
+ width: config.defaultScreenSize.width,
190
+ height: config.defaultScreenSize.height,
191
+ };
192
+ }
193
+ }
194
+ catch {
195
+ // Non-fatal
196
+ }
197
+ return null;
198
+ }
199
+ /**
200
+ * Read named screen sizes from .codeyam/config.json.
201
+ * Returns a map of name → { width, height }, or empty object if not configured.
202
+ *
203
+ * Config format:
204
+ * "screenSizes": {
205
+ * "Desktop": { "width": 1440, "height": 900 },
206
+ * "Mobile": { "width": 375, "height": 667 }
207
+ * }
208
+ */
209
+ export function readScreenSizes(codeyamRoot) {
210
+ try {
211
+ const configPath = path.join(codeyamRoot, '.codeyam', 'config.json');
212
+ const config = JSON.parse(fs.readFileSync(configPath, 'utf8'));
213
+ if (config.screenSizes &&
214
+ typeof config.screenSizes === 'object' &&
215
+ !Array.isArray(config.screenSizes)) {
216
+ return config.screenSizes;
217
+ }
218
+ }
219
+ catch {
220
+ // Non-fatal
221
+ }
222
+ return {};
223
+ }
224
+ /**
225
+ * Resolve the viewport dimensions for a scenario capture.
226
+ * Priority: explicit body values > project default > hardcoded fallback (1280×720).
227
+ */
228
+ export function resolveScenarioViewport(params) {
229
+ return {
230
+ width: params.bodyWidth || params.projectDefault?.width || 1280,
231
+ height: params.bodyHeight || params.projectDefault?.height || 720,
232
+ };
233
+ }
234
+ /**
235
+ * Resolve viewport dimensions by reading the project config.
236
+ *
237
+ * Priority chain:
238
+ * 1. Explicit bodyWidth/bodyHeight (highest)
239
+ * 2. Named dimension → lookup in config screenSizes map
240
+ * 3. Project defaultScreenSize from config
241
+ * 4. 1280×720 hardcoded fallback (lowest)
242
+ *
243
+ * Use this in any capture endpoint that needs viewport resolution.
244
+ */
245
+ export function resolveViewportWithProjectDefault(params) {
246
+ // Look up named dimension from screenSizes if provided
247
+ let dimensionSize = null;
248
+ if (params.dimension) {
249
+ const screenSizes = readScreenSizes(params.codeyamRoot);
250
+ const entry = screenSizes[params.dimension];
251
+ if (entry?.width && entry?.height) {
252
+ dimensionSize = { width: entry.width, height: entry.height };
253
+ }
254
+ }
255
+ const projectDefault = dimensionSize || readDefaultScreenSize(params.codeyamRoot);
256
+ return resolveScenarioViewport({
257
+ bodyWidth: params.bodyWidth,
258
+ bodyHeight: params.bodyHeight,
259
+ projectDefault,
260
+ });
261
+ }
262
+ /**
263
+ * Insert or update an editor scenario by name + project.
264
+ *
265
+ * When a scenario with the same name already exists for the project:
266
+ * - Reuses the most recent row's ID (so data files at that path get overwritten naturally)
267
+ * - Updates the row with the new values
268
+ * - Deletes any additional duplicate rows that accumulated from past always-insert behavior
269
+ *
270
+ * When no existing scenario matches: inserts a new row with a fresh UUID.
271
+ */
272
+ export async function upsertEditorScenario(db, params) {
273
+ // Serialize multi-dimension fields for storage
274
+ const dimensionsJson = params.dimensions
275
+ ? JSON.stringify(params.dimensions)
276
+ : null;
277
+ const screenshotPathsJson = params.screenshotPaths
278
+ ? JSON.stringify(params.screenshotPaths)
279
+ : null;
280
+ // Find all existing scenarios with the same name + project
281
+ const existing = await db
282
+ .selectFrom('editor_scenarios')
283
+ .selectAll()
284
+ .where('name', '=', params.name)
285
+ .where('project_id', '=', params.projectId)
286
+ .orderBy('created_at', 'desc')
287
+ .execute();
288
+ if (existing.length > 0) {
289
+ // Reuse the most recent row's ID
290
+ const latest = existing[0];
291
+ const scenarioId = latest.id;
292
+ // Update the existing row with new values
293
+ const updateSet = {
294
+ description: params.description,
295
+ component_name: params.componentName,
296
+ component_path: params.componentPath,
297
+ url: params.url,
298
+ type: params.type,
299
+ viewport_width: params.viewportWidth,
300
+ viewport_height: params.viewportHeight,
301
+ updated_at: new Date()
302
+ .toISOString()
303
+ .replace('T', ' ')
304
+ .replace(/\.\d{3}Z$/, ''),
305
+ };
306
+ if (params.dimensions !== undefined) {
307
+ updateSet.dimensions = dimensionsJson;
308
+ updateSet.screenshot_paths = screenshotPathsJson;
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
+ }
319
+ await db
320
+ .updateTable('editor_scenarios')
321
+ .set(updateSet)
322
+ .where('id', '=', scenarioId)
323
+ .execute();
324
+ // Delete duplicate rows (all except the latest)
325
+ const duplicateIds = existing.slice(1).map((r) => r.id);
326
+ if (duplicateIds.length > 0) {
327
+ await db
328
+ .deleteFrom('editor_scenarios')
329
+ .where('id', 'in', duplicateIds)
330
+ .execute();
331
+ }
332
+ return { scenarioId, isNew: false, cleanedUpIds: duplicateIds };
333
+ }
334
+ // No existing scenario — insert new
335
+ // Use globalThis.crypto (Web Crypto API) to avoid pulling Node's crypto
336
+ // module into the Vite client bundle (this file is also imported client-side
337
+ // for deduplicateByName).
338
+ const scenarioId = globalThis.crypto.randomUUID();
339
+ const insertValues = {
340
+ id: scenarioId,
341
+ project_id: params.projectId,
342
+ name: params.name,
343
+ description: params.description,
344
+ component_name: params.componentName,
345
+ component_path: params.componentPath,
346
+ url: params.url,
347
+ type: params.type,
348
+ viewport_width: params.viewportWidth,
349
+ viewport_height: params.viewportHeight,
350
+ };
351
+ if (params.dimensions !== undefined) {
352
+ insertValues.dimensions = dimensionsJson;
353
+ insertValues.screenshot_paths = screenshotPathsJson;
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
+ }
364
+ await db.insertInto('editor_scenarios').values(insertValues).execute();
365
+ return { scenarioId, isNew: true, cleanedUpIds: [] };
366
+ }
367
+ /**
368
+ * Delete data files (.json, .seed.json) and screenshots for a list of scenario IDs.
369
+ * Used to clean up orphaned files after deduplication.
370
+ */
371
+ export function cleanupScenarioFiles(codeyamRoot, scenarioIds) {
372
+ const scenariosDir = path.join(codeyamRoot, '.codeyam', 'editor-scenarios');
373
+ const screenshotsDir = path.join(scenariosDir, 'screenshots');
374
+ for (const id of scenarioIds) {
375
+ for (const file of [
376
+ `${id}.json`,
377
+ `${id}.seed.json`,
378
+ path.join('screenshots', `${id}.png`),
379
+ ]) {
380
+ try {
381
+ fs.unlinkSync(path.join(scenariosDir, file));
382
+ }
383
+ catch {
384
+ // File doesn't exist, that's fine
385
+ }
386
+ }
387
+ // Also clean up multi-dimension screenshots ({id}--{slug}.png)
388
+ try {
389
+ const files = fs.readdirSync(screenshotsDir);
390
+ for (const file of files) {
391
+ if (file.startsWith(`${id}--`) && file.endsWith('.png')) {
392
+ try {
393
+ fs.unlinkSync(path.join(screenshotsDir, file));
394
+ }
395
+ catch {
396
+ // File doesn't exist, that's fine
397
+ }
398
+ }
399
+ }
400
+ }
401
+ catch {
402
+ // Screenshots directory may not exist
403
+ }
404
+ }
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
+ }
548
+ //# sourceMappingURL=editorScenarios.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"editorScenarios.js","sourceRoot":"","sources":["../../../../src/utils/editorScenarios.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,uBAAuB,EAAE,MAAM,uBAAuB,CAAC;AAEhE;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAU,EACV,KAA0B;IAE1B,MAAM,KAAK,GAAG,IAAI,GAAG,EAAa,CAAC;IACnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/B,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAY;IAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,OAAO,IAAI;SACR,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,2BAA2B,CAAC,GAAW;IACrD,OAAO,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;AACxD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAA+D,EAC/D,eAAuB;IAEvB,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IACrE,IAAI,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,IAAI,eAAe;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,MAAM,qBAAqB,GAAG;IAC5B,mBAAmB;IACnB,aAAa;IACb,cAAc;IACd,oBAAoB;CACZ,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,UAAU,6BAA6B,CAC3C,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,MAAM,SAAS,GAA4B,EAAE,CAAC;QAC9C,KAAK,MAAM,GAAG,IAAI,qBAAqB,EAAE,CAAC;YACxC,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9B,SAAS,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,sBAAsB,CACpC,aAAqB,EACrB,WAA0B;IAE1B,0DAA0D;IAC1D,IAAI,aAAa,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IAErC,2CAA2C;IAC3C,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,OAAO,uBAAuB,aAAa,8CAA8C,CAAC;IAC5F,CAAC;IAED,kEAAkE;IAClE,IAAI,aAAa,IAAI,WAAW,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IAElD,OAAO,yBAAyB,WAAW,YAAY,aAAa,mBAAmB,WAAW,GAAG,CAAC,SAAS,CAAC;AAClH,CAAC;AAED;;;;;;;GAOG;AACH;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,YAAuC,EACvC,WAAsC;IAEtC,IAAI,YAAY;QAAE,OAAO,YAAY,CAAC;IACtC,IAAI,WAAW;QAAE,OAAO,WAAW,CAAC;IACpC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAClE,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAY;IAChD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,UAAU,EAAE,wBAAwB,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,GAA8B,EAC9B,QAAuB,EACvB,YAA2B;IAE3B,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAE1C,IAAI,MAAM,IAAI,QAAQ,EAAE,CAAC;QACvB,OAAO,GAAG,QAAQ,GAAG,GAAG,EAAE,CAAC;IAC7B,CAAC;SAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAC1B,OAAO,GAAG,CAAC;IACb,CAAC;SAAM,CAAC;QACN,OAAO,QAAQ,IAAI,YAAY,IAAI,IAAI,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,iBAAiB,EAAE,KAAK,IAAI,MAAM,CAAC,iBAAiB,EAAE,MAAM,EAAE,CAAC;YACxE,OAAO;gBACL,KAAK,EAAE,MAAM,CAAC,iBAAiB,CAAC,KAAK;gBACrC,MAAM,EAAE,MAAM,CAAC,iBAAiB,CAAC,MAAM;aACxC,CAAC;QACJ,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,WAAmB;IAEnB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QAC/D,IACE,MAAM,CAAC,WAAW;YAClB,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ;YACtC,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAClC,CAAC;YACD,OAAO,MAAM,CAAC,WAAW,CAAC;QAC5B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,YAAY;IACd,CAAC;IACD,OAAO,EAAE,CAAC;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAIvC;IACC,OAAO;QACL,KAAK,EAAE,MAAM,CAAC,SAAS,IAAI,MAAM,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI;QAC/D,MAAM,EAAE,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,cAAc,EAAE,MAAM,IAAI,GAAG;KAClE,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,iCAAiC,CAAC,MAKjD;IACC,uDAAuD;IACvD,IAAI,aAAa,GAA6C,IAAI,CAAC;IACnE,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,WAAW,GAAG,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACxD,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,KAAK,EAAE,KAAK,IAAI,KAAK,EAAE,MAAM,EAAE,CAAC;YAClC,aAAa,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAClB,aAAa,IAAI,qBAAqB,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7D,OAAO,uBAAuB,CAAC;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc;KACf,CAAC,CAAC;AACL,CAAC;AAcD;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,EAAe,EACf,MAoBC;IAED,+CAA+C;IAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,UAAU;QACtC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC;QACnC,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe;QAChD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC;QACxC,CAAC,CAAC,IAAI,CAAC;IAET,2DAA2D;IAC3D,MAAM,QAAQ,GAAG,MAAM,EAAE;SACtB,UAAU,CAAC,kBAAkB,CAAC;SAC9B,SAAS,EAAE;SACX,KAAK,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC;SAC/B,KAAK,CAAC,YAAY,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,CAAC;SAC1C,OAAO,CAAC,YAAY,EAAE,MAAM,CAAC;SAC7B,OAAO,EAAE,CAAC;IAEb,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxB,iCAAiC;QACjC,MAAM,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAQ,CAAC;QAClC,MAAM,UAAU,GAAW,MAAM,CAAC,EAAE,CAAC;QAErC,0CAA0C;QAC1C,MAAM,SAAS,GAAwB;YACrC,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,cAAc,EAAE,MAAM,CAAC,aAAa;YACpC,cAAc,EAAE,MAAM,CAAC,aAAa;YACpC,GAAG,EAAE,MAAM,CAAC,GAAG;YACf,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,cAAc,EAAE,MAAM,CAAC,aAAa;YACpC,eAAe,EAAE,MAAM,CAAC,cAAc;YACtC,UAAU,EAAE,IAAI,IAAI,EAAE;iBACnB,WAAW,EAAE;iBACb,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC;iBACjB,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;SAC5B,CAAC;QACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;YACpC,SAAS,CAAC,UAAU,GAAG,cAAc,CAAC;YACtC,SAAS,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;QACnD,CAAC;QACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,SAAS,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC;QACjD,CAAC;QACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,SAAS,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;QAC1C,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;YACrC,SAAS,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QAC9C,CAAC;QACD,MAAM,EAAE;aACL,WAAW,CAAC,kBAAkB,CAAC;aAC/B,GAAG,CAAC,SAAS,CAAC;aACd,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,UAAU,CAAC;aAC5B,OAAO,EAAE,CAAC;QAEb,gDAAgD;QAChD,MAAM,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAY,CAAC,CAAC;QACvE,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,EAAE;iBACL,UAAU,CAAC,kBAAkB,CAAC;iBAC9B,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,YAAY,CAAC;iBAC/B,OAAO,EAAE,CAAC;QACf,CAAC;QAED,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;IAClE,CAAC;IAED,oCAAoC;IACpC,wEAAwE;IACxE,6EAA6E;IAC7E,0BAA0B;IAC1B,MAAM,UAAU,GAAG,UAAU,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;IAClD,MAAM,YAAY,GAAwB;QACxC,EAAE,EAAE,UAAU;QACd,UAAU,EAAE,MAAM,CAAC,SAAS;QAC5B,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,cAAc,EAAE,MAAM,CAAC,aAAa;QACpC,eAAe,EAAE,MAAM,CAAC,cAAc;KACvC,CAAC;IACF,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;QACpC,YAAY,CAAC,UAAU,GAAG,cAAc,CAAC;QACzC,YAAY,CAAC,gBAAgB,GAAG,mBAAmB,CAAC;IACtD,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,YAAY,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,CAAC;IACpD,CAAC;IACD,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACnC,YAAY,CAAC,UAAU,GAAG,MAAM,CAAC,SAAS,CAAC;IAC7C,CAAC;IACD,IAAI,MAAM,CAAC,WAAW,KAAK,SAAS,EAAE,CAAC;QACrC,YAAY,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IACjD,CAAC;IACD,MAAM,EAAE,CAAC,UAAU,CAAC,kBAAkB,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;IAEvE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,EAAE,EAAE,EAAE,CAAC;AACvD,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,WAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,kBAAkB,CAAC,CAAC;IAC5E,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;IAC9D,KAAK,MAAM,EAAE,IAAI,WAAW,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI;YACjB,GAAG,EAAE,OAAO;YACZ,GAAG,EAAE,YAAY;YACjB,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC;SACtC,EAAE,CAAC;YACF,IAAI,CAAC;gBACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,CAAC;YAC/C,CAAC;YAAC,MAAM,CAAC;gBACP,kCAAkC;YACpC,CAAC;QACH,CAAC;QACD,+DAA+D;QAC/D,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;YAC7C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxD,IAAI,CAAC;wBACH,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,CAAC;oBACjD,CAAC;oBAAC,MAAM,CAAC;wBACP,kCAAkC;oBACpC,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sCAAsC;QACxC,CAAC;IACH,CAAC;AACH,CAAC;AAQD;;;;;;;;GAQG;AACH,MAAM,UAAU,mCAAmC,CAAC,MAInD;IACC,MAAM,EAAE,cAAc,EAAE,YAAY,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAE7D,+CAA+C;IAC/C,IAAI,YAAY,KAAK,aAAa,IAAI,YAAY,KAAK,MAAM,EAAE,CAAC;QAC9D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,sCAAsC;IACtC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;IAED,8BAA8B;IAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,eAAe,GAAiC,EAAE,CAAC;IACvD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,eAAe,GAAG,uBAAuB,CAAC,GAAG,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,mEAAmE;IACrE,CAAC;IAED,MAAM,UAAU,GAAG,eAAe,CAAC,IAAI,CACrC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,cAAc,CAC7C,CAAC;IAEF,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,GACR,eAAe,CAAC,MAAM,KAAK,CAAC;YAC1B,CAAC,CAAC,0GAA0G,cAAc,UAAU;YACpI,CAAC,CAAC,UAAU,eAAe,CAAC,MAAM,oCAAoC,cAAc,IAAI,CAAC;QAC7F,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,gCAAgC,cAAc,KAAK,IAAI,4EAA4E;SAC3I,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mCAAmC,CACvD,EAAe;IAEf,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,UAAU,CAAC,kBAAkB,CAAC;SAC9B,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;SACpC,KAAK,CAAC,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC;SAC/B,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CACZ,EAAE,CAAC,EAAE,CAAC;QACJ,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC;QACpC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC;KACrC,CAAC,CACH;SACA,uBAAuB,EAAE,CAAC;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED;;;;;;GAMG;AACH;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,sBAAsB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,EAAe,EACf,QAAgE;IAEhE,+DAA+D;IAC/D,gEAAgE;IAChE,wEAAwE;IACxE,qEAAqE;IACrE,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAgC,CAAC;IACpE,MAAM,YAAY,GAAG,IAAI,GAAG,EAAgC,CAAC;IAC7D,KAAK,MAAM,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC9B,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;YACpB,mBAAmB,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,QAAQ,EAAE,EAAE,MAAM,CAAC,CAAC;YACtE,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,uEAAuE;IACvE,oEAAoE;IACpE,uCAAuC;IACvC,MAAM,IAAI,GAAG,MAAM,EAAE;SAClB,UAAU,CAAC,kBAAkB,CAAC;SAC9B,SAAS,EAAE;SACX,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,CACZ,EAAE,CAAC,EAAE,CAAC;QACJ,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC;QACpC,EAAE,CAAC,gBAAgB,EAAE,QAAQ,EAAE,IAAI,CAAC;KACrC,CAAC,CACH;SACA,OAAO,EAAE,CAAC;IAEb,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAE7C,IAAI,OAAO,GAAG,CAAC,CAAC;IAChB,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,MAAM,CAAC,GAAG,GAAU,CAAC;QACrB,MAAM,UAAU,GAAkB,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC;QACvE,IAAI,CAAC,UAAU;YAAE,SAAS;QAE1B,+EAA+E;QAC/E,wEAAwE;QACxE,MAAM,MAAM,GACV,CAAC,CAAC,CAAC,cAAc;YACf,mBAAmB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,cAAc,KAAK,UAAU,EAAE,CAAC,CAAC;YAChE,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM;YAAE,SAAS;QAEtB,6CAA6C;QAC7C,IAAI,CAAC,CAAC,UAAU,KAAK,MAAM,CAAC,GAAG;YAAE,SAAS;QAE1C,yDAAyD;QACzD,IAAI,WAAW,GAAkB,IAAI,CAAC;QACtC,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACrB,WAAW,GAAG,CAAC,CAAC,cAAc,CAAC;QACjC,CAAC;aAAM,IAAI,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACnE,WAAW,GAAG,gBAAgB,CAAC,iBAAiB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC;QACtE,CAAC;aAAM,IAAI,CAAC,CAAC,GAAG,EAAE,CAAC;YACjB,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,MAAM,EAAE;aACL,WAAW,CAAC,kBAAkB,CAAC;aAC/B,GAAG,CAAC;YACH,UAAU,EAAE,MAAM,CAAC,GAAG;YACtB,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACtD,CAAC;aACD,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,CAAC;aACtB,OAAO,EAAE,CAAC;QAEb,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,CAAC;AACrB,CAAC"}