@codeyam/codeyam-cli 0.1.0-staging.483fdc2 → 0.1.0-staging.4c0c3c9

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 (374) 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 +4 -4
  4. package/analyzer-template/packages/ai/index.ts +1 -0
  5. package/analyzer-template/packages/ai/package.json +2 -2
  6. package/analyzer-template/packages/ai/src/lib/analyzeScope.ts +23 -1
  7. package/analyzer-template/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.ts +10 -17
  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/dataStructure/ScopeDataStructure.ts +330 -9
  12. package/analyzer-template/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.ts +5 -1
  13. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.ts +11 -2
  14. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.ts +2 -2
  15. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.ts +70 -0
  16. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.ts +140 -14
  17. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.ts +20 -1
  18. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.ts +84 -19
  19. package/analyzer-template/packages/ai/src/lib/dataStructureChunking.ts +33 -15
  20. package/analyzer-template/packages/ai/src/lib/generateEntityDataStructure.ts +58 -3
  21. package/analyzer-template/packages/ai/src/lib/generateEntityScenarioData.ts +46 -5
  22. package/analyzer-template/packages/ai/src/lib/generateExecutionFlows.ts +38 -2
  23. package/analyzer-template/packages/ai/src/lib/generateExecutionFlowsFromConditionals.ts +359 -142
  24. package/analyzer-template/packages/ai/src/lib/isolateScopes.ts +51 -3
  25. package/analyzer-template/packages/ai/src/lib/mergeJsonTypeDefinitions.ts +5 -0
  26. package/analyzer-template/packages/ai/src/lib/promptGenerators/collapseNullableObjects.ts +118 -0
  27. package/analyzer-template/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.ts +24 -4
  28. package/analyzer-template/packages/analyze/index.ts +2 -0
  29. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.ts +69 -3
  30. package/analyzer-template/packages/analyze/src/lib/files/analyze/analyzeEntities.ts +5 -0
  31. package/analyzer-template/packages/analyze/src/lib/files/scenarios/TransformationTracer.ts +1315 -0
  32. package/analyzer-template/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.ts +4 -0
  33. package/analyzer-template/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.ts +59 -26
  34. package/analyzer-template/packages/analyze/src/lib/files/scenarios/generateDataStructure.ts +194 -15
  35. package/analyzer-template/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.ts +372 -57
  36. package/analyzer-template/packages/analyze/src/lib/index.ts +1 -0
  37. package/analyzer-template/packages/database/package.json +1 -1
  38. package/analyzer-template/packages/database/src/lib/analysisBranchToDb.ts +1 -1
  39. package/analyzer-template/packages/database/src/lib/analysisToDb.ts +1 -1
  40. package/analyzer-template/packages/database/src/lib/branchToDb.ts +1 -1
  41. package/analyzer-template/packages/database/src/lib/commitBranchToDb.ts +1 -1
  42. package/analyzer-template/packages/database/src/lib/commitToDb.ts +1 -1
  43. package/analyzer-template/packages/database/src/lib/fileToDb.ts +1 -1
  44. package/analyzer-template/packages/database/src/lib/kysely/db.ts +6 -0
  45. package/analyzer-template/packages/database/src/lib/kysely/tables/debugReportsTable.ts +1 -1
  46. package/analyzer-template/packages/database/src/lib/kysely/tables/labsRequestsTable.ts +52 -0
  47. package/analyzer-template/packages/database/src/lib/projectToDb.ts +1 -1
  48. package/analyzer-template/packages/database/src/lib/saveFiles.ts +1 -1
  49. package/analyzer-template/packages/database/src/lib/scenarioToDb.ts +1 -1
  50. package/analyzer-template/packages/database/src/lib/userScenarioToDb.ts +1 -1
  51. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js +1 -1
  52. package/analyzer-template/packages/github/dist/database/src/lib/analysisBranchToDb.js.map +1 -1
  53. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js +1 -1
  54. package/analyzer-template/packages/github/dist/database/src/lib/analysisToDb.js.map +1 -1
  55. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js +1 -1
  56. package/analyzer-template/packages/github/dist/database/src/lib/branchToDb.js.map +1 -1
  57. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js +1 -1
  58. package/analyzer-template/packages/github/dist/database/src/lib/commitBranchToDb.js.map +1 -1
  59. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js +1 -1
  60. package/analyzer-template/packages/github/dist/database/src/lib/commitToDb.js.map +1 -1
  61. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js +1 -1
  62. package/analyzer-template/packages/github/dist/database/src/lib/fileToDb.js.map +1 -1
  63. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts +2 -0
  64. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.d.ts.map +1 -1
  65. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js +3 -0
  66. package/analyzer-template/packages/github/dist/database/src/lib/kysely/db.js.map +1 -1
  67. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/debugReportsTable.d.ts +1 -1
  68. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts +23 -0
  69. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.d.ts.map +1 -0
  70. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  71. package/analyzer-template/packages/github/dist/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  72. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js +1 -1
  73. package/analyzer-template/packages/github/dist/database/src/lib/projectToDb.js.map +1 -1
  74. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js +1 -1
  75. package/analyzer-template/packages/github/dist/database/src/lib/saveFiles.js.map +1 -1
  76. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js +1 -1
  77. package/analyzer-template/packages/github/dist/database/src/lib/scenarioToDb.js.map +1 -1
  78. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  79. package/analyzer-template/packages/github/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  80. package/analyzer-template/packages/types/src/types/ProjectMetadata.ts +7 -0
  81. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts +7 -0
  82. package/analyzer-template/packages/utils/dist/types/src/types/ProjectMetadata.d.ts.map +1 -1
  83. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  84. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +93 -2
  85. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  86. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +108 -2
  87. package/analyzer-template/project/constructMockCode.ts +38 -3
  88. package/analyzer-template/project/writeMockDataTsx.ts +119 -17
  89. package/analyzer-template/project/writeScenarioComponents.ts +60 -12
  90. package/analyzer-template/project/writeSimpleRoot.ts +21 -11
  91. package/background/src/lib/local/createLocalAnalyzer.js +1 -1
  92. package/background/src/lib/local/createLocalAnalyzer.js.map +1 -1
  93. package/background/src/lib/virtualized/project/constructMockCode.js +32 -3
  94. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  95. package/background/src/lib/virtualized/project/writeMockDataTsx.js +102 -13
  96. package/background/src/lib/virtualized/project/writeMockDataTsx.js.map +1 -1
  97. package/background/src/lib/virtualized/project/writeScenarioComponents.js +60 -15
  98. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  99. package/background/src/lib/virtualized/project/writeSimpleRoot.js +21 -11
  100. package/background/src/lib/virtualized/project/writeSimpleRoot.js.map +1 -1
  101. package/codeyam-cli/scripts/apply-setup.js +44 -10
  102. package/codeyam-cli/scripts/apply-setup.js.map +1 -1
  103. package/codeyam-cli/src/cli.js +2 -0
  104. package/codeyam-cli/src/cli.js.map +1 -1
  105. package/codeyam-cli/src/codeyam-cli.js +18 -2
  106. package/codeyam-cli/src/codeyam-cli.js.map +1 -1
  107. package/codeyam-cli/src/commands/analyze.js +4 -2
  108. package/codeyam-cli/src/commands/analyze.js.map +1 -1
  109. package/codeyam-cli/src/commands/baseline.js +2 -0
  110. package/codeyam-cli/src/commands/baseline.js.map +1 -1
  111. package/codeyam-cli/src/commands/debug.js +2 -0
  112. package/codeyam-cli/src/commands/debug.js.map +1 -1
  113. package/codeyam-cli/src/commands/default.js +31 -20
  114. package/codeyam-cli/src/commands/default.js.map +1 -1
  115. package/codeyam-cli/src/commands/detect-universal-mocks.js +2 -0
  116. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +1 -1
  117. package/codeyam-cli/src/commands/init.js +49 -257
  118. package/codeyam-cli/src/commands/init.js.map +1 -1
  119. package/codeyam-cli/src/commands/memory.js +17 -26
  120. package/codeyam-cli/src/commands/memory.js.map +1 -1
  121. package/codeyam-cli/src/commands/recapture.js +2 -0
  122. package/codeyam-cli/src/commands/recapture.js.map +1 -1
  123. package/codeyam-cli/src/commands/setup-sandbox.js +2 -0
  124. package/codeyam-cli/src/commands/setup-sandbox.js.map +1 -1
  125. package/codeyam-cli/src/commands/setup-simulations.js +284 -0
  126. package/codeyam-cli/src/commands/setup-simulations.js.map +1 -0
  127. package/codeyam-cli/src/commands/test-startup.js +2 -0
  128. package/codeyam-cli/src/commands/test-startup.js.map +1 -1
  129. package/codeyam-cli/src/commands/verify.js +14 -2
  130. package/codeyam-cli/src/commands/verify.js.map +1 -1
  131. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +179 -0
  132. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -0
  133. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js +128 -86
  134. package/codeyam-cli/src/utils/__tests__/setupClaudeCodeSettings.test.js.map +1 -1
  135. package/codeyam-cli/src/utils/analyzer.js +7 -0
  136. package/codeyam-cli/src/utils/analyzer.js.map +1 -1
  137. package/codeyam-cli/src/utils/backgroundServer.js +90 -19
  138. package/codeyam-cli/src/utils/backgroundServer.js.map +1 -1
  139. package/codeyam-cli/src/utils/generateReport.js +2 -2
  140. package/codeyam-cli/src/utils/install-skills.js +57 -54
  141. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  142. package/codeyam-cli/src/utils/labsAutoCheck.js +19 -0
  143. package/codeyam-cli/src/utils/labsAutoCheck.js.map +1 -0
  144. package/codeyam-cli/src/utils/npmVersionCheck.js +76 -0
  145. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -0
  146. package/codeyam-cli/src/utils/progress.js +7 -0
  147. package/codeyam-cli/src/utils/progress.js.map +1 -1
  148. package/codeyam-cli/src/utils/queue/job.js +4 -0
  149. package/codeyam-cli/src/utils/queue/job.js.map +1 -1
  150. package/codeyam-cli/src/utils/requireSimulations.js +10 -0
  151. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -0
  152. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js +82 -0
  153. package/codeyam-cli/src/utils/ruleReflection/__tests__/confusionDetector.test.js.map +1 -0
  154. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +230 -0
  155. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -0
  156. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js +67 -0
  157. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/assertRules.js.map +1 -0
  158. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js +105 -0
  159. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/captureFixture.js.map +1 -0
  160. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js +34 -0
  161. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/loadCapturedFixture.js.map +1 -0
  162. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js +162 -0
  163. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/runClaude.js.map +1 -0
  164. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js +75 -0
  165. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/helpers/setupTempProject.js.map +1 -0
  166. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js +378 -0
  167. package/codeyam-cli/src/utils/ruleReflection/__tests__/integration/ruleReflectionE2E.test.js.map +1 -0
  168. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +115 -0
  169. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -0
  170. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js +127 -0
  171. package/codeyam-cli/src/utils/ruleReflection/__tests__/transcriptParser.test.js.map +1 -0
  172. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js +50 -0
  173. package/codeyam-cli/src/utils/ruleReflection/confusionDetector.js.map +1 -0
  174. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js +116 -0
  175. package/codeyam-cli/src/utils/ruleReflection/contextBuilder.js.map +1 -0
  176. package/codeyam-cli/src/utils/ruleReflection/index.js +5 -0
  177. package/codeyam-cli/src/utils/ruleReflection/index.js.map +1 -0
  178. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js +44 -0
  179. package/codeyam-cli/src/utils/ruleReflection/promptBuilder.js.map +1 -0
  180. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js +85 -0
  181. package/codeyam-cli/src/utils/ruleReflection/transcriptParser.js.map +1 -0
  182. package/codeyam-cli/src/utils/ruleReflection/types.js +5 -0
  183. package/codeyam-cli/src/utils/ruleReflection/types.js.map +1 -0
  184. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js +293 -0
  185. package/codeyam-cli/src/utils/rules/__tests__/ruleState.test.js.map +1 -0
  186. package/codeyam-cli/src/utils/rules/index.js +1 -0
  187. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  188. package/codeyam-cli/src/utils/rules/parser.js +2 -25
  189. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  190. package/codeyam-cli/src/utils/rules/ruleState.js +150 -0
  191. package/codeyam-cli/src/utils/rules/ruleState.js.map +1 -0
  192. package/codeyam-cli/src/utils/rules/staleness.js +16 -11
  193. package/codeyam-cli/src/utils/rules/staleness.js.map +1 -1
  194. package/codeyam-cli/src/utils/serverState.js +37 -10
  195. package/codeyam-cli/src/utils/serverState.js.map +1 -1
  196. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js +21 -44
  197. package/codeyam-cli/src/utils/setupClaudeCodeSettings.js.map +1 -1
  198. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js +66 -0
  199. package/codeyam-cli/src/webserver/__tests__/dependency-smoke.test.js.map +1 -0
  200. package/codeyam-cli/src/webserver/app/lib/database.js +15 -3
  201. package/codeyam-cli/src/webserver/app/lib/database.js.map +1 -1
  202. package/codeyam-cli/src/webserver/app/lib/dbNotifier.js.map +1 -1
  203. package/codeyam-cli/src/webserver/backgroundServer.js +50 -0
  204. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  205. package/codeyam-cli/src/webserver/bootstrap.js +11 -0
  206. package/codeyam-cli/src/webserver/bootstrap.js.map +1 -1
  207. package/codeyam-cli/src/webserver/build/client/assets/CopyButton-jNYXRRNI.js +1 -0
  208. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-DsN1wKrm.js → EntityItem-bwuHPyTa.js} +1 -1
  209. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-DLqD3qNt.js → EntityTypeBadge-CvzqMxcu.js} +1 -1
  210. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-Ba2JVPzP.js → EntityTypeIcon-BH0XDim7.js} +1 -1
  211. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-C8lyxW9k.js → InlineSpinner-EhOseatT.js} +1 -1
  212. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-aht4aafF.js → InteractivePreview-yjIHlOGa.js} +2 -2
  213. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-CVtiBnY5.js → LibraryFunctionPreview-Cq5o8jL4.js} +1 -1
  214. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-B0GLXMsr.js → LoadingDots-BvMu2i-g.js} +1 -1
  215. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-xgeCVgSM.js → LogViewer-kgBTLoJD.js} +1 -1
  216. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-OApQuNyq.js → ReportIssueModal-BzPgx-xO.js} +3 -8
  217. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-DuDvi0jm.js → SafeScreenshot-CwZrv-Ok.js} +1 -1
  218. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-DzccYyI8.js → ScenarioViewer-BX2Ny2Qj.js} +2 -2
  219. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-DyFZkK0l.js → TruncatedFilePath-CDpEprKa.js} +1 -1
  220. package/codeyam-cli/src/webserver/build/client/assets/{_index-BwqWJOgH.js → _index-BRx8ZGZo.js} +1 -1
  221. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-BwavGCpm.js → activity.(_tab)-4S4yPfFw.js} +6 -11
  222. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +17 -0
  223. package/codeyam-cli/src/webserver/build/client/assets/api.agent-transcripts-l0sNRNKZ.js +1 -0
  224. package/codeyam-cli/src/webserver/build/client/assets/api.labs-unlock-l0sNRNKZ.js +1 -0
  225. package/codeyam-cli/src/webserver/build/client/assets/api.save-fixture-l0sNRNKZ.js +1 -0
  226. package/codeyam-cli/src/webserver/build/client/assets/book-open-D4IPYH_y.js +6 -0
  227. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-Cx24_aWc.js → chevron-down-CG65viiV.js} +1 -1
  228. package/codeyam-cli/src/webserver/build/client/assets/{chunk-EPOLDU6W-CXRTFQ3F.js → chunk-JZWAC4HX-DB3aFuEO.js} +12 -12
  229. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-BOARzkeR.js → circle-check-igfMr5DY.js} +1 -1
  230. package/codeyam-cli/src/webserver/build/client/assets/copy-Coc4o_8c.js +11 -0
  231. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-BdhJEx6B.js → createLucideIcon-D1zB-pYc.js} +1 -1
  232. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-BBnGWYga.js → dev.empty-JTAjQ54M.js} +1 -1
  233. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-BJUiQqZF.js → entity._sha._-B0h9AqE6.js} +10 -10
  234. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-DavjRmOY.js → entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js} +1 -1
  235. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-D1T4TGjf.js → entity._sha_.create-scenario-CtYowLOt.js} +1 -1
  236. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-CTBG2mmz.js → entity._sha_.edit._scenarioId-PePWg17F.js} +1 -1
  237. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-CS2cb_eZ.js → entry.client-I-Wo99C_.js} +1 -1
  238. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-DMJ7zii9.js → fileTableUtils-9sMMAiWJ.js} +1 -1
  239. package/codeyam-cli/src/webserver/build/client/assets/{files-CJ6lTdTA.js → files-Co65J0s3.js} +1 -1
  240. package/codeyam-cli/src/webserver/build/client/assets/{git-CPTZZ-JZ.js → git-BdHOxVfg.js} +1 -1
  241. package/codeyam-cli/src/webserver/build/client/assets/globals-CCgBKWy4.css +1 -0
  242. package/codeyam-cli/src/webserver/build/client/assets/{index-B1h680n5.js → index-CUM5iXwc.js} +1 -1
  243. package/codeyam-cli/src/webserver/build/client/assets/{index-lzqtyFU8.js → index-_417gcQW.js} +1 -1
  244. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +1 -0
  245. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-B7B9V-bu.js → loader-circle-TzRHMVog.js} +1 -1
  246. package/codeyam-cli/src/webserver/build/client/assets/manifest-390cb8fa.js +1 -0
  247. package/codeyam-cli/src/webserver/build/client/assets/memory-CzZySbBE.js +78 -0
  248. package/codeyam-cli/src/webserver/build/client/assets/pause-hjzB7t2z.js +11 -0
  249. package/codeyam-cli/src/webserver/build/client/assets/root-DnbDhvTU.js +62 -0
  250. package/codeyam-cli/src/webserver/build/client/assets/{search-CxXUmBSd.js → search-DcAwD_Ln.js} +1 -1
  251. package/codeyam-cli/src/webserver/build/client/assets/settings-CclxrcPK.js +1 -0
  252. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DwFIBT09.js → simulations-DVNJVQgD.js} +1 -1
  253. package/codeyam-cli/src/webserver/build/client/assets/terminal-DbEAHMbA.js +11 -0
  254. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-B6LgvRJg.js → triangle-alert-CAD5b1o_.js} +1 -1
  255. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-C1v1PQzo.js → useCustomSizes-BqgrAzs3.js} +1 -1
  256. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-aSv48UbS.js → useLastLogLine-DAFqfEDH.js} +1 -1
  257. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DYxHZQuP.js → useReportContext-DZlYx2c4.js} +1 -1
  258. package/codeyam-cli/src/webserver/build/client/assets/{useToast-mBRpZPiu.js → useToast-ihdMtlf6.js} +1 -1
  259. package/codeyam-cli/src/webserver/build/server/assets/{index-TD1f-DHV.js → index-CxaRxKVt.js} +1 -1
  260. package/codeyam-cli/src/webserver/build/server/assets/server-build-D4DT0nM_.js +259 -0
  261. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  262. package/codeyam-cli/src/webserver/build-info.json +5 -5
  263. package/codeyam-cli/templates/{codeyam:debug.md → codeyam-debug.md} +1 -1
  264. package/codeyam-cli/templates/codeyam-diagnose.md +481 -0
  265. package/codeyam-cli/templates/codeyam-memory-hook.sh +19 -20
  266. package/codeyam-cli/templates/{codeyam:memory.md → codeyam-memory.md} +26 -33
  267. package/codeyam-cli/templates/codeyam-new-rule.md +13 -0
  268. package/codeyam-cli/templates/{codeyam:setup.md → codeyam-setup.md} +13 -1
  269. package/codeyam-cli/templates/{codeyam:sim.md → codeyam-sim.md} +1 -1
  270. package/codeyam-cli/templates/{codeyam:test.md → codeyam-test.md} +1 -1
  271. package/codeyam-cli/templates/{codeyam:verify.md → codeyam-verify.md} +1 -1
  272. package/codeyam-cli/templates/rule-notification-hook.py +56 -0
  273. package/codeyam-cli/templates/rule-reflection-hook.py +554 -88
  274. package/codeyam-cli/templates/rules-instructions.md +54 -48
  275. package/package.json +9 -9
  276. package/packages/ai/index.js +1 -1
  277. package/packages/ai/index.js.map +1 -1
  278. package/packages/ai/src/lib/analyzeScope.js +21 -1
  279. package/packages/ai/src/lib/analyzeScope.js.map +1 -1
  280. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js +10 -14
  281. package/packages/ai/src/lib/astScopes/patterns/forInStatementHandler.js.map +1 -1
  282. package/packages/ai/src/lib/astScopes/processExpression.js +78 -1
  283. package/packages/ai/src/lib/astScopes/processExpression.js.map +1 -1
  284. package/packages/ai/src/lib/astScopes/sharedPatterns.js +25 -0
  285. package/packages/ai/src/lib/astScopes/sharedPatterns.js.map +1 -1
  286. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +262 -8
  287. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  288. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js +5 -1
  289. package/packages/ai/src/lib/dataStructure/equivalencyManagers/frameworks/JavascriptFrameworkManager.js.map +1 -1
  290. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js +11 -2
  291. package/packages/ai/src/lib/dataStructure/helpers/cleanKnownObjectFunctions.js.map +1 -1
  292. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js +2 -2
  293. package/packages/ai/src/lib/dataStructure/helpers/cleanNonObjectFunctions.js.map +1 -1
  294. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js +63 -0
  295. package/packages/ai/src/lib/dataStructure/helpers/coerceObjectsToPrimitivesBySchema.js.map +1 -0
  296. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js +122 -12
  297. package/packages/ai/src/lib/dataStructure/helpers/convertDotNotation.js.map +1 -1
  298. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js +15 -1
  299. package/packages/ai/src/lib/dataStructure/helpers/convertTypeAnnotationsToValues.js.map +1 -1
  300. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js +78 -17
  301. package/packages/ai/src/lib/dataStructure/helpers/fillInSchemaGapsAndUnknowns.js.map +1 -1
  302. package/packages/ai/src/lib/dataStructureChunking.js +26 -11
  303. package/packages/ai/src/lib/dataStructureChunking.js.map +1 -1
  304. package/packages/ai/src/lib/generateEntityDataStructure.js +46 -2
  305. package/packages/ai/src/lib/generateEntityDataStructure.js.map +1 -1
  306. package/packages/ai/src/lib/generateEntityScenarioData.js +32 -3
  307. package/packages/ai/src/lib/generateEntityScenarioData.js.map +1 -1
  308. package/packages/ai/src/lib/generateExecutionFlows.js +16 -2
  309. package/packages/ai/src/lib/generateExecutionFlows.js.map +1 -1
  310. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js +242 -81
  311. package/packages/ai/src/lib/generateExecutionFlowsFromConditionals.js.map +1 -1
  312. package/packages/ai/src/lib/isolateScopes.js +39 -3
  313. package/packages/ai/src/lib/isolateScopes.js.map +1 -1
  314. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js +5 -0
  315. package/packages/ai/src/lib/mergeJsonTypeDefinitions.js.map +1 -1
  316. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js +97 -0
  317. package/packages/ai/src/lib/promptGenerators/collapseNullableObjects.js.map +1 -0
  318. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js +17 -2
  319. package/packages/ai/src/lib/promptGenerators/generateEntityScenarioDataGenerator.js.map +1 -1
  320. package/packages/analyze/index.js +1 -0
  321. package/packages/analyze/index.js.map +1 -1
  322. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js +52 -2
  323. package/packages/analyze/src/lib/files/analyze/analyzeEntities/prepareDataStructures.js.map +1 -1
  324. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js +3 -0
  325. package/packages/analyze/src/lib/files/analyze/analyzeEntities.js.map +1 -1
  326. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js +880 -0
  327. package/packages/analyze/src/lib/files/scenarios/TransformationTracer.js.map +1 -0
  328. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js +5 -1
  329. package/packages/analyze/src/lib/files/scenarios/enrichArrayTypesFromChildSignatures.js.map +1 -1
  330. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js +51 -14
  331. package/packages/analyze/src/lib/files/scenarios/gatherDataForMocks.js.map +1 -1
  332. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js +116 -13
  333. package/packages/analyze/src/lib/files/scenarios/generateDataStructure.js.map +1 -1
  334. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js +310 -45
  335. package/packages/analyze/src/lib/files/scenarios/mergeInDependentDataStructure.js.map +1 -1
  336. package/packages/analyze/src/lib/index.js +1 -0
  337. package/packages/analyze/src/lib/index.js.map +1 -1
  338. package/packages/database/src/lib/analysisBranchToDb.js +1 -1
  339. package/packages/database/src/lib/analysisBranchToDb.js.map +1 -1
  340. package/packages/database/src/lib/analysisToDb.js +1 -1
  341. package/packages/database/src/lib/analysisToDb.js.map +1 -1
  342. package/packages/database/src/lib/branchToDb.js +1 -1
  343. package/packages/database/src/lib/branchToDb.js.map +1 -1
  344. package/packages/database/src/lib/commitBranchToDb.js +1 -1
  345. package/packages/database/src/lib/commitBranchToDb.js.map +1 -1
  346. package/packages/database/src/lib/commitToDb.js +1 -1
  347. package/packages/database/src/lib/commitToDb.js.map +1 -1
  348. package/packages/database/src/lib/fileToDb.js +1 -1
  349. package/packages/database/src/lib/fileToDb.js.map +1 -1
  350. package/packages/database/src/lib/kysely/db.js +3 -0
  351. package/packages/database/src/lib/kysely/db.js.map +1 -1
  352. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js +35 -0
  353. package/packages/database/src/lib/kysely/tables/labsRequestsTable.js.map +1 -0
  354. package/packages/database/src/lib/projectToDb.js +1 -1
  355. package/packages/database/src/lib/projectToDb.js.map +1 -1
  356. package/packages/database/src/lib/saveFiles.js +1 -1
  357. package/packages/database/src/lib/saveFiles.js.map +1 -1
  358. package/packages/database/src/lib/scenarioToDb.js +1 -1
  359. package/packages/database/src/lib/scenarioToDb.js.map +1 -1
  360. package/packages/utils/src/lib/fs/rsyncCopy.js +93 -2
  361. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  362. package/scripts/finalize-analyzer.cjs +8 -76
  363. package/codeyam-cli/src/utils/reviewedRules.js +0 -92
  364. package/codeyam-cli/src/utils/reviewedRules.js.map +0 -1
  365. package/codeyam-cli/src/webserver/build/client/assets/copy-Bb-80kDT.js +0 -6
  366. package/codeyam-cli/src/webserver/build/client/assets/file-code-Dhef1kWN.js +0 -6
  367. package/codeyam-cli/src/webserver/build/client/assets/globals-CX9f-5xM.css +0 -1
  368. package/codeyam-cli/src/webserver/build/client/assets/manifest-bba56ec1.js +0 -1
  369. package/codeyam-cli/src/webserver/build/client/assets/memory-DuTFSyJ2.js +0 -92
  370. package/codeyam-cli/src/webserver/build/client/assets/root-DTfSQARG.js +0 -62
  371. package/codeyam-cli/src/webserver/build/client/assets/settings-CS5f3WzT.js +0 -1
  372. package/codeyam-cli/src/webserver/build/server/assets/server-build-BQ-1XyEa.js +0 -258
  373. package/codeyam-cli/templates/codeyam:diagnose.md +0 -803
  374. package/codeyam-cli/templates/codeyam:new-rule.md +0 -52
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: codeyam:memory
2
+ name: codeyam-memory
3
3
  autoApprove: true
