@harness-engineering/cli 1.23.1 → 1.23.2

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 (423) hide show
  1. package/dist/agents/commands/codex/harness/add-harness-component/SKILL.md +21 -12
  2. package/dist/agents/commands/codex/harness/cleanup-dead-code/SKILL.md +9 -0
  3. package/dist/agents/commands/codex/harness/detect-doc-drift/SKILL.md +9 -0
  4. package/dist/agents/commands/codex/harness/enforce-architecture/SKILL.md +5 -15
  5. package/dist/agents/commands/codex/harness/harness-architecture-advisor/SKILL.md +5 -15
  6. package/dist/agents/commands/codex/harness/harness-autopilot/SKILL.md +10 -0
  7. package/dist/agents/commands/codex/harness/harness-brainstorming/SKILL.md +9 -0
  8. package/dist/agents/commands/codex/harness/harness-code-review/SKILL.md +5 -15
  9. package/dist/agents/commands/codex/harness/harness-codebase-cleanup/SKILL.md +9 -0
  10. package/dist/agents/commands/codex/harness/harness-debugging/SKILL.md +9 -0
  11. package/dist/agents/commands/codex/harness/harness-dependency-health/SKILL.md +8 -0
  12. package/dist/agents/commands/codex/harness/harness-docs-pipeline/SKILL.md +9 -0
  13. package/dist/agents/commands/codex/harness/harness-execution/SKILL.md +9 -0
  14. package/dist/agents/commands/codex/harness/harness-hotspot-detector/SKILL.md +8 -0
  15. package/dist/agents/commands/codex/harness/harness-impact-analysis/SKILL.md +8 -0
  16. package/dist/agents/commands/codex/harness/harness-integrity/SKILL.md +8 -0
  17. package/dist/agents/commands/codex/harness/harness-onboarding/SKILL.md +18 -10
  18. package/dist/agents/commands/codex/harness/harness-perf/SKILL.md +9 -0
  19. package/dist/agents/commands/codex/harness/harness-planning/SKILL.md +10 -0
  20. package/dist/agents/commands/codex/harness/harness-refactoring/SKILL.md +9 -0
  21. package/dist/agents/commands/codex/harness/harness-release-readiness/SKILL.md +9 -0
  22. package/dist/agents/commands/codex/harness/harness-roadmap/SKILL.md +10 -1
  23. package/dist/agents/commands/codex/harness/harness-security-scan/SKILL.md +5 -15
  24. package/dist/agents/commands/codex/harness/harness-skill-authoring/SKILL.md +20 -1
  25. package/dist/agents/commands/codex/harness/harness-soundness-review/SKILL.md +10 -0
  26. package/dist/agents/commands/codex/harness/harness-supply-chain-audit/SKILL.md +8 -0
  27. package/dist/agents/commands/codex/harness/harness-tdd/SKILL.md +9 -0
  28. package/dist/agents/commands/codex/harness/harness-test-advisor/SKILL.md +8 -0
  29. package/dist/agents/commands/codex/harness/harness-verification/SKILL.md +9 -0
  30. package/dist/agents/commands/codex/harness/harness-verify/SKILL.md +8 -0
  31. package/dist/agents/commands/codex/harness/initialize-harness-project/SKILL.md +22 -13
  32. package/dist/agents/commands/cursor/harness/add-harness-component.mdc +12 -12
  33. package/dist/agents/commands/cursor/harness/harness-onboarding.mdc +10 -10
  34. package/dist/agents/commands/cursor/harness/harness-roadmap.mdc +1 -1
  35. package/dist/agents/commands/cursor/harness/initialize-harness-project.mdc +13 -13
  36. package/dist/agents/skills/claude-code/add-harness-component/SKILL.md +21 -12
  37. package/dist/agents/skills/claude-code/align-documentation/SKILL.md +9 -0
  38. package/dist/agents/skills/claude-code/check-mechanical-constraints/SKILL.md +9 -0
  39. package/dist/agents/skills/claude-code/cleanup-dead-code/SKILL.md +11 -0
  40. package/dist/agents/skills/claude-code/detect-doc-drift/SKILL.md +9 -0
  41. package/dist/agents/skills/claude-code/enforce-architecture/SKILL.md +5 -15
  42. package/dist/agents/skills/claude-code/harness-accessibility/SKILL.md +10 -0
  43. package/dist/agents/skills/claude-code/harness-api-design/SKILL.md +5 -15
  44. package/dist/agents/skills/claude-code/harness-architecture-advisor/SKILL.md +5 -15
  45. package/dist/agents/skills/claude-code/harness-auth/SKILL.md +5 -15
  46. package/dist/agents/skills/claude-code/harness-autopilot/SKILL.md +10 -0
  47. package/dist/agents/skills/claude-code/harness-brainstorming/SKILL.md +9 -0
  48. package/dist/agents/skills/claude-code/harness-caching/SKILL.md +10 -0
  49. package/dist/agents/skills/claude-code/harness-chaos/SKILL.md +10 -0
  50. package/dist/agents/skills/claude-code/harness-code-review/SKILL.md +5 -15
  51. package/dist/agents/skills/claude-code/harness-codebase-cleanup/SKILL.md +11 -0
  52. package/dist/agents/skills/claude-code/harness-compliance/SKILL.md +10 -0
  53. package/dist/agents/skills/claude-code/harness-containerization/SKILL.md +10 -0
  54. package/dist/agents/skills/claude-code/harness-data-pipeline/SKILL.md +10 -0
  55. package/dist/agents/skills/claude-code/harness-data-validation/SKILL.md +10 -0
  56. package/dist/agents/skills/claude-code/harness-database/SKILL.md +5 -15
  57. package/dist/agents/skills/claude-code/harness-debugging/SKILL.md +9 -0
  58. package/dist/agents/skills/claude-code/harness-dependency-health/SKILL.md +10 -0
  59. package/dist/agents/skills/claude-code/harness-deployment/SKILL.md +5 -15
  60. package/dist/agents/skills/claude-code/harness-design/SKILL.md +10 -0
  61. package/dist/agents/skills/claude-code/harness-design-mobile/SKILL.md +10 -0
  62. package/dist/agents/skills/claude-code/harness-design-system/SKILL.md +10 -0
  63. package/dist/agents/skills/claude-code/harness-design-web/SKILL.md +10 -0
  64. package/dist/agents/skills/claude-code/harness-diagnostics/SKILL.md +9 -0
  65. package/dist/agents/skills/claude-code/harness-docs-pipeline/SKILL.md +11 -0
  66. package/dist/agents/skills/claude-code/harness-dx/SKILL.md +10 -0
  67. package/dist/agents/skills/claude-code/harness-e2e/SKILL.md +9 -0
  68. package/dist/agents/skills/claude-code/harness-event-driven/SKILL.md +10 -0
  69. package/dist/agents/skills/claude-code/harness-execution/SKILL.md +9 -0
  70. package/dist/agents/skills/claude-code/harness-feature-flags/SKILL.md +10 -0
  71. package/dist/agents/skills/claude-code/harness-git-workflow/SKILL.md +10 -0
  72. package/dist/agents/skills/claude-code/harness-hotspot-detector/SKILL.md +10 -0
  73. package/dist/agents/skills/claude-code/harness-i18n/SKILL.md +10 -0
  74. package/dist/agents/skills/claude-code/harness-i18n-process/SKILL.md +10 -0
  75. package/dist/agents/skills/claude-code/harness-i18n-workflow/SKILL.md +10 -0
  76. package/dist/agents/skills/claude-code/harness-impact-analysis/SKILL.md +10 -0
  77. package/dist/agents/skills/claude-code/harness-incident-response/SKILL.md +10 -0
  78. package/dist/agents/skills/claude-code/harness-infrastructure-as-code/SKILL.md +10 -0
  79. package/dist/agents/skills/claude-code/harness-integration-test/SKILL.md +9 -0
  80. package/dist/agents/skills/claude-code/harness-integrity/SKILL.md +10 -0
  81. package/dist/agents/skills/claude-code/harness-knowledge-mapper/SKILL.md +9 -0
  82. package/dist/agents/skills/claude-code/harness-load-testing/SKILL.md +10 -0
  83. package/dist/agents/skills/claude-code/harness-ml-ops/SKILL.md +10 -0
  84. package/dist/agents/skills/claude-code/harness-mobile-patterns/SKILL.md +10 -0
  85. package/dist/agents/skills/claude-code/harness-mutation-test/SKILL.md +9 -0
  86. package/dist/agents/skills/claude-code/harness-observability/SKILL.md +10 -0
  87. package/dist/agents/skills/claude-code/harness-onboarding/SKILL.md +18 -10
  88. package/dist/agents/skills/claude-code/harness-parallel-agents/SKILL.md +9 -0
  89. package/dist/agents/skills/claude-code/harness-perf/SKILL.md +11 -0
  90. package/dist/agents/skills/claude-code/harness-perf-tdd/SKILL.md +10 -0
  91. package/dist/agents/skills/claude-code/harness-planning/SKILL.md +10 -0
  92. package/dist/agents/skills/claude-code/harness-pre-commit-review/SKILL.md +9 -0
  93. package/dist/agents/skills/claude-code/harness-product-spec/SKILL.md +10 -0
  94. package/dist/agents/skills/claude-code/harness-property-test/SKILL.md +10 -0
  95. package/dist/agents/skills/claude-code/harness-refactoring/SKILL.md +9 -0
  96. package/dist/agents/skills/claude-code/harness-release-readiness/SKILL.md +11 -0
  97. package/dist/agents/skills/claude-code/harness-resilience/SKILL.md +10 -0
  98. package/dist/agents/skills/claude-code/harness-roadmap/SKILL.md +10 -1
  99. package/dist/agents/skills/claude-code/harness-roadmap-pilot/SKILL.md +8 -0
  100. package/dist/agents/skills/claude-code/harness-secrets/SKILL.md +10 -0
  101. package/dist/agents/skills/claude-code/harness-security-review/SKILL.md +10 -0
  102. package/dist/agents/skills/claude-code/harness-security-scan/SKILL.md +5 -15
  103. package/dist/agents/skills/claude-code/harness-skill-authoring/SKILL.md +29 -1
  104. package/dist/agents/skills/claude-code/harness-soundness-review/SKILL.md +10 -0
  105. package/dist/agents/skills/claude-code/harness-sql-review/SKILL.md +10 -0
  106. package/dist/agents/skills/claude-code/harness-state-management/SKILL.md +10 -0
  107. package/dist/agents/skills/claude-code/harness-supply-chain-audit/SKILL.md +10 -0
  108. package/dist/agents/skills/claude-code/harness-tdd/SKILL.md +9 -0
  109. package/dist/agents/skills/claude-code/harness-test-advisor/SKILL.md +10 -0
  110. package/dist/agents/skills/claude-code/harness-test-data/SKILL.md +10 -0
  111. package/dist/agents/skills/claude-code/harness-ux-copy/SKILL.md +10 -0
  112. package/dist/agents/skills/claude-code/harness-verification/SKILL.md +9 -0
  113. package/dist/agents/skills/claude-code/harness-verify/SKILL.md +10 -0
  114. package/dist/agents/skills/claude-code/harness-visual-regression/SKILL.md +10 -0
  115. package/dist/agents/skills/claude-code/initialize-harness-project/SKILL.md +22 -13
  116. package/dist/agents/skills/claude-code/validate-context-engineering/SKILL.md +9 -0
  117. package/dist/agents/skills/codex/add-harness-component/SKILL.md +21 -12
  118. package/dist/agents/skills/codex/align-documentation/SKILL.md +9 -0
  119. package/dist/agents/skills/codex/check-mechanical-constraints/SKILL.md +9 -0
  120. package/dist/agents/skills/codex/cleanup-dead-code/SKILL.md +11 -0
  121. package/dist/agents/skills/codex/detect-doc-drift/SKILL.md +9 -0
  122. package/dist/agents/skills/codex/enforce-architecture/SKILL.md +5 -15
  123. package/dist/agents/skills/codex/harness-accessibility/SKILL.md +10 -0
  124. package/dist/agents/skills/codex/harness-api-design/SKILL.md +5 -15
  125. package/dist/agents/skills/codex/harness-architecture-advisor/SKILL.md +5 -15
  126. package/dist/agents/skills/codex/harness-auth/SKILL.md +5 -15
  127. package/dist/agents/skills/codex/harness-autopilot/SKILL.md +10 -0
  128. package/dist/agents/skills/codex/harness-brainstorming/SKILL.md +9 -0
  129. package/dist/agents/skills/codex/harness-caching/SKILL.md +10 -0
  130. package/dist/agents/skills/codex/harness-chaos/SKILL.md +10 -0
  131. package/dist/agents/skills/codex/harness-code-review/SKILL.md +5 -15
  132. package/dist/agents/skills/codex/harness-codebase-cleanup/SKILL.md +11 -0
  133. package/dist/agents/skills/codex/harness-compliance/SKILL.md +10 -0
  134. package/dist/agents/skills/codex/harness-containerization/SKILL.md +10 -0
  135. package/dist/agents/skills/codex/harness-data-pipeline/SKILL.md +10 -0
  136. package/dist/agents/skills/codex/harness-data-validation/SKILL.md +10 -0
  137. package/dist/agents/skills/codex/harness-database/SKILL.md +5 -15
  138. package/dist/agents/skills/codex/harness-debugging/SKILL.md +9 -0
  139. package/dist/agents/skills/codex/harness-dependency-health/SKILL.md +10 -0
  140. package/dist/agents/skills/codex/harness-deployment/SKILL.md +5 -15
  141. package/dist/agents/skills/codex/harness-design/SKILL.md +10 -0
  142. package/dist/agents/skills/codex/harness-design-mobile/SKILL.md +10 -0
  143. package/dist/agents/skills/codex/harness-design-system/SKILL.md +10 -0
  144. package/dist/agents/skills/codex/harness-design-web/SKILL.md +10 -0
  145. package/dist/agents/skills/codex/harness-diagnostics/SKILL.md +9 -0
  146. package/dist/agents/skills/codex/harness-docs-pipeline/SKILL.md +11 -0
  147. package/dist/agents/skills/codex/harness-dx/SKILL.md +10 -0
  148. package/dist/agents/skills/codex/harness-e2e/SKILL.md +9 -0
  149. package/dist/agents/skills/codex/harness-event-driven/SKILL.md +10 -0
  150. package/dist/agents/skills/codex/harness-execution/SKILL.md +9 -0
  151. package/dist/agents/skills/codex/harness-feature-flags/SKILL.md +10 -0
  152. package/dist/agents/skills/codex/harness-git-workflow/SKILL.md +10 -0
  153. package/dist/agents/skills/codex/harness-hotspot-detector/SKILL.md +10 -0
  154. package/dist/agents/skills/codex/harness-i18n/SKILL.md +10 -0
  155. package/dist/agents/skills/codex/harness-i18n-process/SKILL.md +10 -0
  156. package/dist/agents/skills/codex/harness-i18n-workflow/SKILL.md +10 -0
  157. package/dist/agents/skills/codex/harness-impact-analysis/SKILL.md +10 -0
  158. package/dist/agents/skills/codex/harness-incident-response/SKILL.md +10 -0
  159. package/dist/agents/skills/codex/harness-infrastructure-as-code/SKILL.md +10 -0
  160. package/dist/agents/skills/codex/harness-integration-test/SKILL.md +9 -0
  161. package/dist/agents/skills/codex/harness-integrity/SKILL.md +10 -0
  162. package/dist/agents/skills/codex/harness-knowledge-mapper/SKILL.md +9 -0
  163. package/dist/agents/skills/codex/harness-load-testing/SKILL.md +10 -0
  164. package/dist/agents/skills/codex/harness-ml-ops/SKILL.md +10 -0
  165. package/dist/agents/skills/codex/harness-mobile-patterns/SKILL.md +10 -0
  166. package/dist/agents/skills/codex/harness-mutation-test/SKILL.md +9 -0
  167. package/dist/agents/skills/codex/harness-observability/SKILL.md +10 -0
  168. package/dist/agents/skills/codex/harness-onboarding/SKILL.md +18 -10
  169. package/dist/agents/skills/codex/harness-parallel-agents/SKILL.md +9 -0
  170. package/dist/agents/skills/codex/harness-perf/SKILL.md +11 -0
  171. package/dist/agents/skills/codex/harness-perf-tdd/SKILL.md +10 -0
  172. package/dist/agents/skills/codex/harness-planning/SKILL.md +10 -0
  173. package/dist/agents/skills/codex/harness-pre-commit-review/SKILL.md +9 -0
  174. package/dist/agents/skills/codex/harness-product-spec/SKILL.md +10 -0
  175. package/dist/agents/skills/codex/harness-property-test/SKILL.md +10 -0
  176. package/dist/agents/skills/codex/harness-refactoring/SKILL.md +9 -0
  177. package/dist/agents/skills/codex/harness-release-readiness/SKILL.md +11 -0
  178. package/dist/agents/skills/codex/harness-resilience/SKILL.md +10 -0
  179. package/dist/agents/skills/codex/harness-roadmap/SKILL.md +10 -1
  180. package/dist/agents/skills/codex/harness-roadmap-pilot/SKILL.md +8 -0
  181. package/dist/agents/skills/codex/harness-secrets/SKILL.md +10 -0
  182. package/dist/agents/skills/codex/harness-security-review/SKILL.md +10 -0
  183. package/dist/agents/skills/codex/harness-security-scan/SKILL.md +5 -15
  184. package/dist/agents/skills/codex/harness-skill-authoring/SKILL.md +29 -1
  185. package/dist/agents/skills/codex/harness-soundness-review/SKILL.md +10 -0
  186. package/dist/agents/skills/codex/harness-sql-review/SKILL.md +10 -0
  187. package/dist/agents/skills/codex/harness-state-management/SKILL.md +10 -0
  188. package/dist/agents/skills/codex/harness-supply-chain-audit/SKILL.md +10 -0
  189. package/dist/agents/skills/codex/harness-tdd/SKILL.md +9 -0
  190. package/dist/agents/skills/codex/harness-test-advisor/SKILL.md +10 -0
  191. package/dist/agents/skills/codex/harness-test-data/SKILL.md +10 -0
  192. package/dist/agents/skills/codex/harness-ux-copy/SKILL.md +10 -0
  193. package/dist/agents/skills/codex/harness-verification/SKILL.md +9 -0
  194. package/dist/agents/skills/codex/harness-verify/SKILL.md +10 -0
  195. package/dist/agents/skills/codex/harness-visual-regression/SKILL.md +10 -0
  196. package/dist/agents/skills/codex/initialize-harness-project/SKILL.md +22 -13
  197. package/dist/agents/skills/codex/validate-context-engineering/SKILL.md +9 -0
  198. package/dist/agents/skills/cursor/add-harness-component/SKILL.md +21 -12
  199. package/dist/agents/skills/cursor/align-documentation/SKILL.md +9 -0
  200. package/dist/agents/skills/cursor/check-mechanical-constraints/SKILL.md +9 -0
  201. package/dist/agents/skills/cursor/cleanup-dead-code/SKILL.md +11 -0
  202. package/dist/agents/skills/cursor/detect-doc-drift/SKILL.md +9 -0
  203. package/dist/agents/skills/cursor/enforce-architecture/SKILL.md +5 -15
  204. package/dist/agents/skills/cursor/harness-accessibility/SKILL.md +10 -0
  205. package/dist/agents/skills/cursor/harness-api-design/SKILL.md +5 -15
  206. package/dist/agents/skills/cursor/harness-architecture-advisor/SKILL.md +5 -15
  207. package/dist/agents/skills/cursor/harness-auth/SKILL.md +5 -15
  208. package/dist/agents/skills/cursor/harness-autopilot/SKILL.md +10 -0
  209. package/dist/agents/skills/cursor/harness-brainstorming/SKILL.md +9 -0
  210. package/dist/agents/skills/cursor/harness-caching/SKILL.md +10 -0
  211. package/dist/agents/skills/cursor/harness-chaos/SKILL.md +10 -0
  212. package/dist/agents/skills/cursor/harness-code-review/SKILL.md +5 -15
  213. package/dist/agents/skills/cursor/harness-codebase-cleanup/SKILL.md +11 -0
  214. package/dist/agents/skills/cursor/harness-compliance/SKILL.md +10 -0
  215. package/dist/agents/skills/cursor/harness-containerization/SKILL.md +10 -0
  216. package/dist/agents/skills/cursor/harness-data-pipeline/SKILL.md +10 -0
  217. package/dist/agents/skills/cursor/harness-data-validation/SKILL.md +10 -0
  218. package/dist/agents/skills/cursor/harness-database/SKILL.md +5 -15
  219. package/dist/agents/skills/cursor/harness-debugging/SKILL.md +9 -0
  220. package/dist/agents/skills/cursor/harness-dependency-health/SKILL.md +10 -0
  221. package/dist/agents/skills/cursor/harness-deployment/SKILL.md +5 -15
  222. package/dist/agents/skills/cursor/harness-design/SKILL.md +10 -0
  223. package/dist/agents/skills/cursor/harness-design-mobile/SKILL.md +10 -0
  224. package/dist/agents/skills/cursor/harness-design-system/SKILL.md +10 -0
  225. package/dist/agents/skills/cursor/harness-design-web/SKILL.md +10 -0
  226. package/dist/agents/skills/cursor/harness-diagnostics/SKILL.md +9 -0
  227. package/dist/agents/skills/cursor/harness-docs-pipeline/SKILL.md +11 -0
  228. package/dist/agents/skills/cursor/harness-dx/SKILL.md +10 -0
  229. package/dist/agents/skills/cursor/harness-e2e/SKILL.md +9 -0
  230. package/dist/agents/skills/cursor/harness-event-driven/SKILL.md +10 -0
  231. package/dist/agents/skills/cursor/harness-execution/SKILL.md +9 -0
  232. package/dist/agents/skills/cursor/harness-feature-flags/SKILL.md +10 -0
  233. package/dist/agents/skills/cursor/harness-git-workflow/SKILL.md +10 -0
  234. package/dist/agents/skills/cursor/harness-hotspot-detector/SKILL.md +10 -0
  235. package/dist/agents/skills/cursor/harness-i18n/SKILL.md +10 -0
  236. package/dist/agents/skills/cursor/harness-i18n-process/SKILL.md +10 -0
  237. package/dist/agents/skills/cursor/harness-i18n-workflow/SKILL.md +10 -0
  238. package/dist/agents/skills/cursor/harness-impact-analysis/SKILL.md +10 -0
  239. package/dist/agents/skills/cursor/harness-incident-response/SKILL.md +10 -0
  240. package/dist/agents/skills/cursor/harness-infrastructure-as-code/SKILL.md +10 -0
  241. package/dist/agents/skills/cursor/harness-integration-test/SKILL.md +9 -0
  242. package/dist/agents/skills/cursor/harness-integrity/SKILL.md +10 -0
  243. package/dist/agents/skills/cursor/harness-knowledge-mapper/SKILL.md +9 -0
  244. package/dist/agents/skills/cursor/harness-load-testing/SKILL.md +10 -0
  245. package/dist/agents/skills/cursor/harness-ml-ops/SKILL.md +10 -0
  246. package/dist/agents/skills/cursor/harness-mobile-patterns/SKILL.md +10 -0
  247. package/dist/agents/skills/cursor/harness-mutation-test/SKILL.md +9 -0
  248. package/dist/agents/skills/cursor/harness-observability/SKILL.md +10 -0
  249. package/dist/agents/skills/cursor/harness-onboarding/SKILL.md +18 -10
  250. package/dist/agents/skills/cursor/harness-parallel-agents/SKILL.md +9 -0
  251. package/dist/agents/skills/cursor/harness-perf/SKILL.md +11 -0
  252. package/dist/agents/skills/cursor/harness-perf-tdd/SKILL.md +10 -0
  253. package/dist/agents/skills/cursor/harness-planning/SKILL.md +10 -0
  254. package/dist/agents/skills/cursor/harness-pre-commit-review/SKILL.md +9 -0
  255. package/dist/agents/skills/cursor/harness-product-spec/SKILL.md +10 -0
  256. package/dist/agents/skills/cursor/harness-property-test/SKILL.md +10 -0
  257. package/dist/agents/skills/cursor/harness-refactoring/SKILL.md +9 -0
  258. package/dist/agents/skills/cursor/harness-release-readiness/SKILL.md +11 -0
  259. package/dist/agents/skills/cursor/harness-resilience/SKILL.md +10 -0
  260. package/dist/agents/skills/cursor/harness-roadmap/SKILL.md +10 -1
  261. package/dist/agents/skills/cursor/harness-roadmap-pilot/SKILL.md +8 -0
  262. package/dist/agents/skills/cursor/harness-secrets/SKILL.md +10 -0
  263. package/dist/agents/skills/cursor/harness-security-review/SKILL.md +10 -0
  264. package/dist/agents/skills/cursor/harness-security-scan/SKILL.md +5 -15
  265. package/dist/agents/skills/cursor/harness-skill-authoring/SKILL.md +29 -1
  266. package/dist/agents/skills/cursor/harness-soundness-review/SKILL.md +10 -0
  267. package/dist/agents/skills/cursor/harness-sql-review/SKILL.md +10 -0
  268. package/dist/agents/skills/cursor/harness-state-management/SKILL.md +10 -0
  269. package/dist/agents/skills/cursor/harness-supply-chain-audit/SKILL.md +10 -0
  270. package/dist/agents/skills/cursor/harness-tdd/SKILL.md +9 -0
  271. package/dist/agents/skills/cursor/harness-test-advisor/SKILL.md +10 -0
  272. package/dist/agents/skills/cursor/harness-test-data/SKILL.md +10 -0
  273. package/dist/agents/skills/cursor/harness-ux-copy/SKILL.md +10 -0
  274. package/dist/agents/skills/cursor/harness-verification/SKILL.md +9 -0
  275. package/dist/agents/skills/cursor/harness-verify/SKILL.md +10 -0
  276. package/dist/agents/skills/cursor/harness-visual-regression/SKILL.md +10 -0
  277. package/dist/agents/skills/cursor/initialize-harness-project/SKILL.md +22 -13
  278. package/dist/agents/skills/cursor/validate-context-engineering/SKILL.md +9 -0
  279. package/dist/agents/skills/gemini-cli/add-harness-component/SKILL.md +21 -12
  280. package/dist/agents/skills/gemini-cli/align-documentation/SKILL.md +9 -0
  281. package/dist/agents/skills/gemini-cli/check-mechanical-constraints/SKILL.md +9 -0
  282. package/dist/agents/skills/gemini-cli/cleanup-dead-code/SKILL.md +11 -0
  283. package/dist/agents/skills/gemini-cli/detect-doc-drift/SKILL.md +9 -0
  284. package/dist/agents/skills/gemini-cli/enforce-architecture/SKILL.md +5 -15
  285. package/dist/agents/skills/gemini-cli/harness-accessibility/SKILL.md +10 -0
  286. package/dist/agents/skills/gemini-cli/harness-api-design/SKILL.md +5 -15
  287. package/dist/agents/skills/gemini-cli/harness-architecture-advisor/SKILL.md +5 -15
  288. package/dist/agents/skills/gemini-cli/harness-auth/SKILL.md +5 -15
  289. package/dist/agents/skills/gemini-cli/harness-autopilot/SKILL.md +10 -0
  290. package/dist/agents/skills/gemini-cli/harness-brainstorming/SKILL.md +9 -0
  291. package/dist/agents/skills/gemini-cli/harness-caching/SKILL.md +10 -0
  292. package/dist/agents/skills/gemini-cli/harness-chaos/SKILL.md +10 -0
  293. package/dist/agents/skills/gemini-cli/harness-code-review/SKILL.md +5 -15
  294. package/dist/agents/skills/gemini-cli/harness-codebase-cleanup/SKILL.md +11 -0
  295. package/dist/agents/skills/gemini-cli/harness-compliance/SKILL.md +10 -0
  296. package/dist/agents/skills/gemini-cli/harness-containerization/SKILL.md +10 -0
  297. package/dist/agents/skills/gemini-cli/harness-data-pipeline/SKILL.md +10 -0
  298. package/dist/agents/skills/gemini-cli/harness-data-validation/SKILL.md +10 -0
  299. package/dist/agents/skills/gemini-cli/harness-database/SKILL.md +5 -15
  300. package/dist/agents/skills/gemini-cli/harness-debugging/SKILL.md +9 -0
  301. package/dist/agents/skills/gemini-cli/harness-dependency-health/SKILL.md +10 -0
  302. package/dist/agents/skills/gemini-cli/harness-deployment/SKILL.md +5 -15
  303. package/dist/agents/skills/gemini-cli/harness-design/SKILL.md +10 -0
  304. package/dist/agents/skills/gemini-cli/harness-design-mobile/SKILL.md +10 -0
  305. package/dist/agents/skills/gemini-cli/harness-design-system/SKILL.md +10 -0
  306. package/dist/agents/skills/gemini-cli/harness-design-web/SKILL.md +10 -0
  307. package/dist/agents/skills/gemini-cli/harness-diagnostics/SKILL.md +9 -0
  308. package/dist/agents/skills/gemini-cli/harness-docs-pipeline/SKILL.md +11 -0
  309. package/dist/agents/skills/gemini-cli/harness-dx/SKILL.md +10 -0
  310. package/dist/agents/skills/gemini-cli/harness-e2e/SKILL.md +9 -0
  311. package/dist/agents/skills/gemini-cli/harness-event-driven/SKILL.md +10 -0
  312. package/dist/agents/skills/gemini-cli/harness-execution/SKILL.md +9 -0
  313. package/dist/agents/skills/gemini-cli/harness-feature-flags/SKILL.md +10 -0
  314. package/dist/agents/skills/gemini-cli/harness-git-workflow/SKILL.md +10 -0
  315. package/dist/agents/skills/gemini-cli/harness-hotspot-detector/SKILL.md +10 -0
  316. package/dist/agents/skills/gemini-cli/harness-i18n/SKILL.md +10 -0
  317. package/dist/agents/skills/gemini-cli/harness-i18n-process/SKILL.md +10 -0
  318. package/dist/agents/skills/gemini-cli/harness-i18n-workflow/SKILL.md +10 -0
  319. package/dist/agents/skills/gemini-cli/harness-impact-analysis/SKILL.md +10 -0
  320. package/dist/agents/skills/gemini-cli/harness-incident-response/SKILL.md +10 -0
  321. package/dist/agents/skills/gemini-cli/harness-infrastructure-as-code/SKILL.md +10 -0
  322. package/dist/agents/skills/gemini-cli/harness-integration-test/SKILL.md +9 -0
  323. package/dist/agents/skills/gemini-cli/harness-integrity/SKILL.md +10 -0
  324. package/dist/agents/skills/gemini-cli/harness-knowledge-mapper/SKILL.md +9 -0
  325. package/dist/agents/skills/gemini-cli/harness-load-testing/SKILL.md +10 -0
  326. package/dist/agents/skills/gemini-cli/harness-ml-ops/SKILL.md +10 -0
  327. package/dist/agents/skills/gemini-cli/harness-mobile-patterns/SKILL.md +10 -0
  328. package/dist/agents/skills/gemini-cli/harness-mutation-test/SKILL.md +9 -0
  329. package/dist/agents/skills/gemini-cli/harness-observability/SKILL.md +10 -0
  330. package/dist/agents/skills/gemini-cli/harness-onboarding/SKILL.md +18 -10
  331. package/dist/agents/skills/gemini-cli/harness-parallel-agents/SKILL.md +9 -0
  332. package/dist/agents/skills/gemini-cli/harness-perf/SKILL.md +11 -0
  333. package/dist/agents/skills/gemini-cli/harness-perf-tdd/SKILL.md +10 -0
  334. package/dist/agents/skills/gemini-cli/harness-planning/SKILL.md +10 -0
  335. package/dist/agents/skills/gemini-cli/harness-pre-commit-review/SKILL.md +9 -0
  336. package/dist/agents/skills/gemini-cli/harness-product-spec/SKILL.md +10 -0
  337. package/dist/agents/skills/gemini-cli/harness-property-test/SKILL.md +10 -0
  338. package/dist/agents/skills/gemini-cli/harness-refactoring/SKILL.md +9 -0
  339. package/dist/agents/skills/gemini-cli/harness-release-readiness/SKILL.md +11 -0
  340. package/dist/agents/skills/gemini-cli/harness-resilience/SKILL.md +10 -0
  341. package/dist/agents/skills/gemini-cli/harness-roadmap/SKILL.md +10 -1
  342. package/dist/agents/skills/gemini-cli/harness-roadmap-pilot/SKILL.md +8 -0
  343. package/dist/agents/skills/gemini-cli/harness-secrets/SKILL.md +10 -0
  344. package/dist/agents/skills/gemini-cli/harness-security-review/SKILL.md +10 -0
  345. package/dist/agents/skills/gemini-cli/harness-security-scan/SKILL.md +5 -15
  346. package/dist/agents/skills/gemini-cli/harness-skill-authoring/SKILL.md +29 -1
  347. package/dist/agents/skills/gemini-cli/harness-soundness-review/SKILL.md +10 -0
  348. package/dist/agents/skills/gemini-cli/harness-sql-review/SKILL.md +10 -0
  349. package/dist/agents/skills/gemini-cli/harness-state-management/SKILL.md +10 -0
  350. package/dist/agents/skills/gemini-cli/harness-supply-chain-audit/SKILL.md +10 -0
  351. package/dist/agents/skills/gemini-cli/harness-tdd/SKILL.md +9 -0
  352. package/dist/agents/skills/gemini-cli/harness-test-advisor/SKILL.md +10 -0
  353. package/dist/agents/skills/gemini-cli/harness-test-data/SKILL.md +10 -0
  354. package/dist/agents/skills/gemini-cli/harness-ux-copy/SKILL.md +10 -0
  355. package/dist/agents/skills/gemini-cli/harness-verification/SKILL.md +9 -0
  356. package/dist/agents/skills/gemini-cli/harness-verify/SKILL.md +10 -0
  357. package/dist/agents/skills/gemini-cli/harness-visual-regression/SKILL.md +10 -0
  358. package/dist/agents/skills/gemini-cli/initialize-harness-project/SKILL.md +22 -13
  359. package/dist/agents/skills/gemini-cli/validate-context-engineering/SKILL.md +9 -0
  360. package/dist/agents-md-HCCCO5PK.js +9 -0
  361. package/dist/{architecture-FVERI7BQ.js → architecture-S2H624W7.js} +5 -5
  362. package/dist/{assess-project-UGL5KLBV.js → assess-project-XSGK44S5.js} +1 -1
  363. package/dist/bin/harness-mcp.js +18 -18
  364. package/dist/bin/harness.js +124 -35
  365. package/dist/{check-phase-gate-C7JPPKMX.js → check-phase-gate-UGBJ237T.js} +5 -5
  366. package/dist/{chunk-RQ3AKUJB.js → chunk-2DHX6TAP.js} +4 -4
  367. package/dist/{chunk-7XZSHTYZ.js → chunk-2GT3HO2T.js} +3 -3
  368. package/dist/{chunk-ZLTFDTK7.js → chunk-2YA4XRI3.js} +5 -5
  369. package/dist/{chunk-GZKSBLQL.js → chunk-35EQ5UEI.js} +1 -1
  370. package/dist/{chunk-T5QWCVGK.js → chunk-4FHBPA3E.js} +11 -3
  371. package/dist/{chunk-ERS5EVUZ.js → chunk-5LMZA5LZ.js} +10 -10
  372. package/dist/{chunk-L57RL7MC.js → chunk-BK52Z6DR.js} +869 -419
  373. package/dist/{chunk-EUCASOD7.js → chunk-CLD4KL7O.js} +341 -71
  374. package/dist/{chunk-OD3S2NHN.js → chunk-E2GTL3YS.js} +1 -1
  375. package/dist/{chunk-YLN34N65.js → chunk-FP53DDB5.js} +1 -1
  376. package/dist/{chunk-7V5Y2L67.js → chunk-I47JLISV.js} +1 -1
  377. package/dist/{chunk-LAKMOIU6.js → chunk-KC5CTCEL.js} +9 -9
  378. package/dist/{chunk-UJHNGRS6.js → chunk-KTL3PHNQ.js} +6445 -6222
  379. package/dist/{chunk-DBSOCI3G.js → chunk-KV4M6Y5J.js} +1 -1
  380. package/dist/{chunk-FIAPHX37.js → chunk-LM5Z2WCA.js} +1 -1
  381. package/dist/{chunk-SD3SQOZ2.js → chunk-LOUH2LIC.js} +1 -1
  382. package/dist/{chunk-FNVAW5NG.js → chunk-MHOO7NLG.js} +11 -11
  383. package/dist/{chunk-HRUCT5YX.js → chunk-MZAHE4DK.js} +12 -12
  384. package/dist/{chunk-WKLLNUAT.js → chunk-NKL53UBL.js} +6 -6
  385. package/dist/{chunk-AQN7GFKU.js → chunk-PGF44T2D.js} +6 -6
  386. package/dist/{chunk-H7Y5CKTM.js → chunk-Q3XYV5UC.js} +1 -1
  387. package/dist/{chunk-KIR5PQX5.js → chunk-S5ZXT3TZ.js} +1 -1
  388. package/dist/{chunk-6KWBH4EO.js → chunk-UGD37ECK.js} +5 -5
  389. package/dist/{chunk-QBATHQXU.js → chunk-V27WDRYV.js} +540 -490
  390. package/dist/{chunk-YQ6KC6TE.js → chunk-YDRB55Q4.js} +1 -1
  391. package/dist/{chunk-CZEPCYVX.js → chunk-ZRYDYDB2.js} +6 -6
  392. package/dist/{chunk-7DMF3VT5.js → chunk-ZYJJUPNE.js} +1 -1
  393. package/dist/ci-workflow-I3V7FZNV.js +9 -0
  394. package/dist/{create-skill-U3XCFRZN.js → create-skill-AO25CJFM.js} +2 -2
  395. package/dist/{dist-USY2C5JL.js → dist-666AAZQ6.js} +1 -1
  396. package/dist/{dist-DZ63LLUD.js → dist-KQSTRP36.js} +1 -1
  397. package/dist/{dist-LPGVPYOZ.js → dist-MKWF5CXR.js} +7 -3
  398. package/dist/{dist-K56VJ4UJ.js → dist-WU3TVNNG.js} +7 -1
  399. package/dist/{docs-CGUBALYL.js → docs-R7UVQBMQ.js} +5 -5
  400. package/dist/engine-JGI3MWAC.js +9 -0
  401. package/dist/{entropy-H5OOCI57.js → entropy-IDHIG7HS.js} +4 -4
  402. package/dist/{feedback-XTDR7E3R.js → feedback-JZETY4UR.js} +1 -1
  403. package/dist/{generate-agent-definitions-RBI7Z4RY.js → generate-agent-definitions-D7B25YTM.js} +6 -6
  404. package/dist/{graph-loader-GRXDUWXO.js → graph-loader-BJULJYGG.js} +1 -1
  405. package/dist/index.d.ts +12 -8
  406. package/dist/index.js +54 -54
  407. package/dist/loader-E4KNTOP2.js +11 -0
  408. package/dist/mcp-67I2DBNM.js +37 -0
  409. package/dist/{performance-FSXEQJYB.js → performance-744OSR6P.js} +5 -5
  410. package/dist/{review-pipeline-VLKL7NV2.js → review-pipeline-HIO7HBW4.js} +1 -1
  411. package/dist/runtime-JXQ26U4Z.js +10 -0
  412. package/dist/{security-B76X5RL7.js → security-GDKHVFUC.js} +1 -1
  413. package/dist/{validate-KN6A2GN3.js → validate-2IUR3OWX.js} +5 -5
  414. package/dist/validate-cross-check-AM4T6P2K.js +9 -0
  415. package/package.json +5 -5
  416. package/dist/agents-md-FJXDMZPJ.js +0 -9
  417. package/dist/ci-workflow-S7VY625R.js +0 -9
  418. package/dist/engine-PEHFAFOT.js +0 -9
  419. package/dist/loader-IOC5L7NL.js +0 -11
  420. package/dist/mcp-7RPKBGIR.js +0 -37
  421. package/dist/runtime-3X2MV6R4.js +0 -10
  422. package/dist/validate-cross-check-LITTM24O.js +0 -9
  423. package/dist/{chunk-CJDVBBPB.js → chunk-3ISINLYT.js} +1 -1
