@codeyam/codeyam-cli 0.1.0-staging.73a4bf4 → 0.1.0-staging.7497595

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 (892) 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 +24 -24
  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/astScopes/methodSemantics.ts +135 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/nodeToSource.ts +19 -0
  8. package/analyzer-template/packages/ai/src/lib/astScopes/paths.ts +11 -4
  9. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  10. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +295 -14
  11. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.ts +10 -3
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +16 -6
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  15. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +15 -6
  16. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +78 -2
  17. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +96 -33
  18. package/analyzer-template/packages/analyze/index.ts +4 -1
  19. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +19 -7
  20. package/analyzer-template/packages/analyze/src/lib/asts/index.ts +7 -2
  21. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  22. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +28 -2
  23. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +14 -37
  24. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  25. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +22 -6
  26. package/analyzer-template/packages/analyze/src/lib/files/analyze/gatherEntityMap.ts +9 -12
  27. package/analyzer-template/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.ts +21 -0
  28. package/analyzer-template/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.ts +82 -10
  29. package/analyzer-template/packages/analyze/src/lib/files/analyzeChange.ts +4 -0
  30. package/analyzer-template/packages/analyze/src/lib/files/analyzeInitial.ts +4 -0
  31. package/analyzer-template/packages/analyze/src/lib/files/analyzeNextRoute.ts +8 -3
  32. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  33. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +322 -58
  34. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.ts +0 -98
  35. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +1707 -1466
  36. package/analyzer-template/packages/aws/package.json +10 -10
  37. package/analyzer-template/packages/database/index.ts +1 -0
  38. package/analyzer-template/packages/database/package.json +4 -4
  39. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  40. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +164 -0
  41. package/analyzer-template/packages/database/src/lib/loadAnalysis.ts +25 -15
  42. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  43. package/analyzer-template/packages/database/src/lib/loadEntities.ts +0 -6
  44. package/analyzer-template/packages/database/src/lib/loadEntity.ts +19 -8
  45. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  46. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +94 -143
  47. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  48. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  49. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  50. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  51. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  52. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  54. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  56. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  58. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +29 -0
  60. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  61. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  62. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.d.ts.map +1 -1
  66. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js +7 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/loadAnalysis.js.map +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  70. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.d.ts.map +1 -1
  72. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js +0 -6
  73. package/analyzer-template/packages/github/dist/database/src/lib/loadEntities.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts +4 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.d.ts.map +1 -1
  76. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js +5 -5
  77. package/analyzer-template/packages/github/dist/database/src/lib/loadEntity.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  79. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  80. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  81. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  82. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +76 -90
  83. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  84. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  86. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  87. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  89. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  91. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  92. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  93. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  94. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  95. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  96. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  97. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  98. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js +2 -0
  99. package/analyzer-template/packages/github/dist/types/src/enums/ProjectFramework.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  101. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  102. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  103. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  104. package/analyzer-template/packages/github/package.json +1 -1
  105. package/analyzer-template/packages/types/src/enums/ProjectFramework.ts +2 -0
  106. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  107. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  108. package/analyzer-template/packages/ui-components/package.json +1 -1
  109. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts +2 -0
  110. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.d.ts.map +1 -1
  111. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js +2 -0
  112. package/analyzer-template/packages/utils/dist/types/src/enums/ProjectFramework.js.map +1 -1
  113. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  114. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  115. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  116. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts +3 -1
  118. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +28 -3
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  121. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +41 -2
  122. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  123. package/analyzer-template/project/analyzeFileEntities.ts +26 -0
  124. package/analyzer-template/project/constructMockCode.ts +168 -48
  125. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  126. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  127. package/analyzer-template/project/runMultiScenarioServer.ts +26 -3
  128. package/analyzer-template/project/start.ts +3 -0
  129. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  130. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  131. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  132. package/analyzer-template/project/writeScenarioComponents.ts +110 -17
  133. package/analyzer-template/tsconfig.json +13 -1
  134. package/background/src/lib/virtualized/project/analyzeFileEntities.js +22 -0
  135. package/background/src/lib/virtualized/project/analyzeFileEntities.js.map +1 -1
  136. package/background/src/lib/virtualized/project/constructMockCode.js +143 -39
  137. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  138. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  139. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  140. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  141. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  142. package/background/src/lib/virtualized/project/runMultiScenarioServer.js +23 -3
  143. package/background/src/lib/virtualized/project/runMultiScenarioServer.js.map +1 -1
  144. package/background/src/lib/virtualized/project/start.js +2 -0
  145. package/background/src/lib/virtualized/project/start.js.map +1 -1
  146. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  147. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  148. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  149. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  150. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  151. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  152. package/background/src/lib/virtualized/project/writeScenarioComponents.js +83 -12
  153. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  154. package/codeyam-cli/scripts/apply-setup.js +208 -11
  155. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  156. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js +196 -0
  157. package/codeyam-cli/src/__tests__/memory-scripts/filter-session.test.js.map +1 -0
  158. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js +114 -0
  159. package/codeyam-cli/src/__tests__/memory-scripts/read-json-field.test.js.map +1 -0
  160. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js +149 -0
  161. package/codeyam-cli/src/__tests__/memory-scripts/ripgrep-fallback.test.js.map +1 -0
  162. package/codeyam-cli/src/cli.js +56 -25
  163. package/codeyam-cli/src/cli.js.map +1 -1
  164. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js +47 -0
  165. package/codeyam-cli/src/commands/__tests__/editor.analyzeImportsArgs.test.js.map +1 -0
  166. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js +71 -0
  167. package/codeyam-cli/src/commands/__tests__/editor.auditNoAutoAnalysis.test.js.map +1 -0
  168. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js +30 -0
  169. package/codeyam-cli/src/commands/__tests__/editor.designSystem.test.js.map +1 -0
  170. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js +51 -0
  171. package/codeyam-cli/src/commands/__tests__/editor.isolateArgs.test.js.map +1 -0
  172. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js +55 -0
  173. package/codeyam-cli/src/commands/__tests__/editor.statePersistence.test.js.map +1 -0
  174. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js +56 -0
  175. package/codeyam-cli/src/commands/__tests__/editor.stepDispatch.test.js.map +1 -0
  176. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js +137 -47
  177. package/codeyam-cli/src/commands/__tests__/init.gitignore.test.js.map +1 -1
  178. package/codeyam-cli/src/commands/analyze.js +17 -7
  179. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  180. package/codeyam-cli/src/commands/default.js +14 -2
  181. package/codeyam-cli/src/commands/default.js.map +1 -1
  182. package/codeyam-cli/src/commands/editor.js +6313 -0
  183. package/codeyam-cli/src/commands/editor.js.map +1 -0
  184. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js +23 -0
  185. package/codeyam-cli/src/commands/editorAnalyzeImportsArgs.js.map +1 -0
  186. package/codeyam-cli/src/commands/editorIsolateArgs.js +25 -0
  187. package/codeyam-cli/src/commands/editorIsolateArgs.js.map +1 -0
  188. package/codeyam-cli/src/commands/init.js +129 -45
  189. package/codeyam-cli/src/commands/init.js.map +1 -1
  190. package/codeyam-cli/src/commands/memory.js +89 -75
  191. package/codeyam-cli/src/commands/memory.js.map +1 -1
  192. package/codeyam-cli/src/commands/telemetry.js +37 -0
  193. package/codeyam-cli/src/commands/telemetry.js.map +1 -0
  194. package/codeyam-cli/src/data/designSystems.js +27 -0
  195. package/codeyam-cli/src/data/designSystems.js.map +1 -0
  196. package/codeyam-cli/src/data/techStacks.js +77 -0
  197. package/codeyam-cli/src/data/techStacks.js.map +1 -0
  198. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js +173 -0
  199. package/codeyam-cli/src/utils/__tests__/analyzerFinalization.test.js.map +1 -0
  200. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js +46 -0
  201. package/codeyam-cli/src/utils/__tests__/backgroundServer.test.js.map +1 -0
  202. package/codeyam-cli/src/utils/__tests__/devServerState.test.js +226 -0
  203. package/codeyam-cli/src/utils/__tests__/devServerState.test.js.map +1 -0
  204. package/codeyam-cli/src/utils/__tests__/editorApi.test.js +181 -0
  205. package/codeyam-cli/src/utils/__tests__/editorApi.test.js.map +1 -0
  206. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js +4160 -0
  207. package/codeyam-cli/src/utils/__tests__/editorAudit.test.js.map +1 -0
  208. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js +76 -0
  209. package/codeyam-cli/src/utils/__tests__/editorBroadcastViewport.test.js.map +1 -0
  210. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js +93 -0
  211. package/codeyam-cli/src/utils/__tests__/editorCapture.test.js.map +1 -0
  212. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js +137 -0
  213. package/codeyam-cli/src/utils/__tests__/editorCaptureScenarioSeeding.test.js.map +1 -0
  214. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js +100 -0
  215. package/codeyam-cli/src/utils/__tests__/editorDeleteScenario.test.js.map +1 -0
  216. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js +304 -0
  217. package/codeyam-cli/src/utils/__tests__/editorDevServer.test.js.map +1 -0
  218. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js +194 -0
  219. package/codeyam-cli/src/utils/__tests__/editorEntityChangeStatus.test.js.map +1 -0
  220. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js +381 -0
  221. package/codeyam-cli/src/utils/__tests__/editorEntityHelpers.test.js.map +1 -0
  222. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js +67 -0
  223. package/codeyam-cli/src/utils/__tests__/editorGuardMiddleware.test.js.map +1 -0
  224. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js +294 -0
  225. package/codeyam-cli/src/utils/__tests__/editorImageVerifier.test.js.map +1 -0
  226. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js +542 -0
  227. package/codeyam-cli/src/utils/__tests__/editorJournal.test.js.map +1 -0
  228. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js +594 -0
  229. package/codeyam-cli/src/utils/__tests__/editorLoaderHelpers.test.js.map +1 -0
  230. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js +435 -0
  231. package/codeyam-cli/src/utils/__tests__/editorMigration.test.js.map +1 -0
  232. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js +270 -0
  233. package/codeyam-cli/src/utils/__tests__/editorMockState.test.js.map +1 -0
  234. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js +217 -0
  235. package/codeyam-cli/src/utils/__tests__/editorPreloadHelpers.test.js.map +1 -0
  236. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js +361 -0
  237. package/codeyam-cli/src/utils/__tests__/editorPreview.test.js.map +1 -0
  238. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js +250 -0
  239. package/codeyam-cli/src/utils/__tests__/editorProxySession.test.js.map +1 -0
  240. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js +1108 -0
  241. package/codeyam-cli/src/utils/__tests__/editorRoadmap.test.js.map +1 -0
  242. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js +139 -0
  243. package/codeyam-cli/src/utils/__tests__/editorScenarioLookup.test.js.map +1 -0
  244. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js +411 -0
  245. package/codeyam-cli/src/utils/__tests__/editorScenarioSwitch.test.js.map +1 -0
  246. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js +1768 -0
  247. package/codeyam-cli/src/utils/__tests__/editorScenarios.test.js.map +1 -0
  248. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js +413 -0
  249. package/codeyam-cli/src/utils/__tests__/editorSeedAdapter.test.js.map +1 -0
  250. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js +143 -0
  251. package/codeyam-cli/src/utils/__tests__/editorSeedAdapterPrismaValidation.test.js.map +1 -0
  252. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js +66 -0
  253. package/codeyam-cli/src/utils/__tests__/editorSessionFilter.test.js.map +1 -0
  254. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js +53 -0
  255. package/codeyam-cli/src/utils/__tests__/editorShouldRevalidate.test.js.map +1 -0
  256. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js +2121 -0
  257. package/codeyam-cli/src/utils/__tests__/entityChangeStatus.test.js.map +1 -0
  258. package/codeyam-cli/src/utils/__tests__/envFile.test.js +125 -0
  259. package/codeyam-cli/src/utils/__tests__/envFile.test.js.map +1 -0
  260. package/codeyam-cli/src/utils/__tests__/git.editor.test.js +134 -0
  261. package/codeyam-cli/src/utils/__tests__/git.editor.test.js.map +1 -0
  262. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js +177 -0
  263. package/codeyam-cli/src/utils/__tests__/glossaryAdd.test.js.map +1 -0
  264. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js +500 -0
  265. package/codeyam-cli/src/utils/__tests__/handoffContext.test.js.map +1 -0
  266. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js +122 -0
  267. package/codeyam-cli/src/utils/__tests__/journalCaptureStabilization.test.js.map +1 -0
  268. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js +302 -0
  269. package/codeyam-cli/src/utils/__tests__/manualEntityAnalysis.test.js.map +1 -0
  270. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  271. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  272. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js +129 -0
  273. package/codeyam-cli/src/utils/__tests__/parseRegisterArg.test.js.map +1 -0
  274. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  275. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  276. package/codeyam-cli/src/utils/__tests__/project.test.js +65 -0
  277. package/codeyam-cli/src/utils/__tests__/project.test.js.map +1 -0
  278. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js +127 -0
  279. package/codeyam-cli/src/utils/__tests__/registerScenarioResult.test.js.map +1 -0
  280. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js +118 -0
  281. package/codeyam-cli/src/utils/__tests__/routePatternMatching.test.js.map +1 -0
  282. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js +284 -0
  283. package/codeyam-cli/src/utils/__tests__/scenarioCoverage.test.js.map +1 -0
  284. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js +121 -0
  285. package/codeyam-cli/src/utils/__tests__/scenarioMarkers.test.js.map +1 -0
  286. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js +672 -0
  287. package/codeyam-cli/src/utils/__tests__/scenariosManifest.test.js.map +1 -0
  288. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js +84 -0
  289. package/codeyam-cli/src/utils/__tests__/screenshotHash.test.js.map +1 -0
  290. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +51 -4
  291. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  292. package/codeyam-cli/src/utils/__tests__/telemetry.test.js +159 -0
  293. package/codeyam-cli/src/utils/__tests__/telemetry.test.js.map +1 -0
  294. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js +51 -0
  295. package/codeyam-cli/src/utils/__tests__/templateConsistency.test.js.map +1 -0
  296. package/codeyam-cli/src/utils/__tests__/testRunner.test.js +216 -0
  297. package/codeyam-cli/src/utils/__tests__/testRunner.test.js.map +1 -0
  298. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js +148 -0
  299. package/codeyam-cli/src/utils/__tests__/webappDetection.test.js.map +1 -0
  300. package/codeyam-cli/src/utils/analysisRunner.js +39 -8
  301. package/codeyam-cli/src/utils/analysisRunner.js.map +1 -1
  302. package/codeyam-cli/src/utils/analyzer.js +19 -0
  303. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  304. package/codeyam-cli/src/utils/analyzerFinalization.js +100 -0
  305. package/codeyam-cli/src/utils/analyzerFinalization.js.map +1 -0
  306. package/codeyam-cli/src/utils/backgroundServer.js +120 -45
  307. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  308. package/codeyam-cli/src/utils/buildFlags.js +4 -0
  309. package/codeyam-cli/src/utils/buildFlags.js.map +1 -0
  310. package/codeyam-cli/src/utils/database.js +37 -2
  311. package/codeyam-cli/src/utils/database.js.map +1 -1
  312. package/codeyam-cli/src/utils/designSystemShowcase.js +810 -0
  313. package/codeyam-cli/src/utils/designSystemShowcase.js.map +1 -0
  314. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  315. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  316. package/codeyam-cli/src/utils/devServerState.js +103 -0
  317. package/codeyam-cli/src/utils/devServerState.js.map +1 -0
  318. package/codeyam-cli/src/utils/editorApi.js +95 -0
  319. package/codeyam-cli/src/utils/editorApi.js.map +1 -0
  320. package/codeyam-cli/src/utils/editorAudit.js +849 -0
  321. package/codeyam-cli/src/utils/editorAudit.js.map +1 -0
  322. package/codeyam-cli/src/utils/editorBroadcastViewport.js +26 -0
  323. package/codeyam-cli/src/utils/editorBroadcastViewport.js.map +1 -0
  324. package/codeyam-cli/src/utils/editorCapture.js +102 -0
  325. package/codeyam-cli/src/utils/editorCapture.js.map +1 -0
  326. package/codeyam-cli/src/utils/editorDeleteScenario.js +67 -0
  327. package/codeyam-cli/src/utils/editorDeleteScenario.js.map +1 -0
  328. package/codeyam-cli/src/utils/editorDevServer.js +197 -0
  329. package/codeyam-cli/src/utils/editorDevServer.js.map +1 -0
  330. package/codeyam-cli/src/utils/editorEntityChangeStatus.js +50 -0
  331. package/codeyam-cli/src/utils/editorEntityChangeStatus.js.map +1 -0
  332. package/codeyam-cli/src/utils/editorEntityHelpers.js +144 -0
  333. package/codeyam-cli/src/utils/editorEntityHelpers.js.map +1 -0
  334. package/codeyam-cli/src/utils/editorGuard.js +36 -0
  335. package/codeyam-cli/src/utils/editorGuard.js.map +1 -0
  336. package/codeyam-cli/src/utils/editorImageVerifier.js +155 -0
  337. package/codeyam-cli/src/utils/editorImageVerifier.js.map +1 -0
  338. package/codeyam-cli/src/utils/editorJournal.js +225 -0
  339. package/codeyam-cli/src/utils/editorJournal.js.map +1 -0
  340. package/codeyam-cli/src/utils/editorLoaderHelpers.js +152 -0
  341. package/codeyam-cli/src/utils/editorLoaderHelpers.js.map +1 -0
  342. package/codeyam-cli/src/utils/editorMigration.js +224 -0
  343. package/codeyam-cli/src/utils/editorMigration.js.map +1 -0
  344. package/codeyam-cli/src/utils/editorMockState.js +248 -0
  345. package/codeyam-cli/src/utils/editorMockState.js.map +1 -0
  346. package/codeyam-cli/src/utils/editorPreloadHelpers.js +135 -0
  347. package/codeyam-cli/src/utils/editorPreloadHelpers.js.map +1 -0
  348. package/codeyam-cli/src/utils/editorPreview.js +139 -0
  349. package/codeyam-cli/src/utils/editorPreview.js.map +1 -0
  350. package/codeyam-cli/src/utils/editorRecapture.js +109 -0
  351. package/codeyam-cli/src/utils/editorRecapture.js.map +1 -0
  352. package/codeyam-cli/src/utils/editorRoadmap.js +574 -0
  353. package/codeyam-cli/src/utils/editorRoadmap.js.map +1 -0
  354. package/codeyam-cli/src/utils/editorScenarioSwitch.js +149 -0
  355. package/codeyam-cli/src/utils/editorScenarioSwitch.js.map +1 -0
  356. package/codeyam-cli/src/utils/editorScenarios.js +687 -0
  357. package/codeyam-cli/src/utils/editorScenarios.js.map +1 -0
  358. package/codeyam-cli/src/utils/editorSeedAdapter.js +475 -0
  359. package/codeyam-cli/src/utils/editorSeedAdapter.js.map +1 -0
  360. package/codeyam-cli/src/utils/editorShouldRevalidate.js +21 -0
  361. package/codeyam-cli/src/utils/editorShouldRevalidate.js.map +1 -0
  362. package/codeyam-cli/src/utils/entityChangeStatus.js +394 -0
  363. package/codeyam-cli/src/utils/entityChangeStatus.js.map +1 -0
  364. package/codeyam-cli/src/utils/entityChangeStatus.server.js +227 -0
  365. package/codeyam-cli/src/utils/entityChangeStatus.server.js.map +1 -0
  366. package/codeyam-cli/src/utils/envFile.js +90 -0
  367. package/codeyam-cli/src/utils/envFile.js.map +1 -0
  368. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  369. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  370. package/codeyam-cli/src/utils/fileWatcher.js +63 -9
  371. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  372. package/codeyam-cli/src/utils/git.js +103 -0
  373. package/codeyam-cli/src/utils/git.js.map +1 -1
  374. package/codeyam-cli/src/utils/glossaryAdd.js +74 -0
  375. package/codeyam-cli/src/utils/glossaryAdd.js.map +1 -0
  376. package/codeyam-cli/src/utils/handoffContext.js +257 -0
  377. package/codeyam-cli/src/utils/handoffContext.js.map +1 -0
  378. package/codeyam-cli/src/utils/install-skills.js +101 -15
  379. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  380. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  381. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  382. package/codeyam-cli/src/utils/manualEntityAnalysis.js +196 -0
  383. package/codeyam-cli/src/utils/manualEntityAnalysis.js.map +1 -0
  384. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  385. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  386. package/codeyam-cli/src/utils/parseRegisterArg.js +31 -0
  387. package/codeyam-cli/src/utils/parseRegisterArg.js.map +1 -0
  388. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  389. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  390. package/codeyam-cli/src/utils/progress.js +2 -2
  391. package/codeyam-cli/src/utils/progress.js.map +1 -1
  392. package/codeyam-cli/src/utils/project.js +15 -5
  393. package/codeyam-cli/src/utils/project.js.map +1 -1
  394. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  395. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  396. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js +159 -0
  397. package/codeyam-cli/src/utils/queue/__tests__/job.interactiveStart.test.js.map +1 -0
  398. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  399. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  400. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  401. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  402. package/codeyam-cli/src/utils/queue/job.js +105 -7
  403. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  404. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  405. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  406. package/codeyam-cli/src/utils/registerScenarioResult.js +52 -0
  407. package/codeyam-cli/src/utils/registerScenarioResult.js.map +1 -0
  408. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  409. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  410. package/codeyam-cli/src/utils/routePatternMatching.js +129 -0
  411. package/codeyam-cli/src/utils/routePatternMatching.js.map +1 -0
  412. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  413. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  414. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  415. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  416. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  417. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  418. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +2 -4
  419. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  420. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  421. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  422. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +1 -1
  423. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  424. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  425. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  426. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  427. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  428. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  429. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  430. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  431. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  432. package/codeyam-cli/src/utils/rules/index.js +1 -0
  433. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  434. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  435. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  436. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  437. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  438. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  439. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  440. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  441. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  442. package/codeyam-cli/src/utils/scenarioCoverage.js +77 -0
  443. package/codeyam-cli/src/utils/scenarioCoverage.js.map +1 -0
  444. package/codeyam-cli/src/utils/scenarioMarkers.js +134 -0
  445. package/codeyam-cli/src/utils/scenarioMarkers.js.map +1 -0
  446. package/codeyam-cli/src/utils/scenariosManifest.js +313 -0
  447. package/codeyam-cli/src/utils/scenariosManifest.js.map +1 -0
  448. package/codeyam-cli/src/utils/screenshotHash.js +26 -0
  449. package/codeyam-cli/src/utils/screenshotHash.js.map +1 -0
  450. package/codeyam-cli/src/utils/serverState.js +57 -2
  451. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  452. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +83 -11
  453. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  454. package/codeyam-cli/src/utils/simulationGateMiddleware.js +175 -0
  455. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  456. package/codeyam-cli/src/utils/slugUtils.js +25 -0
  457. package/codeyam-cli/src/utils/slugUtils.js.map +1 -0
  458. package/codeyam-cli/src/utils/syncMocksMiddleware.js +7 -26
  459. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  460. package/codeyam-cli/src/utils/techStackConfig.js +38 -0
  461. package/codeyam-cli/src/utils/techStackConfig.js.map +1 -0
  462. package/codeyam-cli/src/utils/techStackConfig.test.js +85 -0
  463. package/codeyam-cli/src/utils/techStackConfig.test.js.map +1 -0
  464. package/codeyam-cli/src/utils/telemetry.js +106 -0
  465. package/codeyam-cli/src/utils/telemetry.js.map +1 -0
  466. package/codeyam-cli/src/utils/telemetryMiddleware.js +22 -0
  467. package/codeyam-cli/src/utils/telemetryMiddleware.js.map +1 -0
  468. package/codeyam-cli/src/utils/testResultCache.js +53 -0
  469. package/codeyam-cli/src/utils/testResultCache.js.map +1 -0
  470. package/codeyam-cli/src/utils/testResultCache.server.js +81 -0
  471. package/codeyam-cli/src/utils/testResultCache.server.js.map +1 -0
  472. package/codeyam-cli/src/utils/testResultCache.server.test.js +187 -0
  473. package/codeyam-cli/src/utils/testResultCache.server.test.js.map +1 -0
  474. package/codeyam-cli/src/utils/testResultCache.test.js +230 -0
  475. package/codeyam-cli/src/utils/testResultCache.test.js.map +1 -0
  476. package/codeyam-cli/src/utils/testRunner.js +350 -0
  477. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  478. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  479. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  480. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  481. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  482. package/codeyam-cli/src/utils/webappDetection.js +38 -3
  483. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  484. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js +99 -0
  485. package/codeyam-cli/src/webserver/__tests__/api.interactive-switch-scenario.test.js.map +1 -0
  486. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js +153 -0
  487. package/codeyam-cli/src/webserver/__tests__/buildPtyEnv.test.js.map +1 -0
  488. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js +107 -0
  489. package/codeyam-cli/src/webserver/__tests__/clientErrors.test.js.map +1 -0
  490. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  491. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  492. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js +1000 -0
  493. package/codeyam-cli/src/webserver/__tests__/editorProxy.test.js.map +1 -0
  494. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js +315 -0
  495. package/codeyam-cli/src/webserver/__tests__/idleDetector.test.js.map +1 -0
  496. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js +135 -0
  497. package/codeyam-cli/src/webserver/__tests__/stripClaudeCommand.test.js.map +1 -0
  498. package/codeyam-cli/src/webserver/app/lib/clientErrors.js +86 -0
  499. package/codeyam-cli/src/webserver/app/lib/clientErrors.js.map +1 -0
  500. package/codeyam-cli/src/webserver/app/lib/database.js +41 -27
  501. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  502. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  503. package/codeyam-cli/src/webserver/app/lib/git.js +397 -0
  504. package/codeyam-cli/src/webserver/app/lib/git.js.map +1 -0
  505. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js +34 -0
  506. package/codeyam-cli/src/webserver/app/routes/api.interactive-switch-scenario.js.map +1 -0
  507. package/codeyam-cli/src/webserver/app/types/editor.js +8 -0
  508. package/codeyam-cli/src/webserver/app/types/editor.js.map +1 -0
  509. package/codeyam-cli/src/webserver/backgroundServer.js +141 -42
  510. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  511. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  512. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  513. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-DTBZZfSk.js +1 -0
  514. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-BLlhOa3C.js → EntityItem-BxclONWq.js} +5 -5
  515. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-CQgyEGV-.js +1 -0
  516. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-CzdG5I7z.js → EntityTypeIcon-BsnEOJZ_.js} +9 -9
  517. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ByaELMbv.js +1 -0
  518. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-6WjVfhxX.js +25 -0
  519. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-ChX-Hp7W.js +3 -0
  520. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B1LNGboS.js → LoadingDots-By5zI316.js} +1 -1
  521. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-B0Ll1DjK.js → LogViewer-C-9zQdXg.js} +3 -3
  522. package/codeyam-cli/src/webserver/build/client/assets/MiniClaudeChat-Bs2_Oua4.js +36 -0
  523. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-CVOvmCKb.js → ReportIssueModal-DQsceHVv.js} +4 -4
  524. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-DThcm_9M.js +1 -0
  525. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-D54Mmpwi.js → ScenarioViewer-Cl4oOA3A.js} +3 -3
  526. package/codeyam-cli/src/webserver/build/client/assets/Spinner-CIil5-gb.js +34 -0
  527. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-CK7-NaPZ.js +1 -0
  528. package/codeyam-cli/src/webserver/build/client/assets/ViewportInspectBar-BqkA9zyZ.js +1 -0
  529. package/codeyam-cli/src/webserver/build/client/assets/{_index-CKTtYlBU.js → _index-DnOgyseQ.js} +4 -4
  530. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-CdziRIWU.js → activity.(_tab)-DqM9hbNE.js} +8 -8
  531. package/codeyam-cli/src/webserver/build/client/assets/addon-canvas-DpzMmAy5.js +1 -0
  532. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-YJmn1quW.js +12 -0
  533. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-C58dYPwR.js +1 -0
  534. package/codeyam-cli/src/webserver/build/client/assets/addon-webgl-DI8QOUvO.js +58 -0
  535. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-B8NCeOrm.js +22 -0
  536. package/codeyam-cli/src/webserver/build/client/assets/api.dev-mode-events-l0sNRNKZ.js +1 -0
  537. package/codeyam-cli/src/webserver/build/client/assets/api.editor-audit-l0sNRNKZ.js +1 -0
  538. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  539. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  540. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  541. package/codeyam-cli/src/webserver/build/client/assets/api.editor-database-verify-l0sNRNKZ.js +1 -0
  542. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  543. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  544. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-diff-l0sNRNKZ.js +1 -0
  545. package/codeyam-cli/src/webserver/build/client/assets/api.editor-file-l0sNRNKZ.js +1 -0
  546. package/codeyam-cli/src/webserver/build/client/assets/api.editor-github-verify-l0sNRNKZ.js +1 -0
  547. package/codeyam-cli/src/webserver/build/client/assets/api.editor-handoff-l0sNRNKZ.js +1 -0
  548. package/codeyam-cli/src/webserver/build/client/assets/api.editor-hosting-verify-l0sNRNKZ.js +1 -0
  549. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  550. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  551. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  552. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  553. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  554. package/codeyam-cli/src/webserver/build/client/assets/api.editor-load-commit-l0sNRNKZ.js +1 -0
  555. package/codeyam-cli/src/webserver/build/client/assets/api.editor-project-info-l0sNRNKZ.js +1 -0
  556. package/codeyam-cli/src/webserver/build/client/assets/api.editor-recapture-stale-l0sNRNKZ.js +1 -0
  557. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  558. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  559. package/codeyam-cli/src/webserver/build/client/assets/api.editor-rename-scenario-l0sNRNKZ.js +1 -0
  560. package/codeyam-cli/src/webserver/build/client/assets/api.editor-roadmap-l0sNRNKZ.js +1 -0
  561. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-scenario-data-l0sNRNKZ.js +1 -0
  562. package/codeyam-cli/src/webserver/build/client/assets/api.editor-save-seed-state-l0sNRNKZ.js +1 -0
  563. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-coverage-l0sNRNKZ.js +1 -0
  564. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  565. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  566. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-prompt-l0sNRNKZ.js +1 -0
  567. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenarios-l0sNRNKZ.js +1 -0
  568. package/codeyam-cli/src/webserver/build/client/assets/api.editor-schema-l0sNRNKZ.js +1 -0
  569. package/codeyam-cli/src/webserver/build/client/assets/api.editor-session-l0sNRNKZ.js +1 -0
  570. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  571. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  572. package/codeyam-cli/src/webserver/build/client/assets/api.editor-verify-routes-l0sNRNKZ.js +1 -0
  573. package/codeyam-cli/src/webserver/build/client/assets/api.interactive-switch-scenario-l0sNRNKZ.js +1 -0
  574. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  575. package/codeyam-cli/src/webserver/build/client/assets/{book-open-Ch8b7GyQ.js → book-open-BFSIqZgO.js} +2 -2
  576. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-vJHJExlT.js → chevron-down-B9fDzFVh.js} +2 -2
  577. package/codeyam-cli/src/webserver/build/client/assets/chunk-UVKPFVEO-Bmq2apuh.js +43 -0
  578. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-rwynPZTW.js → circle-check-DLPObLUx.js} +2 -2
  579. package/codeyam-cli/src/webserver/build/client/assets/{copy-BBSpeBYf.js → copy-DXEmO0TD.js} +3 -3
  580. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-BwyFiRot.js +41 -0
  581. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-Coe5NhbS.js +1 -0
  582. package/codeyam-cli/src/webserver/build/client/assets/{cy-logo-cli-CCKUIm0S.svg → cy-logo-cli-DoA97ML3.svg} +2 -2
  583. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-iRhRIFlp.js +1 -0
  584. package/codeyam-cli/src/webserver/build/client/assets/editor._tab-BZPBzV73.js +1 -0
  585. package/codeyam-cli/src/webserver/build/client/assets/editor.entity.(_sha)-DhtVC4aI.js +161 -0
  586. package/codeyam-cli/src/webserver/build/client/assets/editorPreview-C6fEYHrh.js +41 -0
  587. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-pc-vc6wO.js +24 -0
  588. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-C8AyYgYT.js +6 -0
  589. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-DziaVQX1.js +6 -0
  590. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BTcpgIpC.js +6 -0
  591. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-BEqewwtZ.js → entity._sha_.edit._scenarioId-D_O_ajfZ.js} +2 -2
  592. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-Dxqz8ygt.js → entry.client-j1Vi0bco.js} +6 -6
  593. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-Daa96Fr1.js +1 -0
  594. package/codeyam-cli/src/webserver/build/client/assets/files-kuny2Q_s.js +1 -0
  595. package/codeyam-cli/src/webserver/build/client/assets/git-DgCZPMie.js +1 -0
  596. package/codeyam-cli/src/webserver/build/client/assets/globals-L-aUIeux.css +1 -0
  597. package/codeyam-cli/src/webserver/build/client/assets/{index-DgAAopZk.js → index-BliGSSpl.js} +1 -1
  598. package/codeyam-cli/src/webserver/build/client/assets/index-SqjQKTdH.js +15 -0
  599. package/codeyam-cli/src/webserver/build/client/assets/{index-viijWaN6.js → index-vyrZD2g4.js} +1 -1
  600. package/codeyam-cli/src/webserver/build/client/assets/jsx-runtime-D_zvdyIk.js +9 -0
  601. package/codeyam-cli/src/webserver/build/client/assets/labs-c3yLxSEp.js +1 -0
  602. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-LGi2eKI5.js → loader-circle-D-q28GLF.js} +2 -2
  603. package/codeyam-cli/src/webserver/build/client/assets/manifest-79d0d81a.js +1 -0
  604. package/codeyam-cli/src/webserver/build/client/assets/memory-CEWIUC4t.js +101 -0
  605. package/codeyam-cli/src/webserver/build/client/assets/{pause-DxJFmMsK.js → pause-BP6fitdh.js} +3 -3
  606. package/codeyam-cli/src/webserver/build/client/assets/root-L2V0jea7.js +80 -0
  607. package/codeyam-cli/src/webserver/build/client/assets/{search-Cu3QE9E5.js → search-BooqacKS.js} +2 -2
  608. package/codeyam-cli/src/webserver/build/client/assets/settings-BM0nbryO.js +1 -0
  609. package/codeyam-cli/src/webserver/build/client/assets/simulations-ovy6FjRY.js +1 -0
  610. package/codeyam-cli/src/webserver/build/client/assets/{terminal-dAhIBEcd.js → terminal-DHemCJIs.js} +3 -3
  611. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-C4CYTEeP.js → triangle-alert-D87ekDl8.js} +2 -2
  612. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-Dk0Tciqg.js +1 -0
  613. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C8QvIe05.js +2 -0
  614. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-jkCytuYz.js +1 -0
  615. package/codeyam-cli/src/webserver/build/client/assets/useToast-BgqkixU9.js +1 -0
  616. package/codeyam-cli/src/webserver/build/client/assets/xterm-BqvuqXEL.js +27 -0
  617. package/codeyam-cli/src/webserver/build/client/sound-test.html +98 -0
  618. package/codeyam-cli/src/webserver/build/server/assets/analysisRunner-QgInFGdU.js +16 -0
  619. package/codeyam-cli/src/webserver/build/server/assets/index-zblh9auj.js +1 -0
  620. package/codeyam-cli/src/webserver/build/server/assets/init-DaE0CBjk.js +14 -0
  621. package/codeyam-cli/src/webserver/build/server/assets/progress-CHTtrxFG.js +1 -0
  622. package/codeyam-cli/src/webserver/build/server/assets/server-build-CNvgz1cC.js +853 -0
  623. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  624. package/codeyam-cli/src/webserver/build-info.json +5 -5
  625. package/codeyam-cli/src/webserver/devServer.js +39 -5
  626. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  627. package/codeyam-cli/src/webserver/editorProxy.js +1263 -0
  628. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  629. package/codeyam-cli/src/webserver/idleDetector.js +130 -0
  630. package/codeyam-cli/src/webserver/idleDetector.js.map +1 -0
  631. package/codeyam-cli/src/webserver/mockStateEvents.js +28 -0
  632. package/codeyam-cli/src/webserver/mockStateEvents.js.map +1 -0
  633. package/codeyam-cli/src/webserver/public/sound-test.html +98 -0
  634. package/codeyam-cli/src/webserver/scripts/codeyam-preload.mjs +414 -0
  635. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +283 -0
  636. package/codeyam-cli/src/webserver/server.js +446 -1
  637. package/codeyam-cli/src/webserver/server.js.map +1 -1
  638. package/codeyam-cli/src/webserver/terminalServer.js +1043 -0
  639. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  640. package/codeyam-cli/templates/__tests__/editor-step-hook.prompt-capture.test.ts +118 -0
  641. package/codeyam-cli/templates/chrome-extension-react/EXTENSION_SETUP.md +75 -0
  642. package/codeyam-cli/templates/chrome-extension-react/README.md +46 -0
  643. package/codeyam-cli/templates/chrome-extension-react/gitignore +15 -0
  644. package/codeyam-cli/templates/chrome-extension-react/index.html +12 -0
  645. package/codeyam-cli/templates/chrome-extension-react/package.json +27 -0
  646. package/codeyam-cli/templates/chrome-extension-react/popup.html +12 -0
  647. package/codeyam-cli/templates/chrome-extension-react/public/manifest.json +15 -0
  648. package/codeyam-cli/templates/chrome-extension-react/src/background/service-worker.ts +7 -0
  649. package/codeyam-cli/templates/chrome-extension-react/src/globals.css +6 -0
  650. package/codeyam-cli/templates/chrome-extension-react/src/lib/storage.ts +37 -0
  651. package/codeyam-cli/templates/chrome-extension-react/src/popup/App.tsx +12 -0
  652. package/codeyam-cli/templates/chrome-extension-react/src/popup/main.tsx +10 -0
  653. package/codeyam-cli/templates/chrome-extension-react/tsconfig.json +24 -0
  654. package/codeyam-cli/templates/chrome-extension-react/vite.config.ts +41 -0
  655. package/codeyam-cli/templates/codeyam-editor-claude.md +149 -0
  656. package/codeyam-cli/templates/codeyam-editor-codex.md +61 -0
  657. package/codeyam-cli/templates/codeyam-editor-gemini.md +59 -0
  658. package/codeyam-cli/templates/codeyam-editor-reference.md +216 -0
  659. package/codeyam-cli/templates/design-systems/clean-dashboard-design-system.md +255 -0
  660. package/codeyam-cli/templates/design-systems/editorial-design-system.md +267 -0
  661. package/codeyam-cli/templates/design-systems/mono-brutalist-design-system.md +256 -0
  662. package/codeyam-cli/templates/design-systems/neo-brutalist-design-system.md +294 -0
  663. package/codeyam-cli/templates/editor-step-hook.py +368 -0
  664. package/codeyam-cli/templates/expo-react-native/MOBILE_SETUP.md +288 -0
  665. package/codeyam-cli/templates/expo-react-native/README.md +41 -0
  666. package/codeyam-cli/templates/expo-react-native/__tests__/.gitkeep +0 -0
  667. package/codeyam-cli/templates/expo-react-native/app/_layout.tsx +15 -0
  668. package/codeyam-cli/templates/expo-react-native/app/index.tsx +36 -0
  669. package/codeyam-cli/templates/expo-react-native/app.json +29 -0
  670. package/codeyam-cli/templates/expo-react-native/babel.config.js +10 -0
  671. package/codeyam-cli/templates/expo-react-native/gitignore +14 -0
  672. package/codeyam-cli/templates/expo-react-native/global.css +10 -0
  673. package/codeyam-cli/templates/expo-react-native/lib/storage.ts +32 -0
  674. package/codeyam-cli/templates/expo-react-native/lib/theme.ts +73 -0
  675. package/codeyam-cli/templates/expo-react-native/metro.config.js +6 -0
  676. package/codeyam-cli/templates/expo-react-native/nativewind-env.d.ts +1 -0
  677. package/codeyam-cli/templates/expo-react-native/package.json +54 -0
  678. package/codeyam-cli/templates/expo-react-native/patches/expo-modules-autolinking+3.0.24.patch +29 -0
  679. package/codeyam-cli/templates/expo-react-native/tailwind.config.js +10 -0
  680. package/codeyam-cli/templates/expo-react-native/tsconfig.json +10 -0
  681. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  682. package/codeyam-cli/templates/isolation-route/expo-router.tsx.template +54 -0
  683. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  684. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  685. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  686. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  687. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  688. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  689. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_PATTERNS.md +308 -0
  690. package/codeyam-cli/templates/nextjs-prisma-sqlite/AUTH_UPGRADE.md +304 -0
  691. package/codeyam-cli/templates/nextjs-prisma-sqlite/DATABASE.md +126 -0
  692. package/codeyam-cli/templates/nextjs-prisma-sqlite/FEATURE_PATTERNS.md +37 -0
  693. package/codeyam-cli/templates/nextjs-prisma-sqlite/README.md +53 -0
  694. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  695. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/codeyam-isolate/layout.tsx +12 -0
  696. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  697. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  698. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +24 -0
  699. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  700. package/codeyam-cli/templates/nextjs-prisma-sqlite/env +4 -0
  701. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  702. package/codeyam-cli/templates/nextjs-prisma-sqlite/gitignore +65 -0
  703. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  704. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +39 -0
  705. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  706. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  707. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +40 -0
  708. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  709. package/codeyam-cli/templates/nextjs-prisma-sqlite/seed-adapter.ts +140 -0
  710. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  711. package/codeyam-cli/templates/nextjs-prisma-sqlite/vitest.config.ts +13 -0
  712. package/codeyam-cli/templates/nextjs-prisma-supabase/README.md +52 -0
  713. package/codeyam-cli/templates/nextjs-prisma-supabase/SUPABASE_SETUP.md +104 -0
  714. package/codeyam-cli/templates/nextjs-prisma-supabase/app/api/todos/route.ts +17 -0
  715. package/codeyam-cli/templates/nextjs-prisma-supabase/app/globals.css +26 -0
  716. package/codeyam-cli/templates/nextjs-prisma-supabase/app/layout.tsx +34 -0
  717. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/prisma.ts +20 -0
  718. package/codeyam-cli/templates/nextjs-prisma-supabase/app/lib/supabase.ts +12 -0
  719. package/codeyam-cli/templates/nextjs-prisma-supabase/app/page.tsx +10 -0
  720. package/codeyam-cli/templates/nextjs-prisma-supabase/env +9 -0
  721. package/codeyam-cli/templates/nextjs-prisma-supabase/eslint.config.mjs +11 -0
  722. package/codeyam-cli/templates/nextjs-prisma-supabase/gitignore +40 -0
  723. package/codeyam-cli/templates/nextjs-prisma-supabase/next.config.ts +11 -0
  724. package/codeyam-cli/templates/nextjs-prisma-supabase/package.json +37 -0
  725. package/codeyam-cli/templates/nextjs-prisma-supabase/postcss.config.mjs +7 -0
  726. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/schema.prisma +27 -0
  727. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma/seed.ts +39 -0
  728. package/codeyam-cli/templates/nextjs-prisma-supabase/prisma.config.ts +12 -0
  729. package/codeyam-cli/templates/nextjs-prisma-supabase/tsconfig.json +34 -0
  730. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  731. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  732. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  733. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  734. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  735. package/codeyam-cli/templates/rule-reflection-hook.py +25 -5
  736. package/codeyam-cli/templates/rules-instructions.md +34 -88
  737. package/codeyam-cli/templates/seed-adapters/supabase.ts +475 -0
  738. package/codeyam-cli/templates/skills/codeyam-dev-mode/SKILL.md +237 -0
  739. package/codeyam-cli/templates/skills/codeyam-editor/SKILL.md +244 -0
  740. package/codeyam-cli/templates/{codeyam-memory.md → skills/codeyam-memory/SKILL.md} +215 -0
  741. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/deprecated-prompt.md +100 -0
  742. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/detect-deprecated-patterns.mjs +139 -0
  743. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/find-exports.mjs +52 -0
  744. package/codeyam-cli/templates/skills/codeyam-memory/scripts/holistic-analysis/misleading-api-prompt.md +117 -0
  745. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/read-json-field.mjs +61 -0
  746. package/codeyam-cli/templates/skills/codeyam-memory/scripts/lib/ripgrep-fallback.mjs +155 -0
  747. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/analyze-prompt.md +46 -0
  748. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/cleanup.mjs +13 -0
  749. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/filter-session.mjs +95 -0
  750. package/codeyam-cli/templates/skills/codeyam-memory/scripts/session-mining/preprocess.mjs +160 -0
  751. package/codeyam-cli/templates/{codeyam-new-rule.md → skills/codeyam-new-rule/SKILL.md} +0 -2
  752. package/package.json +23 -15
  753. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  754. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  755. package/packages/ai/src/lib/astScopes/methodSemantics.js +99 -0
  756. package/packages/ai/src/lib/astScopes/methodSemantics.js.map +1 -1
  757. package/packages/ai/src/lib/astScopes/nodeToSource.js +16 -0
  758. package/packages/ai/src/lib/astScopes/nodeToSource.js.map +1 -1
  759. package/packages/ai/src/lib/astScopes/paths.js +12 -3
  760. package/packages/ai/src/lib/astScopes/paths.js.map +1 -1
  761. package/packages/ai/src/lib/completionCall.js +10 -7
  762. package/packages/ai/src/lib/completionCall.js.map +1 -1
  763. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +261 -13
  764. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  765. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js +9 -2
  766. package/packages/ai/src/lib/dataStructure/equivalencyManagers/ParentScopeManager.js.map +1 -1
  767. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +14 -4
  768. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  769. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  770. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  771. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  772. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  773. package/packages/ai/src/lib/dataStructureChunking.js +9 -5
  774. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  775. package/packages/ai/src/lib/generateEntityScenarioData.js +57 -2
  776. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  777. package/packages/ai/src/lib/generateExecutionFlows.js +81 -11
  778. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  779. package/packages/analyze/index.js +1 -1
  780. package/packages/analyze/index.js.map +1 -1
  781. package/packages/analyze/src/lib/ProjectAnalyzer.js +13 -4
  782. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  783. package/packages/analyze/src/lib/asts/index.js +4 -2
  784. package/packages/analyze/src/lib/asts/index.js.map +1 -1
  785. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  786. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  787. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +16 -2
  788. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  789. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +14 -27
  790. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  791. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  792. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  793. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +12 -2
  794. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  795. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js +9 -7
  796. package/packages/analyze/src/lib/files/analyze/gatherEntityMap.js.map +1 -1
  797. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js +14 -0
  798. package/packages/analyze/src/lib/files/analyze/trackEntityCircularDependencies.js.map +1 -1
  799. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js +44 -11
  800. package/packages/analyze/src/lib/files/analyze/validateDependencyAnalyses.js.map +1 -1
  801. package/packages/analyze/src/lib/files/analyzeChange.js +1 -0
  802. package/packages/analyze/src/lib/files/analyzeChange.js.map +1 -1
  803. package/packages/analyze/src/lib/files/analyzeInitial.js +1 -0
  804. package/packages/analyze/src/lib/files/analyzeInitial.js.map +1 -1
  805. package/packages/analyze/src/lib/files/analyzeNextRoute.js +5 -1
  806. package/packages/analyze/src/lib/files/analyzeNextRoute.js.map +1 -1
  807. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  808. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  809. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +185 -28
  810. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  811. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js +0 -40
  812. package/packages/analyze/src/lib/files/scenarios/generateExecutionFlows.js.map +1 -1
  813. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +1386 -1197
  814. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  815. package/packages/database/index.js +1 -0
  816. package/packages/database/index.js.map +1 -1
  817. package/packages/database/src/lib/kysely/db.js +5 -0
  818. package/packages/database/src/lib/kysely/db.js.map +1 -1
  819. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +149 -0
  820. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  821. package/packages/database/src/lib/loadAnalysis.js +7 -1
  822. package/packages/database/src/lib/loadAnalysis.js.map +1 -1
  823. package/packages/database/src/lib/loadCommits.js +23 -13
  824. package/packages/database/src/lib/loadCommits.js.map +1 -1
  825. package/packages/database/src/lib/loadEntities.js +0 -6
  826. package/packages/database/src/lib/loadEntities.js.map +1 -1
  827. package/packages/database/src/lib/loadEntity.js +5 -5
  828. package/packages/database/src/lib/loadEntity.js.map +1 -1
  829. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  830. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  831. package/packages/database/src/lib/updateCommitMetadata.js +76 -90
  832. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  833. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  834. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  835. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  836. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  837. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  838. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  839. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  840. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  841. package/packages/types/src/enums/ProjectFramework.js +2 -0
  842. package/packages/types/src/enums/ProjectFramework.js.map +1 -1
  843. package/packages/utils/src/lib/fs/rsyncCopy.js +28 -3
  844. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  845. package/scripts/npm-post-install.cjs +34 -0
  846. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  847. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  848. package/codeyam-cli/src/commands/list.js +0 -31
  849. package/codeyam-cli/src/commands/list.js.map +0 -1
  850. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  851. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  852. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  853. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  854. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-D9i_zSlY.js +0 -1
  855. package/codeyam-cli/src/webserver/build/client/assets/EntityTypeBadge-De5b5pC7.js +0 -1
  856. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bclf8Hka.js +0 -34
  857. package/codeyam-cli/src/webserver/build/client/assets/InteractivePreview-Ce-byqKl.js +0 -25
  858. package/codeyam-cli/src/webserver/build/client/assets/LibraryFunctionPreview-DEMHrl7v.js +0 -3
  859. package/codeyam-cli/src/webserver/build/client/assets/SafeScreenshot-L0DWHa_L.js +0 -1
  860. package/codeyam-cli/src/webserver/build/client/assets/TruncatedFilePath-C7PFQfXy.js +0 -1
  861. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-CPXtdaWm.js +0 -17
  862. package/codeyam-cli/src/webserver/build/client/assets/chunk-JZWAC4HX-BEyX4X6_.js +0 -51
  863. package/codeyam-cli/src/webserver/build/client/assets/createLucideIcon-DHVDauuc.js +0 -21
  864. package/codeyam-cli/src/webserver/build/client/assets/cy-logo-cli-DcX-ZS3p.js +0 -1
  865. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-B9_ZqelV.js +0 -1
  866. package/codeyam-cli/src/webserver/build/client/assets/entity._sha._-BOPComvD.js +0 -16
  867. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-Cfw__yQa.js +0 -6
  868. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-BIDUUrI3.js +0 -6
  869. package/codeyam-cli/src/webserver/build/client/assets/fileTableUtils-CYnF5KWN.js +0 -1
  870. package/codeyam-cli/src/webserver/build/client/assets/files-B_dAq2PQ.js +0 -1
  871. package/codeyam-cli/src/webserver/build/client/assets/git-BHPqH3Ch.js +0 -15
  872. package/codeyam-cli/src/webserver/build/client/assets/globals-BJGhRykz.css +0 -1
  873. package/codeyam-cli/src/webserver/build/client/assets/labs-ChoAe3xq.js +0 -1
  874. package/codeyam-cli/src/webserver/build/client/assets/manifest-87493a32.js +0 -1
  875. package/codeyam-cli/src/webserver/build/client/assets/memory-D9eA6kTo.js +0 -78
  876. package/codeyam-cli/src/webserver/build/client/assets/root-C3r0p_7H.js +0 -62
  877. package/codeyam-cli/src/webserver/build/client/assets/settings-KH9TdArD.js +0 -1
  878. package/codeyam-cli/src/webserver/build/client/assets/simulations-D9Fkx0-d.js +0 -1
  879. package/codeyam-cli/src/webserver/build/client/assets/useCustomSizes-CLPnITMB.js +0 -1
  880. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-DmGI38Et.js +0 -2
  881. package/codeyam-cli/src/webserver/build/client/assets/useReportContext-BK0S88PB.js +0 -1
  882. package/codeyam-cli/src/webserver/build/client/assets/useToast-CJ-JqR0l.js +0 -1
  883. package/codeyam-cli/src/webserver/build/server/assets/index-CkkmL6r5.js +0 -1
  884. package/codeyam-cli/src/webserver/build/server/assets/server-build-iBGjHYtO.js +0 -259
  885. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  886. package/scripts/finalize-analyzer.cjs +0 -13
  887. /package/codeyam-cli/templates/{codeyam-diagnose.md → commands/codeyam-diagnose.md} +0 -0
  888. /package/codeyam-cli/templates/{codeyam-debug.md → skills/codeyam-debug/SKILL.md} +0 -0
  889. /package/codeyam-cli/templates/{codeyam-setup.md → skills/codeyam-setup/SKILL.md} +0 -0
  890. /package/codeyam-cli/templates/{codeyam-sim.md → skills/codeyam-sim/SKILL.md} +0 -0
  891. /package/codeyam-cli/templates/{codeyam-test.md → skills/codeyam-test/SKILL.md} +0 -0
  892. /package/codeyam-cli/templates/{codeyam-verify.md → skills/codeyam-verify/SKILL.md} +0 -0