4
4
  description: |
5
5
  Generate and maintain Claude Rules for your codebase based on thorough analysis.
@@ -13,19 +13,14 @@ This skill helps you generate and maintain Claude Rules (`.claude/rules/`) that
13
13
 
14
14
  ## Core Principle: Document Confusion, Not Information
15
15
 
16
- **Good rules** explain things that are NOT obvious from reading the code:
16
+ **Valuable rules** capture knowledge that reading the code alone wouldn't reveal:
17
17
 
18
18
  - Historical context (why code evolved this way)
19
19
  - Hidden relationships (files that must change together)
20
20
  - Gotchas that caused bugs
21
21
  - Non-obvious conventions
22
22
 
23
- **Bad rules** document things Claude can easily ascertain:
24
-
25
- - What functions do (Claude can read the code)
26
- - Type definitions (Claude can see them)
27
- - Directory structure (Claude can explore it)
28
- - Basic patterns (Claude knows common patterns)
23
+ Skip documenting things Claude can determine by reading code: function signatures, type definitions, directory structure, and common patterns.
29
24
 
30
25
  ## When to Use This Skill
31
26
 
@@ -41,24 +36,30 @@ Check if this is the first time running memory.
41
36
 
42
37
  ### 1A. Add Documentation Section to CLAUDE.md
