@descryy/mcp 0.11.5 → 0.11.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 (445) hide show
  1. package/dist/action-handshake.d.ts +38 -0
  2. package/dist/action-handshake.d.ts.map +1 -0
  3. package/dist/action-handshake.js +127 -0
  4. package/dist/action-handshake.js.map +1 -0
  5. package/dist/bin/descry-mcp.d.ts +7 -0
  6. package/dist/bin/descry-mcp.d.ts.map +1 -0
  7. package/dist/bin/descry-mcp.js +73 -0
  8. package/dist/bin/descry-mcp.js.map +1 -0
  9. package/dist/browser/auth.d.ts +84 -0
  10. package/dist/browser/auth.d.ts.map +1 -0
  11. package/dist/browser/auth.js +233 -0
  12. package/dist/browser/auth.js.map +1 -0
  13. package/dist/browser/capability-probe.d.ts +109 -0
  14. package/dist/browser/capability-probe.d.ts.map +1 -0
  15. package/dist/browser/capability-probe.js +201 -0
  16. package/dist/browser/capability-probe.js.map +1 -0
  17. package/dist/browser/driver.d.ts +591 -0
  18. package/dist/browser/driver.d.ts.map +1 -0
  19. package/dist/browser/driver.js +116 -0
  20. package/dist/browser/driver.js.map +1 -0
  21. package/dist/browser/evidence.d.ts +28 -0
  22. package/dist/browser/evidence.d.ts.map +1 -0
  23. package/dist/browser/evidence.js +82 -0
  24. package/dist/browser/evidence.js.map +1 -0
  25. package/dist/browser/fake-driver.d.ts +116 -0
  26. package/dist/browser/fake-driver.d.ts.map +1 -0
  27. package/dist/browser/fake-driver.js +416 -0
  28. package/dist/browser/fake-driver.js.map +1 -0
  29. package/dist/browser/fault-attribution.d.ts +178 -0
  30. package/dist/browser/fault-attribution.d.ts.map +1 -0
  31. package/dist/browser/fault-attribution.js +266 -0
  32. package/dist/browser/fault-attribution.js.map +1 -0
  33. package/dist/browser/graph-write.d.ts +45 -0
  34. package/dist/browser/graph-write.d.ts.map +1 -0
  35. package/dist/browser/graph-write.js +103 -0
  36. package/dist/browser/graph-write.js.map +1 -0
  37. package/dist/browser/identity-graph-write.d.ts +55 -0
  38. package/dist/browser/identity-graph-write.d.ts.map +1 -0
  39. package/dist/browser/identity-graph-write.js +45 -0
  40. package/dist/browser/identity-graph-write.js.map +1 -0
  41. package/dist/browser/page-probe.d.ts +81 -0
  42. package/dist/browser/page-probe.d.ts.map +1 -0
  43. package/dist/browser/page-probe.js +202 -0
  44. package/dist/browser/page-probe.js.map +1 -0
  45. package/dist/browser/playwright-driver.d.ts +115 -0
  46. package/dist/browser/playwright-driver.d.ts.map +1 -0
  47. package/dist/browser/playwright-driver.js +1545 -0
  48. package/dist/browser/playwright-driver.js.map +1 -0
  49. package/dist/browser/provider.d.ts +26 -0
  50. package/dist/browser/provider.d.ts.map +1 -0
  51. package/dist/browser/provider.js +14 -0
  52. package/dist/browser/provider.js.map +1 -0
  53. package/dist/browser/reach-recording-session.d.ts +44 -0
  54. package/dist/browser/reach-recording-session.d.ts.map +1 -0
  55. package/dist/browser/reach-recording-session.js +151 -0
  56. package/dist/browser/reach-recording-session.js.map +1 -0
  57. package/dist/browser/reachability.d.ts +168 -0
  58. package/dist/browser/reachability.d.ts.map +1 -0
  59. package/dist/browser/reachability.js +294 -0
  60. package/dist/browser/reachability.js.map +1 -0
  61. package/dist/browser/registry.d.ts +126 -0
  62. package/dist/browser/registry.d.ts.map +1 -0
  63. package/dist/browser/registry.js +177 -0
  64. package/dist/browser/registry.js.map +1 -0
  65. package/dist/browser/scenario-provenance.d.ts +23 -0
  66. package/dist/browser/scenario-provenance.d.ts.map +1 -0
  67. package/dist/browser/scenario-provenance.js +73 -0
  68. package/dist/browser/scenario-provenance.js.map +1 -0
  69. package/dist/browser/scenario-resolve.d.ts +28 -0
  70. package/dist/browser/scenario-resolve.d.ts.map +1 -0
  71. package/dist/browser/scenario-resolve.js +96 -0
  72. package/dist/browser/scenario-resolve.js.map +1 -0
  73. package/dist/browser/scenario-runner.d.ts +72 -0
  74. package/dist/browser/scenario-runner.d.ts.map +1 -0
  75. package/dist/browser/scenario-runner.js +353 -0
  76. package/dist/browser/scenario-runner.js.map +1 -0
  77. package/dist/browser/stack-parser.d.ts +19 -0
  78. package/dist/browser/stack-parser.d.ts.map +1 -0
  79. package/dist/browser/stack-parser.js +85 -0
  80. package/dist/browser/stack-parser.js.map +1 -0
  81. package/dist/browser/tool-support.d.ts +71 -0
  82. package/dist/browser/tool-support.d.ts.map +1 -0
  83. package/dist/browser/tool-support.js +216 -0
  84. package/dist/browser/tool-support.js.map +1 -0
  85. package/dist/browser/url-scheme.d.ts +14 -0
  86. package/dist/browser/url-scheme.d.ts.map +1 -0
  87. package/dist/browser/url-scheme.js +38 -0
  88. package/dist/browser/url-scheme.js.map +1 -0
  89. package/dist/browser/wait-target.d.ts +37 -0
  90. package/dist/browser/wait-target.d.ts.map +1 -0
  91. package/dist/browser/wait-target.js +54 -0
  92. package/dist/browser/wait-target.js.map +1 -0
  93. package/dist/cancellation.d.ts +20 -0
  94. package/dist/cancellation.d.ts.map +1 -0
  95. package/dist/cancellation.js +41 -0
  96. package/dist/cancellation.js.map +1 -0
  97. package/dist/capped.d.ts +39 -0
  98. package/dist/capped.d.ts.map +1 -0
  99. package/dist/capped.js +43 -0
  100. package/dist/capped.js.map +1 -0
  101. package/dist/credential-store.d.ts +22 -0
  102. package/dist/credential-store.d.ts.map +1 -0
  103. package/dist/credential-store.js +33 -0
  104. package/dist/credential-store.js.map +1 -0
  105. package/dist/disclosure-ledger.d.ts +14 -0
  106. package/dist/disclosure-ledger.d.ts.map +1 -0
  107. package/dist/disclosure-ledger.js +18 -0
  108. package/dist/disclosure-ledger.js.map +1 -0
  109. package/dist/evidence/observed-route-evidence.d.ts +25 -0
  110. package/dist/evidence/observed-route-evidence.d.ts.map +1 -0
  111. package/dist/evidence/observed-route-evidence.js +76 -0
  112. package/dist/evidence/observed-route-evidence.js.map +1 -0
  113. package/dist/heap.d.ts +61 -0
  114. package/dist/heap.d.ts.map +1 -0
  115. package/dist/heap.js +82 -0
  116. package/dist/heap.js.map +1 -0
  117. package/dist/heartbeat.d.ts +46 -0
  118. package/dist/heartbeat.d.ts.map +1 -0
  119. package/dist/heartbeat.js +66 -0
  120. package/dist/heartbeat.js.map +1 -0
  121. package/dist/index.d.ts +32 -0
  122. package/dist/index.d.ts.map +1 -0
  123. package/dist/index.js +19 -0
  124. package/dist/index.js.map +1 -0
  125. package/dist/module-trust.d.ts +37 -0
  126. package/dist/module-trust.d.ts.map +1 -0
  127. package/dist/module-trust.js +77 -0
  128. package/dist/module-trust.js.map +1 -0
  129. package/dist/path-confinement.d.ts +31 -0
  130. package/dist/path-confinement.d.ts.map +1 -0
  131. package/dist/path-confinement.js +44 -0
  132. package/dist/path-confinement.js.map +1 -0
  133. package/dist/planner/predict-then-propose.d.ts +134 -0
  134. package/dist/planner/predict-then-propose.d.ts.map +1 -0
  135. package/dist/planner/predict-then-propose.js +138 -0
  136. package/dist/planner/predict-then-propose.js.map +1 -0
  137. package/dist/planner/propose-journey.d.ts +75 -0
  138. package/dist/planner/propose-journey.d.ts.map +1 -0
  139. package/dist/planner/propose-journey.js +96 -0
  140. package/dist/planner/propose-journey.js.map +1 -0
  141. package/dist/protocol.d.ts +57 -0
  142. package/dist/protocol.d.ts.map +1 -0
  143. package/dist/protocol.js +90 -0
  144. package/dist/protocol.js.map +1 -0
  145. package/dist/ready-checks.d.ts +12 -0
  146. package/dist/ready-checks.d.ts.map +1 -0
  147. package/dist/ready-checks.js +43 -0
  148. package/dist/ready-checks.js.map +1 -0
  149. package/dist/registry.d.ts +103 -0
  150. package/dist/registry.d.ts.map +1 -0
  151. package/dist/registry.js +327 -0
  152. package/dist/registry.js.map +1 -0
  153. package/dist/render.d.ts +623 -0
  154. package/dist/render.d.ts.map +1 -0
  155. package/dist/render.js +968 -0
  156. package/dist/render.js.map +1 -0
  157. package/dist/runtime-registry.d.ts +22 -0
  158. package/dist/runtime-registry.d.ts.map +1 -0
  159. package/dist/runtime-registry.js +142 -0
  160. package/dist/runtime-registry.js.map +1 -0
  161. package/dist/sandbox-defaults.d.ts +41 -0
  162. package/dist/sandbox-defaults.d.ts.map +1 -0
  163. package/dist/sandbox-defaults.js +14 -0
  164. package/dist/sandbox-defaults.js.map +1 -0
  165. package/dist/scenarios/browser-run-plan-projection.d.ts +161 -0
  166. package/dist/scenarios/browser-run-plan-projection.d.ts.map +1 -0
  167. package/dist/scenarios/browser-run-plan-projection.js +264 -0
  168. package/dist/scenarios/browser-run-plan-projection.js.map +1 -0
  169. package/dist/scenarios/credential-ref.d.ts +102 -0
  170. package/dist/scenarios/credential-ref.d.ts.map +1 -0
  171. package/dist/scenarios/credential-ref.js +148 -0
  172. package/dist/scenarios/credential-ref.js.map +1 -0
  173. package/dist/scenarios/index.d.ts +7 -0
  174. package/dist/scenarios/index.d.ts.map +1 -0
  175. package/dist/scenarios/index.js +7 -0
  176. package/dist/scenarios/index.js.map +1 -0
  177. package/dist/scenarios/parse.d.ts +18 -0
  178. package/dist/scenarios/parse.d.ts.map +1 -0
  179. package/dist/scenarios/parse.js +212 -0
  180. package/dist/scenarios/parse.js.map +1 -0
  181. package/dist/scenarios/scenario.d.ts +93 -0
  182. package/dist/scenarios/scenario.d.ts.map +1 -0
  183. package/dist/scenarios/scenario.js +27 -0
  184. package/dist/scenarios/scenario.js.map +1 -0
  185. package/dist/scenarios/secret-ref.d.ts +86 -0
  186. package/dist/scenarios/secret-ref.d.ts.map +1 -0
  187. package/dist/scenarios/secret-ref.js +125 -0
  188. package/dist/scenarios/secret-ref.js.map +1 -0
  189. package/dist/scenarios/storage.d.ts +21 -0
  190. package/dist/scenarios/storage.d.ts.map +1 -0
  191. package/dist/scenarios/storage.js +103 -0
  192. package/dist/scenarios/storage.js.map +1 -0
  193. package/dist/server.d.ts +61 -0
  194. package/dist/server.d.ts.map +1 -0
  195. package/dist/server.js +642 -0
  196. package/dist/server.js.map +1 -0
  197. package/dist/session.d.ts +356 -0
  198. package/dist/session.d.ts.map +1 -0
  199. package/dist/session.js +779 -0
  200. package/dist/session.js.map +1 -0
  201. package/dist/tools/alias-kit.d.ts +29 -0
  202. package/dist/tools/alias-kit.d.ts.map +1 -0
  203. package/dist/tools/alias-kit.js +21 -0
  204. package/dist/tools/alias-kit.js.map +1 -0
  205. package/dist/tools/aliases.d.ts +42 -0
  206. package/dist/tools/aliases.d.ts.map +1 -0
  207. package/dist/tools/aliases.js +52 -0
  208. package/dist/tools/aliases.js.map +1 -0
  209. package/dist/tools/analyze-workspace.d.ts +52 -0
  210. package/dist/tools/analyze-workspace.d.ts.map +1 -0
  211. package/dist/tools/analyze-workspace.js +207 -0
  212. package/dist/tools/analyze-workspace.js.map +1 -0
  213. package/dist/tools/analyze.d.ts +163 -0
  214. package/dist/tools/analyze.d.ts.map +1 -0
  215. package/dist/tools/analyze.js +724 -0
  216. package/dist/tools/analyze.js.map +1 -0
  217. package/dist/tools/browser-click.d.ts +18 -0
  218. package/dist/tools/browser-click.d.ts.map +1 -0
  219. package/dist/tools/browser-click.js +110 -0
  220. package/dist/tools/browser-click.js.map +1 -0
  221. package/dist/tools/browser-close-session.d.ts +39 -0
  222. package/dist/tools/browser-close-session.d.ts.map +1 -0
  223. package/dist/tools/browser-close-session.js +120 -0
  224. package/dist/tools/browser-close-session.js.map +1 -0
  225. package/dist/tools/browser-fill.d.ts +18 -0
  226. package/dist/tools/browser-fill.d.ts.map +1 -0
  227. package/dist/tools/browser-fill.js +117 -0
  228. package/dist/tools/browser-fill.js.map +1 -0
  229. package/dist/tools/browser-navigate.d.ts +15 -0
  230. package/dist/tools/browser-navigate.d.ts.map +1 -0
  231. package/dist/tools/browser-navigate.js +106 -0
  232. package/dist/tools/browser-navigate.js.map +1 -0
  233. package/dist/tools/browser-read.d.ts +33 -0
  234. package/dist/tools/browser-read.d.ts.map +1 -0
  235. package/dist/tools/browser-read.js +105 -0
  236. package/dist/tools/browser-read.js.map +1 -0
  237. package/dist/tools/browser-run-scenario.d.ts +28 -0
  238. package/dist/tools/browser-run-scenario.d.ts.map +1 -0
  239. package/dist/tools/browser-run-scenario.js +238 -0
  240. package/dist/tools/browser-run-scenario.js.map +1 -0
  241. package/dist/tools/browser-save-scenario.d.ts +19 -0
  242. package/dist/tools/browser-save-scenario.d.ts.map +1 -0
  243. package/dist/tools/browser-save-scenario.js +447 -0
  244. package/dist/tools/browser-save-scenario.js.map +1 -0
  245. package/dist/tools/browser-select.d.ts +20 -0
  246. package/dist/tools/browser-select.d.ts.map +1 -0
  247. package/dist/tools/browser-select.js +120 -0
  248. package/dist/tools/browser-select.js.map +1 -0
  249. package/dist/tools/browser-snapshot.d.ts +46 -0
  250. package/dist/tools/browser-snapshot.d.ts.map +1 -0
  251. package/dist/tools/browser-snapshot.js +127 -0
  252. package/dist/tools/browser-snapshot.js.map +1 -0
  253. package/dist/tools/browser-start-session.d.ts +24 -0
  254. package/dist/tools/browser-start-session.d.ts.map +1 -0
  255. package/dist/tools/browser-start-session.js +653 -0
  256. package/dist/tools/browser-start-session.js.map +1 -0
  257. package/dist/tools/browser-submit.d.ts +18 -0
  258. package/dist/tools/browser-submit.d.ts.map +1 -0
  259. package/dist/tools/browser-submit.js +106 -0
  260. package/dist/tools/browser-submit.js.map +1 -0
  261. package/dist/tools/browser-type.d.ts +18 -0
  262. package/dist/tools/browser-type.d.ts.map +1 -0
  263. package/dist/tools/browser-type.js +115 -0
  264. package/dist/tools/browser-type.js.map +1 -0
  265. package/dist/tools/browser-wait-for.d.ts +45 -0
  266. package/dist/tools/browser-wait-for.d.ts.map +1 -0
  267. package/dist/tools/browser-wait-for.js +164 -0
  268. package/dist/tools/browser-wait-for.js.map +1 -0
  269. package/dist/tools/browser.d.ts +69 -0
  270. package/dist/tools/browser.d.ts.map +1 -0
  271. package/dist/tools/browser.js +326 -0
  272. package/dist/tools/browser.js.map +1 -0
  273. package/dist/tools/chain.d.ts +41 -0
  274. package/dist/tools/chain.d.ts.map +1 -0
  275. package/dist/tools/chain.js +101 -0
  276. package/dist/tools/chain.js.map +1 -0
  277. package/dist/tools/change-scope.d.ts +25 -0
  278. package/dist/tools/change-scope.d.ts.map +1 -0
  279. package/dist/tools/change-scope.js +103 -0
  280. package/dist/tools/change-scope.js.map +1 -0
  281. package/dist/tools/code-context.d.ts +83 -0
  282. package/dist/tools/code-context.d.ts.map +1 -0
  283. package/dist/tools/code-context.js +432 -0
  284. package/dist/tools/code-context.js.map +1 -0
  285. package/dist/tools/contracts.d.ts +74 -0
  286. package/dist/tools/contracts.d.ts.map +1 -0
  287. package/dist/tools/contracts.js +214 -0
  288. package/dist/tools/contracts.js.map +1 -0
  289. package/dist/tools/cross-pr.d.ts +178 -0
  290. package/dist/tools/cross-pr.d.ts.map +1 -0
  291. package/dist/tools/cross-pr.js +362 -0
  292. package/dist/tools/cross-pr.js.map +1 -0
  293. package/dist/tools/disclosure.d.ts +75 -0
  294. package/dist/tools/disclosure.d.ts.map +1 -0
  295. package/dist/tools/disclosure.js +325 -0
  296. package/dist/tools/disclosure.js.map +1 -0
  297. package/dist/tools/draw-conclusion.d.ts +55 -0
  298. package/dist/tools/draw-conclusion.d.ts.map +1 -0
  299. package/dist/tools/draw-conclusion.js +243 -0
  300. package/dist/tools/draw-conclusion.js.map +1 -0
  301. package/dist/tools/git-context.d.ts +39 -0
  302. package/dist/tools/git-context.d.ts.map +1 -0
  303. package/dist/tools/git-context.js +374 -0
  304. package/dist/tools/git-context.js.map +1 -0
  305. package/dist/tools/git-diff.d.ts +45 -0
  306. package/dist/tools/git-diff.d.ts.map +1 -0
  307. package/dist/tools/git-diff.js +338 -0
  308. package/dist/tools/git-diff.js.map +1 -0
  309. package/dist/tools/git-history.d.ts +16 -0
  310. package/dist/tools/git-history.d.ts.map +1 -0
  311. package/dist/tools/git-history.js +106 -0
  312. package/dist/tools/git-history.js.map +1 -0
  313. package/dist/tools/history.d.ts +34 -0
  314. package/dist/tools/history.d.ts.map +1 -0
  315. package/dist/tools/history.js +121 -0
  316. package/dist/tools/history.js.map +1 -0
  317. package/dist/tools/impact.d.ts +46 -0
  318. package/dist/tools/impact.d.ts.map +1 -0
  319. package/dist/tools/impact.js +225 -0
  320. package/dist/tools/impact.js.map +1 -0
  321. package/dist/tools/index.d.ts +59 -0
  322. package/dist/tools/index.d.ts.map +1 -0
  323. package/dist/tools/index.js +70 -0
  324. package/dist/tools/index.js.map +1 -0
  325. package/dist/tools/kit.d.ts +165 -0
  326. package/dist/tools/kit.d.ts.map +1 -0
  327. package/dist/tools/kit.js +153 -0
  328. package/dist/tools/kit.js.map +1 -0
  329. package/dist/tools/link-workspace.d.ts +24 -0
  330. package/dist/tools/link-workspace.d.ts.map +1 -0
  331. package/dist/tools/link-workspace.js +131 -0
  332. package/dist/tools/link-workspace.js.map +1 -0
  333. package/dist/tools/lookup.d.ts +19 -0
  334. package/dist/tools/lookup.d.ts.map +1 -0
  335. package/dist/tools/lookup.js +63 -0
  336. package/dist/tools/lookup.js.map +1 -0
  337. package/dist/tools/mark-incident.d.ts +28 -0
  338. package/dist/tools/mark-incident.d.ts.map +1 -0
  339. package/dist/tools/mark-incident.js +171 -0
  340. package/dist/tools/mark-incident.js.map +1 -0
  341. package/dist/tools/merged-browser.d.ts +11 -0
  342. package/dist/tools/merged-browser.d.ts.map +1 -0
  343. package/dist/tools/merged-browser.js +20 -0
  344. package/dist/tools/merged-browser.js.map +1 -0
  345. package/dist/tools/merged-context.d.ts +11 -0
  346. package/dist/tools/merged-context.d.ts.map +1 -0
  347. package/dist/tools/merged-context.js +21 -0
  348. package/dist/tools/merged-context.js.map +1 -0
  349. package/dist/tools/merged-observe.d.ts +13 -0
  350. package/dist/tools/merged-observe.d.ts.map +1 -0
  351. package/dist/tools/merged-observe.js +21 -0
  352. package/dist/tools/merged-observe.js.map +1 -0
  353. package/dist/tools/merged-workspace.d.ts +14 -0
  354. package/dist/tools/merged-workspace.d.ts.map +1 -0
  355. package/dist/tools/merged-workspace.js +21 -0
  356. package/dist/tools/merged-workspace.js.map +1 -0
  357. package/dist/tools/observe-runtime.d.ts +262 -0
  358. package/dist/tools/observe-runtime.d.ts.map +1 -0
  359. package/dist/tools/observe-runtime.js +1966 -0
  360. package/dist/tools/observe-runtime.js.map +1 -0
  361. package/dist/tools/observe-tests.d.ts +57 -0
  362. package/dist/tools/observe-tests.d.ts.map +1 -0
  363. package/dist/tools/observe-tests.js +391 -0
  364. package/dist/tools/observe-tests.js.map +1 -0
  365. package/dist/tools/observe.d.ts +28 -0
  366. package/dist/tools/observe.d.ts.map +1 -0
  367. package/dist/tools/observe.js +291 -0
  368. package/dist/tools/observe.js.map +1 -0
  369. package/dist/tools/pr-analysis.d.ts +189 -0
  370. package/dist/tools/pr-analysis.d.ts.map +1 -0
  371. package/dist/tools/pr-analysis.js +365 -0
  372. package/dist/tools/pr-analysis.js.map +1 -0
  373. package/dist/tools/pre-push.d.ts +168 -0
  374. package/dist/tools/pre-push.d.ts.map +1 -0
  375. package/dist/tools/pre-push.js +416 -0
  376. package/dist/tools/pre-push.js.map +1 -0
  377. package/dist/tools/predict-reach.d.ts +57 -0
  378. package/dist/tools/predict-reach.d.ts.map +1 -0
  379. package/dist/tools/predict-reach.js +183 -0
  380. package/dist/tools/predict-reach.js.map +1 -0
  381. package/dist/tools/propagation.d.ts +37 -0
  382. package/dist/tools/propagation.d.ts.map +1 -0
  383. package/dist/tools/propagation.js +162 -0
  384. package/dist/tools/propagation.js.map +1 -0
  385. package/dist/tools/propose-journey.d.ts +16 -0
  386. package/dist/tools/propose-journey.d.ts.map +1 -0
  387. package/dist/tools/propose-journey.js +132 -0
  388. package/dist/tools/propose-journey.js.map +1 -0
  389. package/dist/tools/prove-reach.d.ts +74 -0
  390. package/dist/tools/prove-reach.d.ts.map +1 -0
  391. package/dist/tools/prove-reach.js +274 -0
  392. package/dist/tools/prove-reach.js.map +1 -0
  393. package/dist/tools/questions.d.ts +30 -0
  394. package/dist/tools/questions.d.ts.map +1 -0
  395. package/dist/tools/questions.js +230 -0
  396. package/dist/tools/questions.js.map +1 -0
  397. package/dist/tools/refusal-fetch.d.ts +35 -0
  398. package/dist/tools/refusal-fetch.d.ts.map +1 -0
  399. package/dist/tools/refusal-fetch.js +123 -0
  400. package/dist/tools/refusal-fetch.js.map +1 -0
  401. package/dist/tools/runtime-incident.d.ts +33 -0
  402. package/dist/tools/runtime-incident.d.ts.map +1 -0
  403. package/dist/tools/runtime-incident.js +67 -0
  404. package/dist/tools/runtime-incident.js.map +1 -0
  405. package/dist/tools/runtime-journey-drive.d.ts +102 -0
  406. package/dist/tools/runtime-journey-drive.d.ts.map +1 -0
  407. package/dist/tools/runtime-journey-drive.js +247 -0
  408. package/dist/tools/runtime-journey-drive.js.map +1 -0
  409. package/dist/tools/scope.d.ts +45 -0
  410. package/dist/tools/scope.d.ts.map +1 -0
  411. package/dist/tools/scope.js +217 -0
  412. package/dist/tools/scope.js.map +1 -0
  413. package/dist/tools/similar-incidents.d.ts +43 -0
  414. package/dist/tools/similar-incidents.d.ts.map +1 -0
  415. package/dist/tools/similar-incidents.js +190 -0
  416. package/dist/tools/similar-incidents.js.map +1 -0
  417. package/dist/tools/validate.d.ts +133 -0
  418. package/dist/tools/validate.d.ts.map +1 -0
  419. package/dist/tools/validate.js +488 -0
  420. package/dist/tools/validate.js.map +1 -0
  421. package/dist/tools/verb.d.ts +46 -0
  422. package/dist/tools/verb.d.ts.map +1 -0
  423. package/dist/tools/verb.js +78 -0
  424. package/dist/tools/verb.js.map +1 -0
  425. package/dist/tools/verification-status.d.ts +38 -0
  426. package/dist/tools/verification-status.d.ts.map +1 -0
  427. package/dist/tools/verification-status.js +203 -0
  428. package/dist/tools/verification-status.js.map +1 -0
  429. package/dist/tools/verify-claim.d.ts +29 -0
  430. package/dist/tools/verify-claim.d.ts.map +1 -0
  431. package/dist/tools/verify-claim.js +218 -0
  432. package/dist/tools/verify-claim.js.map +1 -0
  433. package/dist/tools/workspace.d.ts +28 -0
  434. package/dist/tools/workspace.d.ts.map +1 -0
  435. package/dist/tools/workspace.js +94 -0
  436. package/dist/tools/workspace.js.map +1 -0
  437. package/dist/transport.d.ts +32 -0
  438. package/dist/transport.d.ts.map +1 -0
  439. package/dist/transport.js +85 -0
  440. package/dist/transport.js.map +1 -0
  441. package/dist/workspace-index.d.ts +164 -0
  442. package/dist/workspace-index.d.ts.map +1 -0
  443. package/dist/workspace-index.js +381 -0
  444. package/dist/workspace-index.js.map +1 -0
  445. package/package.json +3 -3
