@descryy/mcp 0.11.5 → 0.11.7

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 +5 -5
@@ -0,0 +1,623 @@
1
+ /**
2
+ * The one way an engine answer becomes an MCP tool result.
3
+ *
4
+ * ## Why this file exists rather than each tool formatting its own reply
5
+ *
6
+ * `QueryResult` carries three things a caller would rather not think about: a
7
+ * staleness stamp (§27.3), a `truncated` flag, and `notes` — the plain-words
8
+ * disclosures that populate the five result states' `refused`/`empty`/`failed`/
9
+ * `timed_out` cases. The engine computes all three correctly today. Every one of
10
+ * them is one careless `return result.data` away from never reaching a user.
11
+ *
12
+ * So the tool handler's return type is `QueryResult`, not content. A handler
13
+ * *cannot* build a reply; it can only produce an answer, and this module is the
14
+ * only thing that turns an answer into frames. Rule 7 — honest degradation, no
15
+ * silent doing-less — becomes a property of the type system rather than of
16
+ * whoever writes the next tool.
17
+ *
18
+ * ## `ai-tool-contract.md` §2 — the frozen envelope
19
+ *
20
+ * This module used to ship a two-value `status: "ok" | "not_analysable"`. The
21
+ * contract froze five: `ok` / `empty` / `refused` / `failed` / `timed_out`
22
+ * (§1), plus `class`, `toolVersion`, `budget` and a structured `truncated`
23
+ * object (§2). `AnswerStatus`/`renderAnswer`'s old two-state shape is gone
24
+ * rather than kept alongside the new one — two envelope shapes on the wire is
25
+ * the thing DEC-277's "one process mints" reasoning exists to avoid one layer
26
+ * up, applied here to a type rather than a decision number.
27
+ *
28
+ * ## Four invariants, asserted rather than documented (§2.1)
29
+ *
30
+ * `render.ts` already enforced the first two; the other two are new.
31
+ *
32
+ * 1. `truncated != null` with empty `disclosures` → throw.
33
+ * 2. `state` in `{refused, failed, timed_out}` with empty `disclosures` → throw.
34
+ * 3. `state == "refused"` with no verbatim reason in `disclosures` → throw (§4).
35
+ * 4. `class == "action"` returning anything other than a handshake envelope on
36
+ * the first call → throw (§7) — enforced in `action-handshake.ts` and
37
+ * `server.ts`, not here: this module never sees a mint, only a redeemed run.
38
+ *
39
+ * ## A fifth invariant, B6: a truncated answer must carry real counts
40
+ *
41
+ * `result.truncated === true` with no `answer.truncatedDetail` used to fall
42
+ * back to a sentinel, `{shown: -1, total: -1}` — chosen to be "unmistakably
43
+ * fake," except that it is a number, so it passes any presence check and then
44
+ * poisons whatever arithmetic reads `total - shown`. A field that lies is
45
+ * worse than a field that is absent, which is the same argument the five
46
+ * result states rest on. So the sentinel is gone: a tool that sets
47
+ * `result.truncated` without a `truncatedDetail` is a programming error,
48
+ * thrown in every environment except production, where the envelope instead
49
+ * reports `truncated: null` plus a disclosure naming the gap — degraded
50
+ * honestly rather than dishonestly precise. See `capped()` in `./capped.ts`
51
+ * for how a tool is meant to avoid ever hitting this.
52
+ */
53
+ import { type ReliabilityClass, type ReportCategory } from "@descryy/ir";
54
+ import type { ResultState, SignalTypeCount, ToolClass } from "@descryy/ir";
55
+ import type { GraphFreshness, GraphStamp, QueryResult } from "@descryy/core";
56
+ import type { DisclosureLedger } from "./disclosure-ledger.ts";
57
+ export type { ResultState } from "@descryy/ir";
58
+ /**
59
+ * MK-5 — which of the sixteen tools states a conclusion about the user's code
60
+ * versus which reports a fact about the graph.
61
+ *
62
+ * Lives here rather than in `@descryy/ir`: `tool-surface.ts`'s own header
63
+ * scopes that file to exactly `ResultState` and `ToolClass` ("and nothing
64
+ * else"), because those two cross into the pipeline and the desktop surface.
65
+ * This distinction is agent-mode-only (`plugin-and-mcp-surface.md` §3 PL-1),
66
+ * so a third shared union there would be scope creep the file's own doc
67
+ * disclaims. `kit.ts` imports it from here rather than the reverse, because
68
+ * `kit.ts` already depends on this module for `ToolAnswer`/`TruncationDetail`
69
+ * — defining it in `kit.ts` instead would make this module import back from
70
+ * `kit.ts` and cycle.
71
+ *
72
+ * - `conclusion` — the output is a statement about the user's code
73
+ * (`validate`, `contracts`, `cross_pr`). Never raw candidates: an
74
+ * already-adjudicated result carrying the category and the disclosure
75
+ * sentence as one payload.
76
+ * - `evidence` — the output is a fact the graph computed, already carrying
77
+ * its own resolution and qualification. The other thirteen.
78
+ */
79
+ export declare const TOOL_TIERS: readonly ["conclusion", "evidence"];
80
+ export type ToolTier = (typeof TOOL_TIERS)[number];
81
+ /**
82
+ * MK-6 — a conclusion produced through this server must not carry the same
83
+ * badge as one produced by the app's full governance pipeline
84
+ * (`plugin-and-mcp-surface.md` §3 PL-4). Every value here is a fact about
85
+ * *this server*, not about any one call, so it is one constant reused on
86
+ * every envelope rather than a per-tool computation.
87
+ */
88
+ export interface Provenance {
89
+ readonly surface: "mcp";
90
+ readonly adjudicatedBy: "descry";
91
+ readonly presentedBy: "host-agent";
92
+ /** MK-11: the G1–G5 governance pipeline does not run in this surface. */
93
+ readonly governancePipeline: false;
94
+ }
95
+ export interface TruncationDetail {
96
+ /** How many of the primary collection are in this reply. */
97
+ readonly shown: number;
98
+ /** The count before the cap — §5.5: "the count before the cap". */
99
+ readonly total: number;
100
+ /** A cursor to fetch the rest. `null` until pagination exists to redeem one. */
101
+ readonly more: string | null;
102
+ }
103
+ /**
104
+ * What a tool that actually watched a running application declares about what
105
+ * it saw — G4's `E`, and by its presence G3's precondition.
106
+ *
107
+ * **Presence is the claim, not the count.** A tool constructs this only on a
108
+ * path where an execution really ran and evidence really came back; omitting
109
+ * it is how every other tool says "nothing was witnessed here", which is the
110
+ * safe default and the one thirty-one of the thirty-three tools take. The two
111
+ * that declare it are `observe_runtime` and `observe_tests` — the two that
112
+ * run something.
113
+ *
114
+ * `E` is a count of *channels*, not of records: six console messages are one
115
+ * signal type, a console message plus a network response are two
116
+ * (`@descryy/ir`'s {@link RUNTIME_SIGNAL_TYPES}). Compute it with that
117
+ * package's `independentSignalTypes` rather than counting here — the clamp to
118
+ * the six declared channels is its job, and a second implementation of it is a
119
+ * second place for the vocabulary to drift.
120
+ *
121
+ * There is deliberately no `M` field — see `deriveEnvelopeCategory`.
122
+ */
123
+ export interface WitnessedEvidence {
124
+ readonly independentSignalTypes: SignalTypeCount;
125
+ }
126
+ export interface ToolAnswer<T> {
127
+ readonly result: QueryResult<T>;
128
+ /**
129
+ * Present only on a path that observed a real running application. Absent
130
+ * everywhere else, which is what makes `unconfirmed` the default for a
131
+ * graph-only answer rather than something each tool must remember to ask
132
+ * for. See {@link WitnessedEvidence} and `AnswerEnvelope.reportCategory`.
133
+ */
134
+ readonly runtimeEvidence?: WitnessedEvidence;
135
+ /**
136
+ * One of the five result states (§1). Omitted means `"ok"` — the common
137
+ * case, and the one that needs no tool-author ceremony.
138
+ *
139
+ * `"empty"` is a claim a tool must *earn* (§1.3b): reach for it only when
140
+ * the search ran against a population known to be real (an `analysed`/`ran`
141
+ * flag already true, a resolved node, a read that completed). Default to
142
+ * `"refused"` when that is not established — never to `"ok"` with a quietly
143
+ * empty collection, which is the exact defect §1 exists to close.
144
+ */
145
+ readonly state?: ResultState;
146
+ /**
147
+ * Is this a claim about a *name* or about a *shape*? §11A.5 gives R2 two
148
+ * different caps depending on the answer, so it is required rather than
149
+ * defaulted — see `reliabilityCap`.
150
+ */
151
+ readonly nameLevel: boolean;
152
+ /** One line the agent reads first. The payload is underneath it. */
153
+ readonly headline: string;
154
+ /**
155
+ * Present only when the tool already computed `shown`/`total` for its
156
+ * primary list at the return site (most do, for the "N further… capped at
157
+ * limit" note). `null` falls back to a bare boolean-shaped truncation with
158
+ * no counts — still non-null per invariant 1, just less informative.
159
+ */
160
+ readonly truncatedDetail?: TruncationDetail;
161
+ /**
162
+ * §5.4's `refusals` field, populated by a tool whose *own call* produced a
163
+ * fresh population of `UnresolvedRef` rows to summarise — as opposed to
164
+ * `refusal_fetch`, which pages the whole graph's stored ledger. `analyze`
165
+ * is the one tool that fits today: a run reads sources and the refs it
166
+ * could not resolve are this call's own result, not a read of prior state.
167
+ * Omit when the tool has no such population, or when it summarised zero
168
+ * rows — an empty summary carries no exemplar or handle to show.
169
+ */
170
+ readonly refusalSummary?: {
171
+ readonly count: number;
172
+ readonly exemplar: string;
173
+ readonly handle: string;
174
+ };
175
+ /**
176
+ * How this tool shrinks its own reply when the rendered result would exceed
177
+ * `MAX_REPLY_BYTES`. Called with the bytes available for `data` alone, every
178
+ * other cost already subtracted; called again with a corrected figure if the
179
+ * first attempt still comes in over.
180
+ *
181
+ * Optional, and absent means today's behaviour — the reply is rendered at
182
+ * whatever size it comes to. A tool whose payload is already bounded (a node
183
+ * `limit`, a single verdict) needs no hook; a tool whose reply grows with the
184
+ * user's repository does, and `get_git_diff` is the one that proved it.
185
+ */
186
+ readonly fitToBudget?: (budgetBytes: number) => ReplyFit<T>;
187
+ }
188
+ /**
189
+ * The ceiling on one rendered tool result, serialized — `content` frame and
190
+ * `structuredContent` envelope together, which is what a host actually
191
+ * receives and counts.
192
+ *
193
+ * A starting value, not a measurement, in this repo's usual sense: the one
194
+ * hard number behind it is a real failure, `get_git_diff` on an ordinary
195
+ * 48-file branch diff returning 84,516 characters and being rejected outright
196
+ * by the host before the caller saw any of it. 60,000 sits well under the
197
+ * smallest size observed to fail, with room for the narrated frame that
198
+ * repeats the disclosures alongside the envelope.
199
+ *
200
+ * Shared rather than per-tool on purpose: `get_git_diff` is the tool that hit
201
+ * this, twice, but nothing about the failure was specific to diffs. Any tool
202
+ * adopts the ceiling by implementing `ToolAnswer.fitToBudget`.
203
+ */
204
+ export declare const MAX_REPLY_BYTES = 60000;
205
+ /**
206
+ * A tool's own answer to "make this fit in `budgetBytes`".
207
+ *
208
+ * Only the tool can shrink its payload honestly — which field is droppable,
209
+ * what the caller must be told about the drop, and what re-request would
210
+ * recover it are all facts about that tool. So the ceiling is enforced here
211
+ * and the shrinking is delegated, rather than this module truncating a shape
212
+ * it does not understand.
213
+ */
214
+ export interface ReplyFit<T> {
215
+ readonly data: T;
216
+ /**
217
+ * Disclosures naming exactly what the budget withheld — appended to the
218
+ * tool's own notes. Must be non-empty whenever anything was withheld or
219
+ * dropped: a reply shrunk in silence is the failure rule 7 exists to stop.
220
+ */
221
+ readonly notes: readonly string[];
222
+ /** Set when items left the reply entirely, not merely lost their payload. */
223
+ readonly truncatedDetail?: TruncationDetail;
224
+ }
225
+ export interface McpContent {
226
+ readonly type: "text";
227
+ readonly text: string;
228
+ }
229
+ export interface CallToolResult {
230
+ readonly content: readonly McpContent[];
231
+ readonly structuredContent: Record<string, unknown>;
232
+ readonly isError?: boolean;
233
+ }
234
+ /**
235
+ * The machine-readable envelope. Shape is stable across every tool.
236
+ *
237
+ * `T` is the tool's own `data` type — every tool exports one (`ImpactData`,
238
+ * `ScopeData`, …) and types its handler against it, so `tsc` rejects a handler
239
+ * that returns a shape the declaration does not name. The parameter defaults
240
+ * to `unknown` so a caller handling any tool's reply generically still type
241
+ * checks; a caller that knows which tool it called writes
242
+ * `AnswerEnvelope<ImpactData>` and gets the shape.
243
+ */
244
+ export interface AnswerEnvelope<T = unknown> {
245
+ readonly tool: string;
246
+ /** Contract §6, rule 8. A behaviour change is a version bump; recorded with the run. */
247
+ readonly toolVersion: string;
248
+ /**
249
+ * B10 — this call's own id in `Session#recordedCalls()`, minted before
250
+ * rendering (`Session#allocateCallId`) so it can be carried here rather
251
+ * than only discovered after the fact. A caller reads this off a real
252
+ * reply and cites it in `verify_claim`'s `callId` — the positive path that
253
+ * was previously unreachable because the id used to be minted only when
254
+ * `Session#recordCall` ran, one step after the envelope that would have
255
+ * carried it was already built and sent. Not recorded here — `verify_claim`
256
+ * itself is excluded from `Session#recordCall` (MK-12) and every other
257
+ * path still records under this same value, so the id an agent reads is
258
+ * always the id `recordedCall` will actually find.
259
+ */
260
+ readonly callId: string;
261
+ readonly state: ResultState;
262
+ /** DEC-278's three classes — §6's retry table reads this. */
263
+ readonly class: ToolClass;
264
+ readonly headline: string;
265
+ /** `null` on `failed` (§2.2: always). May carry disambiguation, never an answer, on `refused`. */
266
+ readonly data: T | null;
267
+ readonly graph: {
268
+ readonly commitSha: string | null;
269
+ readonly builtAt: string | null;
270
+ readonly irSchemaVersion: number;
271
+ /** `null` — never absent — when the graph was not consulted at all (§3). */
272
+ readonly resolutionFloor: number | null;
273
+ readonly reliabilityCap: ReliabilityClass;
274
+ /**
275
+ * Lane "map-freshness" item 1: whether this graph still matches the
276
+ * repository on disk, distinct from `commitSha`/`builtAt` alone — a
277
+ * caller reading only the stamp has no way to tell "built five minutes
278
+ * ago" from "built five hundred commits ago" without running git itself.
279
+ * `null` only when `commitSha` is `null` (an empty graph has nothing to
280
+ * be fresh or stale relative to). Otherwise never absent, and `unknown`
281
+ * — never `current` — when this could not be determined (not a git
282
+ * repository, or git itself unavailable here); see `computeGraphFreshness`
283
+ * (`@descryy/core`) for how it is computed.
284
+ */
285
+ readonly freshness: {
286
+ readonly status: "current" | "behind" | "unknown";
287
+ /** `null` when `status !== "behind"`, or when `behind` but the exact
288
+ * count could not be determined (history rewritten since the build) —
289
+ * never a substitute for `0`. */
290
+ readonly commitsSince: number | null;
291
+ /** Count of indexed files that differ from the build, or `null` when
292
+ * `status !== "behind"`. The files themselves are named in `disclosures`
293
+ * (up to 5), not repeated here. */
294
+ readonly changedIndexedFiles: number | null;
295
+ } | null;
296
+ };
297
+ readonly truncated: TruncationDetail | null;
298
+ /**
299
+ * §5.4. `null` unless the answering tool supplied `refusalSummary` — see
300
+ * that field's own doc for which tools have a population to summarise.
301
+ */
302
+ readonly refusals: {
303
+ readonly count: number;
304
+ readonly exemplar: string;
305
+ readonly handle: string;
306
+ } | null;
307
+ readonly budget: {
308
+ readonly elapsedMs: number;
309
+ readonly limitMs: number;
310
+ };
311
+ /** Never empty when the answer is degraded, truncated or refused/failed/timed-out. */
312
+ readonly disclosures: readonly string[];
313
+ /**
314
+ * N2 step 3 — a machine-readable qualifier on this reply, not a sixth
315
+ * `state`: `true` means the running server's in-memory configuration no
316
+ * longer matches `.descry/config.json` on disk (another session's edit, a
317
+ * `link_workspace` call, a hand edit), so everything else in this envelope
318
+ * — including `graph` and `reportCategory` — reflects the stale, running
319
+ * configuration rather than what is on disk now. A caller can branch on
320
+ * this directly instead of pattern-matching prose in `disclosures`, where
321
+ * the same fact is also stated in full for a human reader.
322
+ */
323
+ readonly configStale: boolean;
324
+ /**
325
+ * MK-8/MK-11 — §19's five categories, settled for this surface: a
326
+ * `conclusion`-tier tool states its verdict in `headline`'s own plain words
327
+ * rather than through this apparatus (it is a fact, not a hypothesis), so
328
+ * this is `null` there. For an `evidence`-tier tool: `refused` maps to the
329
+ * direct equivalent, `not analysable` ("could not look" vs. "cannot
330
+ * establish this here" are the same statement); `failed`/`timed_out` carry
331
+ * no claim at all, so `null`; `ok`/`empty` go through G3/G4.
332
+ *
333
+ * **A graph-only answer short-circuits at G3 and is `unconfirmed`** — a
334
+ * structural fact with no runtime corroboration is never `confirmed` by
335
+ * construction, whatever its resolution.
336
+ *
337
+ * **An answer that watched a running application does not.** MK-8 was
338
+ * written when nothing in this surface could witness anything, and its
339
+ * "descry-runtime's loop does not run inside an MCP call" was true then;
340
+ * `observe_runtime` composes descry-runtime, boots or attaches to a real
341
+ * application and writes R4 edges, so it is now false for exactly the tools
342
+ * that do. Such a tool declares {@link ToolAnswer.runtimeEvidence} and G4
343
+ * runs on what it actually saw. Reporting a witnessed result more weakly
344
+ * than the evidence under it inverts rule 2's whole purpose, which is why
345
+ * this is a defect rather than conservatism.
346
+ *
347
+ * `confirmed` stays unreachable from here regardless — DEC-334 reserves it
348
+ * for a result that passed the full governance pipeline, "on every surface,
349
+ * meaning the same thing everywhere", and that pipeline does not run in an
350
+ * MCP call (`provenance.governancePipeline` says so on every reply). So
351
+ * `strongly supported` is this surface's ceiling, and it is reached by
352
+ * evidence rather than granted.
353
+ */
354
+ readonly reportCategory: ReportCategory | null;
355
+ /**
356
+ * **Existence** — how strongly the evidence says the failure is *real*, read from what was
357
+ * observed and never capped by how well the code resolved
358
+ * (`documents/plans/gate_loosening.md` §3.3).
359
+ *
360
+ * `reportCategory` above answers a different question — how strongly the *cause* may be
361
+ * stated — and rule 3's cap governs it alone. The two separate exactly where it matters: a
362
+ * reply whose graph resolved nothing (R0) caps to `unconfirmed` however much was witnessed,
363
+ * because at R0 no cause has been established. That is a true statement about the cause and
364
+ * a misleading one about the failure, and this field is the second half.
365
+ *
366
+ * Null wherever no evidence reading was taken at all — conclusion-tier tools, faults, and
367
+ * refusals. A refusal is a fact about Descry, never about the application, so it declares no
368
+ * existence rather than declaring `unconfirmed`, which would read as "we looked and found
369
+ * nothing."
370
+ *
371
+ * `confirmed` is unreachable here for the same reason it is above: `M` is not offered on this
372
+ * surface, so `strongly supported` is the ceiling.
373
+ */
374
+ readonly existenceCategory: ReportCategory | null;
375
+ /** MK-6. Constant for this server — see `Provenance`'s own doc. */
376
+ readonly provenance: Provenance;
377
+ }
378
+ /**
379
+ * The envelope, declared for a host to validate against — MCP's `outputSchema`.
380
+ *
381
+ * ## Why this exists at all
382
+ *
383
+ * Every reply from this server carries `structuredContent`, and until this was
384
+ * added a host had no way to check what it received. `tools/list` already ships
385
+ * `class`, `tier` and `toolVersion` on the same reasoning — a fact about the
386
+ * reply that an external client cannot otherwise read — and this is the
387
+ * standard-shaped member of that group rather than a fourth non-standard field.
388
+ *
389
+ * ## `data` is deliberately open, and that is a disclosed gap
390
+ *
391
+ * The envelope's thirteen fields are uniform across all thirty-three tools, so they
392
+ * are described exactly. `data` is not: its shape is `ImpactData`, `ScopeData`
393
+ * and thirty-one others, and nothing today derives a JSON Schema from those
394
+ * TypeScript types. Hand-writing thirty-three schemas would put a second description
395
+ * of each shape in a second place with nothing checking the two agree — the
396
+ * drift this repo has already paid for once with the tool count in prose, and
397
+ * a schema that is confidently wrong about `data` is worse for a validating
398
+ * host than one that declines to describe it.
399
+ *
400
+ * So `data` is `{}` — "anything" — and this paragraph is the disclosure rather
401
+ * than a silent omission (rule 7). Tightening it is real work with a real
402
+ * prerequisite: a generator from the handler types, or the schemas checked
403
+ * against recorded replies. Until then the promise made here is exactly the
404
+ * promise kept.
405
+ *
406
+ * ## The enums are read, not restated
407
+ *
408
+ * `state`, `class`, `reportCategory` and `reliabilityCap` build their `enum`
409
+ * from the exported vocabulary arrays. A restated list is a second source of
410
+ * truth that goes stale in silence; spread from the array, adding a report
411
+ * category and forgetting the schema is a red test instead.
412
+ */
413
+ export declare const ANSWER_ENVELOPE_SCHEMA: Record<string, unknown>;
414
+ /**
415
+ * The other shape a `tools/call` can return — `renderToolError`'s, now
416
+ * narrowed to the two cases where no tool was ever resolved (`name` not a
417
+ * string, or a name the registry does not have): there is no `ToolDefinition`
418
+ * to draw a real envelope from. A bad argument against a *resolved* tool goes
419
+ * through `renderRefusedInput` instead and is a real `state: "refused"`
420
+ * envelope — see that function's doc.
421
+ *
422
+ * Declared rather than quietly excluded. A schema that admitted only the
423
+ * envelope would be one the server itself violates on this narrower path.
424
+ * Declaring a union that is true beats declaring a single shape that is tidy.
425
+ */
426
+ export declare const TOOL_ERROR_SCHEMA: Record<string, unknown>;
427
+ /**
428
+ * What every tool declares as its `outputSchema`: the envelope or the argument
429
+ * error, discriminated by their required fields.
430
+ *
431
+ * One shared constant rather than a per-tool object because the shape genuinely
432
+ * is shared — the only per-tool part is `data`, which is open. When `data`
433
+ * becomes describable this becomes a function of the tool.
434
+ */
435
+ export declare const TOOL_OUTPUT_SCHEMA: Record<string, unknown>;
436
+ export declare class DisclosureError extends Error {
437
+ constructor(message: string);
438
+ }
439
+ export interface RenderOptions {
440
+ readonly toolVersion: string;
441
+ readonly toolClass: ToolClass;
442
+ /** MK-5/MK-8 — which report-category rule applies. See `ToolTier`. */
443
+ readonly toolTier: ToolTier;
444
+ readonly elapsedMs: number;
445
+ readonly limitMs: number;
446
+ /**
447
+ * B10 — the id this call will be recorded under, minted by
448
+ * `Session#allocateCallId()` before `renderAnswer` runs so it can be
449
+ * threaded into the envelope's own `callId`. Optional so every direct
450
+ * `renderAnswer` call in a test — none of which has a session's id
451
+ * sequence to draw from, and none of which asserts on `callId` — keeps
452
+ * compiling unchanged; a random id fills the gap there. `server.ts` is the
453
+ * one caller for which this matters and it always supplies a real one.
454
+ */
455
+ readonly callId?: string;
456
+ /**
457
+ * Set only when this call arrived under a retired tool name. Both halves are
458
+ * carried because the disclosure names both: what the caller said, and what
459
+ * answered. See `tools/aliases.ts` for why retired names dispatch at all.
460
+ */
461
+ readonly aliasedFrom?: string;
462
+ readonly aliasedTo?: string;
463
+ /**
464
+ * This connection's record of which standing disclosures it has already been
465
+ * given in full. Optional: a caller with no session to dedupe within (every
466
+ * direct `renderAnswer` in a test, every non-server consumer) gets the full
467
+ * sentence every time, which is the safe default — a short reference to a
468
+ * paragraph nobody was shown is worse than the repetition.
469
+ */
470
+ readonly disclosureLedger?: DisclosureLedger;
471
+ /**
472
+ * Overrides `MAX_REPLY_BYTES`. Exists so a test can prove the fitting
473
+ * behaviour against a small, deterministic ceiling rather than by generating
474
+ * 60KB of real data — the ceiling's *value* is a starting number, but the
475
+ * mechanism reacting to it must be checkable exactly.
476
+ */
477
+ readonly maxReplyBytes?: number;
478
+ /**
479
+ * The real graph's current state, for the one caller that has no `result`
480
+ * to read it from: `renderHandshake`. Every other envelope function gets
481
+ * `commitSha`/`builtAt`/`irSchemaVersion` from the tool's own `result.stamp`
482
+ * because a tool that ran read the graph; a handshake mint never runs the
483
+ * tool at all, so without this it had no honest source for those fields and
484
+ * hardcoded an empty graph regardless of what was actually stored —
485
+ * `narrate()` then told a caller sitting on a fully analysed repository that
486
+ * nothing had been analysed. `server.ts` supplies the session's own
487
+ * `provider().baseStamp()` here; a direct call in a test may omit it and
488
+ * gets the same "nothing known" default `renderHandshake` always had.
489
+ */
490
+ readonly graphStamp?: Omit<GraphStamp, "resolutionFloor">;
491
+ /**
492
+ * Lane "map-freshness" item 1 — computed once per call in `server.ts`
493
+ * (`Session#checkFreshness()`, which needs a live git read and so, like
494
+ * `configDrift`, must not be done by an envelope function itself) and
495
+ * folded into both the machine-readable `AnswerEnvelope.graph.freshness`
496
+ * and, when not `current`, a plain-words disclosure naming up to 5 changed
497
+ * files. Optional so every direct `renderAnswer` call in a test compiles
498
+ * unchanged; omitted (rather than defaulted to "current") reports `null`
499
+ * when the stored graph is non-empty, which reads as "not checked" via
500
+ * `freshnessField`'s own fallback — never a false `current`.
501
+ */
502
+ readonly freshness?: GraphFreshness;
503
+ /**
504
+ * Lane "map-freshness" items 2-3 — plain-words notes from an automatic
505
+ * build (empty graph) or refresh (behind, within budget) that ran in
506
+ * `server.ts` before this tool call, e.g. "code map built automatically
507
+ * for this answer (took 4.2s)". Ordered ahead of every other disclosure
508
+ * (see `build()` below) — a caller needs to know the map just changed
509
+ * before it needs anything else about what the answer covers.
510
+ */
511
+ readonly autoNotes?: readonly string[];
512
+ /**
513
+ * N2 steps 2-3 — computed once per call in `server.ts` (it requires a
514
+ * fresh read of `.descry/config.json`, which no envelope function should
515
+ * do itself) and threaded through so every reply, not only `analyze`'s,
516
+ * carries both the prose (`note`, folded into `disclosures`) and the
517
+ * machine-readable flag (`AnswerEnvelope.configStale`). Optional so every
518
+ * direct call in a test — none of which has a session's on-disk config to
519
+ * check against — keeps compiling and defaults to "not stale".
520
+ */
521
+ readonly configDrift?: {
522
+ readonly stale: boolean;
523
+ readonly note: string | undefined;
524
+ };
525
+ /**
526
+ * Arguments a redeeming `confirmToken` call supplied that conflicted with the ones frozen when
527
+ * the token was minted, and so were not used (`action-handshake.ts`). Threaded the same way
528
+ * `configDrift` is — computed by `server.ts`, which is the only caller that knows a handshake
529
+ * happened — and folded into `disclosures` here so rule 7's label reaches the caller rather
530
+ * than living only in a tool description they did not read. Absent or empty on every other
531
+ * path, including the two correct redemption shapes (token alone, or arguments re-sent
532
+ * unchanged), which discarded nothing and must therefore say nothing.
533
+ */
534
+ readonly discardedArgs?: readonly string[];
535
+ }
536
+ export declare function renderAnswer<T>(tool: string, answer: ToolAnswer<T>, options: RenderOptions): CallToolResult;
537
+ /**
538
+ * A malformed call the server cannot even attribute to one tool — the RPC
539
+ * named no string tool, or named a tool that does not exist in the registry.
540
+ *
541
+ * Returned as a tool result with `isError`, not as a JSON-RPC error, which is
542
+ * what the MCP spec asks for: protocol errors are for malformed protocol, tool
543
+ * errors are for tools, and an agent can act on the second only if it arrives as
544
+ * content it can read.
545
+ *
546
+ * Deliberately outside the five-state envelope, and narrowly so: there is no
547
+ * resolved `ToolDefinition` here to draw `toolVersion`/`class`/`tier` from, so
548
+ * no real envelope can be built — inventing placeholder values for them would
549
+ * be worse than the bare shape. Once a tool *is* identified, a bad argument
550
+ * against it is `renderRefusedInput`'s case, not this one — see that
551
+ * function's doc for why the two are different claims.
552
+ */
553
+ export declare function renderToolError(tool: string, message: string): CallToolResult;
554
+ /**
555
+ * `state: "refused"` — the call named a real, resolved tool, but its input
556
+ * was wrong, so the tool never ran (`ToolInputError`, thrown by a tool's own
557
+ * argument reading, or by the dispatcher's own shape check on `arguments`
558
+ * once a tool is known).
559
+ *
560
+ * This used to fall through to `renderToolError`'s bare `{tool, status,
561
+ * message}` shape — measured as a real defect (a live `observe_runtime` call
562
+ * with a malformed `profile` field returned that bare shape instead of an
563
+ * envelope), because unlike the two cases `renderToolError` still covers, a
564
+ * `ToolDefinition` *is* available here: `toolVersion`, `class` and `tier` are
565
+ * all real, so a real envelope can be built rather than invented. "The tool
566
+ * was never run because its input was wrong" is a fact about this call, not
567
+ * about the code being examined — exactly what `state: "refused"` already
568
+ * means everywhere else in this file, so it is rendered the same way rather
569
+ * than through a second, parallel shape.
570
+ *
571
+ * `data` is always `null` (§2.2): nothing ran, so there is nothing to stamp.
572
+ * `isError` stays `true` for the same reason `renderFailed`/`renderTimedOut`
573
+ * set it — a generic client that only reads the transport-level signal still
574
+ * sees a failure; an AI-layer-aware caller additionally gets the real
575
+ * `state`/`disclosures`/`reportCategory` to reason about.
576
+ */
577
+ export declare function renderRefusedInput(tool: string, message: string, options: RenderOptions): CallToolResult;
578
+ /**
579
+ * `state: "failed"` — §1.1: "promoted from a transport error to a result."
580
+ *
581
+ * An unexpected/internal error, not a bad argument (`renderToolError` still
582
+ * handles those). `data` is always `null` here (§2.2): the tool does not know
583
+ * what happened, and anything it returned would be a guess about its own
584
+ * fault. `isError` stays `true` so a generic MCP client that only reads the
585
+ * transport-level signal still treats this as a failure; an AI-layer-aware
586
+ * caller additionally gets `state: "failed"` in `structuredContent` to reason
587
+ * about rather than a bare `{tool, status, message}` shape.
588
+ *
589
+ * `headline` is optional and exists for the *explained* half of "failed": a
590
+ * `ConfigError` (and any sibling raised specifically to be read, not merely
591
+ * caught) already carries a full written reason, and burying that behind a
592
+ * generic "X failed." while the real sentence sits only in `disclosures` is
593
+ * the bug 13.3.5 names — a caller reading just the headline learns nothing.
594
+ * An unexplained internal fault has no such sentence to offer, so it keeps
595
+ * the opaque default.
596
+ */
597
+ export declare function renderFailed(tool: string, message: string, options: RenderOptions, headline?: string): CallToolResult;
598
+ /**
599
+ * The one legitimate producer of a pending-handshake payload — §7's mint call.
600
+ *
601
+ * `class == "action"` returning anything other than this shape on an
602
+ * unconfirmed first call is invariant 4 (§2.1): "throw." This function is
603
+ * where that shape is produced, so the throw lives at the one call site that
604
+ * builds anything else for an action tool's first call — `server.ts`'s
605
+ * dispatch loop calls this and only this when `resolveActionDispatch` returns
606
+ * `{kind: "handshake"}`, never `tool.run`.
607
+ *
608
+ * `state: "ok"` deliberately: a mint is not a refusal, a failure or an empty
609
+ * result — it is a successful "here is what I would do", and the *pending*
610
+ * flag inside `data` is what tells a caller nothing was performed yet.
611
+ */
612
+ export declare function renderHandshake(tool: string, token: string, willDo: string, options: RenderOptions): CallToolResult;
613
+ /**
614
+ * `state: "timed_out"` — the call ran out of its declared budget.
615
+ *
616
+ * §6: "not a silent truncation and never a `failed`". `data` is `null` here
617
+ * because none of the registered tools currently produce genuine partial
618
+ * results mid-run (none checks `ctx.signal` internally yet — a disclosed gap,
619
+ * not a silent one, named in the returned disclosure); the envelope shape
620
+ * supports a populated partial `data` the day a tool does.
621
+ */
622
+ export declare function renderTimedOut(tool: string, options: RenderOptions): CallToolResult;
623
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}