43
38
 
44
- If CLAUDE.md doesn't contain a "When Confused / With Mistakes" section, add close to the top:
39
+ If CLAUDE.md already contains a "Documenting Confusion / Mistakes" section, skip this step entirely.
40
+
41
+ Otherwise, add **only** the section below — do not modify or add any other content to CLAUDE.md. If CLAUDE.md doesn't exist, create it with just a `# Project` heading followed by this section:
45
42
 
46
43
  ```markdown
47
- ## When Confused / With Mistakes: Stop. Ask. Document.
44
+ ## Continuous Documentation
45
+
46
+ As you work, think about any information that might be helpful to know in future work sessions without the user re-providing the information.
48
47
 
49
- - If you are not sure about something stop and ask about it.
50
- - If you attempt something and it goes wrong then you are confused. Stop and ask about it.
51
- - If the user is unable to help. Do your best to research.
52
- - Then document the findings!
48
+ This might include
49
+
50
+ - High-level architecture for complex areas of the codebase (if not obvious)
51
+ - Specific commands that are recommended
52
+ - Debugging strategies for complex areas of the codebase (if not obvious)
53
+ - Anything confusing that is encountered in the work session
53
54
 
54
55
  ### Documenting Confusion / Mistakes
55
56
 
56
- It is very important to document any confusion or mistakes you encounter in Claude Rules (`.claude/rules`).
57
+ It is very important to document any tribal knowledge, complex architectural decisions, and any confusion or mistakes you encounter in Claude Rules (`.claude/rules`).
57
58
  Please see `.codeyam/rules/instructions.md` for guidance.
58
-
59
- After making any code changes please run `codeyam memory status` and follow the instructions.
60
59
  ```