@@ -0,0 +1,28 @@
1
+ /**
2
+ * `observe` — merges `observe_runtime` and `observe_tests` into one action-class tool
3
+ * (documents/plans/mcp-surface-consolidation.md, group 1). Dispatches on "verb" to the exact
4
+ * `run`/`describeAction` bodies each absorbed tool already had (see observe-runtime.ts,
5
+ * observe-tests.ts) — extracted, not reimplemented, so behaviour is unchanged per verb.
6
+ *
7
+ * The schema below restates both tools' arguments under one flat, `additionalProperties: false`
8
+ * shape — required by the merge itself, since a merged tool has one schema for two verbs. It is
9
+ * also deliberately far shorter than `observe_runtime`'s own prose (that tool alone was 10,646
10
+ * schema bytes, 14% of the whole registry). Nothing here drops an argument, an enum value, a
11
+ * default, or a conditional-requirement rule — only the narrative explaining each one. The real
12
+ * behaviour (every disclosure, every refusal) still lives in the reused `run`/`describeAction`
13
+ * bodies, untouched by this trim.
14
+ */
15
+ import type { ToolDefinition } from "./kit.ts";
16
+ import type { ObserveRuntimeData } from "./observe-runtime.ts";
17
+ import type { ObserveTestsData } from "./observe-tests.ts";
18
+ /**
19
+ * What this tool answers with: one verb's shape, never a merged one.
20
+ *
21
+ * The merge cost this its single concrete output type, and `unknown` would have
22
+ * silently retired `output-shapes.test.ts`'s check that a declared shape is tied
23
+ * to the code producing it. A union keeps that tie: a verb added without its
24
+ * shape here stops compiling.
25
+ */
26
+ export type ObserveData = ObserveRuntimeData | ObserveTestsData;
27
+ export declare const observeTool: ToolDefinition;
28
+ //# sourceMappingURL=observe.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.d.ts","sourceRoot":"","sources":["../../src/tools/observe.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAKH,OAAO,KAAK,EAAe,cAAc,EAAE,MAAM,UAAU,CAAC;AAQ5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,MAAM,WAAW,GACnB,kBAAkB,GAClB,gBAAgB,CAAC;AA4QrB,eAAO,MAAM,WAAW,EAAE,cAczB,CAAC"}
@@ -0,0 +1,291 @@
1
+ /**
2
+ * `observe` — merges `observe_runtime` and `observe_tests` into one action-class tool
3
+ * (documents/plans/mcp-surface-consolidation.md, group 1). Dispatches on "verb" to the exact
4
+ * `run`/`describeAction` bodies each absorbed tool already had (see observe-runtime.ts,
5
+ * observe-tests.ts) — extracted, not reimplemented, so behaviour is unchanged per verb.
6
+ *
7
+ * The schema below restates both tools' arguments under one flat, `additionalProperties: false`
8
+ * shape — required by the merge itself, since a merged tool has one schema for two verbs. It is
9
+ * also deliberately far shorter than `observe_runtime`'s own prose (that tool alone was 10,646
10
+ * schema bytes, 14% of the whole registry). Nothing here drops an argument, an enum value, a
11
+ * default, or a conditional-requirement rule — only the narrative explaining each one. The real
12
+ * behaviour (every disclosure, every refusal) still lives in the reused `run`/`describeAction`
13
+ * bodies, untouched by this trim.
14
+ */
15
+ import { SAFETY_LEVELS, PROFILE_MODES } from "@descryy/runtime-environment-profile";
16
+ import { selectVerb } from "./verb.js";
17
+ import { run as runRuntime, describeAction as describeRuntimeAction, DEFAULT_EVIDENCE_RELATIVE_PATH, } from "./observe-runtime.js";
18
+ import { run as runTests, describeAction as describeTestsAction } from "./observe-tests.js";
19
+ /** Mirrors observe-runtime.ts's own module-local `READINESS_KINDS` — kept as a literal here
20
+ * rather than imported so this schema module has no other reason to reach into that file's
21
+ * internals beyond the two functions it reuses. */
22
+ const READINESS_KINDS = ["http", "tcp-port", "command"];
23
+ const VERB_SPECS = [
24
+ {
25
+ verb: "runtime",
26
+ accepts: [
27
+ "profile",
28
+ "services",
29
+ "adapter",
30
+ "scopeByService",
31
+ "observeForMs",
32
+ "environmentTier",
33
+ "fidelityLevel",
34
+ "evidencePath",
35
+ "resourceLimits",
36
+ "filesystemPolicy",
37
+ "networkPolicy",
38
+ "sandboxBackend",
39
+ "journey",
40
+ "database",
41
+ ],
42
+ },
43
+ { verb: "tests", accepts: ["command", "cwd"] },
44
+ ];
45
+ /** `timeoutMs` means a different thing per verb (whole-execution budget vs. suite timeout) but
46
+ * is the same key in both schemas — shared so neither verb refuses the other's caller for
47
+ * sending it. `confirmToken` is the handshake's own field, not either tool's. */
48
+ const SHARED_PROPS = ["confirmToken", "timeoutMs"];
49
+ const SCHEMA = {
50
+ type: "object",
51
+ properties: {
52
+ verb: {
53
+ type: "string",
54
+ enum: ["runtime", "tests"],
55
+ description: "runtime: boot/attach services and record evidence. tests: run the suite and record what ran.",
56
+ },
57
+ // --- runtime only ---
58
+ profile: {
59
+ type: "object",
60
+ description: "runtime, REQUIRED. Target environment; every field explicit, never inferred.",
61
+ properties: {
62
+ name: { type: "string" },
63
+ url: { type: "string" },
64
+ safetyLevel: {
65
+ type: "string",
66
+ enum: [...SAFETY_LEVELS],
67
+ description: "readOnly blocks spawning; all-attach is fine under readOnly.",
68
+ },
69
+ credentialRef: { type: "string", description: "Opaque credential key, never the secret." },
70
+ mode: { type: "string", enum: [...PROFILE_MODES] },
71
+ },
72
+ required: ["name", "url", "safetyLevel", "credentialRef", "mode"],
73
+ additionalProperties: false,
74
+ },
75
+ services: {
76
+ type: "object",
77
+ description: "runtime, REQUIRED. One per service, keyed by name; each needs command or attach.",
78
+ additionalProperties: {
79
+ type: "object",
80
+ properties: {
81
+ command: { type: "string", description: "How to start it. Omit if using attach." },
82
+ cwd: { type: "string", description: "Working directory. Required with command." },
83
+ port: {
84
+ type: "integer",
85
+ description: "REQUIRED with attach for http/tcp-port readiness. Else omit for an ephemeral port.",
86
+ },
87
+ dependsOn: {
88
+ type: "array",
89
+ items: { type: "string" },
90
+ description: "Services that must be ready first.",
91
+ },
92
+ env: { type: "object", additionalProperties: { type: "string" } },
93
+ attach: {
94
+ type: "object",
95
+ description: "Observe an already-running process instead of spawning one.",
96
+ properties: {
97
+ pid: { type: "integer" },
98
+ logFilePath: { type: "string", description: "File the process writes stdout/stderr to." },
99
+ },
100
+ required: ["pid", "logFilePath"],
101
+ additionalProperties: false,
102
+ },
103
+ readiness: {
104
+ type: "object",
105
+ description: "Required per service. Only http/tcp-port/command are supported here.",
106
+ properties: {
107
+ kind: { type: "string", enum: [...READINESS_KINDS] },
108
+ path: { type: "string", description: 'http: path after host/port. Default "/".' },
109
+ expectedStatus: { type: "integer", description: "http: default any 2xx/3xx." },
110
+ host: { type: "string", description: "tcp-port: default 127.0.0.1." },
111
+ command: { type: "string", description: "command: executable to run." },
112
+ args: { type: "array", items: { type: "string" }, description: "command: arguments." },
113
+ timeoutMs: { type: "integer", description: "Default 30000." },
114
+ },
115
+ required: ["kind"],
116
+ additionalProperties: false,
117
+ },
118
+ },
119
+ required: ["readiness"],
120
+ additionalProperties: false,
121
+ },
122
+ },
123
+ adapter: {
124
+ type: "object",
125
+ description: "runtime, REQUIRED. Adapter module to observe with; install one and name it here.",
126
+ properties: {
127
+ module: { type: "string" },
128
+ export: { type: "string", description: "Defaults to the sole factory export." },
129
+ options: { type: "object", description: "Passed to the factory." },
130
+ },
131
+ required: ["module"],
132
+ additionalProperties: false,
133
+ },
134
+ scopeByService: {
135
+ type: "object",
136
+ description: "runtime. Service name → repo its symbols resolve in. Default: this session's own repo.",
137
+ additionalProperties: {
138
+ type: "object",
139
+ properties: {
140
+ repo: { type: "string" },
141
+ repoRoot: { type: "string", description: "Absolute root, for path translation." },
142
+ cwd: { type: "string" },
143
+ },
144
+ required: ["repo"],
145
+ additionalProperties: false,
146
+ },
147
+ },
148
+ observeForMs: {
149
+ type: "integer",
150
+ description: "runtime. How long to drain output after services are ready. Default 5000.",
151
+ },
152
+ timeoutMs: {
153
+ type: "integer",
154
+ description: "Timeout, ms. runtime: whole run, default 60000. tests: suite limit, default 600000.",
155
+ },
156
+ environmentTier: {
157
+ type: "string",
158
+ enum: ["tier-0-ci-attached", "tier-1-preview", "tier-2-container", "tier-2b-api-only", "tier-3-static-only"],
159
+ description: "runtime. Recorded on the run. Default tier-2-container.",
160
+ },
161
+ fidelityLevel: {
162
+ type: "integer",
163
+ enum: [1, 2, 3, 4],
164
+ description: "runtime. 1 stub · 2 real+disposable DB · 3 real+redacted · 4 real staging. Default 2.",
165
+ },
166
+ evidencePath: {
167
+ type: "string",
168
+ description: `runtime. Evidence database path. Default ${DEFAULT_EVIDENCE_RELATIVE_PATH}.`,
169
+ },
170
+ resourceLimits: {
171
+ type: "object",
172
+ description: "runtime. OS caps on a spawned service; not applied to attach. Unset = unconstrained.",
173
+ properties: {
174
+ maxMemoryBytes: { type: "integer", description: "Memory cap, bytes." },
175
+ maxCpuSeconds: { type: "integer", description: "CPU time cap, seconds." },
176
+ maxProcesses: { type: "integer", description: "Process count cap." },
177
+ },
178
+ additionalProperties: false,
179
+ },
180
+ filesystemPolicy: {
181
+ type: "object",
182
+ description: "runtime. Confines a service to cwd + these roots; refuses if unenforceable.",
183
+ properties: {
184
+ allowedRoots: {
185
+ type: "array",
186
+ items: { type: "string" },
187
+ description: "Extra read-write paths, beyond the service's cwd.",
188
+ },
189
+ },
190
+ required: ["allowedRoots"],
191
+ additionalProperties: false,
192
+ },
193
+ networkPolicy: {
194
+ type: "object",
195
+ description: "runtime. Only full denial is enforced; other shapes refuse. Default unconstrained.",
196
+ properties: {
197
+ mode: { type: "string", enum: ["allow", "deny"] },
198
+ hosts: { type: "array", items: { type: "string" } },
199
+ },
200
+ required: ["mode", "hosts"],
201
+ additionalProperties: false,
202
+ },
203
+ sandboxBackend: {
204
+ type: "string",
205
+ enum: ["bwrap", "container"],
206
+ description: "runtime. Enforces filesystem/network policy. Default bwrap (Linux); container elsewhere.",
207
+ },
208
+ journey: {
209
+ type: "object",
210
+ description: "runtime. Drive a browser in this run's window. Give scenario or startUrl, not both.",
211
+ properties: {
212
+ service: { type: "string", description: "Attributed service. Optional." },
213
+ scenario: {
214
+ type: "string",
215
+ description: "Saved scenario under descry/scenarios/ to replay.",
216
+ },
217
+ startUrl: { type: "string", description: "Navigate here, no steps. Exclusive with scenario." },
218
+ recordVideo: { type: "boolean", description: "Off by default; returned as a video artifact." },
219
+ headless: { type: "boolean", description: "Default true." },
220
+ settleForMs: {
221
+ type: "integer",
222
+ description: "Page lifetime after last step, for late activity. Default 1000.",
223
+ },
224
+ },
225
+ additionalProperties: false,
226
+ },
227
+ database: {
228
+ type: "object",
229
+ description: "runtime. Tails Postgres logs into evidence; Node gets sqlite automatically. Omit for none.",
230
+ properties: {
231
+ statementLog: {
232
+ type: "object",
233
+ description: "Reads existing Postgres logging; never turns it on.",
234
+ properties: {
235
+ kind: { type: "string", enum: ["file", "dockerContainer"] },
236
+ path: { type: "string", description: "file: log path." },
237
+ container: { type: "string", description: "dockerContainer: container to tail." },
238
+ },
239
+ required: ["kind"],
240
+ additionalProperties: false,
241
+ },
242
+ service: { type: "string", description: "Attributed service. Optional." },
243
+ },
244
+ required: ["statementLog"],
245
+ additionalProperties: false,
246
+ },
247
+ // --- tests only ---
248
+ command: {
249
+ type: "string",
250
+ description: "tests, REQUIRED. Test command, as typed in a terminal. Unrecognised is refused.",
251
+ },
252
+ cwd: {
253
+ type: "string",
254
+ description: "tests. Where to run the command. Default: repo root.",
255
+ },
256
+ // --- shared ---
257
+ confirmToken: {
258
+ type: "string",
259
+ description: "Arguments frozen when the token was minted; a conflicting one is discarded and disclosed.",
260
+ },
261
+ },
262
+ required: ["verb"],
263
+ additionalProperties: false,
264
+ };
265
+ async function run(args, ctx) {
266
+ const verb = selectVerb(args, "verb", VERB_SPECS, SHARED_PROPS);
267
+ return verb === "runtime" ? runRuntime(args, ctx) : runTests(args, ctx);
268
+ }
269
+ /** One `describeAction` for two verbs — the requirement this merge cannot get wrong (UAT phase 5
270
+ * F12: `browser_start_session` once issued a consent sentence for the wrong verb). `selectVerb`
271
+ * decides which verb the call names before either absorbed `describeAction` sees it, so each one
272
+ * only ever describes the run it was actually asked to describe. */
273
+ function describeAction(args, ctx) {
274
+ const verb = selectVerb(args, "verb", VERB_SPECS, SHARED_PROPS);
275
+ return verb === "runtime" ? describeRuntimeAction(args, ctx) : describeTestsAction(args);
276
+ }
277
+ export const observeTool = {
278
+ name: "observe",
279
+ class: "action",
280
+ tier: "evidence",
281
+ version: "1.0.0",
282
+ title: "Observe a running application or a test run",
283
+ description: "Gather runtime evidence, chosen by verb. runtime: boot or attach to services and record what " +
284
+ "they do. tests: run the test suite and record what ran. Gated: first call returns a " +
285
+ "confirmToken; second call with it runs. runtime needs an app you can already run. Slow; acts " +
286
+ "on a real process.",
287
+ inputSchema: SCHEMA,
288
+ run,
289
+ describeAction,
290
+ };
291
+ //# sourceMappingURL=observe.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observe.js","sourceRoot":"","sources":["../../src/tools/observe.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,189 @@
1
+ /**
2
+ * `pr-analysis` — "what should I test before I open this PR?"
3
+ *
4
+ * The blast radius of a diff, intersected with the tests that cover it. The
5
+ * useful half of the answer is the second list: **what is affected and has no
6
+ * covering test.** A green suite proves nothing about that set, and it is the
7
+ * only part of a PR review that a test run cannot supply.
8
+ *
9
+ * ## `base...head`, three dots
10
+ *
11
+ * `changedFiles` diffs against the merge base rather than the two tips. On a
12
+ * branch a week behind `main`, two dots would fold every change made on `main`
13
+ * since the branch point into "this PR", and the blast radius would belong to
14
+ * somebody else's work. This is stated here as well as at the git call because
15
+ * it is the kind of thing that gets "simplified" later.
16
+ *
17
+ * ## Absence of a test is not evidence of absence
18
+ *
19
+ * `TESTS` edges come from adapters, and every adapter's recall is below 100% by
20
+ * design — precision over recall, when in doubt omit the edge. So "no covering
21
+ * test" means "no test that this graph can link", and the difference is
22
+ * disclosed. Reporting the untested list without it would turn a measured recall
23
+ * gap into a confident accusation.
24
+ *
25
+ * ## One node map, three id lists
26
+ *
27
+ * `affected`, `untested` and `tests` overlap heavily by construction — an
28
+ * affected node with no covering test is in two of them — and each used to
29
+ * carry the whole node inline, so the same fields were serialized up to three
30
+ * times in one reply. `indexPrAnalysisNodes` collapses that: the lists name
31
+ * ids, `nodes` holds each node once. Tool version 2.0.0 for it.
32
+ */
33
+ import { type BriefNode, type ToolDefinition } from "./kit.ts";
34
+ /**
35
+ * A node in the change's blast radius, named by id into `nodes`.
36
+ *
37
+ * It used to carry the whole node inline, and so did `untested` and `tests` —
38
+ * three lists over one heavily-overlapping population, every member
39
+ * serialized up to three times. An affected node with no covering test is in
40
+ * two of them by construction, which is the normal case rather than the
41
+ * unusual one, so the duplication scaled with exactly the answer a caller
42
+ * most wants. One map, three id lists.
43
+ */
44
+ export interface AffectedRef {
45
+ readonly id: string;
46
+ readonly score: number;
47
+ readonly depth: number;
48
+ /** 1-based position in this answer, highest score first. */
49
+ readonly rank: number;
50
+ /**
51
+ * `top` / `notable` / `rest` by rank, never by an absolute score threshold.
52
+ * This score is `weightedBfs`'s confidence decay — `changeRisk` passes only a
53
+ * budget, so it takes the default `weightFor` — and §12.7's tiers were
54
+ * calibrated against `scoping/`'s designed weights instead. See
55
+ * `prominence.ts`'s header for why reusing them here would be a calibrated
56
+ * label on an uncalibrated number.
57
+ */
58
+ readonly prominence: "top" | "notable" | "rest";
59
+ }
60
+ /**
61
+ * The three lists and the one node map they name into.
62
+ *
63
+ * `nodes` holds each node once, whichever lists mention it. A caller reads a
64
+ * list, then looks each id up — never the reverse, and never by scanning.
65
+ */
66
+ export interface PrAnalysisLists {
67
+ readonly nodes: Readonly<Record<string, BriefNode>>;
68
+ readonly affected: readonly AffectedRef[];
69
+ readonly untested: readonly string[];
70
+ readonly tests: readonly string[];
71
+ }
72
+ /** What `briefNode` accepts — the graph-node shape these three lists arrive as. */
73
+ interface IndexableNode {
74
+ readonly id: string;
75
+ readonly type: string;
76
+ readonly name: string;
77
+ readonly file: string | null;
78
+ readonly range: {
79
+ readonly startLine: number;
80
+ readonly endLine: number;
81
+ } | null;
82
+ readonly language: string | null;
83
+ readonly resolution: number;
84
+ }
85
+ /**
86
+ * Collapse three overlapping node lists into one map plus three id lists.
87
+ *
88
+ * Order within each list is preserved exactly — it is the ranking the query
89
+ * layer produced, and re-sorting it here would silently change which nodes a
90
+ * caller's own `limit` keeps.
91
+ */
92
+ export declare function indexPrAnalysisNodes(affected: readonly {
93
+ readonly node: IndexableNode;
94
+ readonly score: number;
95
+ readonly depth: number;
96
+ }[], untested: readonly IndexableNode[], tests: readonly IndexableNode[]): PrAnalysisLists;
97
+ /** Shared by every branch: what was diffed, and what came out of git. */
98
+ export interface PrAnalysisRange {
99
+ /**
100
+ * Which change set this answer is about — declared by the caller.
101
+ *
102
+ * `range` is `base...head`. `working-tree` is the change as it stands,
103
+ * uncommitted. Stated because the two answer different questions and a reply
104
+ * that did not say which one it answered would be readable as either — which
105
+ * is precisely how a composite came to describe 25 committed files under a
106
+ * headline about the 2 uncommitted ones passed to it.
107
+ */
108
+ readonly mode: "range" | "working-tree";
109
+ /** Null in working-tree mode: there is no second ref to compare against. */
110
+ readonly base: string | null;
111
+ readonly head: string | null;
112
+ /** Present in working-tree mode only. */
113
+ readonly workingTree?: {
114
+ readonly scope: "unstaged" | "staged" | "all";
115
+ readonly includeUntracked: boolean;
116
+ };
117
+ /** Paths in `base...head` — three dots, so somebody else's work on base is not folded in. */
118
+ readonly files: readonly string[];
119
+ }
120
+ /**
121
+ * git rejected the range, so nothing downstream ran.
122
+ *
123
+ * The narrowest of the four shapes, and the tell is what is absent: no
124
+ * `missing`, because no path was ever looked up. Narrow on `!("affected" in data)`.
125
+ */
126
+ export type PrAnalysisGitFailure = PrAnalysisRange;
127
+ /**
128
+ * The diff is empty. A real answer: there is nothing to assess.
129
+ *
130
+ * The three lists are present and empty on purpose — the absence here **is**
131
+ * a fact about the change. No `missing`, because there was nothing to resolve.
132
+ */
133
+ export interface PrAnalysisEmptyDiff extends PrAnalysisRange, PrAnalysisLists {
134
+ }
135
+ /**
136
+ * The diff resolved to no graph node at all, so no blast radius was computed.
137
+ *
138
+ * Distinguished from `PrAnalysisEmptyDiff` by `missing`, which names every
139
+ * path the graph has never heard of. The empty lists here mean *nothing was
140
+ * examined* rather than *nothing is affected*.
141
+ */
142
+ export interface PrAnalysisUnresolved extends PrAnalysisEmptyDiff {
143
+ readonly missing: readonly string[];
144
+ }
145
+ /**
146
+ * The full answer.
147
+ *
148
+ * `untested` is the half a test run cannot supply, and it means *no test is
149
+ * linked to the node in this graph* — adapters omit an edge they cannot prove,
150
+ * so a genuinely covered symbol can appear here. A gap to check, never a
151
+ * proven hole. Narrow on `"changedSymbols" in data`.
152
+ */
153
+ export interface PrAnalysisReport extends PrAnalysisRange, PrAnalysisLists {
154
+ readonly missing: readonly string[];
155
+ /**
156
+ * Nodes whose declared range actually intersects an added line in the diff
157
+ * (F5, UAT Phase 5) — the honest reading of "changed symbol". Previously
158
+ * this field held `symbolsInChangedFiles` under this name: every node whose
159
+ * *file* was touched, whether or not the diff's hunks came near it — a
160
+ * `useMemo` edit measured as "43 changed symbols" for a two-hunk change,
161
+ * which then over-seeded blast radius from every symbol in every touched
162
+ * file. A node with no known range (a git-history-only symbol, or one in a
163
+ * file whose patch was withheld by the diff's own size budget) cannot be
164
+ * proven to intersect anything and is never counted here — rule 2: an
165
+ * unprovable membership is omitted from the strong claim, not assumed into
166
+ * it. A wholly deleted file's symbols are counted here as 0 for the same
167
+ * reason (a deletion has no added lines to intersect), never as a false "no
168
+ * symbols changed" — they remain in `symbolsInChangedFiles` and still seed
169
+ * the blast radius below.
170
+ */
171
+ readonly changedSymbols: number;
172
+ /**
173
+ * Every node declared in a touched file, regardless of which lines moved —
174
+ * what `changedSymbols` used to be called. Genuinely useful for "what else
175
+ * lives here", a different question from "what changed", and this is what
176
+ * blast radius still seeds from: a line-precise seed set would silently
177
+ * lose a deleted file's symbols (a deletion has no added lines to
178
+ * intersect) and any file whose patch was withheld by the diff's size
179
+ * budget, both real, common cases this tool must not go blind to.
180
+ */
181
+ readonly symbolsInChangedFiles: number;
182
+ readonly affectedTotal: number;
183
+ readonly untestedTotal: number;
184
+ readonly testsTotal: number;
185
+ }
186
+ export type PrAnalysisData = PrAnalysisGitFailure | PrAnalysisEmptyDiff | PrAnalysisUnresolved | PrAnalysisReport;
187
+ export declare const prAnalysisTool: ToolDefinition;
188
+ export {};
189
+ //# sourceMappingURL=pr-analysis.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pr-analysis.d.ts","sourceRoot":"","sources":["../../src/tools/pr-analysis.ts"],"names":[],"mappings":"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"}