@@ -4,13 +4,11 @@ Rules provide context-specific guidance when working in files matching their `pa
4
4
 
5
5
  ## Core Principles
6
6
 
7
- 1. **One concept per rule** - Each rule should cover a single topic. If you're documenting two unrelated things, create two rules.
8
- 2. **Paths must match content scope** - A rule about one specific file should have that file in `paths`, not a broad `**/*.ts` pattern.
9
- 3. **Keep rules SHORT** - Most rules should be **1-4 bullets**. Only complex multi-file architectural overviews should exceed ~10 lines. Every word costs context.
7
+ 1. **One concept per rule** If you're documenting two unrelated things, create two rules.
8
+ 2. **Paths must match content scope** A rule about one file should have that file in `paths`, not a broad `**/*.ts` pattern.
9
+ 3. **Keep rules SHORT** Most rules should be **1-4 bullets**. Only complex multi-file architectures should exceed ~10 lines.
10
10
 
11
- ### Good vs Bad Rule Length
12
-
13
- **Good** — a typical rule (4 bullets):
11
+ **Example** a typical rule:
14
12
 
15
13
  ```markdown
16
14
  ---
@@ -26,68 +24,21 @@ paths:
26
24
  - Test with exact ordering from database, not just same entries
27
25
  ```
28
26
 
29
- **Bad** same info bloated to 40+ lines with unnecessary headers, restating what the code says, and paragraphs instead of bullets.
30
-
31
- ## When to Create a New Rule
32
-
33
- Create a new rule when:
34
-
35
- - You learn something non-obvious about the codebase
36
- - You make a mistake and want to prevent it in the future
37
- - The user explains something that isn't clear from the code
38
- - An existing rule is covering multiple unrelated topics (split it)
39
-
40
- ## Before Creating: What Makes a Rule Valuable?
41
-
42
- A rule earns its place when it meets these criteria:
43
-
44
- 1. **Beyond the code** — It captures knowledge that reading the source alone wouldn't reveal (historical context, non-obvious interactions, gotchas).
45
- 2. **Explains "why" over "what"** — Gotchas, non-obvious behavior, architectural decisions. (Function signatures, bug fixes, and limitations are already visible in code.)
46
- 3. **Prevents real mistakes** — It would have saved someone from a past confusion or bug, not just a "nice to know."
27
+ ## When to Create a Rule
47
28
 
48
- ### Examples
29
+ Create a rule when you learn something that **reading the code alone wouldn't reveal**:
49
30
 
50
- **✅ Worth documenting:**
31
+ - Non-obvious gotchas or behavior that caused real confusion or bugs
32
+ - Architecture, file relationships, or data flows that take time to piece together
33
+ - Debugging strategies for a tricky area of the codebase
34
+ - Preferred commands or workflows when multiple options exist (e.g. "Use `pnpm test` to run tests")
35
+ - User corrections or explanations that aren't captured in the code itself
51
36
 
52
- - Where to add new functionality
53
- - An overview of all files, classes, functions, etc used in a particular part of the repo
54
- - Debugging strategies for a particular area of the repo
55
- - "Use `pnpm test` to run tests" (if there is more than one way to run tests and this way is preferred)
56
-
57
- Skip things like "The auth module handles authentication" or "This function takes X and returns Y" — Claude can read the code and infer these.
58
-
59
- ## Path Specificity
60
-
61
- The `paths` field controls when the rule is shown. Match the scope of your content:
62
-
63
- | Content Scope | Path Pattern | Example |
64
- | ------------- | ----------------------- | ------------------------------------------------------ |
65
- | Single file | `'path/to/file.ts'` | Rule about `processExpression.ts` specifically |
66
- | Related files | `'path/to/feature*.ts'` | Rule about `generateExecutionFlows*.ts` files |
67
- | Directory | `'path/to/dir/**/*.ts'` | Rule about the queue system in `utils/queue/` |
68
- | Cross-cutting | Multiple specific paths | Testing rule with paths to test configs and test files |
69
-
70
- Match path specificity to content scope — use `'path/to/feature.ts'` for a single-feature rule, not `'**/*.ts'`.
71
-
72
- ## File Placement
37
+ **Skip** rules that restate what the code says — function signatures, type definitions, "this module handles X." Claude can read the code.
73
38
 
74
- Place each rule at the **deepest common directory** shared by all its `paths` entries:
39
+ ## Frontmatter & Paths
75
40
 
76
- 1. Take all paths from the rule's frontmatter
77
- 2. Strip filenames — keep only the directory portions
78
- 3. Find the longest shared directory prefix
79
- 4. Place the rule `.md` file in `.claude/rules/<that-prefix>/`
80
-
81
- | Paths in frontmatter | Deepest common dir | Rule location |
82
- | ---------------------------------------------------------- | ---------------------- | ---------------------------------------------- |
83
- | `packages/ai/src/lib/foo.ts`, `packages/ai/src/lib/bar.ts` | `packages/ai/src/lib/` | `.claude/rules/packages/ai/src/lib/foo-bar.md` |
84
- | `packages/ai/src/lib/a.ts`, `packages/ai/src/utils/b.ts` | `packages/ai/src/` | `.claude/rules/packages/ai/src/a-and-b.md` |
85
- | `packages/ai/**`, `packages/types/**` | `packages/` | `.claude/rules/packages/ai-types.md` |
86
- | `src/api/auth.ts` (single file) | `src/api/` | `.claude/rules/src/api/auth.md` |
87
-
88
- Reserve the top level of `.claude/rules/` for rules whose paths genuinely span the entire repo.
89
-
90
- ## Required Frontmatter
41
+ Every rule needs a `paths` frontmatter field. Be specific to avoid loading rules unnecessarily:
91
42
 
92
43
  ```yaml
93
44
  ---
@@ -97,36 +48,31 @@ paths:
97
48
  ---
98
49
  ```
99
50
 
100
- | Field | Purpose |
101
- | ------- | ---------------------------------------------------------------- |
102
- | `paths` | Glob patterns - be specific to avoid loading rules unnecessarily |
103
-
104
- **Note:** Audit dates live in `.claude/codeyam-rule-state.json` (managed by `codeyam memory touch`). Keep rule frontmatter limited to `paths`.
105
-
106
- ## Content Guidelines
107
-
108
- ### Be Actionable
51
+ | Content Scope | Path Pattern | Example |
52
+ | ------------- | ----------------------- | ---------------------------------------------- |
53
+ | Single file | `'path/to/file.ts'` | Rule about `processExpression.ts` specifically |
54
+ | Related files | `'path/to/feature*.ts'` | Rule about `generateExecutionFlows*.ts` files |
55
+ | Directory | `'path/to/dir/**/*.ts'` | Rule about the queue system in `utils/queue/` |
56
+ | Cross-cutting | Multiple specific paths | Testing rule spanning test configs and tests |
109
57
 
