@codeyam/codeyam-cli 0.1.0-staging.036391e → 0.1.0-staging.07d8f7b

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 (532) hide show
  1. package/analyzer-template/.build-info.json +7 -7
  2. package/analyzer-template/log.txt +3 -3
  3. package/analyzer-template/package.json +14 -14
  4. package/analyzer-template/packages/ai/index.ts +1 -0
  5. package/analyzer-template/packages/ai/package.json +1 -1
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +14 -0
  7. package/analyzer-template/packages/ai/src/lib/astScopes/astScopeAnalyzer.ts +34 -3
  8. package/analyzer-template/packages/ai/src/lib/astScopes/processExpression.ts +101 -0
  9. package/analyzer-template/packages/ai/src/lib/astScopes/sharedPatterns.ts +28 -0
  10. package/analyzer-template/packages/ai/src/lib/astScopes/types.ts +6 -0
  11. package/analyzer-template/packages/ai/src/lib/completionCall.ts +114 -113
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +435 -13
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.ts +62 -0
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +70 -19
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  16. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +40 -13
  17. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +110 -7
  18. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +134 -2
  19. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  20. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  21. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  22. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  23. package/analyzer-template/packages/analyze/src/lib/ProjectAnalyzer.ts +6 -0
  24. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  25. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +18 -0
  26. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +9 -1
  27. package/analyzer-template/packages/analyze/src/lib/files/analyze/dependencyResolver.ts +0 -6
  28. package/analyzer-template/packages/analyze/src/lib/files/analyze/findOrCreateEntity.ts +12 -0
  29. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +65 -28
  30. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +50 -25
  31. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +83 -0
  32. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +176 -80
  33. package/analyzer-template/packages/aws/package.json +10 -10
  34. package/analyzer-template/packages/database/index.ts +1 -0
  35. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  36. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  37. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  38. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  39. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  40. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  41. package/analyzer-template/packages/database/src/lib/kysely/db.ts +8 -0
  42. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  43. package/analyzer-template/packages/database/src/lib/kysely/tables/editorScenariosTable.ts +62 -0
  44. package/analyzer-template/packages/database/src/lib/loadCommits.ts +31 -20
  45. package/analyzer-template/packages/database/src/lib/loadReadyToBeCapturedAnalyses.ts +0 -5
  46. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  47. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  48. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  49. package/analyzer-template/packages/database/src/lib/updateCommitMetadata.ts +151 -135
  50. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatus.ts +58 -42
  51. package/analyzer-template/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.ts +81 -65
  52. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  53. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.ts +29 -1
  54. package/analyzer-template/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.ts +33 -5
  55. package/analyzer-template/packages/github/dist/database/index.d.ts +1 -0
  56. package/analyzer-template/packages/github/dist/database/index.d.ts.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/index.js +1 -0
  58. package/analyzer-template/packages/github/dist/database/index.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  64. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  66. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  69. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  70. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  71. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  72. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  73. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +5 -0
  74. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  76. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts +20 -0
  77. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.d.ts.map +1 -0
  78. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  79. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  80. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts +5 -0
  81. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/scenariosTable.d.ts.map +1 -1
  82. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.d.ts.map +1 -1
  83. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js +23 -13
  84. package/analyzer-template/packages/github/dist/database/src/lib/loadCommits.js.map +1 -1
  85. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.d.ts.map +1 -1
  86. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  87. package/analyzer-template/packages/github/dist/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  88. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  89. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  90. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  91. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  92. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  93. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  94. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.d.ts.map +1 -1
  95. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js +100 -89
  96. package/analyzer-template/packages/github/dist/database/src/lib/updateCommitMetadata.js.map +1 -1
  97. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.d.ts.map +1 -1
  98. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  99. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  100. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.d.ts.map +1 -1
  101. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  102. package/analyzer-template/packages/github/dist/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  103. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.d.ts.map +1 -1
  104. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  105. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  106. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.d.ts.map +1 -1
  107. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  108. package/analyzer-template/packages/github/dist/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  109. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  110. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  111. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts +10 -0
  112. package/analyzer-template/packages/github/dist/types/src/types/Scenario.d.ts.map +1 -1
  113. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +1 -0
  114. package/analyzer-template/packages/types/src/types/Scenario.ts +10 -0
  115. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +1 -0
  116. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  117. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts +10 -0
  118. package/analyzer-template/packages/utils/dist/types/src/types/Scenario.d.ts.map +1 -1
  119. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  120. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +98 -3
  121. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  122. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +121 -3
  123. package/analyzer-template/playwright/captureFromUrl.ts +89 -82
  124. package/analyzer-template/project/constructMockCode.ts +170 -50
  125. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  126. package/analyzer-template/project/reconcileMockDataKeys.ts +19 -14
  127. package/analyzer-template/project/start.ts +3 -0
  128. package/analyzer-template/project/startScenarioCapture.ts +9 -0
  129. package/analyzer-template/project/writeClientLogRoute.ts +125 -0
  130. package/analyzer-template/project/writeMockDataTsx.ts +17 -0
  131. package/analyzer-template/project/writeScenarioComponents.ts +110 -17
  132. package/analyzer-template/tsconfig.json +13 -1
  133. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  134. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  135. package/background/src/lib/virtualized/project/constructMockCode.js +145 -41
  136. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  137. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  138. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  139. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js +17 -11
  140. package/background/src/lib/virtualized/project/reconcileMockDataKeys.js.map +1 -1
  141. package/background/src/lib/virtualized/project/start.js +2 -0
  142. package/background/src/lib/virtualized/project/start.js.map +1 -1
  143. package/background/src/lib/virtualized/project/startScenarioCapture.js +5 -0
  144. package/background/src/lib/virtualized/project/startScenarioCapture.js.map +1 -1
  145. package/background/src/lib/virtualized/project/writeClientLogRoute.js +110 -0
  146. package/background/src/lib/virtualized/project/writeClientLogRoute.js.map +1 -0
  147. package/background/src/lib/virtualized/project/writeMockDataTsx.js +12 -0
  148. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  149. package/background/src/lib/virtualized/project/writeScenarioComponents.js +83 -12
  150. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  151. package/codeyam-cli/scripts/apply-setup.js +209 -12
  152. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  153. package/codeyam-cli/src/cli.js +33 -24
  154. package/codeyam-cli/src/cli.js.map +1 -1
  155. package/codeyam-cli/src/codeyam-cli.js +18 -2
  156. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  157. package/codeyam-cli/src/commands/analyze.js +21 -9
  158. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  159. package/codeyam-cli/src/commands/baseline.js +2 -0
  160. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  161. package/codeyam-cli/src/commands/debug.js +2 -0
  162. package/codeyam-cli/src/commands/debug.js.map +1 -1
  163. package/codeyam-cli/src/commands/default.js +87 -21
  164. package/codeyam-cli/src/commands/default.js.map +1 -1
  165. package/codeyam-cli/src/commands/editor.js +697 -0
  166. package/codeyam-cli/src/commands/editor.js.map +1 -0
  167. package/codeyam-cli/src/commands/init.js +75 -259
  168. package/codeyam-cli/src/commands/init.js.map +1 -1
  169. package/codeyam-cli/src/commands/memory.js +95 -81
  170. package/codeyam-cli/src/commands/memory.js.map +1 -1
  171. package/codeyam-cli/src/commands/recapture.js +2 -0
  172. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  173. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  174. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  175. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  176. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  177. package/codeyam-cli/src/commands/test-startup.js +2 -0
  178. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  179. package/codeyam-cli/src/commands/verify.js +14 -2
  180. package/codeyam-cli/src/commands/verify.js.map +1 -1
  181. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +185 -0
  182. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  183. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js +9 -0
  184. package/codeyam-cli/src/utils/__tests__/pathIgnoring.test.js.map +1 -1
  185. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +154 -86
  186. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  187. package/codeyam-cli/src/utils/analyzer.js +7 -0
  188. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  189. package/codeyam-cli/src/utils/backgroundServer.js +109 -26
  190. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  191. package/codeyam-cli/src/utils/devModeEvents.js +40 -0
  192. package/codeyam-cli/src/utils/devModeEvents.js.map +1 -0
  193. package/codeyam-cli/src/utils/fileMetadata.js +5 -0
  194. package/codeyam-cli/src/utils/fileMetadata.js.map +1 -1
  195. package/codeyam-cli/src/utils/fileWatcher.js +25 -9
  196. package/codeyam-cli/src/utils/fileWatcher.js.map +1 -1
  197. package/codeyam-cli/src/utils/generateReport.js +2 -2
  198. package/codeyam-cli/src/utils/git.js +52 -0
  199. package/codeyam-cli/src/utils/git.js.map +1 -1
  200. package/codeyam-cli/src/utils/install-skills.js +74 -63
  201. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  202. package/codeyam-cli/src/utils/interactiveSyncWatcher.js +126 -0
  203. package/codeyam-cli/src/utils/interactiveSyncWatcher.js.map +1 -0
  204. package/codeyam-cli/src/utils/labsAutoCheck.js +0 -29
  205. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -1
  206. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  207. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  208. package/codeyam-cli/src/utils/pathIgnoring.js +19 -7
  209. package/codeyam-cli/src/utils/pathIgnoring.js.map +1 -1
  210. package/codeyam-cli/src/utils/progress.js +7 -0
  211. package/codeyam-cli/src/utils/progress.js.map +1 -1
  212. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js +11 -11
  213. package/codeyam-cli/src/utils/queue/__tests__/heartbeat.test.js.map +1 -1
  214. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js +22 -0
  215. package/codeyam-cli/src/utils/queue/__tests__/manager.test.js.map +1 -1
  216. package/codeyam-cli/src/utils/queue/heartbeat.js +13 -5
  217. package/codeyam-cli/src/utils/queue/heartbeat.js.map +1 -1
  218. package/codeyam-cli/src/utils/queue/job.js +70 -1
  219. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  220. package/codeyam-cli/src/utils/queue/manager.js +7 -6
  221. package/codeyam-cli/src/utils/queue/manager.js.map +1 -1
  222. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  223. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  224. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +7 -8
  225. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  226. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +1 -1
  227. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -1
  228. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +0 -1
  229. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -1
  230. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +97 -6
  231. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -1
  232. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +4 -6
  233. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  234. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +3 -3
  235. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -1
  236. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  237. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  238. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  239. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  240. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  241. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  242. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +23 -23
  243. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -1
  244. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  245. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  246. package/codeyam-cli/src/utils/rules/index.js +1 -0
  247. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  248. package/codeyam-cli/src/utils/rules/parser.js +19 -4
  249. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  250. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  251. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  252. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  253. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  254. package/codeyam-cli/src/utils/rules/ruleState.js +10 -10
  255. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -1
  256. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  257. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  258. package/codeyam-cli/src/utils/rules/staleness.js +6 -6
  259. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  260. package/codeyam-cli/src/utils/serverState.js +64 -12
  261. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  262. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +61 -43
  263. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  264. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  265. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  266. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  267. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  268. package/codeyam-cli/src/utils/testRunner.js +158 -0
  269. package/codeyam-cli/src/utils/testRunner.js.map +1 -0
  270. package/codeyam-cli/src/utils/transcriptPruning.js +67 -0
  271. package/codeyam-cli/src/utils/transcriptPruning.js.map +1 -0
  272. package/codeyam-cli/src/utils/versionInfo.js +46 -0
  273. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  274. package/codeyam-cli/src/utils/webappDetection.js +14 -2
  275. package/codeyam-cli/src/utils/webappDetection.js.map +1 -1
  276. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  277. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  278. package/codeyam-cli/src/webserver/app/lib/database.js +55 -30
  279. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  280. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  281. package/codeyam-cli/src/webserver/backgroundServer.js +144 -25
  282. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  283. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  284. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  285. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-CA3JxPb7.js → CopyButton-DmJveP3T.js} +1 -1
  286. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-B86KKU7e.js → EntityItem-C76mRRiF.js} +1 -1
  287. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-B5ctlSYt.js → EntityTypeBadge-g3saevPb.js} +1 -1
  288. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BqY8gDAW.js → EntityTypeIcon-CobE682z.js} +1 -1
  289. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-Bu6c6aDe.js +1 -0
  290. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-BDhPilK7.js → InteractivePreview-DYFW3lDD.js} +3 -3
  291. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-VeqEBv9v.js → LibraryFunctionPreview-DLeucoVX.js} +1 -1
  292. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-Bs7Nn1Jr.js → LoadingDots-BU_OAEMP.js} +1 -1
  293. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-Bm3PmcCz.js → LogViewer-ceAyBX-H.js} +1 -1
  294. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-C6PKeMYR.js → ReportIssueModal-djPLI-WV.js} +2 -2
  295. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-Gq3Ocjo6.js → SafeScreenshot-BED4B6sP.js} +1 -1
  296. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BNLaXBHR.js → ScenarioViewer-B76aig_2.js} +2 -2
  297. package/codeyam-cli/src/webserver/build/client/assets/Spinner-Bb5uFQ5V.js +34 -0
  298. package/codeyam-cli/src/webserver/build/client/assets/Terminal-BaIiqg_w.js +41 -0
  299. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CiwXDxLh.js → TruncatedFilePath-C8OKAR5x.js} +1 -1
  300. package/codeyam-cli/src/webserver/build/client/assets/{_index-B3TDXxnk.js → _index-C96V0n15.js} +1 -1
  301. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BtBFH820.js → activity.(_tab)-BpKzcsJz.js} +1 -1
  302. package/codeyam-cli/src/webserver/build/client/assets/addon-fit-CUXOrorO.js +1 -0
  303. package/codeyam-cli/src/webserver/build/client/assets/addon-web-links-Duc5hnl7.js +1 -0
  304. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-D9hemwl6.js +22 -0
  305. package/codeyam-cli/src/webserver/build/client/assets/api.editor-capture-scenario-l0sNRNKZ.js +1 -0
  306. package/codeyam-cli/src/webserver/build/client/assets/api.editor-client-errors-l0sNRNKZ.js +1 -0
  307. package/codeyam-cli/src/webserver/build/client/assets/api.editor-commit-l0sNRNKZ.js +1 -0
  308. package/codeyam-cli/src/webserver/build/client/assets/api.editor-dev-server-l0sNRNKZ.js +1 -0
  309. package/codeyam-cli/src/webserver/build/client/assets/api.editor-entity-status-l0sNRNKZ.js +1 -0
  310. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-entry-l0sNRNKZ.js +1 -0
  311. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-image._-l0sNRNKZ.js +1 -0
  312. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-l0sNRNKZ.js +1 -0
  313. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-screenshot-l0sNRNKZ.js +1 -0
  314. package/codeyam-cli/src/webserver/build/client/assets/api.editor-journal-update-l0sNRNKZ.js +1 -0
  315. package/codeyam-cli/src/webserver/build/client/assets/api.editor-refresh-l0sNRNKZ.js +1 -0
  316. package/codeyam-cli/src/webserver/build/client/assets/api.editor-register-scenario-l0sNRNKZ.js +1 -0
  317. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-data-l0sNRNKZ.js +1 -0
  318. package/codeyam-cli/src/webserver/build/client/assets/api.editor-scenario-image._-l0sNRNKZ.js +1 -0
  319. package/codeyam-cli/src/webserver/build/client/assets/api.editor-switch-scenario-l0sNRNKZ.js +1 -0
  320. package/codeyam-cli/src/webserver/build/client/assets/api.editor-test-results-l0sNRNKZ.js +1 -0
  321. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  322. package/codeyam-cli/src/webserver/build/client/assets/{book-open-PttOB2SF.js → book-open-D_nMCFmP.js} +1 -1
  323. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-TJp6ofnp.js → chevron-down-BH2h1Ea2.js} +1 -1
  324. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-JE9ZIoBl.js → chunk-JZWAC4HX-C4pqxYJB.js} +9 -9
  325. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-CXhHQYrI.js → circle-check-DyIKORY6.js} +1 -1
  326. package/codeyam-cli/src/webserver/build/client/assets/{copy-6y9ALfGT.js → copy-NDbZjXao.js} +1 -1
  327. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-Ca9fAY46.js → createLucideIcon-CMT1jU2q.js} +1 -1
  328. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-BiM6z3Do.js +1 -0
  329. package/codeyam-cli/src/webserver/build/client/assets/editor-Ba0jejiv.js +7 -0
  330. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-n38keI1k.js → entity._sha._-CrjR3zZW.js} +10 -10
  331. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.dev-DloHYjtt.js +6 -0
  332. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-C28BiQzt.js +6 -0
  333. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-p9hhkjJM.js +6 -0
  334. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-38yPijoD.js → entity._sha_.edit._scenarioId-BMvVHNXU.js} +2 -2
  335. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-BSHEfydn.js → entry.client-DTvKq3TY.js} +1 -1
  336. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DCPhhSMo.js → fileTableUtils-cPo8LiG3.js} +1 -1
  337. package/codeyam-cli/src/webserver/build/client/assets/{files-0N0YJQv7.js → files-DO4CZ16O.js} +1 -1
  338. package/codeyam-cli/src/webserver/build/client/assets/{git-DXnyr8uP.js → git-CFCTYk9I.js} +1 -1
  339. package/codeyam-cli/src/webserver/build/client/assets/globals-BH6uYxPM.css +1 -0
  340. package/codeyam-cli/src/webserver/build/client/assets/{index-ChN9-fAY.js → index-10oVnAAH.js} +1 -1
  341. package/codeyam-cli/src/webserver/build/client/assets/{index-CcsFv748.js → index-BcvgDzbZ.js} +1 -1
  342. package/codeyam-cli/src/webserver/build/client/assets/labs-Zk7ryIM1.js +1 -0
  343. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-CTqLEAGU.js → loader-circle-BAXYRVEO.js} +1 -1
  344. package/codeyam-cli/src/webserver/build/client/assets/manifest-dcea65f8.js +1 -0
  345. package/codeyam-cli/src/webserver/build/client/assets/memory-FweZHj5U.js +93 -0
  346. package/codeyam-cli/src/webserver/build/client/assets/{pause-D6vreykR.js → pause-DTAcYxBt.js} +1 -1
  347. package/codeyam-cli/src/webserver/build/client/assets/root-Dzn8nIkU.js +67 -0
  348. package/codeyam-cli/src/webserver/build/client/assets/{search-B8VUL8nl.js → search-fKo7v0Zo.js} +1 -1
  349. package/codeyam-cli/src/webserver/build/client/assets/settings-DfuTtcJP.js +1 -0
  350. package/codeyam-cli/src/webserver/build/client/assets/{simulations-CPoAg7Zo.js → simulations-B3aOzpCZ.js} +1 -1
  351. package/codeyam-cli/src/webserver/build/client/assets/{terminal-BrCP7uQo.js → terminal-BG4heKCG.js} +1 -1
  352. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-BZz2NjYa.js → triangle-alert-DtSmdtM4.js} +1 -1
  353. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-DNwUduNu.js → useCustomSizes-ByhSyh0W.js} +1 -1
  354. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-C14nCb1q.js +2 -0
  355. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-CpZgwliL.js → useReportContext-O-jkvSPx.js} +1 -1
  356. package/codeyam-cli/src/webserver/build/client/assets/{useToast-Bv9JFvUO.js → useToast-9FIWuYfK.js} +1 -1
  357. package/codeyam-cli/src/webserver/build/client/assets/xterm-DMSzMhqy.js +9 -0
  358. package/codeyam-cli/src/webserver/build/server/assets/index-mE6GlU_8.js +1 -0
  359. package/codeyam-cli/src/webserver/build/server/assets/server-build-BApEk7IO.js +362 -0
  360. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  361. package/codeyam-cli/src/webserver/build-info.json +5 -5
  362. package/codeyam-cli/src/webserver/devServer.js +39 -5
  363. package/codeyam-cli/src/webserver/devServer.js.map +1 -1
  364. package/codeyam-cli/src/webserver/editorProxy.js +272 -0
  365. package/codeyam-cli/src/webserver/editorProxy.js.map +1 -0
  366. package/codeyam-cli/src/webserver/scripts/journalCapture.ts +121 -0
  367. package/codeyam-cli/src/webserver/server.js +177 -1
  368. package/codeyam-cli/src/webserver/server.js.map +1 -1
  369. package/codeyam-cli/src/webserver/terminalServer.js +606 -0
  370. package/codeyam-cli/src/webserver/terminalServer.js.map +1 -0
  371. package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
  372. package/codeyam-cli/templates/codeyam-dev-mode.md +237 -0
  373. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  374. package/codeyam-cli/templates/codeyam-editor-claude.md +68 -0
  375. package/codeyam-cli/templates/codeyam-editor.md +67 -0
  376. package/codeyam-cli/templates/codeyam-memory-hook.sh +14 -14
  377. package/codeyam-cli/templates/{codeyam:memory.md → codeyam-memory.md} +16 -24
  378. package/codeyam-cli/templates/{codeyam:new-rule.md → codeyam-new-rule.md} +1 -3
  379. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  380. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  381. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  382. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  383. package/codeyam-cli/templates/editor-step-hook.py +143 -0
  384. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  385. package/codeyam-cli/templates/isolation-route/next-app.tsx.template +80 -0
  386. package/codeyam-cli/templates/isolation-route/next-pages.tsx.template +79 -0
  387. package/codeyam-cli/templates/isolation-route/vite-react.tsx.template +78 -0
  388. package/codeyam-cli/templates/msw/browser-setup.ts.template +47 -0
  389. package/codeyam-cli/templates/msw/handler-router.ts.template +47 -0
  390. package/codeyam-cli/templates/msw/server-setup.ts.template +52 -0
  391. package/codeyam-cli/templates/nextjs-prisma-sqlite/PRISMA_SETUP.md +84 -0
  392. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/api/todos/route.ts +17 -0
  393. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/globals.css +26 -0
  394. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/layout.tsx +34 -0
  395. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/lib/prisma.ts +19 -0
  396. package/codeyam-cli/templates/nextjs-prisma-sqlite/app/page.tsx +10 -0
  397. package/codeyam-cli/templates/nextjs-prisma-sqlite/eslint.config.mjs +11 -0
  398. package/codeyam-cli/templates/nextjs-prisma-sqlite/next.config.ts +14 -0
  399. package/codeyam-cli/templates/nextjs-prisma-sqlite/package.json +35 -0
  400. package/codeyam-cli/templates/nextjs-prisma-sqlite/postcss.config.mjs +7 -0
  401. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/schema.prisma +27 -0
  402. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma/seed.ts +37 -0
  403. package/codeyam-cli/templates/nextjs-prisma-sqlite/prisma.config.ts +12 -0
  404. package/codeyam-cli/templates/nextjs-prisma-sqlite/tsconfig.json +34 -0
  405. package/codeyam-cli/templates/prompts/conversation-guidance.txt +44 -0
  406. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  407. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  408. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  409. package/codeyam-cli/templates/rule-notification-hook.py +44 -17
  410. package/codeyam-cli/templates/rule-reflection-hook.py +88 -31
  411. package/codeyam-cli/templates/rules-instructions.md +45 -90
  412. package/package.json +15 -13
  413. package/packages/ai/index.js +1 -1
  414. package/packages/ai/index.js.map +1 -1
  415. package/packages/ai/src/lib/analyzeScope.js +14 -0
  416. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  417. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js +22 -4
  418. package/packages/ai/src/lib/astScopes/astScopeAnalyzer.js.map +1 -1
  419. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  420. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  421. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  422. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  423. package/packages/ai/src/lib/completionCall.js +10 -7
  424. package/packages/ai/src/lib/completionCall.js.map +1 -1
  425. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +362 -10
  426. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  427. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js +54 -0
  428. package/packages/ai/src/lib/dataStructure/helpers/coercePrimitivesToArraysBySchema.js.map +1 -0
  429. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +59 -17
  430. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  431. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js +34 -0
  432. package/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.js.map +1 -0
  433. package/packages/ai/src/lib/dataStructureChunking.js +30 -11
  434. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  435. package/packages/ai/src/lib/generateEntityScenarioData.js +79 -5
  436. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  437. package/packages/ai/src/lib/generateExecutionFlows.js +97 -2
  438. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  439. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  440. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  441. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  442. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  443. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  444. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  445. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  446. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  447. package/packages/analyze/src/lib/ProjectAnalyzer.js +3 -0
  448. package/packages/analyze/src/lib/ProjectAnalyzer.js.map +1 -1
  449. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  450. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  451. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +11 -1
  452. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  453. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +8 -1
  454. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  455. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js +0 -5
  456. package/packages/analyze/src/lib/files/analyze/dependencyResolver.js.map +1 -1
  457. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js +9 -0
  458. package/packages/analyze/src/lib/files/analyze/findOrCreateEntity.js.map +1 -1
  459. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +54 -27
  460. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -1
  461. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +42 -13
  462. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  463. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +65 -0
  464. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  465. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +141 -71
  466. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  467. package/packages/database/index.js +1 -0
  468. package/packages/database/index.js.map +1 -1
  469. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  470. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  471. package/packages/database/src/lib/analysisToDb.js +1 -1
  472. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  473. package/packages/database/src/lib/branchToDb.js +1 -1
  474. package/packages/database/src/lib/branchToDb.js.map +1 -1
  475. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  476. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  477. package/packages/database/src/lib/commitToDb.js +1 -1
  478. package/packages/database/src/lib/commitToDb.js.map +1 -1
  479. package/packages/database/src/lib/fileToDb.js +1 -1
  480. package/packages/database/src/lib/fileToDb.js.map +1 -1
  481. package/packages/database/src/lib/kysely/db.js +5 -0
  482. package/packages/database/src/lib/kysely/db.js.map +1 -1
  483. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js +45 -0
  484. package/packages/database/src/lib/kysely/tables/editorScenariosTable.js.map +1 -0
  485. package/packages/database/src/lib/loadCommits.js +23 -13
  486. package/packages/database/src/lib/loadCommits.js.map +1 -1
  487. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js +1 -4
  488. package/packages/database/src/lib/loadReadyToBeCapturedAnalyses.js.map +1 -1
  489. package/packages/database/src/lib/projectToDb.js +1 -1
  490. package/packages/database/src/lib/projectToDb.js.map +1 -1
  491. package/packages/database/src/lib/saveFiles.js +1 -1
  492. package/packages/database/src/lib/saveFiles.js.map +1 -1
  493. package/packages/database/src/lib/scenarioToDb.js +1 -1
  494. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  495. package/packages/database/src/lib/updateCommitMetadata.js +100 -89
  496. package/packages/database/src/lib/updateCommitMetadata.js.map +1 -1
  497. package/packages/database/src/lib/updateFreshAnalysisStatus.js +41 -30
  498. package/packages/database/src/lib/updateFreshAnalysisStatus.js.map +1 -1
  499. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js +68 -57
  500. package/packages/database/src/lib/updateFreshAnalysisStatusWithScenarios.js.map +1 -1
  501. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js +29 -1
  502. package/packages/generate/src/lib/componentScenarioPage/generateScenarioClientWrapper.js.map +1 -1
  503. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js +33 -5
  504. package/packages/generate/src/lib/componentScenarioPage/getIFrameMessageListenerCode.js.map +1 -1
  505. package/packages/utils/src/lib/fs/rsyncCopy.js +98 -3
  506. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  507. package/scripts/finalize-analyzer.cjs +8 -76
  508. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -118
  509. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  510. package/codeyam-cli/src/commands/list.js +0 -31
  511. package/codeyam-cli/src/commands/list.js.map +0 -1
  512. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  513. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  514. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  515. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  516. package/codeyam-cli/src/webserver/build/client/assets/InlineSpinner-ClaLpuOo.js +0 -34
  517. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DfKzxuoe.js +0 -11
  518. package/codeyam-cli/src/webserver/build/client/assets/dev.empty-C5lqplTC.js +0 -1
  519. package/codeyam-cli/src/webserver/build/client/assets/entity._sha.scenarios._scenarioId.fullscreen-CBoafmVs.js +0 -6
  520. package/codeyam-cli/src/webserver/build/client/assets/entity._sha_.create-scenario-DGgZjdFg.js +0 -6
  521. package/codeyam-cli/src/webserver/build/client/assets/globals-DoeDFXZN.css +0 -1
  522. package/codeyam-cli/src/webserver/build/client/assets/labs-CmBYA0PH.js +0 -1
  523. package/codeyam-cli/src/webserver/build/client/assets/manifest-76786b8e.js +0 -1
  524. package/codeyam-cli/src/webserver/build/client/assets/memory-CrNQfdMO.js +0 -76
  525. package/codeyam-cli/src/webserver/build/client/assets/root-QAY34PIo.js +0 -62
  526. package/codeyam-cli/src/webserver/build/client/assets/settings-eBI36Yv5.js +0 -1
  527. package/codeyam-cli/src/webserver/build/client/assets/useLastLogLine-COky1GVF.js +0 -2
  528. package/codeyam-cli/src/webserver/build/server/assets/index-DV1ykEI6.js +0 -1
  529. package/codeyam-cli/src/webserver/build/server/assets/server-build-BrcVrUEv.js +0 -260
  530. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
  531. package/codeyam-cli/templates/codeyam:diagnose.md +0 -805
  532. /package/codeyam-cli/src/webserver/build/client/assets/{api.labs-survey-l0sNRNKZ.js → api.dev-mode-events-l0sNRNKZ.js} +0 -0