61
60
 
61
+ **Important:** Do not add project descriptions, architecture summaries, or any other content to CLAUDE.md. Only add the exact section above.
62
+
62
63
  ### 1B. Verify Instructions File
63
64
 
64
65
  Check that `.codeyam/rules/instructions.md` exists (it should be created during `codeyam init`). If missing, copy it from `codeyam-cli/templates/rules-instructions.md`.
@@ -273,7 +274,7 @@ Before generating each rule, verify it passes these tests:
273
274
 
274
275
  **2. Code-derivable check**: Read the files the rule will cover. Could the rule's content be determined by reading those files alone?
275
276
 
276
- - If YES → rule probably not needed (Claude can read the code)
277
+ - If YES → the code is its own documentation prefer keeping rules for non-derivable insights
277
278
  - If NO (historical context, edge cases, non-obvious behavior) → rule is valuable
278
279
 
279
280
  **3. Prevention check**: Would this rule have prevented one of the confusion commits you found?
@@ -299,7 +300,7 @@ This caused a bug where `entity` matched `entityCode` (siblings, not parent-chil
299
300
  - Not code-derivable: Code doesn't explain why boundary checking matters
300
301
  - Prevention: Would prevent future prefix-matching bugs
301
302
 
302
- **❌ Bad rule** (fails tests):
303
+ **Compare with a weaker alternative** (fails the checks):
303
304
 
304
305
  ```markdown
305
306
  ## Running Tests
@@ -307,9 +308,7 @@ This caused a bug where `entity` matched `entityCode` (siblings, not parent-chil
307
308
  Use `pnpm jest` to run tests. Configuration is in `jest.config.ts`.
308
309
  ```
309
310
 
310
- - No confusion evidence (no commits showing people struggled with this)
311
- - Code-derivable: Anyone can see `jest.config.ts` exists
312
- - Doesn't prevent any confusion
311
+ - No confusion evidence, code-derivable, and wouldn't prevent future mistakes
313
312
 
314
313
  ### 5B. Rule File Guidelines
315
314
 
@@ -317,17 +316,13 @@ Use `pnpm jest` to run tests. Configuration is in `jest.config.ts`.
317
316
  - Rule for `src/api/` → `.claude/rules/src/api/architecture.md`
318
317
  - Rule for testing patterns → `.claude/rules/testing-patterns.md`
319
318
 
320
- 2. **Paths must be specific**
321
- - Good: `paths: ['src/api/**/*.ts']`
322
- - Bad: `paths: ['**/*.ts']` (too broad, wastes context)
319
+ 2. **Paths must be specific** — use `paths: ['src/api/**/*.ts']` rather than `'**/*.ts'` (too broad wastes context)
323
320
 
324
321
  3. **Content should explain "why" not just "what"**
325
322
  - Focus on the reasoning, history, or gotcha
326
323
  - Be concise - every word costs context
327
324
 
328
- 4. **Timestamp must be current**
329
- - Use ISO 8601 format: `2026-01-27T15:30:00Z`
330
- - This enables the pre-commit hook enforcement
325
+ 4. **Audit dates live in `.claude/codeyam-rule-state.json`** (managed by `codeyam memory touch`). Keep rule frontmatter limited to `paths`.
331
326
 
332
327
  ### Rule Template
333
328
 
@@ -335,8 +330,6 @@ Use `pnpm jest` to run tests. Configuration is in `jest.config.ts`.
335
330
  ---
336
331
  paths:
337
332
  - 'specific/path/**/*.ts'
338
- category: architecture | testing | faq
339
- timestamp: [CURRENT_ISO_TIMESTAMP]
340
333
  ---
341
334
 
342
335
  ## [Clear, Descriptive Title]
@@ -373,7 +366,7 @@ After generating rules based on your analysis and user answers:
373
366
  5. **Remind the user** to commit the new rules:
374
367
  ```
375
368
  git add .claude/rules/ .codeyam/rules/
376
- git commit -m "Add rules for Claude Code (generated via /codeyam:memory)"
369
+ git commit -m "Add rules for Claude Code (generated via /codeyam-memory)"
377
370
  ```
378
371
 
379
372
  ---
@@ -393,11 +386,11 @@ After generating rules based on your analysis and user answers:
393
386
  The pre-commit hook **blocks commits** when:
394
387
 
395
388
  - Code files matching a rule's `paths` are modified
396
- - The rule's `timestamp` is older than the code changes
389
+ - The rule's `lastAuditedAt` in `.claude/codeyam-rule-state.json` is older than the code changes
397
390
 
398
391
  To proceed:
399
392
 
400
393
  1. Review the flagged rule(s)
401
394
  2. Update content if needed
402
- 3. Update the `timestamp` to current time
395
+ 3. Run `codeyam memory touch` to mark rules as audited in `.claude/codeyam-rule-state.json`
403
396
  4. Stage and commit
@@ -0,0 +1,13 @@
1
+ ---
2
+ name: codeyam-new-rule
3
+ autoApprove: true
4
+ description: |
5
+ Create a new Claude Rule for documenting codebase patterns.
6
+ Use when: User wants to add documentation for a specific area of the codebase.
7
+ ---
8
+
9
+ # Create New Claude Rule
10
+
11
+ Read `.codeyam/rules/instructions.md` for detailed guidance on structure and formatting.
12
+
13
+ If the instructions file doesn't exist, copy it from `codeyam-cli/templates/rules-instructions.md`.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: codeyam:setup
2
+ name: codeyam-setup
3
3
  autoApprove: true
4
4
  description: |
5
5
  Use this skill when the user asks to "setup CodeYam" or needs to configure CodeYam for their project.
@@ -52,6 +52,18 @@ codeyam validate-mock .codeyam/universal-mocks/{path-to-your-mock}
52
52
 
53
53
  ## Setup Workflow
54
54
 
55
+ ### Step 0: Ensure Simulation Infrastructure
56
+
57
+ Before configuring the dev server or mocks, ensure the simulation infrastructure is installed.
58
+
59
+ ```bash
60
+ codeyam setup-simulations
61
+ ```
62
+
63
+ This is **idempotent** — if already set up, each step is detected and skipped. On first run it installs analyzer dependencies, Playwright chromium, and creates baseline entities (several minutes). Subsequent runs complete in seconds.
64
+
65
+ If it fails with "No web applications found", the project doesn't support simulations — inform the user and stop.
66
+
55
67
  ### Step 1: Configure Webapp Start Command
56
68
 
57
69
  **ACTION 1:** Read configuration files:
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: codeyam:sim
2
+ name: codeyam-sim
3
3
  autoApprove: true
4
4
  description: |
5
5
  Use this skill to create interactive simulations of components and functions using CodeYam's analysis.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: codeyam:test
2
+ name: codeyam-test
3
3
  autoApprove: true
4
4
  description: |
5
5
  Use this skill to write comprehensive unit and integration tests using CodeYam's mock generation.
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: codeyam:verify
2
+ name: codeyam-verify
3
3
  autoApprove: true
4
4
  description: |
5
5
  Use this skill after making code changes that impact application functionality.
@@ -0,0 +1,56 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ UserPromptSubmit hook: surfaces rule-reflection notifications to the main session.
4
+
5
+ The background rule-reflection agents write summaries to notification files
6
+ in /tmp/claude-rule-markers/ when they create or update rules.
7
+ This hook checks for those files on each user message, prints them to stdout
8
+ (which Claude sees as injected context), and deletes them.
9
+
10
+ Supports four notification files (legacy combined + split agents):
11
+ - rule-notification.md (legacy/backward-compat)
12
+ - rule-notification-stale.md (stale rules agent)
13
+ - rule-notification-conversation.md (conversation review agent)
14
+ - rule-notification-interruption.md (interruption review agent)
15
+ """
16
+
17
+ import os
18
+ import sys
19
+
20
+ MARKER_DIR = '/tmp/claude-rule-markers'
21
+ NOTIFICATION_FILES = [
22
+ 'rule-notification.md',
23
+ 'rule-notification-stale.md',
24
+ 'rule-notification-conversation.md',
25
+ 'rule-notification-interruption.md',
26
+ ]
27
+
28
+
29
+ def main():
30
+ collected = []
31
+
32
+ for filename in NOTIFICATION_FILES:
33
+ filepath = os.path.join(MARKER_DIR, filename)
34
+ if not os.path.exists(filepath):
35
+ continue
36
+
37
+ try:
38
+ with open(filepath, 'r') as f:
39
+ content = f.read().strip()
40
+ except IOError:
41
+ continue
42
+
43
+ if content:
44
+ collected.append(content)
45
+
46
+ try:
47
+ os.remove(filepath)
48
+ except OSError:
49
+ pass
50
+
51
+ if collected:
52
+ print('\n\n'.join(collected))
53
+
54
+
55
+ if __name__ == '__main__':
56
+ main()