110
- - Good: "Run `pnpm test:api` for API tests"
111
- - Bad: "Make sure to run the appropriate tests"
58
+ Audit dates live in `.claude/codeyam-rule-state.json` (managed by `codeyam memory touch`). Keep frontmatter limited to `paths`.
112
59
 
113
- ### Focus on What to Do
114
-
115
- - "Auth tokens are stored in httpOnly cookies via `src/auth/cookies.ts`" tells the reader exactly where to look and what pattern to follow.
116
-
117
- ## Categories
60
+ ## File Placement
118
61
 
119
- **architecture** - Design decisions, file relationships, data flow
62
+ Rules must be written to `.claude/rules/`, NOT `.codeyam/rules/`. The instructions file lives in `.codeyam/` but actual rule files go in `.claude/rules/`.
120
63
 
121
- - "These three files must change together because..."
122
- - "Data flows from X → Y → Z"
64
+ Use `codeyam memory rule-path` to compute the correct directory from your frontmatter paths:
123
65
 
124
- **testing** - Test commands, mock patterns, fixtures
66
+ ```
67
+ $ codeyam memory rule-path packages/ai/src/lib/foo.ts packages/ai/src/utils/bar.ts
68
+ {"result":".claude/rules/packages/ai/src/"}
69
+ ```
125
70
 
