@codeyam/codeyam-cli 0.1.4 → 0.1.6

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 (151) 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/package.json +1 -1
  5. package/analyzer-template/packages/ai/src/lib/completionCall.ts +102 -113
  6. package/analyzer-template/packages/ai/src/lib/dataStructure/ScopeDataStructure.ts +232 -5
  7. package/analyzer-template/packages/ai/src/lib/dataStructure/helpers/stripNullableMarkers.ts +35 -0
  8. package/analyzer-template/packages/analyze/src/lib/asts/nodes/getNodeType.ts +1 -0
  9. package/analyzer-template/packages/aws/package.json +10 -10
  10. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.d.ts.map +1 -1
  11. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js +6 -2
  12. package/analyzer-template/packages/utils/dist/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  13. package/analyzer-template/packages/utils/src/lib/fs/rsyncCopy.ts +14 -2
  14. package/analyzer-template/project/constructMockCode.ts +32 -5
  15. package/analyzer-template/project/orchestrateCapture.ts +4 -1
  16. package/analyzer-template/project/writeScenarioComponents.ts +62 -12
  17. package/background/src/lib/virtualized/project/constructMockCode.js +28 -5
  18. package/background/src/lib/virtualized/project/constructMockCode.js.map +1 -1
  19. package/background/src/lib/virtualized/project/orchestrateCapture.js +4 -1
  20. package/background/src/lib/virtualized/project/orchestrateCapture.js.map +1 -1
  21. package/background/src/lib/virtualized/project/writeScenarioComponents.js +46 -7
  22. package/background/src/lib/virtualized/project/writeScenarioComponents.js.map +1 -1
  23. package/codeyam-cli/src/cli.js +30 -25
  24. package/codeyam-cli/src/cli.js.map +1 -1
  25. package/codeyam-cli/src/commands/memory.js +3 -56
  26. package/codeyam-cli/src/commands/memory.js.map +1 -1
  27. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js +6 -0
  28. package/codeyam-cli/src/utils/__tests__/npmVersionCheck.test.js.map +1 -1
  29. package/codeyam-cli/src/utils/install-skills.js +4 -4
  30. package/codeyam-cli/src/utils/install-skills.js.map +1 -1
  31. package/codeyam-cli/src/utils/npmVersionCheck.js +2 -2
  32. package/codeyam-cli/src/utils/npmVersionCheck.js.map +1 -1
  33. package/codeyam-cli/src/utils/requireSimulations.js +1 -1
  34. package/codeyam-cli/src/utils/requireSimulations.js.map +1 -1
  35. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js +5 -6
  36. package/codeyam-cli/src/utils/ruleReflection/__tests__/contextBuilder.test.js.map +1 -1
  37. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js +2 -5
  38. package/codeyam-cli/src/utils/ruleReflection/__tests__/promptBuilder.test.js.map +1 -1
  39. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js +83 -0
  40. package/codeyam-cli/src/utils/rules/__tests__/parser.test.js.map +1 -0
  41. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js +118 -0
  42. package/codeyam-cli/src/utils/rules/__tests__/pathMatcher.test.js.map +1 -0
  43. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js +72 -0
  44. package/codeyam-cli/src/utils/rules/__tests__/rulePlacement.test.js.map +1 -0
  45. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js +76 -0
  46. package/codeyam-cli/src/utils/rules/__tests__/sourceFiles.test.js.map +1 -0
  47. package/codeyam-cli/src/utils/rules/index.js +1 -0
  48. package/codeyam-cli/src/utils/rules/index.js.map +1 -1
  49. package/codeyam-cli/src/utils/rules/parser.js +14 -4
  50. package/codeyam-cli/src/utils/rules/parser.js.map +1 -1
  51. package/codeyam-cli/src/utils/rules/pathMatcher.js +34 -3
  52. package/codeyam-cli/src/utils/rules/pathMatcher.js.map +1 -1
  53. package/codeyam-cli/src/utils/rules/rulePlacement.js +65 -0
  54. package/codeyam-cli/src/utils/rules/rulePlacement.js.map +1 -0
  55. package/codeyam-cli/src/utils/rules/sourceFiles.js +43 -0
  56. package/codeyam-cli/src/utils/rules/sourceFiles.js.map +1 -0
  57. package/codeyam-cli/src/utils/simulationGateMiddleware.js +159 -0
  58. package/codeyam-cli/src/utils/simulationGateMiddleware.js.map +1 -0
  59. package/codeyam-cli/src/utils/syncMocksMiddleware.js +5 -24
  60. package/codeyam-cli/src/utils/syncMocksMiddleware.js.map +1 -1
  61. package/codeyam-cli/src/utils/versionInfo.js +21 -0
  62. package/codeyam-cli/src/utils/versionInfo.js.map +1 -1
  63. package/codeyam-cli/src/webserver/app/routes/api.agent-transcripts.js +486 -0
  64. package/codeyam-cli/src/webserver/app/routes/api.agent-transcripts.js.map +1 -0
  65. package/codeyam-cli/src/webserver/backgroundServer.js +10 -0
  66. package/codeyam-cli/src/webserver/backgroundServer.js.map +1 -1
  67. package/codeyam-cli/src/webserver/build/client/assets/{CopyButton-jNYXRRNI.js → CopyButton-CtmbP4Gl.js} +1 -1
  68. package/codeyam-cli/src/webserver/build/client/assets/{EntityItem-bwuHPyTa.js → EntityItem-DlMph_Hm.js} +1 -1
  69. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeBadge-CvzqMxcu.js → EntityTypeBadge-B-0PjGOU.js} +1 -1
  70. package/codeyam-cli/src/webserver/build/client/assets/{EntityTypeIcon-BH0XDim7.js → EntityTypeIcon-DN9eiJAO.js} +1 -1
  71. package/codeyam-cli/src/webserver/build/client/assets/{InlineSpinner-EhOseatT.js → InlineSpinner-C1rIyZdV.js} +1 -1
  72. package/codeyam-cli/src/webserver/build/client/assets/{InteractivePreview-yjIHlOGa.js → InteractivePreview-rE_fI2h2.js} +2 -2
  73. package/codeyam-cli/src/webserver/build/client/assets/{LibraryFunctionPreview-Cq5o8jL4.js → LibraryFunctionPreview-CnatsCw2.js} +1 -1
  74. package/codeyam-cli/src/webserver/build/client/assets/{LoadingDots-BvMu2i-g.js → LoadingDots-CSP6DZrh.js} +1 -1
  75. package/codeyam-cli/src/webserver/build/client/assets/{LogViewer-kgBTLoJD.js → LogViewer-CMK8Q7yk.js} +1 -1
  76. package/codeyam-cli/src/webserver/build/client/assets/{ReportIssueModal-BzPgx-xO.js → ReportIssueModal-TCV_HBjy.js} +1 -1
  77. package/codeyam-cli/src/webserver/build/client/assets/{SafeScreenshot-CwZrv-Ok.js → SafeScreenshot-CG2uh31y.js} +1 -1
  78. package/codeyam-cli/src/webserver/build/client/assets/{ScenarioViewer-BX2Ny2Qj.js → ScenarioViewer-CU_TDYd8.js} +1 -1
  79. package/codeyam-cli/src/webserver/build/client/assets/{TruncatedFilePath-CDpEprKa.js → TruncatedFilePath-D7IoaWUW.js} +1 -1
  80. package/codeyam-cli/src/webserver/build/client/assets/{_index-BRx8ZGZo.js → _index-B8z7mjR-.js} +1 -1
  81. package/codeyam-cli/src/webserver/build/client/assets/{activity.(_tab)-4S4yPfFw.js → activity.(_tab)-DZu78RI1.js} +1 -1
  82. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DxCa1oBt.js +23 -0
  83. package/codeyam-cli/src/webserver/build/client/assets/api.rule-path-l0sNRNKZ.js +1 -0
  84. package/codeyam-cli/src/webserver/build/client/assets/{book-open-D4IPYH_y.js → book-open-Bp5FLkd4.js} +1 -1
  85. package/codeyam-cli/src/webserver/build/client/assets/{chevron-down-CG65viiV.js → chevron-down-DQJA9f4o.js} +1 -1
  86. package/codeyam-cli/src/webserver/build/client/assets/{chunk-JZWAC4HX-DB3aFuEO.js → chunk-JZWAC4HX-7VptmeIr.js} +1 -1
  87. package/codeyam-cli/src/webserver/build/client/assets/{circle-check-igfMr5DY.js → circle-check-B6C4LY9o.js} +1 -1
  88. package/codeyam-cli/src/webserver/build/client/assets/{copy-Coc4o_8c.js → copy-6nzYCu0G.js} +1 -1
  89. package/codeyam-cli/src/webserver/build/client/assets/{createLucideIcon-D1zB-pYc.js → createLucideIcon-D-QUFOwe.js} +1 -1
  90. package/codeyam-cli/src/webserver/build/client/assets/{dev.empty-JTAjQ54M.js → dev.empty-DmzSmblj.js} +1 -1
  91. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha._-B0h9AqE6.js → entity._sha._--zvFJ4OH.js} +1 -1
  92. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha.scenarios._scenarioId.fullscreen-DjLxr2JB.js → entity._sha.scenarios._scenarioId.fullscreen-DVTcUnur.js} +1 -1
  93. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.create-scenario-CtYowLOt.js → entity._sha_.create-scenario-BVgNO76F.js} +1 -1
  94. package/codeyam-cli/src/webserver/build/client/assets/{entity._sha_.edit._scenarioId-PePWg17F.js → entity._sha_.edit._scenarioId-C7ysA4Jq.js} +1 -1
  95. package/codeyam-cli/src/webserver/build/client/assets/{entry.client-I-Wo99C_.js → entry.client-CU6EUArK.js} +1 -1
  96. package/codeyam-cli/src/webserver/build/client/assets/{fileTableUtils-9sMMAiWJ.js → fileTableUtils-EWpfFU4X.js} +1 -1
  97. package/codeyam-cli/src/webserver/build/client/assets/{files-Co65J0s3.js → files-CrxAoWIL.js} +1 -1
  98. package/codeyam-cli/src/webserver/build/client/assets/{git-BdHOxVfg.js → git-BldHtKeW.js} +1 -1
  99. package/codeyam-cli/src/webserver/build/client/assets/globals-B4MPiL7S.css +1 -0
  100. package/codeyam-cli/src/webserver/build/client/assets/{index-CUM5iXwc.js → index-7-1FmlHo.js} +1 -1
  101. package/codeyam-cli/src/webserver/build/client/assets/{index-_417gcQW.js → index-DuYcwYp_.js} +1 -1
  102. package/codeyam-cli/src/webserver/build/client/assets/labs-CPPVOSWB.js +1 -0
  103. package/codeyam-cli/src/webserver/build/client/assets/{loader-circle-TzRHMVog.js → loader-circle-BnDcD54R.js} +1 -1
  104. package/codeyam-cli/src/webserver/build/client/assets/manifest-c1fc3656.js +1 -0
  105. package/codeyam-cli/src/webserver/build/client/assets/{memory-UIDVz141.js → memory-CfpYxpNu.js} +23 -22
  106. package/codeyam-cli/src/webserver/build/client/assets/{pause-hjzB7t2z.js → pause-DhQX2g22.js} +1 -1
  107. package/codeyam-cli/src/webserver/build/client/assets/root-CAAbm4U5.js +62 -0
  108. package/codeyam-cli/src/webserver/build/client/assets/{search-DcAwD_Ln.js → search-DborVoKD.js} +1 -1
  109. package/codeyam-cli/src/webserver/build/client/assets/{settings-CclxrcPK.js → settings-BpLDWmGh.js} +1 -1
  110. package/codeyam-cli/src/webserver/build/client/assets/{simulations-DVNJVQgD.js → simulations-BtrtCYJg.js} +1 -1
  111. package/codeyam-cli/src/webserver/build/client/assets/{terminal-DbEAHMbA.js → terminal-Bs4NC-VZ.js} +1 -1
  112. package/codeyam-cli/src/webserver/build/client/assets/{triangle-alert-CAD5b1o_.js → triangle-alert-DTf3Jojp.js} +1 -1
  113. package/codeyam-cli/src/webserver/build/client/assets/{useCustomSizes-BqgrAzs3.js → useCustomSizes-D_bDZyDU.js} +1 -1
  114. package/codeyam-cli/src/webserver/build/client/assets/{useLastLogLine-DAFqfEDH.js → useLastLogLine-DZp6rrQD.js} +1 -1
  115. package/codeyam-cli/src/webserver/build/client/assets/{useReportContext-DZlYx2c4.js → useReportContext-BsQb6rFd.js} +1 -1
  116. package/codeyam-cli/src/webserver/build/client/assets/{useToast-ihdMtlf6.js → useToast-BOur3mUv.js} +1 -1
  117. package/codeyam-cli/src/webserver/build/server/assets/{index-B3dE0r28.js → index-B8A_aaGG.js} +1 -1
  118. package/codeyam-cli/src/webserver/build/server/assets/server-build-69rRZnZo.js +286 -0
  119. package/codeyam-cli/src/webserver/build/server/index.js +1 -1
  120. package/codeyam-cli/src/webserver/build-info.json +5 -5
  121. package/codeyam-cli/templates/codeyam-new-rule.md +0 -2
  122. package/codeyam-cli/templates/hooks/staleness-check.sh +43 -0
  123. package/codeyam-cli/templates/prompts/conversation-guidance.txt +32 -0
  124. package/codeyam-cli/templates/prompts/conversation-prompt.txt +28 -0
  125. package/codeyam-cli/templates/prompts/interruption-prompt.txt +31 -0
  126. package/codeyam-cli/templates/prompts/stale-rules-prompt.txt +24 -0
  127. package/codeyam-cli/templates/rules-instructions.md +33 -88
  128. package/package.json +5 -5
  129. package/packages/ai/src/lib/completionCall.js +0 -5
  130. package/packages/ai/src/lib/completionCall.js.map +1 -1
  131. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js +213 -3
  132. package/packages/ai/src/lib/dataStructure/ScopeDataStructure.js.map +1 -1
  133. package/packages/analyze/src/lib/asts/nodes/getNodeType.js +1 -0
  134. package/packages/analyze/src/lib/asts/nodes/getNodeType.js.map +1 -1
  135. package/packages/utils/src/lib/fs/rsyncCopy.js +6 -2
  136. package/packages/utils/src/lib/fs/rsyncCopy.js.map +1 -1
  137. package/codeyam-cli/src/commands/detect-universal-mocks.js +0 -120
  138. package/codeyam-cli/src/commands/detect-universal-mocks.js.map +0 -1
  139. package/codeyam-cli/src/commands/list.js +0 -31
  140. package/codeyam-cli/src/commands/list.js.map +0 -1
  141. package/codeyam-cli/src/commands/webapp-info.js +0 -146
  142. package/codeyam-cli/src/commands/webapp-info.js.map +0 -1
  143. package/codeyam-cli/src/utils/universal-mocks.js +0 -152
  144. package/codeyam-cli/src/utils/universal-mocks.js.map +0 -1
  145. package/codeyam-cli/src/webserver/build/client/assets/agent-transcripts-DHKuQSmR.js +0 -17
  146. package/codeyam-cli/src/webserver/build/client/assets/globals-BSZfYCkU.css +0 -1
  147. package/codeyam-cli/src/webserver/build/client/assets/labs-BK0C1H1T.js +0 -1
  148. package/codeyam-cli/src/webserver/build/client/assets/manifest-040dab1c.js +0 -1
  149. package/codeyam-cli/src/webserver/build/client/assets/root-D1WadSdf.js +0 -62
  150. package/codeyam-cli/src/webserver/build/server/assets/server-build-DYbfdxa3.js +0 -273
  151. package/codeyam-cli/templates/codeyam-stop-hook.sh +0 -284