@@ -1,7 +1,7 @@
1
1
  import * as fs from 'fs';
2
2
  import * as path from 'path';
3
3
  import * as os from 'os';
4
- import { loadRuleState, saveRuleState, syncRuleState, touchTimestamps, setReviewed, getRuleTimestamp, isRuleReviewed, hashRuleContent, } from "../ruleState.js";
4
+ import { loadRuleState, saveRuleState, syncRuleState, touchLastAuditedAt, setReviewed, getRuleLastAuditedAt, isRuleReviewed, hashRuleContent, } from "../ruleState.js";
5
5
  describe('ruleState', () => {
6
6
  let tempDir;
7
7
  beforeEach(() => {
@@ -38,7 +38,7 @@ describe('ruleState', () => {
38
38
  version: 1,
39
39
  rules: {
40
40
  'test-rule.md': {
41
- timestamp: '2026-01-01T00:00:00Z',
41
+ lastAuditedAt: '2026-01-01T00:00:00Z',
42
42
  contentHash: 'abc123',
43
43
  reviewed: true,
44
44
  },
@@ -47,7 +47,7 @@ describe('ruleState', () => {
47
47
  fs.writeFileSync(path.join(tempDir, '.claude', 'codeyam-rule-state.json'), JSON.stringify(data));
48
48
  const state = await loadRuleState(tempDir);
49
49
  expect(state.rules['test-rule.md']).toEqual({
50
- timestamp: '2026-01-01T00:00:00Z',
50
+ lastAuditedAt: '2026-01-01T00:00:00Z',
51
51
  contentHash: 'abc123',
52
52
  reviewed: true,
53
53
  });
@@ -114,7 +114,7 @@ describe('ruleState', () => {
114
114
  version: 1,
115
115
  rules: {
116
116
  'existing.md': {
117
- timestamp: '2026-01-01T00:00:00Z',
117
+ lastAuditedAt: '2026-01-01T00:00:00Z',
118
118
  contentHash: hash,
119
119
  reviewed: true,
120
120
  },
@@ -124,7 +124,7 @@ describe('ruleState', () => {
124
124
  const rules = [makeRule('existing.md', ruleContent)];
125
125
  const state = await syncRuleState(tempDir, rules);
126
126
  expect(state.rules['existing.md'].reviewed).toBe(true);
127
- expect(state.rules['existing.md'].timestamp).toBe('2026-01-01T00:00:00Z');
127
+ expect(state.rules['existing.md'].lastAuditedAt).toBe('2026-01-01T00:00:00Z');
128
128
  });
129
129
  it('resets reviewed to false when content changes', async () => {
130
130
  const oldContent = '# Old Rule\n\nOld content.';
@@ -133,7 +133,7 @@ describe('ruleState', () => {
133
133
  version: 1,
134
134
  rules: {
135
135
  'changing.md': {
136
- timestamp: '2026-01-01T00:00:00Z',
136
+ lastAuditedAt: '2026-01-01T00:00:00Z',
137
137
  contentHash: hashRuleContent(oldContent),
138
138
  reviewed: true,
139
139
  },
@@ -144,8 +144,8 @@ describe('ruleState', () => {
144
144
  const state = await syncRuleState(tempDir, rules);
145
145
  expect(state.rules['changing.md'].reviewed).toBe(false);
146
146
  expect(state.rules['changing.md'].contentHash).toBe(hashRuleContent(newContent));
147
- // Timestamp should be preserved
148
- expect(state.rules['changing.md'].timestamp).toBe('2026-01-01T00:00:00Z');
147
+ // lastAuditedAt should be preserved
148
+ expect(state.rules['changing.md'].lastAuditedAt).toBe('2026-01-01T00:00:00Z');
149
149
  });
150
150
  it('removes entries for deleted rules', async () => {
151
151
  await saveRuleState(tempDir, {
@@ -162,8 +162,8 @@ describe('ruleState', () => {
162
162
  expect(state.rules['deleted.md']).toBeUndefined();
163
163
  });
164
164
  });
165
- describe('touchTimestamps', () => {
166
- it('sets timestamp to now for listed rules', async () => {
165
+ describe('touchLastAuditedAt', () => {
166
+ it('sets lastAuditedAt to now for listed rules', async () => {
167
167
  await saveRuleState(tempDir, {
168
168
  version: 1,
169
169
  rules: {
@@ -171,16 +171,16 @@ describe('ruleState', () => {
171
171
  'rule-b.md': {
172
172
  contentHash: 'hash-b',
173
173
  reviewed: false,
174
- timestamp: '2026-01-01T00:00:00Z',
174
+ lastAuditedAt: '2026-01-01T00:00:00Z',
175
175
  },
176
176
  },
177
177
  });
178
178
  const before = Date.now();
179
- await touchTimestamps(tempDir, ['rule-a.md', 'rule-b.md']);
179
+ await touchLastAuditedAt(tempDir, ['rule-a.md', 'rule-b.md']);
180
180
  const after = Date.now();
181
181
  const state = await loadRuleState(tempDir);
182
182
  for (const rulePath of ['rule-a.md', 'rule-b.md']) {
183
- const ts = new Date(state.rules[rulePath].timestamp).getTime();
183
+ const ts = new Date(state.rules[rulePath].lastAuditedAt).getTime();
184
184
  expect(ts).toBeGreaterThanOrEqual(before);
185
185
  expect(ts).toBeLessThanOrEqual(after);
186
186
  }
@@ -193,13 +193,13 @@ describe('ruleState', () => {
193
193
  'untouched.md': {
194
194
  contentHash: 'hash-u',
195
195
  reviewed: true,
196
- timestamp: '2026-01-01T00:00:00Z',
196
+ lastAuditedAt: '2026-01-01T00:00:00Z',
197
197
  },
198
198
  },
199
199
  });
200
- await touchTimestamps(tempDir, ['touched.md']);
200
+ await touchLastAuditedAt(tempDir, ['touched.md']);
201
201
  const state = await loadRuleState(tempDir);
202
- expect(state.rules['untouched.md'].timestamp).toBe('2026-01-01T00:00:00Z');
202
+ expect(state.rules['untouched.md'].lastAuditedAt).toBe('2026-01-01T00:00:00Z');
203
203
  });
204
204
  });
205
205
  describe('setReviewed', () => {
@@ -237,32 +237,32 @@ describe('ruleState', () => {
237
237
  expect(state.rules['brand-new.md'].reviewed).toBe(true);
238
238
  });
239
239
  });
240
- describe('getRuleTimestamp', () => {
241
- it('returns timestamp when it exists', () => {
240
+ describe('getRuleLastAuditedAt', () => {
241
+ it('returns lastAuditedAt when it exists', () => {
242
242
  const state = {
243
243
  version: 1,
244
244
  rules: {
245
245
  'rule.md': {
246
246
  contentHash: 'hash',
247
247
  reviewed: false,
248
- timestamp: '2026-02-01T00:00:00Z',
248
+ lastAuditedAt: '2026-02-01T00:00:00Z',
249
249
  },
250
250
  },
251
251
  };
252
- expect(getRuleTimestamp(state, 'rule.md')).toBe('2026-02-01T00:00:00Z');
252
+ expect(getRuleLastAuditedAt(state, 'rule.md')).toBe('2026-02-01T00:00:00Z');
253
253
  });
254
- it('returns null when rule has no timestamp', () => {
254
+ it('returns null when rule has no lastAuditedAt', () => {
255
255
  const state = {
256
256
  version: 1,
257
257
  rules: {
258
258
  'rule.md': { contentHash: 'hash', reviewed: false },
259
259
  },
260
260
  };
261
- expect(getRuleTimestamp(state, 'rule.md')).toBeNull();
261
+ expect(getRuleLastAuditedAt(state, 'rule.md')).toBeNull();
262
262
  });
263
263
  it('returns null when rule does not exist', () => {
264
264
  const state = { version: 1, rules: {} };
265
- expect(getRuleTimestamp(state, 'nonexistent.md')).toBeNull();
265
+ expect(getRuleLastAuditedAt(state, 'nonexistent.md')).toBeNull();
266
266
  });
267
267
  });
268
268
  describe('isRuleReviewed', () => {
@@ -1 +1 @@
1
- {"version":3,"file":"ruleState.test.js","sourceRoot":"","sources":["../../../../../../src/utils/rules/__tests__/ruleState.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleState.test.js","sourceRoot":"","sources":["../../../../../../src/utils/rules/__tests__/ruleState.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,76 @@
1
+ import * as fs from 'fs';
2
+ import * as path from 'path';
3
+ import * as os from 'os';
4
+ import { findSourceFilesInProject } from "../sourceFiles.js";
5
+ describe('findSourceFilesInProject', () => {
6
+ let tempDir;
7
+ beforeEach(() => {
8
+ tempDir = fs.mkdtempSync(path.join(os.tmpdir(), 'codeyam-sourcefiles-'));
9
+ });
10
+ afterEach(() => {
11
+ fs.rmSync(tempDir, { recursive: true, force: true });
12
+ });
13
+ it('returns files with correct relative paths', () => {
14
+ fs.mkdirSync(path.join(tempDir, 'src'), { recursive: true });
15
+ fs.writeFileSync(path.join(tempDir, 'src', 'index.ts'), '');
16
+ fs.writeFileSync(path.join(tempDir, 'src', 'App.tsx'), '');
17
+ return findSourceFilesInProject(tempDir).then((files) => {
18
+ expect(files.sort()).toEqual(['src/App.tsx', 'src/index.ts']);
19
+ });
20
+ });
21
+ it('includes files of any extension', () => {
22
+ fs.writeFileSync(path.join(tempDir, 'a.ts'), '');
23
+ fs.writeFileSync(path.join(tempDir, 'b.tsx'), '');
24
+ fs.writeFileSync(path.join(tempDir, 'c.js'), '');
25
+ fs.writeFileSync(path.join(tempDir, 'd.json'), '{}');
26
+ fs.writeFileSync(path.join(tempDir, 'e.css'), '');
27
+ fs.writeFileSync(path.join(tempDir, 'f.md'), '');
28
+ fs.writeFileSync(path.join(tempDir, 'g.vue'), '');
29
+ return findSourceFilesInProject(tempDir).then((files) => {
30
+ expect(files.sort()).toEqual([
31
+ 'a.ts',
32
+ 'b.tsx',
33
+ 'c.js',
34
+ 'd.json',
35
+ 'e.css',
36
+ 'f.md',
37
+ 'g.vue',
38
+ ]);
39
+ });
40
+ });
41
+ it('skips excluded directories', () => {
42
+ const excludedDirs = [
43
+ 'node_modules',
44
+ '.git',
45
+ 'dist',
46
+ '.codeyam',
47
+ '.claude',
48
+ 'build',
49
+ 'coverage',
50
+ ];
51
+ for (const dir of excludedDirs) {
52
+ fs.mkdirSync(path.join(tempDir, dir), { recursive: true });
53
+ fs.writeFileSync(path.join(tempDir, dir, 'file.ts'), '');
54
+ }
55
+ fs.mkdirSync(path.join(tempDir, 'src'), { recursive: true });
56
+ fs.writeFileSync(path.join(tempDir, 'src', 'real.ts'), '');
57
+ return findSourceFilesInProject(tempDir).then((files) => {
58
+ expect(files).toEqual(['src/real.ts']);
59
+ });
60
+ });
61
+ it('returns empty array for projects with no files', () => {
62
+ return findSourceFilesInProject(tempDir).then((files) => {
63
+ expect(files).toEqual([]);
64
+ });
65
+ });
66
+ it('recurses into nested directories', () => {
67
+ fs.mkdirSync(path.join(tempDir, 'src', 'components', 'ui'), {
68
+ recursive: true,
69
+ });
70
+ fs.writeFileSync(path.join(tempDir, 'src', 'components', 'ui', 'Button.tsx'), '');
71
+ return findSourceFilesInProject(tempDir).then((files) => {
72
+ expect(files).toEqual(['src/components/ui/Button.tsx']);
73
+ });
74
+ });
75
+ });
76
+ //# sourceMappingURL=sourceFiles.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceFiles.test.js","sourceRoot":"","sources":["../../../../../../src/utils/rules/__tests__/sourceFiles.test.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  // Re-export all rule utilities
2
2
  export * from "./parser.js";
3
3
  export * from "./pathMatcher.js";
4
+ export * from "./sourceFiles.js";
4
5
  export * from "./staleness.js";
5
6
  export * from "./ruleState.js";
6
7
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/rules/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/utils/rules/index.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,cAAc,UAAU,CAAC;AACzB,cAAc,eAAe,CAAC;AAC9B,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
@@ -14,10 +14,14 @@ export function parseFrontmatter(content) {
14
14
  const body = match[2];
15
15
  // Simple YAML parser for our specific format
16
16
  const frontmatter = {};
17
- // Parse paths array
18
- const pathsMatch = yamlContent.match(/paths:\s*\n((?:\s+-\s+[^\n]+\n?)*)/);
19
- if (pathsMatch) {
20
- frontmatter.paths = pathsMatch[1]
17
+ // Parse paths array - supports both multi-line and inline YAML formats:
18
+ // paths: paths: ['src/**', 'lib/**']
19
+ // - 'src/**' paths: [src/**]
20
+ // - 'lib/**'
21
+ const multiLineMatch = yamlContent.match(/paths:\s*\n((?:\s+-\s+[^\n]+\n?)*)/);
22
+ const inlineMatch = yamlContent.match(/paths:\s*\[([^\]]*)\]/);
23
+ if (multiLineMatch && multiLineMatch[1].trim()) {
24
+ frontmatter.paths = multiLineMatch[1]
21
25
  .split('\n')
22
26
  .filter((line) => line.trim().startsWith('-'))
23
27
  .map((line) => line
@@ -26,6 +30,17 @@ export function parseFrontmatter(content) {
26
30
  .trim())
27
31
  .filter(Boolean);
28
32
  }
33
+ else if (inlineMatch) {
34
+ frontmatter.paths = inlineMatch[1]
35
+ .split(',')
36
+ .map((item) => item.replace(/['"]/g, '').trim())
37
+ .filter(Boolean);
38
+ }
39
+ // Parse category
40
+ const categoryMatch = yamlContent.match(/^category:\s*(.+)$/m);
41
+ if (categoryMatch) {
42
+ frontmatter.category = categoryMatch[1].replace(/['"]/g, '').trim();
43
+ }
29
44
  return { frontmatter, body };
30
45
  }
31
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../src/utils/rules/parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../../src/utils/rules/parser.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,33 @@
1
1
  // Path matching utilities for Claude Rules
2
2
  import { minimatch } from 'minimatch';
3
+ import path from 'path';
4
+ /**
5
+ * Derive the implicit directory pattern from a rule's location within .claude/rules/.
6
+ * In Claude Code, rules placed in subdirectories automatically apply to files
7
+ * in the corresponding project directory (e.g., .claude/rules/src/utils/foo.md
8
+ * applies to files under src/utils/).
9
+ * Returns null for root-level rules (no directory component).
10
+ */
11
+ function getImplicitDirectoryPattern(rule) {
12
+ const dir = path.posix.dirname(rule.filePath);
13
+ if (!dir || dir === '.') {
14
+ return null;
15
+ }
16
+ return `${dir}/**`;
17
+ }
3
18
  /**
4
19
  * Check if a file path matches any of a rule's path patterns
5
20
  */
6
21
  export function doesPathMatchRule(filePath, rule) {
7
- if (!rule.frontmatter.paths || rule.frontmatter.paths.length === 0) {
8
- return false;
22
+ if (rule.frontmatter.paths && rule.frontmatter.paths.length > 0) {
23
+ return rule.frontmatter.paths.some((pattern) => minimatch(filePath, pattern, { matchBase: true }));
24
+ }
25
+ // Fall back to directory-based matching for rules in subdirectories
26
+ const implicitPattern = getImplicitDirectoryPattern(rule);
27
+ if (implicitPattern) {
28
+ return minimatch(filePath, implicitPattern, { matchBase: true });
9
29
  }
10
- return rule.frontmatter.paths.some((pattern) => minimatch(filePath, pattern, { matchBase: true }));
30
+ return false;
11
31
  }
12
32
  /**
13
33
  * Find all rules that match a given file path
@@ -15,4 +35,15 @@ export function doesPathMatchRule(filePath, rule) {
15
35
  export function getRulesForPath(filePath, rules) {
16
36
  return rules.filter((rule) => doesPathMatchRule(filePath, rule));
17
37
  }
38
+ /**
39
+ * Find all source files that match a given rule's path patterns.
40
+ * Inverse of getRulesForPath.
41
+ */
42
+ export function getSourceFilesForRule(rule, sourceFiles) {
43
+ if ((!rule.frontmatter.paths || rule.frontmatter.paths.length === 0) &&
44
+ !getImplicitDirectoryPattern(rule)) {
45
+ return [];
46
+ }
47
+ return sourceFiles.filter((filePath) => doesPathMatchRule(filePath, rule));
48
+ }
18
49
  //# sourceMappingURL=pathMatcher.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pathMatcher.js","sourceRoot":"","sources":["../../../../../src/utils/rules/pathMatcher.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAU;IAC5D,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7C,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAa;IAC7D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC"}
1
+ {"version":3,"file":"pathMatcher.js","sourceRoot":"","sources":["../../../../../src/utils/rules/pathMatcher.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB;;;;;;GAMG;AACH,SAAS,2BAA2B,CAAC,IAAU;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,CAAC,GAAG,IAAI,GAAG,KAAK,GAAG,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,GAAG,GAAG,KAAK,CAAC;AACrB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,QAAgB,EAAE,IAAU;IAC5D,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChE,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAC7C,SAAS,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAClD,CAAC;IACJ,CAAC;IAED,oEAAoE;IACpE,MAAM,eAAe,GAAG,2BAA2B,CAAC,IAAI,CAAC,CAAC;IAC1D,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAa;IAC7D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,IAAU,EACV,WAAqB;IAErB,IACE,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;QAChE,CAAC,2BAA2B,CAAC,IAAI,CAAC,EAClC,CAAC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,WAAW,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,iBAAiB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,CAAC;AAC7E,CAAC"}
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Compute the correct .claude/rules/ subdirectory for a rule based on its frontmatter paths.
3
+ *
4
+ * Algorithm:
5
+ * 1. For each path, extract the directory portion (strip filenames and glob segments)
6
+ * 2. Find the longest common directory prefix across all paths
7
+ * 3. Return that prefix (to be used as .claude/rules/<prefix>/)
8
+ *
9
+ * @param paths - Array of path patterns from rule frontmatter
10
+ * @returns The deepest common directory (e.g., "packages/ai/src/lib"), or "" for root
11
+ * @throws If paths array is empty
12
+ */
13
+ export function computeRulePlacement(paths) {
14
+ if (paths.length === 0) {
15
+ throw new Error('paths array must not be empty');
16
+ }
17
+ const directories = paths.map(extractDirectory);
18
+ // Find the longest common prefix of directory segments
19
+ const segmentArrays = directories.map((d) => (d === '' ? [] : d.split('/')));
20
+ const commonSegments = segmentArrays.reduce((common, segments) => {
21
+ const result = [];
22
+ for (let i = 0; i < Math.min(common.length, segments.length); i++) {
23
+ if (common[i] === segments[i]) {
24
+ result.push(common[i]);
25
+ }
26
+ else {
27
+ break;
28
+ }
29
+ }
30
+ return result;
31
+ });
32
+ return commonSegments.join('/');
33
+ }
34
+ /**
35
+ * Extract the directory portion from a path pattern, stripping:
36
+ * - Filenames (anything with an extension after the last /)
37
+ * - Glob segments (**, *, *.ext)
38
+ * - Trailing slashes
39
+ */
40
+ function extractDirectory(pathPattern) {
41
+ // Remove trailing slashes
42
+ const p = pathPattern.replace(/\/+$/, '');
43
+ const segments = p.split('/');
44
+ // Walk backwards, dropping segments that are globs or filenames
45
+ while (segments.length > 0) {
46
+ const last = segments[segments.length - 1];
47
+ if (isGlobOrFile(last)) {
48
+ segments.pop();
49
+ }
50
+ else {
51
+ break;
52
+ }
53
+ }
54
+ return segments.join('/');
55
+ }
56
+ function isGlobOrFile(segment) {
57
+ // Glob patterns: **, *, *.ext, **/*.ext
58
+ if (segment.includes('*'))
59
+ return true;
60
+ // Files: have an extension like .ts, .tsx, .js, etc.
61
+ if (/\.\w+$/.test(segment))
62
+ return true;
63
+ return false;
64
+ }
65
+ //# sourceMappingURL=rulePlacement.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulePlacement.js","sourceRoot":"","sources":["../../../../../src/utils/rules/rulePlacement.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,oBAAoB,CAAC,KAAe;IAClD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,WAAW,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEhD,uDAAuD;IACvD,MAAM,aAAa,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7E,MAAM,cAAc,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,QAAQ,EAAE,EAAE;QAC/D,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAClE,IAAI,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;YACzB,CAAC;iBAAM,CAAC;gBACN,MAAM;YACR,CAAC;QACH,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,OAAO,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClC,CAAC;AAED;;;;;GAKG;AACH,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,0BAA0B;IAC1B,MAAM,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAE1C,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE9B,gEAAgE;IAChE,OAAO,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAC3C,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YACvB,QAAQ,CAAC,GAAG,EAAE,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,MAAM;QACR,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAC5B,CAAC;AAED,SAAS,YAAY,CAAC,OAAe;IACnC,wCAAwC;IACxC,IAAI,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACvC,qDAAqD;IACrD,IAAI,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -1,5 +1,5 @@
1
1
  // Consolidated rule metadata management
2
- // Single source of truth for timestamps, content hashes, and review status
2
+ // Single source of truth for lastAuditedAt, content hashes, and review status
3
3
  import path from 'path';
4
4
  import fs from 'fs/promises';
5
5
  import crypto from 'crypto';
@@ -53,7 +53,7 @@ export async function saveRuleState(projectRoot, data) {
53
53
  * - Recomputes content hashes for all current rules
54
54
  * - Marks `reviewed: false` for rules whose hash changed
55
55
  * - Removes entries for deleted rules
56
- * - Preserves timestamps and reviewed status for unchanged rules
56
+ * - Preserves lastAuditedAt and reviewed status for unchanged rules
57
57
  */
58
58
  export async function syncRuleState(projectRoot, rules) {
59
59
  const state = await loadRuleState(projectRoot);
@@ -71,7 +71,7 @@ export async function syncRuleState(projectRoot, rules) {
71
71
  const existing = state.rules[rule.filePath];
72
72
  if (existing) {
73
73
  if (existing.contentHash !== newHash) {
74
- // Content changed — reset reviewed status, keep timestamp
74
+ // Content changed — reset reviewed status, keep lastAuditedAt
75
75
  state.rules[rule.filePath] = {
76
76
  ...existing,
77
77
  contentHash: newHash,
@@ -81,7 +81,7 @@ export async function syncRuleState(projectRoot, rules) {
81
81
  // If hash matches, keep everything as-is
82
82
  }
83
83
  else {
84
- // New rule — not yet reviewed, no timestamp
84
+ // New rule — not yet reviewed, no lastAuditedAt
85
85
  state.rules[rule.filePath] = {
86
86
  contentHash: newHash,
87
87
  reviewed: false,
@@ -92,15 +92,15 @@ export async function syncRuleState(projectRoot, rules) {
92
92
  return state;
93
93
  }
94
94
  /**
95
- * Set timestamp to now for the listed rule file paths.
95
+ * Set lastAuditedAt to now for the listed rule file paths.
96
96
  * Only modifies .claude/codeyam-rule-state.json.
97
97
  */
98
- export async function touchTimestamps(projectRoot, ruleFilePaths) {
98
+ export async function touchLastAuditedAt(projectRoot, ruleFilePaths) {
99
99
  const state = await loadRuleState(projectRoot);
100
100
  const now = new Date().toISOString();
101
101
  for (const filePath of ruleFilePaths) {
102
102
  if (state.rules[filePath]) {
103
- state.rules[filePath].timestamp = now;
103
+ state.rules[filePath].lastAuditedAt = now;
104
104
  }
105
105
  }
106
106
  await saveRuleState(projectRoot, state);
@@ -136,10 +136,10 @@ export async function setReviewed(projectRoot, filePath, reviewed, rulesDir) {
136
136
  await saveRuleState(projectRoot, state);
137
137
  }
138
138
  /**
139
- * Get the timestamp for a rule from loaded state.
139
+ * Get the lastAuditedAt value for a rule from loaded state.
140
140
  */
141
- export function getRuleTimestamp(state, filePath) {
142
- return state.rules[filePath]?.timestamp ?? null;
141
+ export function getRuleLastAuditedAt(state, filePath) {
142
+ return state.rules[filePath]?.lastAuditedAt ?? null;
143
143
  }
144
144
  /**
145
145
  * Check if a rule is reviewed from loaded state.
@@ -1 +1 @@
1
- {"version":3,"file":"ruleState.js","sourceRoot":"","sources":["../../../../../src/utils/rules/ruleState.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ruleState.js","sourceRoot":"","sources":["../../../../../src/utils/rules/ruleState.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import * as fs from 'fs/promises';
2
+ import * as path from 'path';
3
+ const EXCLUDED_DIRS = new Set([
4
+ 'node_modules',
5
+ '.git',
6
+ 'dist',
7
+ '.codeyam',
8
+ '.claude',
9
+ 'build',
10
+ 'coverage',
11
+ ]);
12
+ /**
13
+ * Find all files in a project, returning paths relative to projectRoot.
14
+ */
15
+ export async function findSourceFilesInProject(projectRoot) {
16
+ const sourceFiles = [];
17
+ async function walkDir(dir, relativePath) {
18
+ try {
19
+ const entries = await fs.readdir(dir, { withFileTypes: true });
20
+ for (const entry of entries) {
21
+ const fullPath = path.join(dir, entry.name);
22
+ const relPath = relativePath
23
+ ? `${relativePath}/${entry.name}`
24
+ : entry.name;
25
+ if (entry.isDirectory() && EXCLUDED_DIRS.has(entry.name)) {
26
+ continue;
27
+ }
28
+ if (entry.isDirectory()) {
29
+ await walkDir(fullPath, relPath);
30
+ }
31
+ else if (entry.isFile()) {
32
+ sourceFiles.push(relPath);
33
+ }
34
+ }
35
+ }
36
+ catch {
37
+ // Directory not readable, skip
38
+ }
39
+ }
40
+ await walkDir(projectRoot, '');
41
+ return sourceFiles;
42
+ }
43
+ //# sourceMappingURL=sourceFiles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sourceFiles.js","sourceRoot":"","sources":["../../../../../src/utils/rules/sourceFiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,cAAc;IACd,MAAM;IACN,MAAM;IACN,UAAU;IACV,SAAS;IACT,OAAO;IACP,UAAU;CACX,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,WAAmB;IAEnB,MAAM,WAAW,GAAa,EAAE,CAAC;IAEjC,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,YAAoB;QACtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;YAE/D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC5C,MAAM,OAAO,GAAG,YAAY;oBAC1B,CAAC,CAAC,GAAG,YAAY,IAAI,KAAK,CAAC,IAAI,EAAE;oBACjC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;gBAEf,IAAI,KAAK,CAAC,WAAW,EAAE,IAAI,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzD,SAAS;gBACX,CAAC;gBAED,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;oBACxB,MAAM,OAAO,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACnC,CAAC;qBAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;oBAC1B,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,+BAA+B;QACjC,CAAC;IACH,CAAC;IAED,MAAM,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAC/B,OAAO,WAAW,CAAC;AACrB,CAAC"}