@descryy/mcp 0.11.3 → 0.11.5

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 (441) hide show
  1. package/package.json +20 -20
  2. package/dist/action-handshake.d.ts +0 -38
  3. package/dist/action-handshake.d.ts.map +0 -1
  4. package/dist/action-handshake.js +0 -127
  5. package/dist/action-handshake.js.map +0 -1
  6. package/dist/bin/descry-mcp.d.ts +0 -7
  7. package/dist/bin/descry-mcp.d.ts.map +0 -1
  8. package/dist/bin/descry-mcp.js +0 -72
  9. package/dist/bin/descry-mcp.js.map +0 -1
  10. package/dist/browser/auth.d.ts +0 -84
  11. package/dist/browser/auth.d.ts.map +0 -1
  12. package/dist/browser/auth.js +0 -233
  13. package/dist/browser/auth.js.map +0 -1
  14. package/dist/browser/capability-probe.d.ts +0 -109
  15. package/dist/browser/capability-probe.d.ts.map +0 -1
  16. package/dist/browser/capability-probe.js +0 -201
  17. package/dist/browser/capability-probe.js.map +0 -1
  18. package/dist/browser/driver.d.ts +0 -570
  19. package/dist/browser/driver.d.ts.map +0 -1
  20. package/dist/browser/driver.js +0 -116
  21. package/dist/browser/driver.js.map +0 -1
  22. package/dist/browser/evidence.d.ts +0 -28
  23. package/dist/browser/evidence.d.ts.map +0 -1
  24. package/dist/browser/evidence.js +0 -82
  25. package/dist/browser/evidence.js.map +0 -1
  26. package/dist/browser/fake-driver.d.ts +0 -116
  27. package/dist/browser/fake-driver.d.ts.map +0 -1
  28. package/dist/browser/fake-driver.js +0 -416
  29. package/dist/browser/fake-driver.js.map +0 -1
  30. package/dist/browser/fault-attribution.d.ts +0 -178
  31. package/dist/browser/fault-attribution.d.ts.map +0 -1
  32. package/dist/browser/fault-attribution.js +0 -266
  33. package/dist/browser/fault-attribution.js.map +0 -1
  34. package/dist/browser/graph-write.d.ts +0 -45
  35. package/dist/browser/graph-write.d.ts.map +0 -1
  36. package/dist/browser/graph-write.js +0 -103
  37. package/dist/browser/graph-write.js.map +0 -1
  38. package/dist/browser/identity-graph-write.d.ts +0 -55
  39. package/dist/browser/identity-graph-write.d.ts.map +0 -1
  40. package/dist/browser/identity-graph-write.js +0 -45
  41. package/dist/browser/identity-graph-write.js.map +0 -1
  42. package/dist/browser/page-probe.d.ts +0 -81
  43. package/dist/browser/page-probe.d.ts.map +0 -1
  44. package/dist/browser/page-probe.js +0 -202
  45. package/dist/browser/page-probe.js.map +0 -1
  46. package/dist/browser/playwright-driver.d.ts +0 -114
  47. package/dist/browser/playwright-driver.d.ts.map +0 -1
  48. package/dist/browser/playwright-driver.js +0 -1479
  49. package/dist/browser/playwright-driver.js.map +0 -1
  50. package/dist/browser/provider.d.ts +0 -26
  51. package/dist/browser/provider.d.ts.map +0 -1
  52. package/dist/browser/provider.js +0 -14
  53. package/dist/browser/provider.js.map +0 -1
  54. package/dist/browser/reach-recording-session.d.ts +0 -44
  55. package/dist/browser/reach-recording-session.d.ts.map +0 -1
  56. package/dist/browser/reach-recording-session.js +0 -143
  57. package/dist/browser/reach-recording-session.js.map +0 -1
  58. package/dist/browser/reachability.d.ts +0 -168
  59. package/dist/browser/reachability.d.ts.map +0 -1
  60. package/dist/browser/reachability.js +0 -294
  61. package/dist/browser/reachability.js.map +0 -1
  62. package/dist/browser/registry.d.ts +0 -126
  63. package/dist/browser/registry.d.ts.map +0 -1
  64. package/dist/browser/registry.js +0 -177
  65. package/dist/browser/registry.js.map +0 -1
  66. package/dist/browser/scenario-provenance.d.ts +0 -23
  67. package/dist/browser/scenario-provenance.d.ts.map +0 -1
  68. package/dist/browser/scenario-provenance.js +0 -73
  69. package/dist/browser/scenario-provenance.js.map +0 -1
  70. package/dist/browser/scenario-resolve.d.ts +0 -28
  71. package/dist/browser/scenario-resolve.d.ts.map +0 -1
  72. package/dist/browser/scenario-resolve.js +0 -96
  73. package/dist/browser/scenario-resolve.js.map +0 -1
  74. package/dist/browser/scenario-runner.d.ts +0 -72
  75. package/dist/browser/scenario-runner.d.ts.map +0 -1
  76. package/dist/browser/scenario-runner.js +0 -353
  77. package/dist/browser/scenario-runner.js.map +0 -1
  78. package/dist/browser/stack-parser.d.ts +0 -19
  79. package/dist/browser/stack-parser.d.ts.map +0 -1
  80. package/dist/browser/stack-parser.js +0 -85
  81. package/dist/browser/stack-parser.js.map +0 -1
  82. package/dist/browser/tool-support.d.ts +0 -71
  83. package/dist/browser/tool-support.d.ts.map +0 -1
  84. package/dist/browser/tool-support.js +0 -216
  85. package/dist/browser/tool-support.js.map +0 -1
  86. package/dist/browser/url-scheme.d.ts +0 -14
  87. package/dist/browser/url-scheme.d.ts.map +0 -1
  88. package/dist/browser/url-scheme.js +0 -38
  89. package/dist/browser/url-scheme.js.map +0 -1
  90. package/dist/browser/wait-target.d.ts +0 -37
  91. package/dist/browser/wait-target.d.ts.map +0 -1
  92. package/dist/browser/wait-target.js +0 -54
  93. package/dist/browser/wait-target.js.map +0 -1
  94. package/dist/cancellation.d.ts +0 -20
  95. package/dist/cancellation.d.ts.map +0 -1
  96. package/dist/cancellation.js +0 -41
  97. package/dist/cancellation.js.map +0 -1
  98. package/dist/capped.d.ts +0 -17
  99. package/dist/capped.d.ts.map +0 -1
  100. package/dist/capped.js +0 -15
  101. package/dist/capped.js.map +0 -1
  102. package/dist/credential-store.d.ts +0 -22
  103. package/dist/credential-store.d.ts.map +0 -1
  104. package/dist/credential-store.js +0 -33
  105. package/dist/credential-store.js.map +0 -1
  106. package/dist/disclosure-ledger.d.ts +0 -14
  107. package/dist/disclosure-ledger.d.ts.map +0 -1
  108. package/dist/disclosure-ledger.js +0 -18
  109. package/dist/disclosure-ledger.js.map +0 -1
  110. package/dist/evidence/observed-route-evidence.d.ts +0 -25
  111. package/dist/evidence/observed-route-evidence.d.ts.map +0 -1
  112. package/dist/evidence/observed-route-evidence.js +0 -76
  113. package/dist/evidence/observed-route-evidence.js.map +0 -1
  114. package/dist/heap.d.ts +0 -61
  115. package/dist/heap.d.ts.map +0 -1
  116. package/dist/heap.js +0 -82
  117. package/dist/heap.js.map +0 -1
  118. package/dist/heartbeat.d.ts +0 -46
  119. package/dist/heartbeat.d.ts.map +0 -1
  120. package/dist/heartbeat.js +0 -66
  121. package/dist/heartbeat.js.map +0 -1
  122. package/dist/index.d.ts +0 -32
  123. package/dist/index.d.ts.map +0 -1
  124. package/dist/index.js +0 -19
  125. package/dist/index.js.map +0 -1
  126. package/dist/module-trust.d.ts +0 -37
  127. package/dist/module-trust.d.ts.map +0 -1
  128. package/dist/module-trust.js +0 -77
  129. package/dist/module-trust.js.map +0 -1
  130. package/dist/path-confinement.d.ts +0 -31
  131. package/dist/path-confinement.d.ts.map +0 -1
  132. package/dist/path-confinement.js +0 -44
  133. package/dist/path-confinement.js.map +0 -1
  134. package/dist/planner/predict-then-propose.d.ts +0 -134
  135. package/dist/planner/predict-then-propose.d.ts.map +0 -1
  136. package/dist/planner/predict-then-propose.js +0 -138
  137. package/dist/planner/predict-then-propose.js.map +0 -1
  138. package/dist/planner/propose-journey.d.ts +0 -75
  139. package/dist/planner/propose-journey.d.ts.map +0 -1
  140. package/dist/planner/propose-journey.js +0 -96
  141. package/dist/planner/propose-journey.js.map +0 -1
  142. package/dist/protocol.d.ts +0 -57
  143. package/dist/protocol.d.ts.map +0 -1
  144. package/dist/protocol.js +0 -90
  145. package/dist/protocol.js.map +0 -1
  146. package/dist/registry.d.ts +0 -103
  147. package/dist/registry.d.ts.map +0 -1
  148. package/dist/registry.js +0 -319
  149. package/dist/registry.js.map +0 -1
  150. package/dist/render.d.ts +0 -580
  151. package/dist/render.d.ts.map +0 -1
  152. package/dist/render.js +0 -867
  153. package/dist/render.js.map +0 -1
  154. package/dist/runtime-registry.d.ts +0 -22
  155. package/dist/runtime-registry.d.ts.map +0 -1
  156. package/dist/runtime-registry.js +0 -142
  157. package/dist/runtime-registry.js.map +0 -1
  158. package/dist/sandbox-defaults.d.ts +0 -41
  159. package/dist/sandbox-defaults.d.ts.map +0 -1
  160. package/dist/sandbox-defaults.js +0 -14
  161. package/dist/sandbox-defaults.js.map +0 -1
  162. package/dist/scenarios/browser-run-plan-projection.d.ts +0 -161
  163. package/dist/scenarios/browser-run-plan-projection.d.ts.map +0 -1
  164. package/dist/scenarios/browser-run-plan-projection.js +0 -264
  165. package/dist/scenarios/browser-run-plan-projection.js.map +0 -1
  166. package/dist/scenarios/credential-ref.d.ts +0 -102
  167. package/dist/scenarios/credential-ref.d.ts.map +0 -1
  168. package/dist/scenarios/credential-ref.js +0 -148
  169. package/dist/scenarios/credential-ref.js.map +0 -1
  170. package/dist/scenarios/index.d.ts +0 -7
  171. package/dist/scenarios/index.d.ts.map +0 -1
  172. package/dist/scenarios/index.js +0 -7
  173. package/dist/scenarios/index.js.map +0 -1
  174. package/dist/scenarios/parse.d.ts +0 -18
  175. package/dist/scenarios/parse.d.ts.map +0 -1
  176. package/dist/scenarios/parse.js +0 -212
  177. package/dist/scenarios/parse.js.map +0 -1
  178. package/dist/scenarios/scenario.d.ts +0 -93
  179. package/dist/scenarios/scenario.d.ts.map +0 -1
  180. package/dist/scenarios/scenario.js +0 -27
  181. package/dist/scenarios/scenario.js.map +0 -1
  182. package/dist/scenarios/secret-ref.d.ts +0 -86
  183. package/dist/scenarios/secret-ref.d.ts.map +0 -1
  184. package/dist/scenarios/secret-ref.js +0 -125
  185. package/dist/scenarios/secret-ref.js.map +0 -1
  186. package/dist/scenarios/storage.d.ts +0 -21
  187. package/dist/scenarios/storage.d.ts.map +0 -1
  188. package/dist/scenarios/storage.js +0 -103
  189. package/dist/scenarios/storage.js.map +0 -1
  190. package/dist/server.d.ts +0 -61
  191. package/dist/server.d.ts.map +0 -1
  192. package/dist/server.js +0 -541
  193. package/dist/server.js.map +0 -1
  194. package/dist/session.d.ts +0 -243
  195. package/dist/session.d.ts.map +0 -1
  196. package/dist/session.js +0 -602
  197. package/dist/session.js.map +0 -1
  198. package/dist/tools/alias-kit.d.ts +0 -29
  199. package/dist/tools/alias-kit.d.ts.map +0 -1
  200. package/dist/tools/alias-kit.js +0 -21
  201. package/dist/tools/alias-kit.js.map +0 -1
  202. package/dist/tools/aliases.d.ts +0 -42
  203. package/dist/tools/aliases.d.ts.map +0 -1
  204. package/dist/tools/aliases.js +0 -52
  205. package/dist/tools/aliases.js.map +0 -1
  206. package/dist/tools/analyze-workspace.d.ts +0 -52
  207. package/dist/tools/analyze-workspace.d.ts.map +0 -1
  208. package/dist/tools/analyze-workspace.js +0 -207
  209. package/dist/tools/analyze-workspace.js.map +0 -1
  210. package/dist/tools/analyze.d.ts +0 -163
  211. package/dist/tools/analyze.d.ts.map +0 -1
  212. package/dist/tools/analyze.js +0 -724
  213. package/dist/tools/analyze.js.map +0 -1
  214. package/dist/tools/browser-click.d.ts +0 -18
  215. package/dist/tools/browser-click.d.ts.map +0 -1
  216. package/dist/tools/browser-click.js +0 -110
  217. package/dist/tools/browser-click.js.map +0 -1
  218. package/dist/tools/browser-close-session.d.ts +0 -39
  219. package/dist/tools/browser-close-session.d.ts.map +0 -1
  220. package/dist/tools/browser-close-session.js +0 -120
  221. package/dist/tools/browser-close-session.js.map +0 -1
  222. package/dist/tools/browser-fill.d.ts +0 -18
  223. package/dist/tools/browser-fill.d.ts.map +0 -1
  224. package/dist/tools/browser-fill.js +0 -117
  225. package/dist/tools/browser-fill.js.map +0 -1
  226. package/dist/tools/browser-navigate.d.ts +0 -15
  227. package/dist/tools/browser-navigate.d.ts.map +0 -1
  228. package/dist/tools/browser-navigate.js +0 -104
  229. package/dist/tools/browser-navigate.js.map +0 -1
  230. package/dist/tools/browser-read.d.ts +0 -33
  231. package/dist/tools/browser-read.d.ts.map +0 -1
  232. package/dist/tools/browser-read.js +0 -113
  233. package/dist/tools/browser-read.js.map +0 -1
  234. package/dist/tools/browser-run-scenario.d.ts +0 -28
  235. package/dist/tools/browser-run-scenario.d.ts.map +0 -1
  236. package/dist/tools/browser-run-scenario.js +0 -206
  237. package/dist/tools/browser-run-scenario.js.map +0 -1
  238. package/dist/tools/browser-save-scenario.d.ts +0 -19
  239. package/dist/tools/browser-save-scenario.d.ts.map +0 -1
  240. package/dist/tools/browser-save-scenario.js +0 -447
  241. package/dist/tools/browser-save-scenario.js.map +0 -1
  242. package/dist/tools/browser-select.d.ts +0 -20
  243. package/dist/tools/browser-select.d.ts.map +0 -1
  244. package/dist/tools/browser-select.js +0 -120
  245. package/dist/tools/browser-select.js.map +0 -1
  246. package/dist/tools/browser-snapshot.d.ts +0 -46
  247. package/dist/tools/browser-snapshot.d.ts.map +0 -1
  248. package/dist/tools/browser-snapshot.js +0 -127
  249. package/dist/tools/browser-snapshot.js.map +0 -1
  250. package/dist/tools/browser-start-session.d.ts +0 -24
  251. package/dist/tools/browser-start-session.d.ts.map +0 -1
  252. package/dist/tools/browser-start-session.js +0 -622
  253. package/dist/tools/browser-start-session.js.map +0 -1
  254. package/dist/tools/browser-submit.d.ts +0 -18
  255. package/dist/tools/browser-submit.d.ts.map +0 -1
  256. package/dist/tools/browser-submit.js +0 -106
  257. package/dist/tools/browser-submit.js.map +0 -1
  258. package/dist/tools/browser-type.d.ts +0 -18
  259. package/dist/tools/browser-type.d.ts.map +0 -1
  260. package/dist/tools/browser-type.js +0 -115
  261. package/dist/tools/browser-type.js.map +0 -1
  262. package/dist/tools/browser-wait-for.d.ts +0 -45
  263. package/dist/tools/browser-wait-for.d.ts.map +0 -1
  264. package/dist/tools/browser-wait-for.js +0 -150
  265. package/dist/tools/browser-wait-for.js.map +0 -1
  266. package/dist/tools/browser.d.ts +0 -69
  267. package/dist/tools/browser.d.ts.map +0 -1
  268. package/dist/tools/browser.js +0 -386
  269. package/dist/tools/browser.js.map +0 -1
  270. package/dist/tools/chain.d.ts +0 -41
  271. package/dist/tools/chain.d.ts.map +0 -1
  272. package/dist/tools/chain.js +0 -105
  273. package/dist/tools/chain.js.map +0 -1
  274. package/dist/tools/change-scope.d.ts +0 -25
  275. package/dist/tools/change-scope.d.ts.map +0 -1
  276. package/dist/tools/change-scope.js +0 -110
  277. package/dist/tools/change-scope.js.map +0 -1
  278. package/dist/tools/code-context.d.ts +0 -83
  279. package/dist/tools/code-context.d.ts.map +0 -1
  280. package/dist/tools/code-context.js +0 -416
  281. package/dist/tools/code-context.js.map +0 -1
  282. package/dist/tools/contracts.d.ts +0 -74
  283. package/dist/tools/contracts.d.ts.map +0 -1
  284. package/dist/tools/contracts.js +0 -196
  285. package/dist/tools/contracts.js.map +0 -1
  286. package/dist/tools/cross-pr.d.ts +0 -178
  287. package/dist/tools/cross-pr.d.ts.map +0 -1
  288. package/dist/tools/cross-pr.js +0 -321
  289. package/dist/tools/cross-pr.js.map +0 -1
  290. package/dist/tools/disclosure.d.ts +0 -75
  291. package/dist/tools/disclosure.d.ts.map +0 -1
  292. package/dist/tools/disclosure.js +0 -288
  293. package/dist/tools/disclosure.js.map +0 -1
  294. package/dist/tools/draw-conclusion.d.ts +0 -55
  295. package/dist/tools/draw-conclusion.d.ts.map +0 -1
  296. package/dist/tools/draw-conclusion.js +0 -259
  297. package/dist/tools/draw-conclusion.js.map +0 -1
  298. package/dist/tools/git-context.d.ts +0 -39
  299. package/dist/tools/git-context.d.ts.map +0 -1
  300. package/dist/tools/git-context.js +0 -364
  301. package/dist/tools/git-context.js.map +0 -1
  302. package/dist/tools/git-diff.d.ts +0 -45
  303. package/dist/tools/git-diff.d.ts.map +0 -1
  304. package/dist/tools/git-diff.js +0 -338
  305. package/dist/tools/git-diff.js.map +0 -1
  306. package/dist/tools/git-history.d.ts +0 -16
  307. package/dist/tools/git-history.d.ts.map +0 -1
  308. package/dist/tools/git-history.js +0 -86
  309. package/dist/tools/git-history.js.map +0 -1
  310. package/dist/tools/history.d.ts +0 -34
  311. package/dist/tools/history.d.ts.map +0 -1
  312. package/dist/tools/history.js +0 -121
  313. package/dist/tools/history.js.map +0 -1
  314. package/dist/tools/impact.d.ts +0 -46
  315. package/dist/tools/impact.d.ts.map +0 -1
  316. package/dist/tools/impact.js +0 -225
  317. package/dist/tools/impact.js.map +0 -1
  318. package/dist/tools/index.d.ts +0 -59
  319. package/dist/tools/index.d.ts.map +0 -1
  320. package/dist/tools/index.js +0 -70
  321. package/dist/tools/index.js.map +0 -1
  322. package/dist/tools/kit.d.ts +0 -165
  323. package/dist/tools/kit.d.ts.map +0 -1
  324. package/dist/tools/kit.js +0 -153
  325. package/dist/tools/kit.js.map +0 -1
  326. package/dist/tools/link-workspace.d.ts +0 -24
  327. package/dist/tools/link-workspace.d.ts.map +0 -1
  328. package/dist/tools/link-workspace.js +0 -131
  329. package/dist/tools/link-workspace.js.map +0 -1
  330. package/dist/tools/lookup.d.ts +0 -19
  331. package/dist/tools/lookup.d.ts.map +0 -1
  332. package/dist/tools/lookup.js +0 -63
  333. package/dist/tools/lookup.js.map +0 -1
  334. package/dist/tools/mark-incident.d.ts +0 -28
  335. package/dist/tools/mark-incident.d.ts.map +0 -1
  336. package/dist/tools/mark-incident.js +0 -188
  337. package/dist/tools/mark-incident.js.map +0 -1
  338. package/dist/tools/merged-browser.d.ts +0 -11
  339. package/dist/tools/merged-browser.d.ts.map +0 -1
  340. package/dist/tools/merged-browser.js +0 -20
  341. package/dist/tools/merged-browser.js.map +0 -1
  342. package/dist/tools/merged-context.d.ts +0 -11
  343. package/dist/tools/merged-context.d.ts.map +0 -1
  344. package/dist/tools/merged-context.js +0 -21
  345. package/dist/tools/merged-context.js.map +0 -1
  346. package/dist/tools/merged-observe.d.ts +0 -13
  347. package/dist/tools/merged-observe.d.ts.map +0 -1
  348. package/dist/tools/merged-observe.js +0 -21
  349. package/dist/tools/merged-observe.js.map +0 -1
  350. package/dist/tools/merged-workspace.d.ts +0 -14
  351. package/dist/tools/merged-workspace.d.ts.map +0 -1
  352. package/dist/tools/merged-workspace.js +0 -21
  353. package/dist/tools/merged-workspace.js.map +0 -1
  354. package/dist/tools/observe-runtime.d.ts +0 -250
  355. package/dist/tools/observe-runtime.d.ts.map +0 -1
  356. package/dist/tools/observe-runtime.js +0 -1753
  357. package/dist/tools/observe-runtime.js.map +0 -1
  358. package/dist/tools/observe-tests.d.ts +0 -57
  359. package/dist/tools/observe-tests.d.ts.map +0 -1
  360. package/dist/tools/observe-tests.js +0 -368
  361. package/dist/tools/observe-tests.js.map +0 -1
  362. package/dist/tools/observe.d.ts +0 -28
  363. package/dist/tools/observe.d.ts.map +0 -1
  364. package/dist/tools/observe.js +0 -330
  365. package/dist/tools/observe.js.map +0 -1
  366. package/dist/tools/pr-analysis.d.ts +0 -189
  367. package/dist/tools/pr-analysis.d.ts.map +0 -1
  368. package/dist/tools/pr-analysis.js +0 -299
  369. package/dist/tools/pr-analysis.js.map +0 -1
  370. package/dist/tools/pre-push.d.ts +0 -168
  371. package/dist/tools/pre-push.d.ts.map +0 -1
  372. package/dist/tools/pre-push.js +0 -416
  373. package/dist/tools/pre-push.js.map +0 -1
  374. package/dist/tools/predict-reach.d.ts +0 -57
  375. package/dist/tools/predict-reach.d.ts.map +0 -1
  376. package/dist/tools/predict-reach.js +0 -159
  377. package/dist/tools/predict-reach.js.map +0 -1
  378. package/dist/tools/propagation.d.ts +0 -37
  379. package/dist/tools/propagation.d.ts.map +0 -1
  380. package/dist/tools/propagation.js +0 -162
  381. package/dist/tools/propagation.js.map +0 -1
  382. package/dist/tools/propose-journey.d.ts +0 -16
  383. package/dist/tools/propose-journey.d.ts.map +0 -1
  384. package/dist/tools/propose-journey.js +0 -121
  385. package/dist/tools/propose-journey.js.map +0 -1
  386. package/dist/tools/prove-reach.d.ts +0 -74
  387. package/dist/tools/prove-reach.d.ts.map +0 -1
  388. package/dist/tools/prove-reach.js +0 -286
  389. package/dist/tools/prove-reach.js.map +0 -1
  390. package/dist/tools/questions.d.ts +0 -30
  391. package/dist/tools/questions.d.ts.map +0 -1
  392. package/dist/tools/questions.js +0 -232
  393. package/dist/tools/questions.js.map +0 -1
  394. package/dist/tools/refusal-fetch.d.ts +0 -35
  395. package/dist/tools/refusal-fetch.d.ts.map +0 -1
  396. package/dist/tools/refusal-fetch.js +0 -103
  397. package/dist/tools/refusal-fetch.js.map +0 -1
  398. package/dist/tools/runtime-incident.d.ts +0 -33
  399. package/dist/tools/runtime-incident.d.ts.map +0 -1
  400. package/dist/tools/runtime-incident.js +0 -67
  401. package/dist/tools/runtime-incident.js.map +0 -1
  402. package/dist/tools/runtime-journey-drive.d.ts +0 -102
  403. package/dist/tools/runtime-journey-drive.d.ts.map +0 -1
  404. package/dist/tools/runtime-journey-drive.js +0 -247
  405. package/dist/tools/runtime-journey-drive.js.map +0 -1
  406. package/dist/tools/scope.d.ts +0 -45
  407. package/dist/tools/scope.d.ts.map +0 -1
  408. package/dist/tools/scope.js +0 -186
  409. package/dist/tools/scope.js.map +0 -1
  410. package/dist/tools/similar-incidents.d.ts +0 -43
  411. package/dist/tools/similar-incidents.d.ts.map +0 -1
  412. package/dist/tools/similar-incidents.js +0 -179
  413. package/dist/tools/similar-incidents.js.map +0 -1
  414. package/dist/tools/validate.d.ts +0 -133
  415. package/dist/tools/validate.d.ts.map +0 -1
  416. package/dist/tools/validate.js +0 -442
  417. package/dist/tools/validate.js.map +0 -1
  418. package/dist/tools/verb.d.ts +0 -46
  419. package/dist/tools/verb.d.ts.map +0 -1
  420. package/dist/tools/verb.js +0 -78
  421. package/dist/tools/verb.js.map +0 -1
  422. package/dist/tools/verification-status.d.ts +0 -38
  423. package/dist/tools/verification-status.d.ts.map +0 -1
  424. package/dist/tools/verification-status.js +0 -203
  425. package/dist/tools/verification-status.js.map +0 -1
  426. package/dist/tools/verify-claim.d.ts +0 -29
  427. package/dist/tools/verify-claim.d.ts.map +0 -1
  428. package/dist/tools/verify-claim.js +0 -220
  429. package/dist/tools/verify-claim.js.map +0 -1
  430. package/dist/tools/workspace.d.ts +0 -28
  431. package/dist/tools/workspace.d.ts.map +0 -1
  432. package/dist/tools/workspace.js +0 -101
  433. package/dist/tools/workspace.js.map +0 -1
  434. package/dist/transport.d.ts +0 -32
  435. package/dist/transport.d.ts.map +0 -1
  436. package/dist/transport.js +0 -85
  437. package/dist/transport.js.map +0 -1
  438. package/dist/workspace-index.d.ts +0 -164
  439. package/dist/workspace-index.d.ts.map +0 -1
  440. package/dist/workspace-index.js +0 -381
  441. package/dist/workspace-index.js.map +0 -1