@@ -8,24 +8,24 @@ export async function installClaudeCodeSkills(projectRoot, options) {
8
8
  try {
9
9
  const skillsDir = path.join(projectRoot, '.claude', 'skills');
10
10
  const templatesDir = path.join(__dirname, '../../templates');
11
- // Memory + setup skills — always installed
11
+ // Memory skills — always installed
12
12
  const memorySkillDir = path.join(skillsDir, 'codeyam-memory');
13
13
  const newRuleSkillDir = path.join(skillsDir, 'codeyam-new-rule');
14
- const setupSkillDir = path.join(skillsDir, 'codeyam-setup');
15
14
  await fs.mkdir(memorySkillDir, { recursive: true });
16
15
  await fs.mkdir(newRuleSkillDir, { recursive: true });
17
- await fs.mkdir(setupSkillDir, { recursive: true });
18
16
  await fs.copyFile(path.join(templatesDir, 'codeyam-memory.md'), path.join(memorySkillDir, 'SKILL.md'));
19
17
  await fs.copyFile(path.join(templatesDir, 'codeyam-new-rule.md'), path.join(newRuleSkillDir, 'SKILL.md'));
20
- await fs.copyFile(path.join(templatesDir, 'codeyam-setup.md'), path.join(setupSkillDir, 'SKILL.md'));
21
18
  // Simulation skills — only in full mode
22
19
  if (mode === 'full') {
20
+ const setupSkillDir = path.join(skillsDir, 'codeyam-setup');
23
21
  const simSkillDir = path.join(skillsDir, 'codeyam-sim');
24
22
  const testSkillDir = path.join(skillsDir, 'codeyam-test');
25
23
  const verifySkillDir = path.join(skillsDir, 'codeyam-verify');
24
+ await fs.mkdir(setupSkillDir, { recursive: true });
26
25
  await fs.mkdir(simSkillDir, { recursive: true });
27
26
  await fs.mkdir(testSkillDir, { recursive: true });
28
27
  await fs.mkdir(verifySkillDir, { recursive: true });
28
+ await fs.copyFile(path.join(templatesDir, 'codeyam-setup.md'), path.join(setupSkillDir, 'SKILL.md'));
29
29
  await fs.copyFile(path.join(templatesDir, 'codeyam-sim.md'), path.join(simSkillDir, 'SKILL.md'));
30
30
  await fs.copyFile(path.join(templatesDir, 'codeyam-test.md'), path.join(testSkillDir, 'SKILL.md'));
31
31
  await fs.copyFile(path.join(templatesDir, 'codeyam-verify.md'), path.join(verifySkillDir, 'SKILL.md'));
@@ -1 +1 @@
1
- {"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../../../src/utils/install-skills.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install-skills.js","sourceRoot":"","sources":["../../../../src/utils/install-skills.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAC;AAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAClD,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AAM3C,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,WAAmB,EACnB,OAA8B;IAE9B,MAAM,IAAI,GAAG,OAAO,EAAE,IAAI,IAAI,QAAQ,CAAC;IAEvC,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAE7D,mCAAmC;QACnC,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QAC9D,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAC;QACjE,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,MAAM,EAAE,CAAC,KAAK,CAAC,eAAe,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAErD,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CACtC,CAAC;QACF,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EAC9C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,UAAU,CAAC,CACvC,CAAC;QAEF,wCAAwC;QACxC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;YACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;YACxD,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC;YAC1D,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACnD,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC,KAAK,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAClD,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAEpD,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,kBAAkB,CAAC,EAC3C,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,UAAU,CAAC,CACrC,CAAC;YACF,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EACzC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,CAAC,CACnC,CAAC;YACF,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,EAC1C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CACpC,CAAC;YACF,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,mBAAmB,CAAC,EAC5C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,CACtC,CAAC;YAEF,uCAAuC;YACvC,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;YAClE,MAAM,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,qBAAqB,CAAC,EAC9C,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,qBAAqB,CAAC,CAC9C,CAAC;QACJ,CAAC;QAED,8CAA8C;QAC9C,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACzD,MAAM,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;QAC7D,MAAM,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAE9C,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;YAC3D,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,wBAAwB,CAAC,EACjD,cAAc,CACf,CAAC;YACF,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,4DAA4D;QAC9D,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC;YACH,MAAM,sBAAsB,GAAG,IAAI,CAAC,IAAI,CACtC,MAAM,EACN,yBAAyB,CAC1B,CAAC;YACF,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,EAClD,sBAAsB,CACvB,CAAC;YACF,MAAM,EAAE,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAChD,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,wBAAwB,GAAG,IAAI,CAAC,IAAI,CACxC,MAAM,EACN,2BAA2B,CAC5B,CAAC;YACF,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,2BAA2B,CAAC,EACpD,wBAAwB,CACzB,CAAC;YACF,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,EAAE,KAAK,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,0BAA0B;QAC5B,CAAC;QAED,mBAAmB;QACnB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;YACpD,MAAM,EAAE,CAAC,KAAK,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YACpD,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;YACzE,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,EACxC,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,CAChC,CAAC;YACJ,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,QAAQ,CACf,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,uBAAuB,CAAC,EAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,iBAAiB,CAAC,CACvC,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,8DAA8D;QAChE,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,SAAS,CAAC;SAClD,CAAC;IACJ,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACtB,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;SACxD,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1,4 +1,4 @@
1
- import { npmPackageVersion } from "./versionInfo.js";
1
+ import { getDisplayVersion } from "./versionInfo.js";
2
2
  // In-memory cache with 1-hour TTL
3
3
  let cachedResult = null;
4
4
  let cacheTimestamp = 0;
@@ -28,7 +28,7 @@ export function isNewerVersion(latest, current) {
28
28
  * Any failure (network, timeout, parse) returns { updateAvailable: false }.
29
29
  */
30
30
  export async function checkForNpmUpdate() {
31
- const currentVersion = npmPackageVersion;
31
+ const currentVersion = getDisplayVersion();
32
32
  // Return cached result if still fresh
33
33
  if (cachedResult && Date.now() - cacheTimestamp < CACHE_TTL_MS) {
34
34
  return cachedResult;
@@ -1 +1 @@
1
- {"version":3,"file":"npmVersionCheck.js","sourceRoot":"","sources":["../../../../src/utils/npmVersionCheck.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"npmVersionCheck.js","sourceRoot":"","sources":["../../../../src/utils/npmVersionCheck.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { error, info } from "./progress.js";
3
3
  export function requireSimulations() {
4
4
  if (!isAnalyzerFinalized()) {
5
5
  error('Simulations are not set up yet.');
6
- info('Run "codeyam setup-simulations" to enable visual simulations.');
6
+ info('Enable simulations from the CodeYam dashboard.');
7
7
  process.exit(1);
8
8
  }
9
9
  }
@@ -1 +1 @@
1
- {"version":3,"file":"requireSimulations.js","sourceRoot":"","sources":["../../../../src/utils/requireSimulations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC3B,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACzC,IAAI,CAAC,+DAA+D,CAAC,CAAC;QACtE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"requireSimulations.js","sourceRoot":"","sources":["../../../../src/utils/requireSimulations.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AAEzC,MAAM,UAAU,kBAAkB;IAChC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC3B,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACzC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
@@ -47,7 +47,7 @@ describe('contextBuilder', () => {
47
47
  const staleRules = loadStaleRules();
48
48
  const result = buildStaleRulesContext(staleRules);
49
49
  expect(result).not.toContain('## Conversation Review');
50
- expect(result).not.toContain('### Your goal');
50
+ expect(result).not.toContain('### What to look for');
51
51
  expect(result).not.toContain('### Session transcript');
52
52
  expect(result).not.toContain('User corrections or redirections');
53
53
  });
@@ -64,7 +64,7 @@ describe('contextBuilder', () => {
64
64
  ];
65
65
  const result = buildConversationContext(snippets, new Set());
66
66
  expect(result).toContain('## Conversation Review');
67
- expect(result).toContain('### Your goal');
67
+ expect(result).toContain('### What to look for');
68
68
  expect(result).toContain('### Session transcript');
69
69
  expect(result).toContain('[user]: Please update the configuration file');
70
70
  expect(result).toContain('[assistant]: I will update the config now.');
@@ -119,9 +119,8 @@ describe('contextBuilder', () => {
119
119
  ];
120
120
  const result = buildConversationContext(snippets, new Set());
121
121
  expect(result).toContain('User corrections or redirections');
122
- expect(result).toContain('Investigation results and debugging knowledge');
123
- expect(result).toContain('What makes a rule valuable');
124
- expect(result).toContain('.codeyam/rules/instructions.md');
122
+ expect(result).toContain('Investigation and debugging');
123
+ expect(result).toContain('Before creating a rule');
125
124
  });
126
125
  });
127
126
  describe('buildInterruptionContext', () => {
@@ -200,7 +199,7 @@ describe('contextBuilder', () => {
200
199
  const result = buildInterruptionContext(snippets, 'Wait, wrong approach', new Set());
201
200
  // Should include the shared guidance from conversation-guidance.txt
202
201
  expect(result).toContain('User corrections or redirections');
203
- expect(result).toContain('What makes a rule valuable');
202
+ expect(result).toContain('Investigation and debugging');
204
203
  });
205
204
  it('does NOT contain stale rules or conversation review headers', () => {
206
205
  const snippets = [
@@ -1 +1 @@
1
- {"version":3,"file":"contextBuilder.test.js","sourceRoot":"","sources":["../../../../../../src/utils/ruleReflection/__tests__/contextBuilder.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contextBuilder.test.js","sourceRoot":"","sources":["../../../../../../src/utils/ruleReflection/__tests__/contextBuilder.test.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,GACzB,MAAM,mBAAmB,CAAC;AAG3B,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAErD,SAAS,cAAc;IACrB,OAAO,IAAI,CAAC,KAAK,CACf,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,EAAE,OAAO,CAAC,CACrE,CAAC;AACJ,CAAC;AAED,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;IAC9B,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;QACtC,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;YAClD,MAAM,MAAM,GAAG,sBAAsB,CAAC,EAAE,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAC9C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;YAChD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;YAC1C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;YAC/C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;YAC5C,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACrC,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wBAAwB,EAAE,GAAG,EAAE;YAChC,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;YAC1D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qCAAqC,CAAC,CAAC;YAChE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,oCAAoC,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,UAAU,GAAG,cAAc,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAElD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,wBAAwB,CAAC,EAAE,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YACvD,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,sCAAsC,EAAE;gBACjE,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,+BAA+B,EAAE;aAChE,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sBAAsB,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8CAA8C,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,+BAA+B,EAAE;aAC3D,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mCAAmC,EAAE;aAC/D,CAAC;YACF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAmB;gBAC9C,CAAC,iBAAiB,EAAE,MAAM,CAAC;gBAC3B,CAAC,oBAAoB,EAAE,OAAO,CAAC;aAChC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAEjE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACrD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,wCAAwC,EAAE;aACpE,CAAC;YACF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAmB;gBAC9C,CAAC,eAAe,EAAE,MAAM,CAAC;gBACzB,CAAC,eAAe,EAAE,OAAO,CAAC;gBAC1B,CAAC,eAAe,EAAE,MAAM,CAAC;aAC1B,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAEjE,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gCAAgC,EAAE;aAC5D,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,sCAAsC,CAAC,CAAC;QACnE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,4CAA4C,EAAE;aACxE,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAE7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;YACxD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,MAAM,GAAG,wBAAwB,CACrC,EAAE,EACF,2BAA2B,EAC3B,IAAI,GAAG,EAAE,CACV,CAAC;YACF,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;YAC3D,MAAM,QAAQ,GAA0B;gBACtC;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EACL,+DAA+D;iBAClE;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EACL,8DAA8D;iBACjE;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EACL,8GAA8G;iBACjH;aACF,CAAC;YACF,MAAM,cAAc,GAClB,qHAAqH,CAAC;YACxH,MAAM,MAAM,GAAG,wBAAwB,CACrC,QAAQ,EACR,cAAc,EACd,IAAI,GAAG,EAAE,CACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,iCAAiC,CAAC,CAAC;YAC5D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;YACnD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6CAA6C,CAAC,CAAC;YACxE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,QAAQ,GAA0B;gBACtC;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,+CAA+C;iBACzD;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,iDAAiD;iBAC3D;aACF,CAAC;YACF,MAAM,cAAc,GAAG,4CAA4C,CAAC;YACpE,MAAM,MAAM,GAAG,wBAAwB,CACrC,QAAQ,EACR,cAAc,EACd,IAAI,GAAG,EAAE,CACV,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,yCAAyC,CAAC,CAAC;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,4CAA4C,CAAC,CAAC;QACzE,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;YACjC,MAAM,QAAQ,GAA0B;gBACtC;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,gDAAgD;iBAC1D;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,0CAA0C;iBACpD;aACF,CAAC;YACF,MAAM,aAAa,GAAG,IAAI,GAAG,CAAmB;gBAC9C,CAAC,sBAAsB,EAAE,MAAM,CAAC;aACjC,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,wBAAwB,CACrC,QAAQ,EACR,sBAAsB,EACtB,aAAa,CACd,CAAC;YAEF,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,8BAA8B,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,+BAA+B,CAAC,CAAC;QAC5D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;YACzC,MAAM,QAAQ,GAA0B;gBACtC;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,8CAA8C;iBACxD;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,8CAA8C;iBACxD;aACF,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CACrC,QAAQ,EACR,sBAAsB,EACtB,IAAI,GAAG,EAAE,CACV,CAAC;YAEF,oEAAoE;YACpE,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,kCAAkC,CAAC,CAAC;YAC7D,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;YACrE,MAAM,QAAQ,GAA0B;gBACtC;oBACE,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,iDAAiD;iBAC3D;gBACD;oBACE,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,0CAA0C;iBACpD;aACF,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAExE,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;YAClD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,0BAA0B,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,SAAS,CAAC,wBAAwB,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,QAAQ,GAA0B;gBACtC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,gCAAgC,EAAE;aACjE,CAAC;YACF,MAAM,MAAM,GAAG,wBAAwB,CAAC,QAAQ,EAAE,WAAW,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;YAE1E,MAAM,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,2CAA2C,CAAC,CAAC;QACxE,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -37,11 +37,8 @@ describe('promptBuilder', () => {
37
37
  it('includes notification format example', () => {
38
38
  expect(prompt).toContain('The background rule-reflection agent updated the following rules:');
39
39
  });
40
- it('instructs to still notify for audit-only changes', () => {
41
- expect(prompt).toContain('still write the notification');
42
- });
43
- it('instructs to only write notification when rules changed', () => {
44
- expect(prompt).toContain('Only write the notification file when rules are changed.');
40
+ it('instructs to write notification even for audit-only changes', () => {
41
+ expect(prompt).toContain('even if you only ran `codeyam memory touch` without content changes');
45
42
  });
46
43
  it('does NOT mention conversation analysis', () => {
47
44
  expect(prompt).not.toContain('conversation review section');
@@ -1 +1 @@
1
- {"version":3,"file":"promptBuilder.test.js","sourceRoot":"","sources":["../../../../../../src/utils/ruleReflection/__tests__/promptBuilder.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"promptBuilder.test.js","sourceRoot":"","sources":["../../../../../../src/utils/ruleReflection/__tests__/promptBuilder.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,83 @@
1
+ import { parseFrontmatter } from "../parser.js";
2
+ describe('parseFrontmatter', () => {
3
+ it('parses multi-line paths array', () => {
4
+ const content = `---
5
+ paths:
6
+ - 'apps/web/modules/ee/license-check/**'
7
+ - 'apps/web/modules/ee/license-check/**/*.ts'
8
+ ---
9
+
10
+ ## License System
11
+ `;
12
+ const { frontmatter, body } = parseFrontmatter(content);
13
+ expect(frontmatter.paths).toEqual([
14
+ 'apps/web/modules/ee/license-check/**',
15
+ 'apps/web/modules/ee/license-check/**/*.ts',
16
+ ]);
17
+ expect(body.trim()).toBe('## License System');
18
+ });
19
+ it('parses inline YAML array with single-quoted strings', () => {
20
+ const content = `---
21
+ paths: ['apps/web/modules/ee/license-check/**']
22
+ ---
23
+
24
+ ## License System
25
+ `;
26
+ const { frontmatter } = parseFrontmatter(content);
27
+ expect(frontmatter.paths).toEqual(['apps/web/modules/ee/license-check/**']);
28
+ });
29
+ it('parses inline YAML array with double-quoted strings', () => {
30
+ const content = `---
31
+ paths: ["apps/web/modules/ee/license-check/**", "apps/web/lib/**"]
32
+ ---
33
+
34
+ ## Content
35
+ `;
36
+ const { frontmatter } = parseFrontmatter(content);
37
+ expect(frontmatter.paths).toEqual([
38
+ 'apps/web/modules/ee/license-check/**',
39
+ 'apps/web/lib/**',
40
+ ]);
41
+ });
42
+ it('parses inline YAML array without quotes', () => {
43
+ const content = `---
44
+ paths: [apps/web/modules/ee/license-check/**]
45
+ ---
46
+
47
+ ## Content
48
+ `;
49
+ const { frontmatter } = parseFrontmatter(content);
50
+ expect(frontmatter.paths).toEqual(['apps/web/modules/ee/license-check/**']);
51
+ });
52
+ it('parses paths without quotes in multi-line format', () => {
53
+ const content = `---
54
+ paths:
55
+ - apps/web/modules/ee/license-check/**
56
+ ---
57
+
58
+ ## Content
59
+ `;
60
+ const { frontmatter } = parseFrontmatter(content);
61
+ expect(frontmatter.paths).toEqual(['apps/web/modules/ee/license-check/**']);
62
+ });
63
+ it('returns empty frontmatter when no frontmatter present', () => {
64
+ const content = '## Just Content\n\nNo frontmatter here.';
65
+ const { frontmatter, body } = parseFrontmatter(content);
66
+ expect(frontmatter).toEqual({});
67
+ expect(body).toBe(content);
68
+ });
69
+ it('parses category field', () => {
70
+ const content = `---
71
+ paths:
72
+ - 'src/**'
73
+ category: architecture
74
+ ---
75
+
76
+ ## Architecture
77
+ `;
78
+ const { frontmatter } = parseFrontmatter(content);
79
+ expect(frontmatter.paths).toEqual(['src/**']);
80
+ expect(frontmatter.category).toBe('architecture');
81
+ });
82
+ });
83
+ //# sourceMappingURL=parser.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.test.js","sourceRoot":"","sources":["../../../../../../src/utils/rules/__tests__/parser.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC;AAE7C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,OAAO,GAAG;;;;;;;CAOnB,CAAC;QACE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAChC,sCAAsC;YACtC,2CAA2C;SAC5C,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IAChD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG;;;;;CAKnB,CAAC;QACE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,OAAO,GAAG;;;;;CAKnB,CAAC;QACE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YAChC,sCAAsC;YACtC,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;QACjD,MAAM,OAAO,GAAG;;;;;CAKnB,CAAC;QACE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,OAAO,GAAG;;;;;;CAMnB,CAAC;QACE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,sCAAsC,CAAC,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;QAC/D,MAAM,OAAO,GAAG,yCAAyC,CAAC;QAC1D,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QACxD,MAAM,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,OAAO,GAAG;;;;;;;CAOnB,CAAC;QACE,MAAM,EAAE,WAAW,EAAE,GAAG,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAClD,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC9C,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,118 @@
1
+ import { doesPathMatchRule, getRulesForPath, getSourceFilesForRule, } from "../pathMatcher.js";
2
+ function makeRule(filePath, paths) {
3
+ return {
4
+ filePath,
5
+ absolutePath: `/project/.claude/rules/${filePath}`,
6
+ frontmatter: { paths },
7
+ body: 'rule content',
8
+ };
9
+ }
10
+ describe('doesPathMatchRule', () => {
11
+ it('returns false when rule has no paths', () => {
12
+ const rule = makeRule('general.md');
13
+ expect(doesPathMatchRule('src/index.ts', rule)).toBe(false);
14
+ });
15
+ it('returns false when rule has empty paths array', () => {
16
+ const rule = makeRule('general.md', []);
17
+ expect(doesPathMatchRule('src/index.ts', rule)).toBe(false);
18
+ });
19
+ it('matches glob patterns', () => {
20
+ const rule = makeRule('ts-rules.md', ['**/*.ts']);
21
+ expect(doesPathMatchRule('src/index.ts', rule)).toBe(true);
22
+ expect(doesPathMatchRule('src/App.tsx', rule)).toBe(false);
23
+ });
24
+ it('matches with matchBase option', () => {
25
+ const rule = makeRule('component-rules.md', ['*.tsx']);
26
+ expect(doesPathMatchRule('src/components/Button.tsx', rule)).toBe(true);
27
+ });
28
+ });
29
+ describe('getRulesForPath', () => {
30
+ it('returns all matching rules for a path', () => {
31
+ const rules = [
32
+ makeRule('ts.md', ['**/*.ts']),
33
+ makeRule('tsx.md', ['**/*.tsx']),
34
+ makeRule('all-src.md', ['src/**']),
35
+ ];
36
+ const matches = getRulesForPath('src/index.ts', rules);
37
+ expect(matches.map((r) => r.filePath)).toEqual(['ts.md', 'all-src.md']);
38
+ });
39
+ });
40
+ describe('getSourceFilesForRule', () => {
41
+ const sourceFiles = [
42
+ 'src/index.ts',
43
+ 'src/App.tsx',
44
+ 'src/utils/helpers.ts',
45
+ 'lib/parser.js',
46
+ 'test/setup.ts',
47
+ ];
48
+ it('returns empty array for rule with no paths', () => {
49
+ const rule = makeRule('general.md');
50
+ expect(getSourceFilesForRule(rule, sourceFiles)).toEqual([]);
51
+ });
52
+ it('returns empty array for rule with empty paths array', () => {
53
+ const rule = makeRule('general.md', []);
54
+ expect(getSourceFilesForRule(rule, sourceFiles)).toEqual([]);
55
+ });
56
+ it('returns matching files for glob pattern', () => {
57
+ const rule = makeRule('ts-only.md', ['**/*.ts']);
58
+ const result = getSourceFilesForRule(rule, sourceFiles);
59
+ expect(result.sort()).toEqual([
60
+ 'src/index.ts',
61
+ 'src/utils/helpers.ts',
62
+ 'test/setup.ts',
63
+ ]);
64
+ });
65
+ it('returns matching files for directory pattern', () => {
66
+ const rule = makeRule('src-rules.md', ['src/**']);
67
+ const result = getSourceFilesForRule(rule, sourceFiles);
68
+ expect(result.sort()).toEqual([
69
+ 'src/App.tsx',
70
+ 'src/index.ts',
71
+ 'src/utils/helpers.ts',
72
+ ]);
73
+ });
74
+ it('returns empty array when no files match', () => {
75
+ const rule = makeRule('python.md', ['**/*.py']);
76
+ expect(getSourceFilesForRule(rule, sourceFiles)).toEqual([]);
77
+ });
78
+ it('handles multiple patterns', () => {
79
+ const rule = makeRule('multi.md', ['**/*.tsx', 'lib/**']);
80
+ const result = getSourceFilesForRule(rule, sourceFiles);
81
+ expect(result.sort()).toEqual(['lib/parser.js', 'src/App.tsx']);
82
+ });
83
+ it('uses directory-based matching when rule has no paths and is in a subdirectory', () => {
84
+ const rule = makeRule('src/utils/naming-conventions.md');
85
+ const result = getSourceFilesForRule(rule, sourceFiles);
86
+ expect(result).toEqual(['src/utils/helpers.ts']);
87
+ });
88
+ it('does not use directory-based matching for root-level rules with no paths', () => {
89
+ const rule = makeRule('general.md');
90
+ expect(getSourceFilesForRule(rule, sourceFiles)).toEqual([]);
91
+ });
92
+ });
93
+ describe('doesPathMatchRule - directory-based matching', () => {
94
+ it('matches files in the same directory as the rule when no paths specified', () => {
95
+ const rule = makeRule('apps/web/modules/survey/editor/survey-editor-gotchas.md');
96
+ expect(doesPathMatchRule('apps/web/modules/survey/editor/SurveyEditor.tsx', rule)).toBe(true);
97
+ });
98
+ it('matches files in subdirectories of the rule directory', () => {
99
+ const rule = makeRule('apps/web/modules/survey/editor/survey-editor-gotchas.md');
100
+ expect(doesPathMatchRule('apps/web/modules/survey/editor/components/QuestionList.tsx', rule)).toBe(true);
101
+ });
102
+ it('does not match files outside the rule directory', () => {
103
+ const rule = makeRule('apps/web/modules/survey/editor/survey-editor-gotchas.md');
104
+ expect(doesPathMatchRule('apps/web/modules/survey/SurveyList.tsx', rule)).toBe(false);
105
+ });
106
+ it('does not use directory-based matching for root-level rules', () => {
107
+ const rule = makeRule('general-guidelines.md');
108
+ expect(doesPathMatchRule('src/index.ts', rule)).toBe(false);
109
+ });
110
+ it('explicit paths take precedence over directory-based matching', () => {
111
+ const rule = makeRule('src/utils/naming.md', ['**/*.tsx']);
112
+ // Should match based on explicit paths, not directory
113
+ expect(doesPathMatchRule('lib/Component.tsx', rule)).toBe(true);
114
+ // Should NOT match .ts files even though they are in src/utils/
115
+ expect(doesPathMatchRule('src/utils/helpers.ts', rule)).toBe(false);
116
+ });
117
+ });
118
+ //# sourceMappingURL=pathMatcher.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pathMatcher.test.js","sourceRoot":"","sources":["../../../../../../src/utils/rules/__tests__/pathMatcher.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,72 @@
1
+ import { computeRulePlacement } from "../rulePlacement.js";
2
+ describe('computeRulePlacement', () => {
3
+ describe('single file path', () => {
4
+ it('returns the directory of the file', () => {
5
+ expect(computeRulePlacement(['src/api/auth.ts'])).toBe('src/api');
6
+ });
7
+ it('handles deeply nested file', () => {
8
+ expect(computeRulePlacement(['packages/ai/src/lib/generateMockData.ts'])).toBe('packages/ai/src/lib');
9
+ });
10
+ });
11
+ describe('multiple file paths in the same directory', () => {
12
+ it('returns their shared directory', () => {
13
+ expect(computeRulePlacement([
14
+ 'packages/ai/src/lib/foo.ts',
15
+ 'packages/ai/src/lib/bar.ts',
16
+ ])).toBe('packages/ai/src/lib');
17
+ });
18
+ });
19
+ describe('multiple file paths in different directories', () => {
20
+ it('returns the deepest common directory', () => {
21
+ expect(computeRulePlacement([
22
+ 'packages/ai/src/lib/a.ts',
23
+ 'packages/ai/src/utils/b.ts',
24
+ ])).toBe('packages/ai/src');
25
+ });
26
+ it('handles paths with no shared directory beyond root', () => {
27
+ expect(computeRulePlacement(['src/api/auth.ts', 'lib/utils/helpers.ts'])).toBe('');
28
+ });
29
+ });
30
+ describe('glob patterns', () => {
31
+ it('strips ** from directory glob', () => {
32
+ expect(computeRulePlacement(['codeyam-cli/**'])).toBe('codeyam-cli');
33
+ });
34
+ it('strips **/*.ext pattern', () => {
35
+ expect(computeRulePlacement(['packages/ai/src/**/*.ts'])).toBe('packages/ai/src');
36
+ });
37
+ it('strips trailing * wildcard', () => {
38
+ expect(computeRulePlacement(['src/utils/*.ts'])).toBe('src/utils');
39
+ });
40
+ it('finds common directory across multiple globs', () => {
41
+ expect(computeRulePlacement(['packages/ai/**', 'packages/types/**'])).toBe('packages');
42
+ });
43
+ it('finds common directory between glob and file path', () => {
44
+ expect(computeRulePlacement([
45
+ 'packages/ai/src/**/*.ts',
46
+ 'packages/ai/src/lib/foo.ts',
47
+ ])).toBe('packages/ai/src');
48
+ });
49
+ });
50
+ describe('edge cases', () => {
51
+ it('throws on empty paths array', () => {
52
+ expect(() => computeRulePlacement([])).toThrow();
53
+ });
54
+ it('handles root-level file', () => {
55
+ expect(computeRulePlacement(['config.ts'])).toBe('');
56
+ });
57
+ it('handles root-level glob', () => {
58
+ expect(computeRulePlacement(['**/*.ts'])).toBe('');
59
+ });
60
+ it('handles paths with trailing slashes', () => {
61
+ expect(computeRulePlacement(['src/utils/'])).toBe('src/utils');
62
+ });
63
+ it('handles mix of files, globs, and directories', () => {
64
+ expect(computeRulePlacement([
65
+ 'packages/ai/src/lib/foo.ts',
66
+ 'packages/ai/src/**/*.ts',
67
+ 'packages/ai/src/utils/',
68
+ ])).toBe('packages/ai/src');
69
+ });
70
+ });
71
+ });
72
+ //# sourceMappingURL=rulePlacement.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rulePlacement.test.js","sourceRoot":"","sources":["../../../../../../src/utils/rules/__tests__/rulePlacement.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