126
- - "Run tests with: `pnpm test path/to/test.ts`"
127
- - "Must run `pnpm pretest` first because..."
71
+ The command computes the deepest common directory shared by all paths and returns the `.claude/rules/` subdirectory where the rule file should live. Reserve the top level of `.claude/rules/` for rules whose paths genuinely span the entire repo.
128
72
 
129
- **faq** - Gotchas, workarounds, common questions
73
+ ## Content Guidelines
130
74
 
131
- - "If you see error X, it means Y"
132
- - "This looks wrong but is intentional because..."
75
+ - **Be actionable** — "Run `pnpm test:api` for API tests" not "Make sure to run the appropriate tests"
76
+ - **Focus on why, not what** Gotchas, non-obvious behavior, architectural decisions. The code already shows "what."
77
+ - **Point to specifics** — "Auth tokens are stored in httpOnly cookies via `src/auth/cookies.ts`" beats a vague description.
78
+ - **Be short!** - Context window space is precious! Do not ramble, use bullets, focus on providing clear actionable information.
@@ -0,0 +1,475 @@
1
+ /**
2
+ * CodeYam Seed Adapter for Supabase.
3
+ *
4
+ * Seeds the database and optionally signs in a user for authenticated scenarios.
5
+ *
6
+ * Usage: npx tsx .codeyam/seed-adapter.ts <path-to-seed-data.json>
7
+ *
8
+ * Input JSON format:
9
+ * {
10
+ * "tableName": [{ "column": "value", ... }, ...],
11
+ * "_auth": { // optional
12
+ * "email": "alice@example.com",
13
+ * "password": "test123" // optional — default used if omitted
14
+ * }
15
+ * }
16
+ *
17
+ * When _auth is present, the adapter:
18
+ * 1. Creates the user if they don't exist (auto-confirms email)
19
+ * 2. Builds a synthetic JWT with far-future expiry (no real sign-in needed)
20
+ * 3. Writes session cookies + auth mocks to .codeyam/tmp/seed-session.json
21
+ * so the CodeYam proxy can inject them into the browser
22
+ *
23
+ * The password field is optional — if omitted, a default dev password is used.
24
+ * No real JWTs are stored; the preload module intercepts all auth API calls.
25
+ *
26
+ * Data operations use direct PostgreSQL (pg) for speed — TRUNCATE CASCADE
27
+ * and batched INSERT are ~2x faster than individual PostgREST HTTP calls.
28
+ *
29
+ * Requirements:
30
+ * - DATABASE_URL env var with a PostgreSQL connection string (session pooler recommended)
31
+ * - A Supabase project URL (https://<ref>.supabase.co) in any env var
32
+ * - A secret key (sb_secret_... or legacy eyJ... service_role JWT) in any env var
33
+ *
34
+ * The adapter scans ALL env vars by value pattern for Supabase URL and secret key —
35
+ * no specific naming required. DATABASE_URL must be set explicitly.
36
+ */
37
+
38
+ import { createClient } from '@supabase/supabase-js';
39
+ import { Prisma } from '@prisma/client';
40
+ import pg from 'pg';
41
+ import * as fs from 'fs';
42
+ import * as path from 'path';
43
+
44
+ const { Client } = pg;
45
+
46
+ /**
47
+ * Scan all env vars for values matching a pattern.
48
+ * Returns ALL unique matches (not just the first) so callers can disambiguate.
49
+ */
50
+ function findAllEnvByPattern(pattern: RegExp): string[] {
51
+ const matches = new Set<string>();
52
+ for (const value of Object.values(process.env)) {
53
+ if (value && pattern.test(value)) matches.add(value);
54
+ }
55
+ return [...matches];
56
+ }
57
+
58
+ /**
59
+ * For legacy Supabase JWTs, decode the payload to check the `role` claim.
60
+ * Returns the role string ("service_role", "anon", etc.) or undefined.
61
+ */
62
+ function getJwtRole(jwt: string): string | undefined {
63
+ try {
64
+ const payload = jwt.split('.')[1];
65
+ const decoded = JSON.parse(Buffer.from(payload, 'base64url').toString());
66
+ return decoded.role;
67
+ } catch {
68
+ return undefined;
69
+ }
70
+ }
71
+
72
+ // Detect Supabase credentials by value pattern, not env var name.
73
+ // This works regardless of what the user named their env vars.
74
+ const supabaseUrl = findAllEnvByPattern(
75
+ /^https:\/\/[a-z0-9]+\.supabase\.co\b/,
76
+ )[0];
77
+
78
+ // New-format keys are unambiguous by prefix
79
+ const newSecretKey = findAllEnvByPattern(/^sb_secret_/)[0];
80
+
81
+ // Legacy JWT keys — disambiguate by decoding the role claim
82
+ const legacyJwts = findAllEnvByPattern(
83
+ /^eyJ[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+\.[A-Za-z0-9_-]+$/,
84
+ );
85
+ const legacyServiceRole = legacyJwts.find(
86
+ (jwt) => getJwtRole(jwt) === 'service_role',
87
+ );
88
+
89
+ const secretKey = newSecretKey || legacyServiceRole;
90
+
91
+ if (!supabaseUrl || !secretKey) {
92
+ console.error(
93
+ 'Could not find Supabase credentials in environment variables.',
94
+ );
95
+ console.error(
96
+ 'Looking for: a URL matching https://<ref>.supabase.co and a key starting with sb_secret_ (or a service_role JWT)',
97
+ );
98
+ console.error(
99
+ 'Add them to .env.local — the seed adapter scans all env vars by value pattern.',
100
+ );
101
+ process.exit(1);
102
+ }
103
+
104
+ // DATABASE_URL for direct PostgreSQL access (session pooler recommended for speed)
105
+ const databaseUrl = process.env.DATABASE_URL;
106
+ if (!databaseUrl || !databaseUrl.startsWith('postgresql://')) {
107
+ console.error('DATABASE_URL must be set to a PostgreSQL connection string.');
108
+ console.error(
109
+ 'Use the session pooler connection string (port 5432) from your Supabase dashboard.',
110
+ );
111
+ process.exit(1);
112
+ }
113
+
114
+ // Admin client for user management only (uses secret key to bypass RLS)
115
+ const supabase = createClient(supabaseUrl, secretKey, {
116
+ auth: { autoRefreshToken: false, persistSession: false },
117
+ });
118
+
119
+ // Derive the project ref from the URL for cookie naming
120
+ // e.g. "https://abcdefgh.supabase.co" → "abcdefgh"
121
+ function getProjectRef(): string {
122
+ try {
123
+ const hostname = new URL(supabaseUrl!).hostname;
124
+ return hostname.split('.')[0];
125
+ } catch {
126
+ return 'unknown';
127
+ }
128
+ }
129
+
130
+ /**
131
+ * Build a mapping from lowercased seed-data keys to actual PostgreSQL table names.
132
+ * Prisma creates tables with the model name (PascalCase) unless @@map is used.
133
+ * PostgreSQL requires the exact table name, so we need this translation.
134
+ */
135
+ function buildTableNameMap(): Record<string, string> {
136
+ const map: Record<string, string> = {};
137
+ for (const model of Prisma.dmmf.datamodel.models) {
138
+ // dbName is set when @@map is used, otherwise null → use model name
139
+ const dbName = (model as any).dbName || model.name;
140
+ // Map lowercased model name → actual table name
141
+ const lowered = model.name.charAt(0).toLowerCase() + model.name.slice(1);
142
+ map[lowered] = dbName;
143
+ map[model.name] = dbName; // Also map PascalCase for safety
144
+ }
145
+ return map;
146
+ }
147
+
148
+ /**
149
+ * Build column name mapping from Prisma field names to database column names.
150
+ * Prisma uses camelCase field names but generates snake_case columns unless @map is used.
151
+ */
152
+ function buildColumnMap(tableName: string): Record<string, string> {
153
+ const map: Record<string, string> = {};
154
+ for (const model of Prisma.dmmf.datamodel.models) {
155
+ const dbName = (model as any).dbName || model.name;
156
+ if (dbName !== tableName) continue;
157
+ for (const field of model.fields) {
158
+ if (field.kind === 'object') continue; // Skip relation fields
159
+ const colName = (field as any).dbName || field.name;
160
+ map[field.name] = colName;
161
+ }
162
+ break;
163
+ }
164
+ return map;
165
+ }
166
+
167
+ async function seedTables(seed: Record<string, unknown[]>) {
168
+ if (Object.keys(seed).length === 0) return;
169
+
170
+ const tableMap = buildTableNameMap();
171
+
172
+ // Discover ALL models from the Prisma schema — not just the tables in the seed data.
173
+ // This ensures FK-dependent tables are cleared even when the seed only contains
174
+ // the parent table's data.
175
+ const allTables = Prisma.dmmf.datamodel.models.map(
176
+ (m) => (m as any).dbName || m.name,
177
+ );
178
+
179
+ console.log(
180
+ `Clearing ${allTables.length} tables, seeding: ${Object.keys(seed).join(', ')}`,
181
+ );
182
+
183
+ const client = new Client({
184
+ connectionString: databaseUrl,
185
+ ssl: { rejectUnauthorized: false },
186
+ });
187
+ await client.connect();
188
+
189
+ try {
190
+ // TRUNCATE all tables in one statement — CASCADE handles FK dependencies
191
+ // automatically, so table order doesn't matter. Much faster than
192
+ // individual DELETE FROM queries via PostgREST.
193
+ const quoted = allTables.map((t) => `"${t}"`).join(', ');
194
+ await client.query(`TRUNCATE ${quoted} CASCADE`);
195
+ console.log(` Cleared ${allTables.length} tables`);
196
+
197
+ // Reset auto-increment sequences so IDs start from 1 on each scenario switch.
198
+ // Without this, IDs keep climbing and hardcoded URLs like /drinks/1 break.
199
+ for (const table of allTables) {
200
+ try {
201
+ await client.query(
202
+ `SELECT setval(pg_get_serial_sequence('"${table}"', 'id'), 1, false)`,
203
+ );
204
+ } catch {
205
+ // Table may not have an 'id' serial column — skip
206
+ }
207
+ }
208
+
209
+ // Insert seed data using batched INSERT for speed
210
+ for (const [seedKey, rows] of Object.entries(seed)) {
211
+ if (!Array.isArray(rows) || rows.length === 0) continue;
212
+ const table = tableMap[seedKey] || seedKey;
213
+ const columnMap = buildColumnMap(table);
214
+
215
+ // Get column names from the first row's keys, mapped to DB column names
216
+ const fieldNames = Object.keys(rows[0] as Record<string, unknown>);
217
+ const dbColumns = fieldNames.map((f) => columnMap[f] || f);
218
+ const quotedCols = dbColumns.map((c) => `"${c}"`).join(', ');
219
+
220
+ // Build parameterized VALUES clause for all rows at once
221
+ const params: unknown[] = [];
222
+ const valueClauses: string[] = [];
223
+ for (let i = 0; i < rows.length; i++) {
224
+ const row = rows[i] as Record<string, unknown>;
225
+ const placeholders: string[] = [];
226
+ for (const field of fieldNames) {
227
+ params.push(row[field]);
228
+ placeholders.push(`$${params.length}`);
229
+ }
230
+ valueClauses.push(`(${placeholders.join(', ')})`);
231
+ }
232
+
233
+ await client.query(
234
+ `INSERT INTO "${table}" (${quotedCols}) VALUES ${valueClauses.join(', ')}`,
235
+ params,
236
+ );
237
+ console.log(` Seeded ${rows.length} rows into ${table}`);
238
+ }
239
+ } finally {
240
+ await client.end();
241
+ }
242
+ }
243
+
244
+ /**
245
+ * Export mode: dump current database state to a JSON file.
246
+ * Used by CodeYam to save interactive changes back to scenario seed data.
247
+ *
248
+ * Usage: npx tsx .codeyam/seed-adapter.ts --export <output-path.json>
249
+ */
250
+ async function exportData(outputPath: string) {
251
+ const tableMap = buildTableNameMap();
252
+ const modelNames = Prisma.dmmf.datamodel.models.map((m) => m.name);
253
+
254
+ const client = new Client({
255
+ connectionString: databaseUrl,
256
+ ssl: { rejectUnauthorized: false },
257
+ });
258
+ await client.connect();
259
+
260
+ try {
261
+ const seed: Record<string, unknown[]> = {};
262
+ for (const model of modelNames) {
263
+ const camelCase = model.charAt(0).toLowerCase() + model.slice(1);
264
+ const table = tableMap[camelCase] || model;
265
+ try {
266
+ const result = await client.query(`SELECT * FROM "${table}"`);
267
+ if (result.rows.length > 0) {
268
+ seed[camelCase] = result.rows;
269
+ }
270
+ } catch {
271
+ // Skip tables that can't be queried
272
+ }
273
+ }
274
+
275
+ fs.writeFileSync(outputPath, JSON.stringify(seed, null, 2));
276
+ console.log(`Exported ${Object.keys(seed).length} tables`);
277
+ } finally {
278
+ await client.end();
279
+ }
280
+ }
281
+
282
+ /**
283
+ * Build a minimal JWT with a far-future expiry.
284
+ * The signature is fake — it doesn't matter because the CodeYam preload module
285
+ * intercepts the Supabase auth validation endpoint and returns mock data.
286
+ */
287
+ function buildFakeJwt(userId: string, email: string): string {
288
+ const header = { alg: 'HS256', typ: 'JWT' };
289
+ const payload = {
290
+ sub: userId,
291
+ email,
292
+ role: 'authenticated',
293
+ aud: 'authenticated',
294
+ exp: 9999999999,
295
+ iat: Math.floor(Date.now() / 1000),
296
+ };
297
+ const encode = (obj: object) =>
298
+ Buffer.from(JSON.stringify(obj)).toString('base64url');
299
+ return `${encode(header)}.${encode(payload)}.codeyam-mock-signature`;
300
+ }
301
+
302
+ /**
303
+ * Build a Supabase user response object matching the /auth/v1/user endpoint format.
304
+ */
305
+ function buildUserResponse(user: { id: string; email?: string }) {
306
+ return {
307
+ id: user.id,
308
+ aud: 'authenticated',
309
+ role: 'authenticated',
310
+ email: user.email || '',
311
+ email_confirmed_at: new Date().toISOString(),
312
+ app_metadata: { provider: 'email', providers: ['email'] },
313
+ user_metadata: {},
314
+ created_at: new Date().toISOString(),
315
+ };
316
+ }
317
+
318
+ const DEFAULT_AUTH_PASSWORD = 'codeyam-dev-password-123!';
319
+
320
+ /**
321
+ * Handle auth: create user, build synthetic session, write session cookies.
322
+ * Returns the user ID so callers can replace __AUTH_USER_ID__ placeholders in seed data.
323
+ *
324
+ * No real sign-in is performed — the session cookie uses a synthetic JWT with
325
+ * far-future expiry, and externalApis mocks intercept all Supabase auth API calls.
326
+ * This avoids storing real tokens (security risk + expiration) in scenario files.
327
+ */
328
+ async function handleAuth(auth: {
329
+ email: string;
330
+ password?: string;
331
+ }): Promise<string> {
332
+ const email = auth.email;
333
+ const password = auth.password || DEFAULT_AUTH_PASSWORD;
334
+
335
+ // Create user if they don't exist (auto-confirm email)
336
+ // We still need the auth.users row for PostgREST FK relationships.
337
+ const { data: createData, error: createError } =
338
+ await supabase.auth.admin.createUser({
339
+ email,
340
+ password,
341
+ email_confirm: true,
342
+ });
343
+
344
+ let userId: string;
345
+
346
+ if (createError) {
347
+ if (createError.message.includes('already been registered')) {
348
+ // User exists — look up their ID
349
+ const { data: listData } = await supabase.auth.admin.listUsers();
350
+ const existingUser = listData?.users?.find((u) => u.email === email);
351
+ if (existingUser) {
352
+ userId = existingUser.id;
353
+ console.log(` Found existing user ${email} (user: ${userId})`);
354
+ } else {
355
+ console.error(
356
+ ` User ${email} reported as registered but not found in listUsers`,
357
+ );
358
+ process.exit(1);
359
+ }
360
+ } else {
361
+ console.error(` Failed to create auth user: ${createError.message}`);
362
+ process.exit(1);
363
+ }
364
+ } else {
365
+ userId = createData!.user.id;
366
+ console.log(` Created user ${email} (user: ${userId})`);
367
+ }
368
+
369
+ // Build synthetic JWT and mock responses — no real sign-in needed.
370
+ // The preload module intercepts server-side getUser() calls so Next.js
371
+ // middleware returns the mock user without hitting real Supabase.
372
+ const fakeJwt = buildFakeJwt(userId!, email);
373
+ const userResponse = buildUserResponse({ id: userId!, email });
374
+
375
+ const projectRef = getProjectRef();
376
+ const sessionOutput = {
377
+ cookies: [
378
+ {
379
+ name: `sb-${projectRef}-auth-token`,
380
+ value: JSON.stringify({
381
+ access_token: fakeJwt,
382
+ refresh_token: 'codeyam-mock-refresh-token',
383
+ token_type: 'bearer',
384
+ expires_in: 315360000,
385
+ expires_at: 9999999999,
386
+ }),
387
+ path: '/',
388
+ sameSite: 'Lax' as const,
389
+ },
390
+ ],
391
+ externalApis: {
392
+ [`${supabaseUrl}/auth/v1/user`]: {
393
+ body: userResponse,
394
+ status: 200,
395
+ },
396
+ [`${supabaseUrl}/auth/v1/token`]: {
397
+ body: {
398
+ access_token: fakeJwt,
399
+ token_type: 'bearer',
400
+ expires_in: 315360000,
401
+ expires_at: 9999999999,
402
+ refresh_token: 'codeyam-mock-refresh-token',
403
+ user: userResponse,
404
+ },
405
+ status: 200,
406
+ },
407
+ },
408
+ };
409
+
410
+ const outputDir = path.join(process.cwd(), '.codeyam', 'tmp');
411
+ fs.mkdirSync(outputDir, { recursive: true });
412
+ const outputPath = path.join(outputDir, 'seed-session.json');
413
+ fs.writeFileSync(outputPath, JSON.stringify(sessionOutput, null, 2));
414
+ console.log(` Session cookies + auth mocks written to ${outputPath}`);
415
+
416
+ return userId!;
417
+ }
418
+
419
+ /**
420
+ * Replace __AUTH_USER_ID__ placeholders in seed data with the actual Supabase user ID.
421
+ * This lets scenarios reference the authenticated user in foreign key columns (e.g. user_id)
422
+ * without knowing the UUID ahead of time.
423
+ */
424
+ function replaceAuthPlaceholders(
425
+ seed: Record<string, unknown[]>,
426
+ userId: string,
427
+ ): Record<string, unknown[]> {
428
+ const json = JSON.stringify(seed);
429
+ const replaced = json.replace(/__AUTH_USER_ID__/g, userId);
430
+ return JSON.parse(replaced);
431
+ }
432
+
433
+ async function main() {
434
+ const seedDataPath = process.argv[2];
435
+ if (!seedDataPath) {
436
+ console.error('Usage: npx tsx .codeyam/seed-adapter.ts <seed-data.json>');
437
+ process.exit(1);
438
+ }
439
+
440
+ const raw = fs.readFileSync(seedDataPath, 'utf-8');
441
+ const data = JSON.parse(raw);
442
+
443
+ // Separate auth config from table data
444
+ const auth = data._auth;
445
+ let seed: Record<string, unknown[]> = {};
446
+ for (const [key, value] of Object.entries(data)) {
447
+ if (key === '_auth') continue;
448
+ seed[key] = value as unknown[];
449
+ }
450
+
451
+ // Auth first: we need the user ID to replace __AUTH_USER_ID__ placeholders
452
+ // in seed data (e.g. for user_id foreign key columns with Supabase RLS)
453
+ if (auth) {
454
+ const userId = await handleAuth(
455
+ auth as { email: string; password?: string },
456
+ );
457
+ seed = replaceAuthPlaceholders(seed, userId);
458
+ }
459
+
460
+ await seedTables(seed);
461
+
462
+ console.log('Seed complete');
463
+ }
464
+
465
+ if (process.argv[2] === '--export') {
466
+ exportData(process.argv[3]).catch((e) => {
467
+ console.error('Seed adapter export error:', e);
468
+ process.exit(1);
469
+ });
470
+ } else {
471
+ main().catch((e) => {
472
+ console.error('Seed adapter error:', e);
473
+ process.exit(1);
474
+ });
475
+ }