package/dist/session.js DELETED
@@ -1,602 +0,0 @@
1
- /**
2
- * One repo, one graph, one process — owns the SQLite handle, config, sources; tools
3
- * own nothing. `.descry/config.json` is optional, defaults to local-first, except the
4
- * source list (this repo names no adapter, `registry.ts`): unconfigured sessions can
5
- * query, not build. Graph opens lazily so a missing one fails as a tool result, not a crash. */
6
- import { existsSync } from "node:fs";
7
- import { mkdir, readFile, writeFile } from "node:fs/promises";
8
- import { basename, isAbsolute, join, resolve } from "node:path";
9
- import { isConfirmedFactScope } from "@descryy/ir";
10
- import { createStoreProvider, gitHead, isGitRepository, NodeSqliteDriver, openStore, rebuildStaleGraph, } from "@descryy/core";
11
- import { BROWSER_BACKEND_NOT_INSTALLED } from "./browser/provider.js";
12
- import { createBrowserSessionRegistry } from "./browser/registry.js";
13
- import { normaliseSpec } from "./registry.js";
14
- export const CONFIG_RELATIVE_PATH = join(".descry", "config.json");
15
- export const DEFAULT_GRAPH_RELATIVE_PATH = join(".descry", "graph.db");
16
- function parseConfirmedIncidents(raw, configPath) {
17
- if (raw === undefined)
18
- return [];
19
- if (!Array.isArray(raw)) {
20
- throw new ConfigError(`${configPath}: "confirmedIncidents" must be an array`);
21
- }
22
- return raw.map((entry, index) => {
23
- const e = entry;
24
- for (const key of ["repo", "summary", "confirmedBy", "confirmedAt"]) {
25
- if (typeof e[key] !== "string" || e[key] === "") {
26
- throw new ConfigError(`${configPath}: confirmedIncidents[${index}].${key} must be a non-empty string`);
27
- }
28
- }
29
- const files = e["files"];
30
- if (!Array.isArray(files) || files.length === 0 || files.some((f) => typeof f !== "string" || f === "")) {
31
- throw new ConfigError(`${configPath}: confirmedIncidents[${index}].files must be a non-empty array of paths — ` +
32
- "an incident naming no file has nothing to attach it to");
33
- }
34
- for (const key of ["errorText", "fixedAtCommit", "observedInRun"]) {
35
- if (e[key] !== undefined && (typeof e[key] !== "string" || e[key] === "")) {
36
- throw new ConfigError(`${configPath}: confirmedIncidents[${index}].${key} must be a non-empty string when present`);
37
- }
38
- }
39
- const occurrences = e["occurrences"];
40
- if (occurrences !== undefined &&
41
- (!Array.isArray(occurrences) ||
42
- occurrences.length === 0 ||
43
- occurrences.some((o) => typeof o !== "string" || o === ""))) {
44
- throw new ConfigError(`${configPath}: confirmedIncidents[${index}].occurrences must be a non-empty array of timestamps when present`);
45
- }
46
- return {
47
- repo: e["repo"],
48
- summary: e["summary"],
49
- files: files,
50
- ...(e["errorText"] === undefined ? {} : { errorText: e["errorText"] }),
51
- ...(e["fixedAtCommit"] === undefined ? {} : { fixedAtCommit: e["fixedAtCommit"] }),
52
- ...(e["observedInRun"] === undefined ? {} : { observedInRun: e["observedInRun"] }),
53
- confirmedBy: e["confirmedBy"],
54
- confirmedAt: e["confirmedAt"],
55
- ...(occurrences === undefined ? {} : { occurrences: occurrences }),
56
- };
57
- });
58
- }
59
- function parseConfirmedFacts(raw, configPath) {
60
- if (raw === undefined)
61
- return [];
62
- if (!Array.isArray(raw)) {
63
- throw new ConfigError(`${configPath}: "confirmedFacts" must be an array`);
64
- }
65
- return raw.map((entry, index) => {
66
- const e = entry;
67
- for (const key of ["repo", "blockedBy", "value", "confirmedBy", "confirmedAt"]) {
68
- if (typeof e[key] !== "string" || e[key] === "") {
69
- throw new ConfigError(`${configPath}: confirmedFacts[${index}].${key} must be a non-empty string`);
70
- }
71
- }
72
- for (const key of ["environment", "confirmedAtCommit", "workspace"]) {
73
- if (e[key] !== undefined && (typeof e[key] !== "string" || e[key] === "")) {
74
- throw new ConfigError(`${configPath}: confirmedFacts[${index}].${key} must be a non-empty string when present`);
75
- }
76
- }
77
- if (e["scope"] !== undefined && !isConfirmedFactScope(e["scope"])) {
78
- throw new ConfigError(`${configPath}: confirmedFacts[${index}].scope must be "repo" or "workspace" when present`);
79
- }
80
- return {
81
- repo: e["repo"],
82
- blockedBy: e["blockedBy"],
83
- value: e["value"],
84
- ...(e["environment"] === undefined ? {} : { environment: e["environment"] }),
85
- confirmedBy: e["confirmedBy"],
86
- confirmedAt: e["confirmedAt"],
87
- // Round-tripped rather than dropped — `confirmedAtCommit` was written by
88
- // `writeConfirmedFact`; discarding it on reload would silence the staleness disclosure.
89
- ...(e["confirmedAtCommit"] === undefined ? {} : { confirmedAtCommit: e["confirmedAtCommit"] }),
90
- ...(e["scope"] === undefined ? {} : { scope: e["scope"] }),
91
- ...(e["workspace"] === undefined ? {} : { workspace: e["workspace"] }),
92
- };
93
- });
94
- }
95
- /** `(repo, blockedBy, environment)` — `undefined` environment is its own value, never a wildcard. */
96
- function sameFactKey(a, b) {
97
- return a.repo === b.repo && a.blockedBy === b.blockedBy && a.environment === b.environment;
98
- }
99
- export class ConfigError extends Error {
100
- constructor(message) {
101
- super(message);
102
- this.name = "ConfigError";
103
- }
104
- }
105
- export async function loadConfig(repoPath) {
106
- const configPath = join(repoPath, CONFIG_RELATIVE_PATH);
107
- let raw = {};
108
- let found = null;
109
- try {
110
- raw = JSON.parse(await readFile(configPath, "utf8"));
111
- found = configPath;
112
- }
113
- catch (error) {
114
- const code = error.code;
115
- if (code !== "ENOENT") {
116
- // A config that exists and can't be parsed is refused, not defaulted past —
117
- // silently falling back would run the session under settings the user thinks they overrode.
118
- throw new ConfigError(`${configPath} exists but could not be read: ${error.message}`);
119
- }
120
- }
121
- if (raw.sources !== undefined && !Array.isArray(raw.sources)) {
122
- throw new ConfigError(`${configPath}: "sources" must be an array`);
123
- }
124
- const sources = (raw.sources ?? []).map((entry, index) => {
125
- if (typeof entry === "string")
126
- return normaliseSpec(entry);
127
- if (typeof entry === "object" && entry !== null && typeof entry.module === "string") {
128
- return entry;
129
- }
130
- throw new ConfigError(`${configPath}: sources[${index}] must be a module specifier or an object with a "module" field`);
131
- });
132
- const workspace = typeof raw.workspace === "string" && raw.workspace !== "" ? raw.workspace : undefined;
133
- const workspaceRepos = parseWorkspaceRepos(raw.workspaceRepos, configPath);
134
- return {
135
- // Directory name is a defensible default and poor identity — changes on clone,
136
- // and every repo-scoped node id changes with it. Disclosed in `analyze`, not
137
- // discovered when two machines produce different graphs.
138
- repo: typeof raw.repo === "string" && raw.repo !== "" ? raw.repo : basename(resolve(repoPath)),
139
- workspace,
140
- graph: typeof raw.graph === "string" && raw.graph !== "" ? raw.graph : DEFAULT_GRAPH_RELATIVE_PATH,
141
- sources,
142
- confirmedFacts: parseConfirmedFacts(raw.confirmedFacts, configPath),
143
- confirmedIncidents: parseConfirmedIncidents(raw.confirmedIncidents, configPath),
144
- workspaceRepos,
145
- linkedFacts: await readLinkedFacts(repoPath, workspace, workspaceRepos),
146
- configPath: found,
147
- };
148
- }
149
- /**
150
- * Fields compared for staleness (13.3.16 / N2). Deliberately excludes `linkedFacts`:
151
- * it is derived from sibling repos' own files at load time, not something a local
152
- * edit to *this* repo's config changes, and diffing it here would double-count
153
- * `workspaceRepos` drift under a second name.
154
- */
155
- const DRIFT_FIELDS = [
156
- "repo",
157
- "workspace",
158
- "graph",
159
- "sources",
160
- "confirmedFacts",
161
- "confirmedIncidents",
162
- "workspaceRepos",
163
- "configPath",
164
- ];
165
- function driftedKeys(onDisk, loaded) {
166
- return DRIFT_FIELDS.filter((key) => JSON.stringify(onDisk[key]) !== JSON.stringify(loaded[key]));
167
- }
168
- /**
169
- * 13.3.16 (N2): a count match on `sources` is not a content match — two sessions
170
- * swapping one adapter for another, or changing an adapter's options, leave
171
- * `sources.length` unchanged, which is exactly the gap that let a concurrent edit
172
- * go undetected and left a graph stuck at R0 with no disclosure of why. Every
173
- * field is compared by value, and the note names which ones actually changed —
174
- * `graph`, `confirmedFacts`/`confirmedIncidents` and `workspaceRepos` were
175
- * previously not compared at all.
176
- */
177
- export function configDriftNote(onDisk, loaded) {
178
- if (onDisk === null)
179
- return undefined;
180
- const changed = driftedKeys(onDisk, loaded);
181
- if (changed.length === 0)
182
- return undefined;
183
- return ("The on-disk .descry/config.json no longer matches what this server loaded at startup " +
184
- `(changed: ${changed.join(", ")}). Configuration is read once per process, not on every call ` +
185
- "(session.ts) — this run is still using the configuration this server started with, not the " +
186
- "current file. Restart the MCP server for on-disk changes to take effect; the notes below " +
187
- "describe the stale, running configuration, not what is actually on disk now.");
188
- }
189
- /**
190
- * 13.3.16 (N2) steps 2-3: called once per tool call from `server.ts`, not only from
191
- * `analyze`, so every reply discloses a stale session rather than the one tool that
192
- * happened to re-read the config. A config that cannot even be read right now
193
- * (deleted mid-session, or edited into something `loadConfig` refuses) is itself
194
- * drift and must not read as "no drift" merely because there is nothing to diff
195
- * against — the previous `.catch(() => null)` collapsed that case into silence.
196
- */
197
- export async function checkConfigDrift(session) {
198
- if (!existsSync(session.repoPath))
199
- return { stale: false, note: undefined };
200
- try {
201
- const onDisk = await loadConfig(session.repoPath);
202
- const note = configDriftNote(onDisk, session.config);
203
- return { stale: note !== undefined, note };
204
- }
205
- catch (error) {
206
- const reason = error instanceof Error ? error.message : String(error);
207
- return {
208
- stale: true,
209
- note: `The on-disk .descry/config.json could not be read as of this call (${reason}). This run ` +
210
- "is still using the configuration loaded at startup; whether that configuration still " +
211
- "matches what is on disk now cannot be determined.",
212
- };
213
- }
214
- }
215
- function parseWorkspaceRepos(raw, configPath) {
216
- if (raw === undefined)
217
- return [];
218
- if (!Array.isArray(raw)) {
219
- throw new ConfigError(`${configPath}: "workspaceRepos" must be an array`);
220
- }
221
- return raw.map((entry, index) => {
222
- const e = entry;
223
- for (const key of ["path", "repo"]) {
224
- if (typeof e[key] !== "string" || e[key] === "") {
225
- throw new ConfigError(`${configPath}: workspaceRepos[${index}].${key} must be a non-empty string`);
226
- }
227
- }
228
- return { path: e["path"], repo: e["repo"] };
229
- });
230
- }
231
- /** Workspace-scoped facts from this workspace's *other* repos, one level only (no
232
- * recursive follow of a sibling's own `workspaceRepos`). Every failure here is silent
233
- * by design — a broken/uncloned sibling must not block this session; `questions` discloses it. */
234
- async function readLinkedFacts(repoPath, workspace, repos) {
235
- if (workspace === undefined || repos.length === 0)
236
- return [];
237
- const self = resolve(repoPath);
238
- const out = [];
239
- for (const entry of repos) {
240
- if (resolve(entry.path) === self)
241
- continue;
242
- const path = join(entry.path, CONFIG_RELATIVE_PATH);
243
- let facts;
244
- try {
245
- const raw = JSON.parse(await readFile(path, "utf8"));
246
- facts = parseConfirmedFacts(raw.confirmedFacts, path);
247
- }
248
- catch {
249
- continue;
250
- }
251
- // Checked on the fact itself, not inferred from being found in a linked repo —
252
- // a repo-scoped fact in a linked config still does not cross.
253
- for (const fact of facts) {
254
- if (fact.scope === "workspace" && fact.workspace === workspace)
255
- out.push(fact);
256
- }
257
- }
258
- return out;
259
- }
260
- /** `.descry/config.json`'s writer, paired with `loadConfig`. One writer used by both
261
- * `descry init` and `link_workspace` so they can't drift into writing different
262
- * shapes. Patches `repo`/`workspace` only — other fields survive untouched. */
263
- export async function writeConfig(repoPath, patch) {
264
- const path = join(repoPath, CONFIG_RELATIVE_PATH);
265
- let existing = {};
266
- try {
267
- existing = JSON.parse(await readFile(path, "utf8"));
268
- }
269
- catch (error) {
270
- // An unparseable config is fixed here (start from empty), unlike `loadConfig`
271
- // which refuses — this writer's job is to repair, not run a session. ENOENT
272
- // takes the same path.
273
- void error;
274
- existing = {};
275
- }
276
- const previousWorkspace = typeof existing.workspace === "string" ? existing.workspace : undefined;
277
- const next = { ...existing, repo: patch.repo };
278
- if (patch.workspace !== undefined)
279
- next.workspace = patch.workspace;
280
- await mkdir(join(repoPath, ".descry"), { recursive: true });
281
- await writeFile(path, `${JSON.stringify(next, null, 2)}\n`, "utf8");
282
- return { path, previousWorkspace };
283
- }
284
- /** `workspaceRepos`' writer — one writer per field a shared file owns (see
285
- * `writeConfig`, `writeConfirmedFact`, `writeSources`). Replaces the whole list
286
- * rather than merging: membership is one declaration made at one moment. */
287
- export async function writeWorkspaceRepos(repoPath, repos) {
288
- const path = join(repoPath, CONFIG_RELATIVE_PATH);
289
- let existing = {};
290
- try {
291
- existing = JSON.parse(await readFile(path, "utf8"));
292
- }
293
- catch (error) {
294
- void error;
295
- existing = {};
296
- }
297
- const next = {
298
- ...existing,
299
- workspaceRepos: repos.map((r) => ({ path: r.path, repo: r.repo })),
300
- };
301
- await mkdir(join(repoPath, ".descry"), { recursive: true });
302
- await writeFile(path, `${JSON.stringify(next, null, 2)}\n`, "utf8");
303
- return { path };
304
- }
305
- /** `confirmedFacts`' writer, separate from `writeConfig` (one writer per field). Keyed
306
- * on exact `(repo, blockedBy, environment)` (DEC-223 §3) — undefined environment is its
307
- * own key, not a wildcard. Same key replaces; a different environment adds a new fact. */
308
- export async function writeConfirmedFact(repoPath, fact) {
309
- const path = join(repoPath, CONFIG_RELATIVE_PATH);
310
- let existing = {};
311
- try {
312
- existing = JSON.parse(await readFile(path, "utf8"));
313
- }
314
- catch (error) {
315
- void error;
316
- existing = {};
317
- }
318
- const priorRaw = Array.isArray(existing["confirmedFacts"]) ? existing["confirmedFacts"] : [];
319
- const prior = parseConfirmedFacts(priorRaw, path);
320
- const replaced = prior.find((f) => sameFactKey(f, fact)) ?? null;
321
- const rest = prior.filter((f) => !sameFactKey(f, fact));
322
- const next = { ...existing, confirmedFacts: [...rest, fact] };
323
- await mkdir(join(repoPath, ".descry"), { recursive: true });
324
- await writeFile(path, `${JSON.stringify(next, null, 2)}\n`, "utf8");
325
- return { path, replaced };
326
- }
327
- /** `confirmedIncidents`' writer — appends a genuinely new incident, but merges a
328
- * resubmission of the same content into the record already on file (UAT phase 5,
329
- * F9). `confirmedAt` used to be the dedup key alongside `summary`, and a retried
330
- * submission always carries a fresh timestamp — so every retry minted a second
331
- * `INCIDENT` node, silently doubling its weight in blast-radius bias and
332
- * `similar_incidents` scoring. Identity is now content (`repo` + `summary` +
333
- * `errorText`, matching `confirmedIncidentId`), and a match appends this call's
334
- * timestamp to `occurrences` and unions `files` rather than minting a new record.
335
- * A retry and a genuine recurrence look identical from content alone; both are
336
- * representable and countable this way, and neither doubles the graph. */
337
- export async function writeConfirmedIncident(repoPath, incident) {
338
- const path = join(repoPath, CONFIG_RELATIVE_PATH);
339
- let existing = {};
340
- try {
341
- existing = JSON.parse(await readFile(path, "utf8"));
342
- }
343
- catch (error) {
344
- void error;
345
- existing = {};
346
- }
347
- const priorRaw = Array.isArray(existing["confirmedIncidents"]) ? existing["confirmedIncidents"] : [];
348
- const prior = parseConfirmedIncidents(priorRaw, path);
349
- const same = (a) => a.repo === incident.repo &&
350
- a.summary === incident.summary &&
351
- (a.errorText ?? "") === (incident.errorText ?? "");
352
- const match = prior.find(same) ?? null;
353
- let next;
354
- let record;
355
- let occurrences;
356
- if (match === null) {
357
- next = [...prior, incident];
358
- record = incident;
359
- occurrences = 1;
360
- }
361
- else {
362
- record = {
363
- ...match,
364
- // The incident may have been reported with a narrower or wider file list
365
- // each time — the union is what it has ever been correlated to.
366
- files: [...new Set([...match.files, ...incident.files])].sort(),
367
- ...(incident.fixedAtCommit === undefined ? {} : { fixedAtCommit: incident.fixedAtCommit }),
368
- occurrences: [...(match.occurrences ?? [match.confirmedAt]), incident.confirmedAt],
369
- };
370
- next = [...prior.filter((i) => !same(i)), record];
371
- occurrences = record.occurrences.length;
372
- }
373
- await mkdir(join(repoPath, ".descry"), { recursive: true });
374
- await writeFile(path, `${JSON.stringify({ ...existing, confirmedIncidents: next }, null, 2)}\n`, "utf8");
375
- return { path, total: next.length, merged: match !== null, occurrences, record, records: next };
376
- }
377
- /** `sources`' writer, one writer per field like the others. Unconditional — the caller
378
- * (`descry init`) decides whether overwriting is appropriate, not this primitive. */
379
- export async function writeSources(repoPath, sources) {
380
- const path = join(repoPath, CONFIG_RELATIVE_PATH);
381
- let existing = {};
382
- try {
383
- existing = JSON.parse(await readFile(path, "utf8"));
384
- }
385
- catch (error) {
386
- void error;
387
- existing = {};
388
- }
389
- const next = { ...existing, sources: [...sources] };
390
- await mkdir(join(repoPath, ".descry"), { recursive: true });
391
- await writeFile(path, `${JSON.stringify(next, null, 2)}\n`, "utf8");
392
- return { path };
393
- }
394
- export class Session {
395
- repoPath;
396
- // Not `readonly` — `reloadConfig()` is the one caller-initiated exception to
397
- // "configuration is read once per process" (UAT phase 5, §0 gap 2). Every
398
- // other read of this field still sees whatever `reloadConfig()` last set,
399
- // exactly as it did the config loaded at startup.
400
- config;
401
- #store = null;
402
- #provider = null;
403
- #browserSessions = null;
404
- #browserDriverFactory = null;
405
- /**
406
- * Literal credential values a browser session on this connection was seeded
407
- * with — B1.
408
- *
409
- * Held so the things this server *writes* can be checked against them. Exact
410
- * values, never patterns, because `@descryy/core`'s redactor is
411
- * literal-substring for the reason its own header gives: a "looks like a
412
- * token" regex either destroys real data or misses a secret shaped unlike
413
- * it. Per connection, in memory only, and compared against rather than
414
- * printed at every call site that reads it.
415
- */
416
- #browserSecrets = new Set();
417
- #openGraph;
418
- #calls = [];
419
- #nextCallId = 1;
420
- /**
421
- * Where a `${credential:NAME}` step resolves its value, for a
422
- * `browser_run_scenario` replay on this connection — RG-1(4) / lane
423
- * "delivery". Mutable, not constructor-injected, and `undefined` by
424
- * default: every existing `new Session(...)` call site (54 of them at
425
- * last count) stays unchanged, and a caller that wants sign-in-by-profile
426
- * sets it after construction, the same way `config` is mutated in place
427
- * by `reloadConfig()`. `replayScenario` (`browser/scenario-runner.ts`)
428
- * already accepts this exact type and already refuses a `${credential:...}`
429
- * step by name when it is `undefined` — this field is what lets
430
- * `browser-run-scenario.ts`'s tool actually have one to pass, which
431
- * nothing did before.
432
- */
433
- credentialStore = undefined;
434
- constructor(repoPath, config, openGraph) {
435
- this.repoPath = repoPath;
436
- this.config = config;
437
- this.#openGraph = openGraph ?? ((path) => openStore(path));
438
- }
439
- static async open(options) {
440
- const repoPath = resolve(options.repoPath);
441
- const config = options.config ?? (await loadConfig(repoPath));
442
- return new Session(repoPath, config, options.openGraph);
443
- }
444
- /**
445
- * Re-reads `.descry/config.json` from disk and replaces `config` in place —
446
- * the explicit, caller-initiated reload UAT phase 5 (§0 gap 2) asked for.
447
- *
448
- * Deliberately not a file watcher: a watcher would re-run every trust check
449
- * (`module-trust.ts`) on a specifier the instant a file the *scanned
450
- * repository* controls changes, with no human in the loop — exactly the
451
- * hazard those checks exist to gate. This method exists so a caller (a
452
- * tool's own `reload` argument) can ask for the same effect on purpose,
453
- * with an addressee for the trust decision that follows.
454
- *
455
- * Returns which top-level fields actually changed, using the identical
456
- * comparison `checkConfigDrift`'s disclosure already makes, so "reload
457
- * happened" and "reload changed something" stay distinguishable — a
458
- * reload that finds nothing different is not a no-op that failed silently.
459
- */
460
- async reloadConfig() {
461
- const fresh = await loadConfig(this.repoPath);
462
- const changed = driftedKeys(fresh, this.config);
463
- this.config = fresh;
464
- return { changed };
465
- }
466
- get graphPath() {
467
- return isAbsolute(this.config.graph)
468
- ? this.config.graph
469
- : join(this.repoPath, this.config.graph);
470
- }
471
- /** Open on first use; reuse thereafter. */
472
- store() {
473
- if (this.#store === null)
474
- this.#store = this.#openGraph(this.graphPath);
475
- return this.#store;
476
- }
477
- /** `analyze`'s own repair path — the only caller entitled to one (others refuse a
478
- * version mismatch per DEC-017). Opens a short-lived driver directly, bypassing an
479
- * injected test store; no-op there since an in-memory fixture is never stale. */
480
- repairStaleGraph() {
481
- if (this.#store !== null)
482
- return { rebuilt: false };
483
- const driver = new NodeSqliteDriver();
484
- try {
485
- driver.open(this.graphPath);
486
- return rebuildStaleGraph(driver);
487
- }
488
- catch {
489
- // Anything from opening (missing dir, corrupt file) is not this method's job —
490
- // `store()` right after hits the same path via its own disclosed error handling.
491
- return { rebuilt: false };
492
- }
493
- finally {
494
- driver.close();
495
- }
496
- }
497
- provider() {
498
- if (this.#provider === null)
499
- this.#provider = createStoreProvider(this.store().driver);
500
- return this.#provider;
501
- }
502
- /** Repo root for an analysis run. Commit sha comes from git and is never defaulted
503
- * when git is absent — every node/edge is stamped with it, and a placeholder would
504
- * make the staleness stamp a lie nothing downstream could detect. */
505
- async root() {
506
- if (!(await isGitRepository(this.repoPath))) {
507
- throw new ConfigError(`${this.repoPath} is not a git repository. Every node is stamped with the commit it was ` +
508
- "read at, so there is nothing honest to record for a directory with no history.");
509
- }
510
- return {
511
- repo: this.config.repo,
512
- ...(this.config.workspace === undefined ? {} : { workspace: this.config.workspace }),
513
- absolutePath: this.repoPath,
514
- commitSha: await gitHead(this.repoPath),
515
- };
516
- }
517
- /** Live browser sessions for this connection (`mcp-browser-tools.md` §4). Created
518
- * lazily, same reason as the graph — most connections never touch a browser tool.
519
- * Lives here, not a module-level map, so "per connection, never global" actually holds. */
520
- browserSessions() {
521
- if (this.#browserSessions === null)
522
- this.#browserSessions = createBrowserSessionRegistry();
523
- return this.#browserSessions;
524
- }
525
- /** The browser this connection drives, or a named reason there is none. Unavailable
526
- * by default — `@descryy/runtime-browser` isn't installed yet — reported as a refusal
527
- * with a remedy, never a silently-empty page (rule 7). */
528
- browserBackend() {
529
- if (this.#browserDriverFactory === null)
530
- return BROWSER_BACKEND_NOT_INSTALLED;
531
- return { available: true, createDriver: this.#browserDriverFactory };
532
- }
533
- /** Installs the driver this connection's browser tools use. A method, not a
534
- * constructor arg — most sessions never touch a browser and shouldn't have to
535
- * name one to be constructed. */
536
- useBrowserDriver(driver) {
537
- // One-driver form — every test that doesn't care about stack parsing wants this
538
- // and shouldn't have to write a factory.
539
- this.#browserDriverFactory = () => Promise.resolve(driver);
540
- }
541
- /** Installs a factory that builds a driver per session. A factory, not a driver,
542
- * because the stack-trace parser (`browser_start_session`'s `stackParser`) is
543
- * language-specific and named per call. */
544
- useBrowserDriverFactory(factory) {
545
- this.#browserDriverFactory = factory;
546
- }
547
- /** Record credential values a browser session was seeded with, so anything this server writes can refuse to carry them. */
548
- noteBrowserSecrets(values) {
549
- for (const value of values)
550
- if (value.length > 0)
551
- this.#browserSecrets.add(value);
552
- }
553
- /** The credential values this connection knows about. Compared against, never rendered. */
554
- browserSecrets() {
555
- return [...this.#browserSecrets];
556
- }
557
- /** Synchronous teardown, no I/O to wait on. A browser session can't close
558
- * synchronously, so that reap lives in `dispose()` — this stays the method
559
- * every existing no-browser caller keeps using unchanged. */
560
- close() {
561
- this.#browserSessions?.stop();
562
- this.#store?.close();
563
- this.#store = null;
564
- this.#provider = null;
565
- }
566
- /** Full teardown, including any live browser — what a client disconnect must
567
- * reach (§4). A leaked Chromium costs the developer's machine, not just a file
568
- * descriptor. Awaits the reap first so the evidence flush has a live registry. */
569
- async dispose() {
570
- if (this.#browserSessions !== null)
571
- await this.#browserSessions.reapAll("clientDisconnect");
572
- this.close();
573
- }
574
- /** Mints the next call id without recording anything yet. `server.ts` calls this
575
- * before render so the reply can carry `callId`, then records under the same id
576
- * with `recordCallWithId` — one id used for both. */
577
- allocateCallId() {
578
- return `call-${this.#nextCallId++}`;
579
- }
580
- /** `verify_claim`'s fact boundary — called once per call with the exact
581
- * `structuredContent` the host received. IDs are scoped to this process only, so a
582
- * citation from a different run can't resolve (§2's G1 negative control). */
583
- recordCall(tool, args, result) {
584
- return this.recordCallWithId(this.allocateCallId(), tool, args, result);
585
- }
586
- /** `recordCall` under an id minted earlier by `allocateCallId`, not one minted here
587
- * — so `recordedCall(id)` can find the exact id a caller read off the reply's
588
- * `callId`, which didn't exist until after the envelope was built. */
589
- recordCallWithId(id, tool, args, result) {
590
- const call = { id, tool, args, result, at: Date.now() };
591
- this.#calls.push(call);
592
- return call;
593
- }
594
- /** All calls recorded this session, oldest first. */
595
- recordedCalls() {
596
- return this.#calls;
597
- }
598
- recordedCall(id) {
599
- return this.#calls.find((c) => c.id === id);
600
- }
601
- }
602
- //# sourceMappingURL=session.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"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"}