@@ -174,6 +174,16 @@ function removeFromIndex(index, key, edge) {
174
174
  if (idx !== -1) list.splice(idx, 1);
175
175
  if (list.length === 0) index.delete(key);
176
176
  }
177
+ function filterEdges(candidates, query) {
178
+ const results = [];
179
+ for (const edge of candidates) {
180
+ if (query.from !== void 0 && edge.from !== query.from) continue;
181
+ if (query.to !== void 0 && edge.to !== query.to) continue;
182
+ if (query.type !== void 0 && edge.type !== query.type) continue;
183
+ results.push({ ...edge });
184
+ }
185
+ return results;
186
+ }
177
187
  var GraphStore = class {
178
188
  nodeMap = /* @__PURE__ */ new Map();
179
189
  edgeMap = /* @__PURE__ */ new Map();
@@ -241,27 +251,25 @@ var GraphStore = class {
241
251
  }
242
252
  }
243
253
  getEdges(query) {
244
- let candidates;
245
254
  if (query.from !== void 0 && query.to !== void 0 && query.type !== void 0) {
246
255
  const edge = this.edgeMap.get(edgeKey(query.from, query.to, query.type));
247
256
  return edge ? [{ ...edge }] : [];
248
- } else if (query.from !== void 0) {
249
- candidates = this.edgesByFrom.get(query.from) ?? [];
250
- } else if (query.to !== void 0) {
251
- candidates = this.edgesByTo.get(query.to) ?? [];
252
- } else if (query.type !== void 0) {
253
- candidates = this.edgesByType.get(query.type) ?? [];
254
- } else {
255
- candidates = this.edgeMap.values();
256
257
  }
257
- const results = [];
258
- for (const edge of candidates) {
259
- if (query.from !== void 0 && edge.from !== query.from) continue;
260
- if (query.to !== void 0 && edge.to !== query.to) continue;
261
- if (query.type !== void 0 && edge.type !== query.type) continue;
262
- results.push({ ...edge });
258
+ const candidates = this.selectCandidates(query);
259
+ return filterEdges(candidates, query);
260
+ }
261
+ /** Pick the most selective index to start from. */
262
+ selectCandidates(query) {
263
+ if (query.from !== void 0) {
264
+ return this.edgesByFrom.get(query.from) ?? [];
263
265
  }
264
- return results;
266
+ if (query.to !== void 0) {
267
+ return this.edgesByTo.get(query.to) ?? [];
268
+ }
269
+ if (query.type !== void 0) {
270
+ return this.edgesByType.get(query.type) ?? [];
271
+ }
272
+ return this.edgeMap.values();
265
273
  }
266
274
  getNeighbors(nodeId, direction = "both") {
267
275
  const neighborIds = /* @__PURE__ */ new Set();
@@ -549,6 +557,12 @@ var CODE_TYPES = /* @__PURE__ */ new Set([
549
557
  "method",
550
558
  "variable"
551
559
  ]);
560
+ function classifyNodeCategory(node) {
561
+ if (TEST_TYPES.has(node.type)) return "tests";
562
+ if (DOC_TYPES.has(node.type)) return "docs";
563
+ if (CODE_TYPES.has(node.type)) return "code";
564
+ return "other";
565
+ }
552
566
  function groupNodesByImpact(nodes, excludeId) {
553
567
  const tests = [];
554
568
  const docs = [];
@@ -556,15 +570,11 @@ function groupNodesByImpact(nodes, excludeId) {
556
570
  const other = [];
557
571
  for (const node of nodes) {
558
572
  if (excludeId && node.id === excludeId) continue;
559
- if (TEST_TYPES.has(node.type)) {
560
- tests.push(node);
561
- } else if (DOC_TYPES.has(node.type)) {
562
- docs.push(node);
563
- } else if (CODE_TYPES.has(node.type)) {
564
- code.push(node);
565
- } else {
566
- other.push(node);
567
- }
573
+ const category = classifyNodeCategory(node);
574
+ if (category === "tests") tests.push(node);
575
+ else if (category === "docs") docs.push(node);
576
+ else if (category === "code") code.push(node);
577
+ else other.push(node);
568
578
  }
569
579
  return { tests, docs, code, other };
570
580
  }
@@ -2844,6 +2854,7 @@ var INTENT_SIGNALS = {
2844
2854
  "depend",
2845
2855
  "blast",
2846
2856
  "radius",
2857
+ "cascade",
2847
2858
  "risk",
2848
2859
  "delete",
2849
2860
  "remove"
@@ -2853,6 +2864,7 @@ var INTENT_SIGNALS = {
2853
2864
  /what\s+(breaks|happens|is affected)/,
2854
2865
  /if\s+i\s+(change|modify|remove|delete)/,
2855
2866
  /blast\s+radius/,
2867
+ /cascad/,
2856
2868
  /what\s+(depend|relies)/
2857
2869
  ]
2858
2870
  },
@@ -3332,6 +3344,10 @@ var ResponseFormatter = class {
3332
3344
  }
3333
3345
  formatImpact(entityName, data) {
3334
3346
  const d = data;
3347
+ if ("sourceNodeId" in d && "summary" in d) {
3348
+ const summary = d.summary;
3349
+ return `Blast radius of **${entityName}**: ${summary.totalAffected} affected nodes (${summary.highRisk} high risk, ${summary.mediumRisk} medium, ${summary.lowRisk} low).`;
3350
+ }
3335
3351
  const code = this.safeArrayLength(d?.code);
3336
3352
  const tests = this.safeArrayLength(d?.tests);
3337
3353
  const docs = this.safeArrayLength(d?.docs);
@@ -3392,6 +3408,242 @@ var ResponseFormatter = class {
3392
3408
  return `${count} ${word}`;
3393
3409
  }
3394
3410
  };
3411
+ var CompositeProbabilityStrategy = class _CompositeProbabilityStrategy {
3412
+ constructor(changeFreqMap, couplingMap) {
3413
+ this.changeFreqMap = changeFreqMap;
3414
+ this.couplingMap = couplingMap;
3415
+ }
3416
+ changeFreqMap;
3417
+ couplingMap;
3418
+ static BASE_WEIGHTS = {
3419
+ imports: 0.7,
3420
+ calls: 0.5,
3421
+ implements: 0.6,
3422
+ inherits: 0.6,
3423
+ co_changes_with: 0.4,
3424
+ references: 0.2,
3425
+ contains: 0.3
3426
+ };
3427
+ static FALLBACK_WEIGHT = 0.1;
3428
+ static EDGE_TYPE_BLEND = 0.5;
3429
+ static CHANGE_FREQ_BLEND = 0.3;
3430
+ static COUPLING_BLEND = 0.2;
3431
+ getEdgeProbability(edge, _fromNode, toNode) {
3432
+ const base = _CompositeProbabilityStrategy.BASE_WEIGHTS[edge.type] ?? _CompositeProbabilityStrategy.FALLBACK_WEIGHT;
3433
+ const changeFreq = this.changeFreqMap.get(toNode.id) ?? 0;
3434
+ const coupling = this.couplingMap.get(toNode.id) ?? 0;
3435
+ return Math.min(
3436
+ 1,
3437
+ base * _CompositeProbabilityStrategy.EDGE_TYPE_BLEND + changeFreq * _CompositeProbabilityStrategy.CHANGE_FREQ_BLEND + coupling * _CompositeProbabilityStrategy.COUPLING_BLEND
3438
+ );
3439
+ }
3440
+ };
3441
+ var DEFAULT_PROBABILITY_FLOOR = 0.05;
3442
+ var DEFAULT_MAX_DEPTH = 10;
3443
+ var CascadeSimulator = class {
3444
+ constructor(store) {
3445
+ this.store = store;
3446
+ }
3447
+ store;
3448
+ simulate(sourceNodeId, options = {}) {
3449
+ const sourceNode = this.store.getNode(sourceNodeId);
3450
+ if (!sourceNode) {
3451
+ throw new Error(`Node not found: ${sourceNodeId}. Ensure the file has been ingested.`);
3452
+ }
3453
+ const probabilityFloor = options.probabilityFloor ?? DEFAULT_PROBABILITY_FLOOR;
3454
+ const maxDepth = options.maxDepth ?? DEFAULT_MAX_DEPTH;
3455
+ const edgeTypeFilter = options.edgeTypes ? new Set(options.edgeTypes) : null;
3456
+ const strategy = options.strategy ?? this.buildDefaultStrategy();
3457
+ const visited = /* @__PURE__ */ new Map();
3458
+ const queue = [];
3459
+ const fanOutCount = /* @__PURE__ */ new Map();
3460
+ this.seedQueue(
3461
+ sourceNodeId,
3462
+ sourceNode,
3463
+ strategy,
3464
+ edgeTypeFilter,
3465
+ probabilityFloor,
3466
+ queue,
3467
+ fanOutCount
3468
+ );
3469
+ const truncated = this.runBfs(
3470
+ queue,
3471
+ visited,
3472
+ fanOutCount,
3473
+ sourceNodeId,
3474
+ strategy,
3475
+ edgeTypeFilter,
3476
+ probabilityFloor,
3477
+ maxDepth
3478
+ );
3479
+ return this.buildResult(sourceNodeId, sourceNode.name, visited, fanOutCount, truncated);
3480
+ }
3481
+ seedQueue(sourceNodeId, sourceNode, strategy, edgeTypeFilter, probabilityFloor, queue, fanOutCount) {
3482
+ const sourceEdges = this.store.getEdges({ from: sourceNodeId });
3483
+ for (const edge of sourceEdges) {
3484
+ if (edge.to === sourceNodeId) continue;
3485
+ if (edgeTypeFilter && !edgeTypeFilter.has(edge.type)) continue;
3486
+ const targetNode = this.store.getNode(edge.to);
3487
+ if (!targetNode) continue;
3488
+ const cumProb = strategy.getEdgeProbability(edge, sourceNode, targetNode);
3489
+ if (cumProb < probabilityFloor) continue;
3490
+ queue.push({
3491
+ nodeId: edge.to,
3492
+ cumProb,
3493
+ depth: 1,
3494
+ parentId: sourceNodeId,
3495
+ incomingEdge: edge.type
3496
+ });
3497
+ }
3498
+ fanOutCount.set(
3499
+ sourceNodeId,
3500
+ sourceEdges.filter(
3501
+ (e) => e.to !== sourceNodeId && (!edgeTypeFilter || edgeTypeFilter.has(e.type))
3502
+ ).length
3503
+ );
3504
+ }
3505
+ runBfs(queue, visited, fanOutCount, sourceNodeId, strategy, edgeTypeFilter, probabilityFloor, maxDepth) {
3506
+ const MAX_QUEUE_SIZE = 1e4;
3507
+ let head = 0;
3508
+ while (head < queue.length) {
3509
+ if (queue.length > MAX_QUEUE_SIZE) return true;
3510
+ const entry = queue[head++];
3511
+ const existing = visited.get(entry.nodeId);
3512
+ if (existing && existing.cumulativeProbability >= entry.cumProb) continue;
3513
+ const targetNode = this.store.getNode(entry.nodeId);
3514
+ if (!targetNode) continue;
3515
+ visited.set(entry.nodeId, {
3516
+ nodeId: entry.nodeId,
3517
+ name: targetNode.name,
3518
+ ...targetNode.path !== void 0 && { path: targetNode.path },
3519
+ type: targetNode.type,
3520
+ cumulativeProbability: entry.cumProb,
3521
+ depth: entry.depth,
3522
+ incomingEdge: entry.incomingEdge,
3523
+ parentId: entry.parentId
3524
+ });
3525
+ if (entry.depth < maxDepth) {
3526
+ const childCount = this.expandNode(
3527
+ entry,
3528
+ targetNode,
3529
+ sourceNodeId,
3530
+ strategy,
3531
+ edgeTypeFilter,
3532
+ probabilityFloor,
3533
+ queue
3534
+ );
3535
+ fanOutCount.set(entry.nodeId, (fanOutCount.get(entry.nodeId) ?? 0) + childCount);
3536
+ }
3537
+ }
3538
+ return false;
3539
+ }
3540
+ expandNode(entry, fromNode, sourceNodeId, strategy, edgeTypeFilter, probabilityFloor, queue) {
3541
+ const outEdges = this.store.getEdges({ from: entry.nodeId });
3542
+ let childCount = 0;
3543
+ for (const edge of outEdges) {
3544
+ if (edgeTypeFilter && !edgeTypeFilter.has(edge.type)) continue;
3545
+ if (edge.to === sourceNodeId) continue;
3546
+ const childNode = this.store.getNode(edge.to);
3547
+ if (!childNode) continue;
3548
+ const newCumProb = entry.cumProb * strategy.getEdgeProbability(edge, fromNode, childNode);
3549
+ if (newCumProb < probabilityFloor) continue;
3550
+ childCount++;
3551
+ queue.push({
3552
+ nodeId: edge.to,
3553
+ cumProb: newCumProb,
3554
+ depth: entry.depth + 1,
3555
+ parentId: entry.nodeId,
3556
+ incomingEdge: edge.type
3557
+ });
3558
+ }
3559
+ return childCount;
3560
+ }
3561
+ buildDefaultStrategy() {
3562
+ return new CompositeProbabilityStrategy(/* @__PURE__ */ new Map(), /* @__PURE__ */ new Map());
3563
+ }
3564
+ buildResult(sourceNodeId, sourceName, visited, fanOutCount, truncated = false) {
3565
+ if (visited.size === 0) {
3566
+ return {
3567
+ sourceNodeId,
3568
+ sourceName,
3569
+ layers: [],
3570
+ flatSummary: [],
3571
+ summary: {
3572
+ totalAffected: 0,
3573
+ maxDepthReached: 0,
3574
+ highRisk: 0,
3575
+ mediumRisk: 0,
3576
+ lowRisk: 0,
3577
+ categoryBreakdown: { code: 0, tests: 0, docs: 0, other: 0 },
3578
+ amplificationPoints: [],
3579
+ truncated
3580
+ }
3581
+ };
3582
+ }
3583
+ const allNodes = Array.from(visited.values());
3584
+ const flatSummary = [...allNodes].sort(
3585
+ (a, b) => b.cumulativeProbability - a.cumulativeProbability
3586
+ );
3587
+ const depthMap = /* @__PURE__ */ new Map();
3588
+ for (const node of allNodes) {
3589
+ let list = depthMap.get(node.depth);
3590
+ if (!list) {
3591
+ list = [];
3592
+ depthMap.set(node.depth, list);
3593
+ }
3594
+ list.push(node);
3595
+ }
3596
+ const layers = [];
3597
+ const depths = Array.from(depthMap.keys()).sort((a, b) => a - b);
3598
+ for (const depth of depths) {
3599
+ const nodes = depthMap.get(depth);
3600
+ const breakdown = { code: 0, tests: 0, docs: 0, other: 0 };
3601
+ for (const n of nodes) {
3602
+ const graphNode = this.store.getNode(n.nodeId);
3603
+ if (graphNode) {
3604
+ breakdown[classifyNodeCategory(graphNode)]++;
3605
+ }
3606
+ }
3607
+ layers.push({ depth, nodes, categoryBreakdown: breakdown });
3608
+ }
3609
+ let highRisk = 0;
3610
+ let mediumRisk = 0;
3611
+ let lowRisk = 0;
3612
+ const catBreakdown = { code: 0, tests: 0, docs: 0, other: 0 };
3613
+ for (const node of allNodes) {
3614
+ if (node.cumulativeProbability >= 0.5) highRisk++;
3615
+ else if (node.cumulativeProbability >= 0.2) mediumRisk++;
3616
+ else lowRisk++;
3617
+ const graphNode = this.store.getNode(node.nodeId);
3618
+ if (graphNode) {
3619
+ catBreakdown[classifyNodeCategory(graphNode)]++;
3620
+ }
3621
+ }
3622
+ const amplificationPoints = [];
3623
+ for (const [nodeId, count] of fanOutCount) {
3624
+ if (count > 3) {
3625
+ amplificationPoints.push(nodeId);
3626
+ }
3627
+ }
3628
+ const maxDepthReached = allNodes.reduce((max, n) => Math.max(max, n.depth), 0);
3629
+ return {
3630
+ sourceNodeId,
3631
+ sourceName,
3632
+ layers,
3633
+ flatSummary,
3634
+ summary: {
3635
+ totalAffected: allNodes.length,
3636
+ maxDepthReached,
3637
+ highRisk,
3638
+ mediumRisk,
3639
+ lowRisk,
3640
+ categoryBreakdown: catBreakdown,
3641
+ amplificationPoints,
3642
+ truncated
3643
+ }
3644
+ };
3645
+ }
3646
+ };
3395
3647
  var ENTITY_REQUIRED_INTENTS = /* @__PURE__ */ new Set(["impact", "relationships", "explain"]);
3396
3648
  var classifier = new IntentClassifier();
3397
3649
  var extractor = new EntityExtractor();
@@ -3453,6 +3705,11 @@ function executeOperation(store, intent, entities, question, fusion) {
3453
3705
  switch (intent) {
3454
3706
  case "impact": {
3455
3707
  const rootId = entities[0].nodeId;
3708
+ const lowerQuestion = question.toLowerCase();
3709
+ if (lowerQuestion.includes("blast radius") || lowerQuestion.includes("cascade")) {
3710
+ const simulator = new CascadeSimulator(store);
3711
+ return simulator.simulate(rootId);
3712
+ }
3456
3713
  const result = cql.execute({
3457
3714
  rootNodeIds: [rootId],
3458
3715
  bidirectional: true,
@@ -3743,6 +4000,59 @@ var Assembler = class {
3743
4000
  };
3744
4001
  }
3745
4002
  };
4003
+ function extractConfidence(edge) {
4004
+ return edge.confidence ?? edge.metadata?.confidence ?? 0;
4005
+ }
4006
+ function extractMethod(edge) {
4007
+ return edge.metadata?.method ?? "convention";
4008
+ }
4009
+ function edgesToTracedFiles(store, edges) {
4010
+ return edges.map((edge) => ({
4011
+ path: store.getNode(edge.to)?.path ?? edge.to,
4012
+ confidence: extractConfidence(edge),
4013
+ method: extractMethod(edge)
4014
+ }));
4015
+ }
4016
+ function determineCoverageStatus(hasCode, hasTests) {
4017
+ if (hasCode && hasTests) return "full";
4018
+ if (hasCode) return "code-only";
4019
+ if (hasTests) return "test-only";
4020
+ return "none";
4021
+ }
4022
+ function computeMaxConfidence(codeFiles, testFiles) {
4023
+ const allConfidences = [
4024
+ ...codeFiles.map((f) => f.confidence),
4025
+ ...testFiles.map((f) => f.confidence)
4026
+ ];
4027
+ return allConfidences.length > 0 ? Math.max(...allConfidences) : 0;
4028
+ }
4029
+ function buildRequirementCoverage(store, req) {
4030
+ const codeFiles = edgesToTracedFiles(store, store.getEdges({ from: req.id, type: "requires" }));
4031
+ const testFiles = edgesToTracedFiles(
4032
+ store,
4033
+ store.getEdges({ from: req.id, type: "verified_by" })
4034
+ );
4035
+ const hasCode = codeFiles.length > 0;
4036
+ const hasTests = testFiles.length > 0;
4037
+ return {
4038
+ requirementId: req.id,
4039
+ requirementName: req.name,
4040
+ index: req.metadata?.index ?? 0,
4041
+ codeFiles,
4042
+ testFiles,
4043
+ status: determineCoverageStatus(hasCode, hasTests),
4044
+ maxConfidence: computeMaxConfidence(codeFiles, testFiles)
4045
+ };
4046
+ }
4047
+ function computeSummary(requirements) {
4048
+ const total = requirements.length;
4049
+ const withCode = requirements.filter((r) => r.codeFiles.length > 0).length;
4050
+ const withTests = requirements.filter((r) => r.testFiles.length > 0).length;
4051
+ const fullyTraced = requirements.filter((r) => r.status === "full").length;
4052
+ const untraceable = requirements.filter((r) => r.status === "none").length;
4053
+ const coveragePercent = total > 0 ? Math.round(fullyTraced / total * 100) : 0;
4054
+ return { total, withCode, withTests, fullyTraced, untraceable, coveragePercent };
4055
+ }
3746
4056
  function queryTraceability(store, options) {
3747
4057
  const allRequirements = store.findNodes({ type: "requirement" });
3748
4058
  const filtered = allRequirements.filter((node) => {
@@ -3770,56 +4080,13 @@ function queryTraceability(store, options) {
3770
4080
  const firstMeta = firstReq.metadata;
3771
4081
  const specPath = firstMeta?.specPath ?? "";
3772
4082
  const featureName = firstMeta?.featureName ?? "";
3773
- const requirements = [];
3774
- for (const req of reqs) {
3775
- const requiresEdges = store.getEdges({ from: req.id, type: "requires" });
3776
- const codeFiles = requiresEdges.map((edge) => {
3777
- const targetNode = store.getNode(edge.to);
3778
- return {
3779
- path: targetNode?.path ?? edge.to,
3780
- confidence: edge.confidence ?? edge.metadata?.confidence ?? 0,
3781
- method: edge.metadata?.method ?? "convention"
3782
- };
3783
- });
3784
- const verifiedByEdges = store.getEdges({ from: req.id, type: "verified_by" });
3785
- const testFiles = verifiedByEdges.map((edge) => {
3786
- const targetNode = store.getNode(edge.to);
3787
- return {
3788
- path: targetNode?.path ?? edge.to,
3789
- confidence: edge.confidence ?? edge.metadata?.confidence ?? 0,
3790
- method: edge.metadata?.method ?? "convention"
3791
- };
3792
- });
3793
- const hasCode = codeFiles.length > 0;
3794
- const hasTests = testFiles.length > 0;
3795
- const status = hasCode && hasTests ? "full" : hasCode ? "code-only" : hasTests ? "test-only" : "none";
3796
- const allConfidences = [
3797
- ...codeFiles.map((f) => f.confidence),
3798
- ...testFiles.map((f) => f.confidence)
3799
- ];
3800
- const maxConfidence = allConfidences.length > 0 ? Math.max(...allConfidences) : 0;
3801
- requirements.push({
3802
- requirementId: req.id,
3803
- requirementName: req.name,
3804
- index: req.metadata?.index ?? 0,
3805
- codeFiles,
3806
- testFiles,
3807
- status,
3808
- maxConfidence
3809
- });
3810
- }
4083
+ const requirements = reqs.map((req) => buildRequirementCoverage(store, req));
3811
4084
  requirements.sort((a, b) => a.index - b.index);
3812
- const total = requirements.length;
3813
- const withCode = requirements.filter((r) => r.codeFiles.length > 0).length;
3814
- const withTests = requirements.filter((r) => r.testFiles.length > 0).length;
3815
- const fullyTraced = requirements.filter((r) => r.status === "full").length;
3816
- const untraceable = requirements.filter((r) => r.status === "none").length;
3817
- const coveragePercent = total > 0 ? Math.round(fullyTraced / total * 100) : 0;
3818
4085
  results.push({
3819
4086
  specPath,
3820
4087
  featureName,
3821
4088
  requirements,
3822
- summary: { total, withCode, withTests, fullyTraced, untraceable, coveragePercent }
4089
+ summary: computeSummary(requirements)
3823
4090
  });
3824
4091
  }
3825
4092
  return results;
@@ -4625,7 +4892,7 @@ var ConflictPredictor = class {
4625
4892
  return parts.join(" ");
4626
4893
  }
4627
4894
  };
4628
- var VERSION = "0.2.0";
4895
+ var VERSION = "0.4.0";
4629
4896
 
4630
4897
  export {
4631
4898
  NODE_TYPES,
@@ -4640,6 +4907,7 @@ export {
4640
4907
  VectorStore,
4641
4908
  ContextQL,
4642
4909
  project,
4910
+ classifyNodeCategory,
4643
4911
  groupNodesByImpact,
4644
4912
  CodeIngestor,
4645
4913
  GitIngestor,
@@ -4662,6 +4930,8 @@ export {
4662
4930
  EntityExtractor,
4663
4931
  EntityResolver,
4664
4932
  ResponseFormatter,
4933
+ CompositeProbabilityStrategy,
4934
+ CascadeSimulator,
4665
4935
  askGraph,
4666
4936
  Assembler,
4667
4937
  queryTraceability,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Err,
3
3
  Ok
4
- } from "./chunk-ERS5EVUZ.js";
4
+ } from "./chunk-5LMZA5LZ.js";
5
5
 
6
6
  // src/persona/generators/agents-md.ts
7
7
  function formatTrigger(trigger) {
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  Err,
3
3
  Ok
4
- } from "./chunk-ERS5EVUZ.js";
4
+ } from "./chunk-5LMZA5LZ.js";
5
5
 
6
6
  // src/templates/engine.ts
7
7
  import * as fs from "fs";
@@ -15,7 +15,7 @@ function evictIfNeeded() {
15
15
  }
16
16
  }
17
17
  async function doLoadGraphStore(projectRoot) {
18
- const { GraphStore } = await import("./dist-K56VJ4UJ.js");
18
+ const { GraphStore } = await import("./dist-WU3TVNNG.js");
19
19
  const graphDir = path.join(projectRoot, ".harness", "graph");
20
20
  const store = new GraphStore();
21
21
  const loaded = await store.load(graphDir);
@@ -33,7 +33,7 @@ var createSelfReviewDefinition = {
33
33
  };
34
34
  async function handleCreateSelfReview(input) {
35
35
  try {
36
- const { parseDiff, createSelfReview } = await import("./dist-LPGVPYOZ.js");
36
+ const { parseDiff, createSelfReview } = await import("./dist-MKWF5CXR.js");
37
37
  const parseResult = parseDiff(input.diff);
38
38
  if (!parseResult.ok) {
39
39
  return resultToMcpResponse(parseResult);
@@ -53,11 +53,11 @@ async function handleCreateSelfReview(input) {
53
53
  ...input.maxFileCount !== void 0 ? { maxChangedFiles: input.maxFileCount } : {}
54
54
  }
55
55
  };
56
- const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
56
+ const { loadGraphStore } = await import("./graph-loader-BJULJYGG.js");
57
57
  const store = await loadGraphStore(projectPath);
58
58
  let graphData;
59
59
  if (store) {
60
- const { GraphFeedbackAdapter } = await import("./dist-K56VJ4UJ.js");
60
+ const { GraphFeedbackAdapter } = await import("./dist-WU3TVNNG.js");
61
61
  const adapter = new GraphFeedbackAdapter(store);
62
62
  const changedFiles = parseResult.value.files.map((f) => f.path);
63
63
  const impact = adapter.computeImpactData(changedFiles);
@@ -119,7 +119,7 @@ var analyzeDiffDefinition = {
119
119
  };
120
120
  async function handleAnalyzeDiff(input) {
121
121
  try {
122
- const { parseDiff, analyzeDiff } = await import("./dist-LPGVPYOZ.js");
122
+ const { parseDiff, analyzeDiff } = await import("./dist-MKWF5CXR.js");
123
123
  const parseResult = parseDiff(input.diff);
124
124
  if (!parseResult.ok) {
125
125
  return resultToMcpResponse(parseResult);
@@ -139,10 +139,10 @@ async function handleAnalyzeDiff(input) {
139
139
  let graphImpactData;
140
140
  if (input.path) {
141
141
  try {
142
- const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
142
+ const { loadGraphStore } = await import("./graph-loader-BJULJYGG.js");
143
143
  const store = await loadGraphStore(sanitizePath(input.path));
144
144
  if (store) {
145
- const { GraphFeedbackAdapter } = await import("./dist-K56VJ4UJ.js");
145
+ const { GraphFeedbackAdapter } = await import("./dist-WU3TVNNG.js");
146
146
  const adapter = new GraphFeedbackAdapter(store);
147
147
  const changedFiles = parseResult.value.files.map((f) => f.path);
148
148
  const impact = adapter.computeImpactData(changedFiles);
@@ -195,7 +195,7 @@ var requestPeerReviewDefinition = {
195
195
  };
196
196
  async function handleRequestPeerReview(input) {
197
197
  try {
198
- const { parseDiff, requestPeerReview } = await import("./dist-LPGVPYOZ.js");
198
+ const { parseDiff, requestPeerReview } = await import("./dist-MKWF5CXR.js");
199
199
  const parseResult = parseDiff(input.diff);
200
200
  if (!parseResult.ok) {
201
201
  return resultToMcpResponse(parseResult);
@@ -206,10 +206,10 @@ async function handleRequestPeerReview(input) {
206
206
  ...input.context ? { metadata: { context: input.context } } : {}
207
207
  };
208
208
  try {
209
- const { loadGraphStore } = await import("./graph-loader-GRXDUWXO.js");
209
+ const { loadGraphStore } = await import("./graph-loader-BJULJYGG.js");
210
210
  const store = await loadGraphStore(sanitizePath(input.path));
211
211
  if (store) {
212
- const { GraphFeedbackAdapter } = await import("./dist-K56VJ4UJ.js");
212
+ const { GraphFeedbackAdapter } = await import("./dist-WU3TVNNG.js");
213
213
  const adapter = new GraphFeedbackAdapter(store);
214
214
  const changedFiles = parseResult.value.files.map((f) => f.path);
215
215
  const impactData = adapter.computeImpactData(changedFiles);