@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
@@ -1,416 +0,0 @@
1
- /** A `BrowserDriver` with no browser behind it — not a stub. Implements every port rule (ref
2
- * issuance/invalidation, drain-not-peek, crash invalidation, flushing close), and
3
- * `browser-driver-contract.test.ts` runs the same assertions against it as the real driver.
4
- * Non-goals: no simulated DOM (pages are declared via `setPage`), no classification. */
5
- import { randomUUID } from "node:crypto";
6
- import { BrowserSessionCrashedError, NO_HIDDEN_REACH, NoSuchOptionError, NotSelectableError, NotSubmittableError, UnknownElementRefError, } from "./driver.js";
7
- import { clampWaitTimeout, describeWaitTarget, isEmptyWaitTarget, matchesWaitTarget, WAIT_POLL_INTERVAL_MS, } from "./wait-target.js";
8
- /** Everything a fingerprint counts, at zero. A declared fingerprint is merged over this. */
9
- const NO_RISKS = {
10
- url: "",
11
- interactiveElements: 0,
12
- openShadowRoots: 0,
13
- shadowInteractiveElements: 0,
14
- childFrames: 0,
15
- crossOriginChildFrames: 0,
16
- scrollableRegions: 0,
17
- canvasViewportShare: 0,
18
- largestCanvasArea: 0,
19
- fixedOverlays: 0,
20
- inertSubtrees: 0,
21
- openModalDialogs: 0,
22
- passwordFields: 0,
23
- oneTimeCodeFields: 0,
24
- challengeMarkers: [],
25
- clientSideRouting: null,
26
- documentHeightRatio: 1,
27
- };
28
- const EMPTY_PAGE = (url) => ({ url, title: "", elements: [] });
29
- /** Main document first, then every frame the page presented, then every frame it could not read. */
30
- function fakeFrames(elements, page) {
31
- const reach = [
32
- { frame: null, enumerated: true, elements: elements.filter((e) => e.frame === null).length, reason: null },
33
- ];
34
- const seen = new Set();
35
- for (const element of elements) {
36
- if (element.frame === null || seen.has(element.frame.id))
37
- continue;
38
- seen.add(element.frame.id);
39
- reach.push({
40
- frame: element.frame,
41
- enumerated: true,
42
- elements: elements.filter((e) => e.frame?.id === element.frame?.id).length,
43
- reason: null,
44
- });
45
- }
46
- for (const unreachable of page.unreachableFrames ?? []) {
47
- reach.push({ frame: unreachable.frame, enumerated: false, elements: 0, reason: unreachable.reason });
48
- }
49
- return reach;
50
- }
51
- function fakeShadow(elements, page) {
52
- const pierced = elements.filter((e) => e.inShadowRoot);
53
- return {
54
- piercedElements: pierced.length,
55
- ambiguousInDocument: pierced.filter((e) => e.selector === null && e.frame === null).length,
56
- suspectedClosedHosts: page.suspectedClosedHosts ?? 0,
57
- // The fake is told the number rather than probing for it, so it always "probed".
58
- probed: true,
59
- };
60
- }
61
- function fakeReveal(page) {
62
- const frames = new Set();
63
- for (const element of page.elements)
64
- if (element.frame !== undefined)
65
- frames.add(element.frame.name ?? element.frame.id);
66
- return {
67
- passes: 1,
68
- revealedElements: page.elements.filter((e) => e.revealedByScroll === true).length,
69
- recycledElements: page.elements.filter((e) => e.recycledByScroll === true).length,
70
- stoppedAtCap: false,
71
- // The fake has no DOM, so it has no containers to scroll and says so rather than guessing.
72
- containersScrolled: 0,
73
- // The fake has no viewport; a scroll position it invented would be a fact nothing produced.
74
- finalScrollY: 0,
75
- framesNotScrolled: [...frames],
76
- reason: null,
77
- };
78
- }
79
- export function createFakeBrowserDriver() {
80
- const pages = new Map();
81
- const states = new Map();
82
- const storageStateReceived = new Map();
83
- const headersReceived = new Map();
84
- const savePathReceived = new Map();
85
- /** Every `injectStorageState()` call a session actually received, in order — what a
86
- * sign-in-step test asserts reached the driver rather than being dropped en route. */
87
- const injectStorageStateCalls = new Map();
88
- let chromiumMissing = null;
89
- // Monotonic across the driver, so a ref from one session can never resolve
90
- // in another — the same property real refs have by being page-scoped.
91
- let snapshotGeneration = 0;
92
- function stateOf(sessionId) {
93
- const state = states.get(sessionId);
94
- if (state === undefined)
95
- throw new Error(`no such fake session: ${sessionId}`);
96
- return state;
97
- }
98
- function drain(state) {
99
- const observation = {
100
- actions: state.buffer.actions,
101
- consoleErrors: state.buffer.consoleErrors,
102
- requests: state.buffer.requests,
103
- // The fake page has no network, so nothing can be left in flight.
104
- unsettled: [],
105
- // The fake builds its own records directly; nothing crosses the untyped
106
- // collector boundary that `evidenceWarnings` reports on.
107
- evidenceWarnings: [],
108
- };
109
- state.buffer.actions = [];
110
- state.buffer.consoleErrors = [];
111
- state.buffer.requests = [];
112
- return observation;
113
- }
114
- function openSession(targetUrl) {
115
- const sessionId = randomUUID();
116
- let url = targetUrl;
117
- // Refs live here, keyed by the generation that issued them. Navigation
118
- // replaces the map wholesale, which is what makes a stale ref refuse
119
- // rather than resolve against a page nobody inspected.
120
- let refs = new Map();
121
- // Never cleared, unlike `buffer` — this is the session's whole-lifetime provenance record,
122
- // not per-drain evidence. Goes out of reach the moment this closure does (session closed/reaped).
123
- const performed = [];
124
- const buffer = { actions: [], consoleErrors: [], requests: [] };
125
- function assertUsable() {
126
- const state = states.get(sessionId);
127
- if (state !== undefined && (state.crashed || state.closed))
128
- throw new BrowserSessionCrashedError(sessionId);
129
- }
130
- function resolve(ref) {
131
- const element = refs.get(ref);
132
- if (element === undefined)
133
- throw new UnknownElementRefError(ref);
134
- return element;
135
- }
136
- function record(action, ref, mode = null) {
137
- buffer.actions.push({ action, ref, mode, url, at: new Date().toISOString() });
138
- }
139
- function recordPerformed(action, target, performedUrl, text) {
140
- performed.push({ action, target, url: performedUrl, text, at: new Date().toISOString() });
141
- }
142
- const session = {
143
- sessionId,
144
- startedAt: new Date().toISOString(),
145
- isUsable() {
146
- const state = states.get(sessionId);
147
- return state !== undefined && !state.crashed && !state.closed;
148
- },
149
- currentUrl: () => url,
150
- async navigate(to) {
151
- assertUsable();
152
- url = to;
153
- refs = new Map();
154
- record("navigate", null);
155
- recordPerformed("navigate", null, to, null);
156
- },
157
- async snapshot(options) {
158
- assertUsable();
159
- const page = pages.get(url) ?? EMPTY_PAGE(url);
160
- const revealing = options?.reveal === true;
161
- // What the page presents *now*: without a reveal pass the lazily-rendered rows are not
162
- // there yet; with one they are, and the virtualized rows it scrolled past are gone.
163
- const present = page.elements.filter((e) => revealing ? e.recycledByScroll !== true : e.revealedByScroll !== true);
164
- snapshotGeneration += 1;
165
- refs = new Map(present.map((element, index) => {
166
- const ref = `ref-${snapshotGeneration}-${index}`;
167
- const frame = element.frame ?? null;
168
- return [
169
- ref,
170
- {
171
- ref,
172
- role: element.role,
173
- name: element.name,
174
- // The port's rule, enforced here so the contract test can assert it of both drivers.
175
- selector: frame === null ? element.selector : null,
176
- frame,
177
- inShadowRoot: element.inShadowRoot === true,
178
- // Grounding resolves a *document* selector; a framed element has none (same
179
- // reasoning as `selector` above), and an unconfigured session never attempted it.
180
- identity: frame === null ? (element.identity ?? null) : null,
181
- ...(element.options === undefined ? {} : { options: element.options }),
182
- ...(element.submits === undefined ? {} : { submits: element.submits }),
183
- },
184
- ];
185
- }));
186
- // Reach is computed off the full refs, which carry the fake's private declarations;
187
- // what is returned is the port's own shape. `options`/`submits` are the fake's
188
- // bookkeeping and must not leak into what a caller sees a snapshot return.
189
- const held = [...refs.values()];
190
- const elements = held.map((e) => ({
191
- ref: e.ref,
192
- role: e.role,
193
- name: e.name,
194
- selector: e.selector,
195
- identity: e.identity,
196
- frame: e.frame,
197
- inShadowRoot: e.inShadowRoot,
198
- }));
199
- return {
200
- url,
201
- title: page.title,
202
- elements,
203
- totalElements: elements.length,
204
- frames: fakeFrames(held, page),
205
- shadow: fakeShadow(held, page),
206
- // The fake page is a list of elements, not a rendering of one: every element it holds
207
- // is one a test put there, so nothing is withheld and nothing went unanswered.
208
- hidden: NO_HIDDEN_REACH,
209
- reveal: revealing ? fakeReveal(page) : null,
210
- };
211
- },
212
- async click(ref) {
213
- assertUsable();
214
- const element = resolve(ref);
215
- record("click", ref);
216
- recordPerformed("click", { role: element.role, name: element.name, selector: element.selector }, null, null);
217
- },
218
- async type(ref, text) {
219
- assertUsable();
220
- const element = resolve(ref);
221
- record("type", ref, "append");
222
- recordPerformed("type", { role: element.role, name: element.name, selector: element.selector }, null, text);
223
- },
224
- async fill(ref, text) {
225
- assertUsable();
226
- const element = resolve(ref);
227
- record("fill", ref, "replace");
228
- recordPerformed("fill", { role: element.role, name: element.name, selector: element.selector }, null, text);
229
- },
230
- async select(ref, value) {
231
- assertUsable();
232
- const element = resolve(ref);
233
- if (element.options === undefined)
234
- throw new NotSelectableError(ref, element.role);
235
- // Exact, and nothing else. A near match would choose an option the caller did not name.
236
- if (!element.options.includes(value))
237
- throw new NoSuchOptionError(ref, value, element.options);
238
- record("select", ref, "replace");
239
- recordPerformed("select", { role: element.role, name: element.name, selector: element.selector }, null, value);
240
- },
241
- async submit(ref) {
242
- assertUsable();
243
- const element = resolve(ref);
244
- // The fake has no DOM, so it cannot tell "no form" from "form with no control" —
245
- // it declares one reason and the contract asserts only the error type. The real
246
- // driver distinguishes them because it can.
247
- if (element.submits !== true)
248
- throw new NotSubmittableError(ref, "noForm");
249
- record("submit", ref, null);
250
- recordPerformed("submit", { role: element.role, name: element.name, selector: element.selector }, null, null);
251
- },
252
- async waitFor(target, waitOptions = {}) {
253
- assertUsable();
254
- if (isEmptyWaitTarget(target)) {
255
- throw new Error("browser_wait_for needs a target: give a role, a name, or both. Waiting for nothing in particular " +
256
- `would return the first element on the page, which is not what any caller means. Got: ${describeWaitTarget(target)}.`);
257
- }
258
- const timeoutMs = clampWaitTimeout(waitOptions.timeoutMs);
259
- const startedAt = Date.now();
260
- for (;;) {
261
- assertUsable();
262
- // Re-snapshots each poll, so refs are re-issued — the same invalidation a real
263
- // page change forces, rather than a cheaper lie.
264
- const snapshot = await session.snapshot();
265
- const matches = snapshot.elements.filter((e) => matchesWaitTarget(e, target));
266
- const waitedMs = Date.now() - startedAt;
267
- if (matches.length > 0) {
268
- return { appeared: true, waitedMs, timeoutMs, matched: matches[0], matchCount: matches.length, snapshot };
269
- }
270
- if (waitedMs >= timeoutMs) {
271
- return { appeared: false, waitedMs, timeoutMs, matched: null, matchCount: 0, snapshot };
272
- }
273
- await new Promise((done) => setTimeout(done, WAIT_POLL_INTERVAL_MS));
274
- }
275
- },
276
- async injectStorageState(origin, state) {
277
- assertUsable();
278
- const cookies = state.cookies ?? [];
279
- const storedEntries = Object.entries(state.localStorage ?? {});
280
- let localStorageInjected = 0;
281
- let localStorageSkipped = null;
282
- if (storedEntries.length > 0) {
283
- // Same honest degradation the real driver's runtime primitive
284
- // applies: localStorage can only be written for the origin the
285
- // page is actually on, and the fake's "page" is just `url`.
286
- let currentOrigin = null;
287
- try {
288
- currentOrigin = new URL(url).origin;
289
- }
290
- catch {
291
- currentOrigin = null;
292
- }
293
- if (currentOrigin === origin) {
294
- localStorageInjected = storedEntries.length;
295
- }
296
- else {
297
- localStorageSkipped =
298
- `the page is currently on ${currentOrigin ?? "an origin that could not be read from its URL"}, not ` +
299
- `${origin} -- localStorage can only be written for the origin a page is actually showing, so ` +
300
- `${storedEntries.length} ${storedEntries.length === 1 ? "entry was" : "entries were"} not injected. ` +
301
- "Navigate to that origin first, then call injectStorageState again.";
302
- }
303
- }
304
- const result = { cookiesInjected: cookies.length, localStorageInjected, localStorageSkipped };
305
- const existing = injectStorageStateCalls.get(sessionId) ?? [];
306
- injectStorageStateCalls.set(sessionId, [...existing, { origin, state, result }]);
307
- return result;
308
- },
309
- async drainEvidence() {
310
- // Deliberately usable on a crashed session: the whole point of the
311
- // flush-on-every-path rule is that a crash must not take the evidence
312
- // that preceded it.
313
- return drain(stateOf(sessionId));
314
- },
315
- performedSteps() {
316
- return [...performed];
317
- },
318
- async close() {
319
- const state = stateOf(sessionId);
320
- state.closed = true;
321
- return drain(state);
322
- },
323
- };
324
- // Spread in rather than declared inline: the port's `fingerprint` is optional
325
- // *as a member*, and a page that declared none must leave a session on which
326
- // `fingerprint === undefined`, not one whose method returns nothing.
327
- // Whether the method *exists* is decided once, from the page this session
328
- // opened on: a driver either probes or it does not, and that must not flicker
329
- // mid-session. What it *answers* is read at call time from wherever the
330
- // session currently is.
331
- const probes = pages.get(targetUrl)?.fingerprint !== undefined;
332
- const withProbe = probes
333
- ? {
334
- ...session,
335
- fingerprint: async () => ({ ...NO_RISKS, ...(pages.get(url)?.fingerprint ?? {}), url }),
336
- }
337
- : session;
338
- states.set(sessionId, { session: withProbe, buffer, crashed: false, closed: false });
339
- return withProbe;
340
- }
341
- return {
342
- async launch(options) {
343
- if (chromiumMissing !== null) {
344
- return {
345
- launched: false,
346
- refusal: "chromiumNotInstalled",
347
- message: "No Chromium executable at /fake/path/chrome. This package depends on playwright-core, which does " +
348
- "not download a browser on install, so one has to be installed once before a browser session can launch.",
349
- remedy: chromiumMissing.remedy,
350
- expectedExecutablePath: "/fake/path/chrome",
351
- };
352
- }
353
- const session = openSession(options.targetUrl);
354
- storageStateReceived.set(session.sessionId, options.storageState);
355
- headersReceived.set(session.sessionId, options.extraHttpHeaders);
356
- savePathReceived.set(session.sessionId, options.saveStorageStateTo);
357
- return { launched: true, session };
358
- },
359
- setPage(url, page) {
360
- pages.set(url, page);
361
- },
362
- setChromiumMissing(remedy = "npx playwright install chromium") {
363
- // A remedy string is required rather than defaulted to empty: the
364
- // contract test asserts one is present, and a fake that could refuse
365
- // without one would let the real driver ship without one too.
366
- chromiumMissing = { remedy };
367
- },
368
- emitConsoleError(sessionId, error) {
369
- stateOf(sessionId).buffer.consoleErrors.push({ scriptUrlMapping: [], ...error, at: new Date().toISOString() });
370
- },
371
- emitRequest(sessionId, request) {
372
- // outcome destructured out, re-added only when present: exactOptionalPropertyTypes rejects
373
- // a spread that could set it to `undefined` explicitly.
374
- const { outcome, ...rest } = request;
375
- stateOf(sessionId).buffer.requests.push({
376
- stackTrace: null,
377
- scriptUrlMapping: [],
378
- ...rest,
379
- ...(outcome === undefined ? {} : { outcome }),
380
- at: new Date().toISOString(),
381
- });
382
- },
383
- emitFailedRequest(sessionId, request) {
384
- stateOf(sessionId).buffer.requests.push({ scriptUrlMapping: [], ...request, stackTrace: null, at: new Date().toISOString() });
385
- },
386
- emitPendingRequest(sessionId, request) {
387
- stateOf(sessionId).buffer.requests.push({
388
- scriptUrlMapping: [],
389
- stackTrace: null,
390
- ...request,
391
- status: null,
392
- outcome: "pending",
393
- at: new Date().toISOString(),
394
- });
395
- },
396
- crash(sessionId) {
397
- stateOf(sessionId).crashed = true;
398
- },
399
- openSessionIds() {
400
- return [...states.entries()].filter(([, state]) => !state.closed).map(([id]) => id);
401
- },
402
- storageStateReceivedFor(sessionId) {
403
- return storageStateReceived.get(sessionId);
404
- },
405
- extraHttpHeadersReceivedFor(sessionId) {
406
- return headersReceived.get(sessionId);
407
- },
408
- saveStorageStateToFor(sessionId) {
409
- return savePathReceived.get(sessionId);
410
- },
411
- injectStorageStateCallsFor(sessionId) {
412
- return injectStorageStateCalls.get(sessionId);
413
- },
414
- };
415
- }
416
- //# sourceMappingURL=fake-driver.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fake-driver.js","sourceRoot":"","sources":["../../src/browser/fake-driver.ts"],"names":[],"mappings":"AAAA;;;yFAGyF;AAEzF,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,OAAO,EACL,0BAA0B,EAC1B,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,sBAAsB,GAsBvB,MAAM,aAAa,CAAC;AAErB,OAAO,EACL,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,GAEtB,MAAM,kBAAkB,CAAC;AAuD1B,4FAA4F;AAC5F,MAAM,QAAQ,GAAoB;IAChC,GAAG,EAAE,EAAE;IACP,mBAAmB,EAAE,CAAC;IACtB,eAAe,EAAE,CAAC;IAClB,yBAAyB,EAAE,CAAC;IAC5B,WAAW,EAAE,CAAC;IACd,sBAAsB,EAAE,CAAC;IACzB,iBAAiB,EAAE,CAAC;IACpB,mBAAmB,EAAE,CAAC;IACtB,iBAAiB,EAAE,CAAC;IACpB,aAAa,EAAE,CAAC;IAChB,aAAa,EAAE,CAAC;IAChB,gBAAgB,EAAE,CAAC;IACnB,cAAc,EAAE,CAAC;IACjB,iBAAiB,EAAE,CAAC;IACpB,gBAAgB,EAAE,EAAE;IACpB,iBAAiB,EAAE,IAAI;IACvB,mBAAmB,EAAE,CAAC;CACvB,CAAC;AA+DF,MAAM,UAAU,GAAG,CAAC,GAAW,EAAY,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC;AAEjF,oGAAoG;AACpG,SAAS,UAAU,CAAC,QAAoC,EAAE,IAAc;IACtE,MAAM,KAAK,GAAiB;QAC1B,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE;KAC3G,CAAC;IACF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QACnE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC;YACT,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,KAAK,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,MAAM;YAC1E,MAAM,EAAE,IAAI;SACb,CAAC,CAAC;IACL,CAAC;IACD,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,iBAAiB,IAAI,EAAE,EAAE,CAAC;QACvD,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,EAAE,WAAW,CAAC,MAAM,EAAE,CAAC,CAAC;IACvG,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,UAAU,CAAC,QAAoC,EAAE,IAAc;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;IACvD,OAAO;QACL,eAAe,EAAE,OAAO,CAAC,MAAM;QAC/B,mBAAmB,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,MAAM;QAC1F,oBAAoB,EAAE,IAAI,CAAC,oBAAoB,IAAI,CAAC;QACpD,iFAAiF;QACjF,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,IAAc;IAChC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAU,CAAC;IACjC,KAAK,MAAM,OAAO,IAAI,IAAI,CAAC,QAAQ;QAAE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS;YAAE,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IACzH,OAAO;QACL,MAAM,EAAE,CAAC;QACT,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,MAAM;QACjF,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,MAAM;QACjF,YAAY,EAAE,KAAK;QACnB,2FAA2F;QAC3F,kBAAkB,EAAE,CAAC;QACrB,4FAA4F;QAC5F,YAAY,EAAE,CAAC;QACf,iBAAiB,EAAE,CAAC,GAAG,MAAM,CAAC;QAC9B,MAAM,EAAE,IAAI;KACb,CAAC;AACJ,CAAC;AAQD,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAG,IAAI,GAAG,EAAoB,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAA4B,CAAC;IACnD,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAA2C,CAAC;IAChF,MAAM,eAAe,GAAG,IAAI,GAAG,EAAwD,CAAC;IACxF,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA8B,CAAC;IAC/D;2FACuF;IACvF,MAAM,uBAAuB,GAAG,IAAI,GAAG,EAAoC,CAAC;IAC5E,IAAI,eAAe,GAA8B,IAAI,CAAC;IACtD,2EAA2E;IAC3E,sEAAsE;IACtE,IAAI,kBAAkB,GAAG,CAAC,CAAC;IAE3B,SAAS,OAAO,CAAC,SAAiB;QAChC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACpC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,SAAS,EAAE,CAAC,CAAC;QAC/E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,SAAS,KAAK,CAAC,KAAuB;QACpC,MAAM,WAAW,GAAuB;YACtC,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO;YAC7B,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC,aAAa;YACzC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,QAAQ;YAC/B,kEAAkE;YAClE,SAAS,EAAE,EAAE;YACb,wEAAwE;YACxE,yDAAyD;YACzD,gBAAgB,EAAE,EAAE;SACrB,CAAC;QACF,KAAK,CAAC,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QAC1B,KAAK,CAAC,MAAM,CAAC,aAAa,GAAG,EAAE,CAAC;QAChC,KAAK,CAAC,MAAM,CAAC,QAAQ,GAAG,EAAE,CAAC;QAC3B,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,SAAS,WAAW,CAAC,SAAiB;QACpC,MAAM,SAAS,GAAG,UAAU,EAAE,CAAC;QAC/B,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,uEAAuE;QACvE,qEAAqE;QACrE,uDAAuD;QACvD,IAAI,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;QACtC,2FAA2F;QAC3F,kGAAkG;QAClG,MAAM,SAAS,GAAoB,EAAE,CAAC;QAEtC,MAAM,MAAM,GAAG,EAAE,OAAO,EAAE,EAAsB,EAAE,aAAa,EAAE,EAA4B,EAAE,QAAQ,EAAE,EAAuB,EAAE,CAAC;QAEnI,SAAS,YAAY;YACnB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpC,IAAI,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM,CAAC;gBAAE,MAAM,IAAI,0BAA0B,CAAC,SAAS,CAAC,CAAC;QAC9G,CAAC;QAED,SAAS,OAAO,CAAC,GAAW;YAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC9B,IAAI,OAAO,KAAK,SAAS;gBAAE,MAAM,IAAI,sBAAsB,CAAC,GAAG,CAAC,CAAC;YACjE,OAAO,OAAO,CAAC;QACjB,CAAC;QAED,SAAS,MAAM,CAAC,MAAgC,EAAE,GAAkB,EAAE,OAA+B,IAAI;YACvG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChF,CAAC;QAED,SAAS,eAAe,CACtB,MAA+B,EAC/B,MAA+B,EAC/B,YAA2B,EAC3B,IAAmB;YAEnB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,YAAY,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC5F,CAAC;QAED,MAAM,OAAO,GAAuB;YAClC,SAAS;YACT,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,QAAQ;gBACN,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBACpC,OAAO,KAAK,KAAK,SAAS,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;YAChE,CAAC;YACD,UAAU,EAAE,GAAG,EAAE,CAAC,GAAG;YACrB,KAAK,CAAC,QAAQ,CAAC,EAAU;gBACvB,YAAY,EAAE,CAAC;gBACf,GAAG,GAAG,EAAE,CAAC;gBACT,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC;gBACjB,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACzB,eAAe,CAAC,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC;YACD,KAAK,CAAC,QAAQ,CAAC,OAAyB;gBACtC,YAAY,EAAE,CAAC;gBACf,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,UAAU,CAAC,GAAG,CAAC,CAAC;gBAC/C,MAAM,SAAS,GAAG,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;gBAC3C,uFAAuF;gBACvF,oFAAoF;gBACpF,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CACzC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,gBAAgB,KAAK,IAAI,CACtE,CAAC;gBACF,kBAAkB,IAAI,CAAC,CAAC;gBACxB,IAAI,GAAG,IAAI,GAAG,CACZ,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE;oBAC7B,MAAM,GAAG,GAAG,OAAO,kBAAkB,IAAI,KAAK,EAAE,CAAC;oBACjD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,IAAI,CAAC;oBACpC,OAAO;wBACL,GAAG;wBACH;4BACE,GAAG;4BACH,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,qFAAqF;4BACrF,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI;4BAClD,KAAK;4BACL,YAAY,EAAE,OAAO,CAAC,YAAY,KAAK,IAAI;4BAC3C,4EAA4E;4BAC5E,kFAAkF;4BAClF,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;4BAC5D,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;4BACtE,GAAG,CAAC,OAAO,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC;yBACvE;qBACO,CAAC;gBACb,CAAC,CAAC,CACH,CAAC;gBACF,oFAAoF;gBACpF,+EAA+E;gBAC/E,2EAA2E;gBAC3E,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAChC,MAAM,QAAQ,GAAsB,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACnD,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,IAAI,EAAE,CAAC,CAAC,IAAI;oBACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,KAAK,EAAE,CAAC,CAAC,KAAK;oBACd,YAAY,EAAE,CAAC,CAAC,YAAY;iBAC7B,CAAC,CAAC,CAAC;gBACJ,OAAO;oBACL,GAAG;oBACH,KAAK,EAAE,IAAI,CAAC,KAAK;oBACjB,QAAQ;oBACR,aAAa,EAAE,QAAQ,CAAC,MAAM;oBAC9B,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC9B,MAAM,EAAE,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC;oBAC9B,sFAAsF;oBACtF,+EAA+E;oBAC/E,MAAM,EAAE,eAAe;oBACvB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI;iBAC5C,CAAC;YACJ,CAAC;YACD,KAAK,CAAC,KAAK,CAAC,GAAW;gBACrB,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;gBACrB,eAAe,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC/G,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,IAAY;gBAClC,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC9B,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9G,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAW,EAAE,IAAY;gBAClC,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBAC/B,eAAe,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9G,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,GAAW,EAAE,KAAa;gBACrC,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS;oBAAE,MAAM,IAAI,kBAAkB,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;gBACnF,wFAAwF;gBACxF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;oBAAE,MAAM,IAAI,iBAAiB,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;gBAC/F,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;gBACjC,eAAe,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;YACjH,CAAC;YACD,KAAK,CAAC,MAAM,CAAC,GAAW;gBACtB,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC7B,iFAAiF;gBACjF,gFAAgF;gBAChF,4CAA4C;gBAC5C,IAAI,OAAO,CAAC,OAAO,KAAK,IAAI;oBAAE,MAAM,IAAI,mBAAmB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC3E,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC5B,eAAe,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChH,CAAC;YACD,KAAK,CAAC,OAAO,CAAC,MAAqB,EAAE,cAA8B,EAAE;gBACnE,YAAY,EAAE,CAAC;gBACf,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;oBAC9B,MAAM,IAAI,KAAK,CACb,mGAAmG;wBACjG,wFAAwF,kBAAkB,CAAC,MAAM,CAAC,GAAG,CACxH,CAAC;gBACJ,CAAC;gBACD,MAAM,SAAS,GAAG,gBAAgB,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;gBAC1D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAE7B,SAAS,CAAC;oBACR,YAAY,EAAE,CAAC;oBACf,+EAA+E;oBAC/E,iDAAiD;oBACjD,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE,CAAC;oBAC1C,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;oBAC9E,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;oBAExC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACvB,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAE,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC;oBAC7G,CAAC;oBACD,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;wBAC1B,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;oBAC1F,CAAC;oBACD,MAAM,IAAI,OAAO,CAAO,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC;gBAC7E,CAAC;YACH,CAAC;YACD,KAAK,CAAC,kBAAkB,CAAC,MAAc,EAAE,KAA0B;gBACjE,YAAY,EAAE,CAAC;gBACf,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC;gBACpC,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAI,oBAAoB,GAAG,CAAC,CAAC;gBAC7B,IAAI,mBAAmB,GAAkB,IAAI,CAAC;gBAC9C,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBAC7B,8DAA8D;oBAC9D,+DAA+D;oBAC/D,4DAA4D;oBAC5D,IAAI,aAAa,GAAkB,IAAI,CAAC;oBACxC,IAAI,CAAC;wBACH,aAAa,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;oBACtC,CAAC;oBAAC,MAAM,CAAC;wBACP,aAAa,GAAG,IAAI,CAAC;oBACvB,CAAC;oBACD,IAAI,aAAa,KAAK,MAAM,EAAE,CAAC;wBAC7B,oBAAoB,GAAG,aAAa,CAAC,MAAM,CAAC;oBAC9C,CAAC;yBAAM,CAAC;wBACN,mBAAmB;4BACjB,4BAA4B,aAAa,IAAI,+CAA+C,QAAQ;gCACpG,GAAG,MAAM,qFAAqF;gCAC9F,GAAG,aAAa,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,cAAc,iBAAiB;gCACrG,oEAAoE,CAAC;oBACzE,CAAC;gBACH,CAAC;gBACD,MAAM,MAAM,GAAgC,EAAE,eAAe,EAAE,OAAO,CAAC,MAAM,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;gBAC3H,MAAM,QAAQ,GAAG,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC9D,uBAAuB,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;gBACjF,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,KAAK,CAAC,aAAa;gBACjB,mEAAmE;gBACnE,sEAAsE;gBACtE,oBAAoB;gBACpB,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;YACnC,CAAC;YACD,cAAc;gBACZ,OAAO,CAAC,GAAG,SAAS,CAAC,CAAC;YACxB,CAAC;YACD,KAAK,CAAC,KAAK;gBACT,MAAM,KAAK,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC;gBACjC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;gBACpB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;YACtB,CAAC;SACF,CAAC;QAEF,8EAA8E;QAC9E,6EAA6E;QAC7E,qEAAqE;QACrE,0EAA0E;QAC1E,8EAA8E;QAC9E,wEAAwE;QACxE,wBAAwB;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,WAAW,KAAK,SAAS,CAAC;QAC/D,MAAM,SAAS,GAAuB,MAAM;YAC1C,CAAC,CAAC;gBACE,GAAG,OAAO;gBACV,WAAW,EAAE,KAAK,IAA8B,EAAE,CAAC,CAAC,EAAE,GAAG,QAAQ,EAAE,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,WAAW,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC;aAClH;YACH,CAAC,CAAC,OAAO,CAAC;QAEZ,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;QACrF,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO;QACL,KAAK,CAAC,MAAM,CAAC,OAA6B;YACxC,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;gBAC7B,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,OAAO,EAAE,sBAAsB;oBAC/B,OAAO,EACL,mGAAmG;wBACnG,yGAAyG;oBAC3G,MAAM,EAAE,eAAe,CAAC,MAAM;oBAC9B,sBAAsB,EAAE,mBAAmB;iBAC5C,CAAC;YACJ,CAAC;YACD,MAAM,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC/C,oBAAoB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;YAClE,eAAe,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;YACjE,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;YACpE,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,CAAC,GAAW,EAAE,IAAc;YACjC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACvB,CAAC;QACD,kBAAkB,CAAC,MAAM,GAAG,iCAAiC;YAC3D,kEAAkE;YAClE,qEAAqE;YACrE,8DAA8D;YAC9D,eAAe,GAAG,EAAE,MAAM,EAAE,CAAC;QAC/B,CAAC;QACD,gBAAgB,CAAC,SAAS,EAAE,KAAK;YAC/B,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACjH,CAAC;QACD,WAAW,CAAC,SAAS,EAAE,OAAO;YAC5B,2FAA2F;YAC3F,wDAAwD;YACxD,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,EAAE,GAAG,OAAO,CAAC;YACrC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,UAAU,EAAE,IAAI;gBAChB,gBAAgB,EAAE,EAAE;gBACpB,GAAG,IAAI;gBACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;gBAC7C,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,iBAAiB,CAAC,SAAS,EAAE,OAAO;YAClC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,gBAAgB,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAChI,CAAC;QACD,kBAAkB,CAAC,SAAS,EAAE,OAAO;YACnC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;gBACtC,gBAAgB,EAAE,EAAE;gBACpB,UAAU,EAAE,IAAI;gBAChB,GAAG,OAAO;gBACV,MAAM,EAAE,IAAI;gBACZ,OAAO,EAAE,SAAS;gBAClB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;aAC7B,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,SAAS;YACb,OAAO,CAAC,SAAS,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC;QACpC,CAAC;QACD,cAAc;YACZ,OAAO,CAAC,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QACtF,CAAC;QACD,uBAAuB,CAAC,SAAiB;YACvC,OAAO,oBAAoB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,CAAC;QACD,2BAA2B,CAAC,SAAiB;YAC3C,OAAO,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;QACD,qBAAqB,CAAC,SAAiB;YACrC,OAAO,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACzC,CAAC;QACD,0BAA0B,CAAC,SAAiB;YAC1C,OAAO,uBAAuB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -1,178 +0,0 @@
1
- /**
2
- * When a browser action fails: whose fault was it?
3
- *
4
- * ## This concept did not already exist
5
- *
6
- * `browser-reliability.md` §4.5 says "the product already carries this
7
- * concept". Checked before building: it does not. `descry-runtime` has four
8
- * incidental uses of the word "attributable" — a log envelope naming its
9
- * unwrapper, evidence carrying a process id, a correlator comment about not
10
- * blaming a producer, a test runner locating a fact — and no fault-domain type,
11
- * no owner vocabulary and nothing that decides between them. The nearest real
12
- * neighbours are `@descryy/ir`'s five **result states** and five **report
13
- * categories**, and both answer a different question: they say how much Descry
14
- * can claim, never who broke it. So this is new, and it is deliberately shaped
15
- * like its neighbours — a small closed vocabulary, one function that decides,
16
- * and an explicit value for "do not know".
17
- *
18
- * ## The one rule everything else serves
19
- *
20
- * **A timeout with nothing corroborating it is never the application's fault.**
21
- * A wait that expired is a fact about Descry: the page did not reach a state
22
- * Descry was waiting for, within a budget Descry chose. It is equally
23
- * consistent with a broken button, a slow one, an overlay, and an animation.
24
- * Reporting it as the user's bug is the single fastest way to make a testing
25
- * tool untrusted, and the cost of being wrong is asymmetric — an
26
- * `undetermined` that was really a bug costs one missed finding, and an
27
- * `application` that was really our timeout costs the tool's credibility.
28
- * That is rule 2 (precision over recall) applied to blame rather than to edges.
29
- *
30
- * So `application` is only ever named with a **first-party corroborating
31
- * signal** in the same window: the page threw, or a request to the
32
- * application's own origin failed. Never on the timeout alone.
33
- *
34
- * ## Where the corroborating signal comes from (C3)
35
- *
36
- * It does not exist yet when the failure happens. The recording decorator sees
37
- * the throw and must not drain evidence to enrich it — evidence is drained, not
38
- * peeked, and reading it there would steal what the calling tool is about to
39
- * report. So `attributeActionFailure` runs on the error and the clock alone and
40
- * most real failures start `undetermined`, which is the honest answer to what
41
- * it was given. `evidenceInWindow` and `refineAttribution` below are the second
42
- * half: the next drain of that session hands over what the page actually
43
- * produced, the counts are narrowed to the failed action's own window, and the
44
- * attribution is re-decided once. Wired at the two places a drain happens —
45
- * `observeAndCorrelate` for every evidence-bearing tool call, and the
46
- * registry's `reap` for the tail no tool call ever returns.
47
- */
48
- import { type BrowserObservation } from "./driver.ts";
49
- /**
50
- * The four fault domains, plus the fifth value that keeps the other four
51
- * honest. `undetermined` is not a failure to classify — it is the correct
52
- * answer whenever the evidence does not reach one of the four, and a
53
- * vocabulary without it would force every case into a guess.
54
- */
55
- export declare const FAULT_OWNERS: readonly ["application", "automation", "environment", "dependency", "undetermined"];
56
- export type FaultOwner = (typeof FAULT_OWNERS)[number];
57
- export interface FaultAttribution {
58
- readonly owner: FaultOwner;
59
- /** What happened, in the report's voice. Never an accusation. */
60
- readonly reason: string;
61
- /** What was observed that led here. Deliberately distinct from `reason`: a
62
- * reader who disagrees with the attribution must be able to see the input
63
- * that produced it without re-running anything. */
64
- readonly evidence: string;
65
- }
66
- /** Everything known about one failed action at the moment it failed. */
67
- export interface ActionFailure {
68
- readonly verb: string;
69
- readonly error: unknown;
70
- /** How long the action ran before throwing. */
71
- readonly elapsedMs: number;
72
- /** Console errors the page produced in the same window. */
73
- readonly pageErrors: number;
74
- /** Requests that failed in the same window. */
75
- readonly failedRequests: number;
76
- /** How many of those were to an origin other than the application's own. */
77
- readonly thirdPartyFailedRequests: number;
78
- }
79
- export declare function attributeActionFailure(failure: ActionFailure): FaultAttribution;
80
- /** The bounds of one failed action, in epoch milliseconds: when the verb was
81
- * called and when it threw. Evidence outside them is about something else. */
82
- export interface ActionWindow {
83
- readonly from: number;
84
- readonly to: number;
85
- }
86
- /** What `evidenceInWindow` found — the three counts `ActionFailure` could not
87
- * carry at the moment of failure. */
88
- export interface LaterEvidence {
89
- readonly pageErrors: number;
90
- readonly failedRequests: number;
91
- readonly thirdPartyFailedRequests: number;
92
- }
93
- /**
94
- * Counts, out of one drained observation, only what happened **inside a failed
95
- * action's own window**.
96
- *
97
- * ## Why the window, and not the drain
98
- *
99
- * A drain is not a window. A drained observation covers everything since the
100
- * last drain, which — because a failed verb throws and the tool never gets to
101
- * drain — routinely includes a later, unrelated action. Counting the whole
102
- * drain would let a console error caused by the *next* click decide who broke
103
- * the previous one, and it would say so in the report's voice. The action's own
104
- * start and end are recorded by the decorator for exactly this, and everything
105
- * outside them is discarded rather than discounted.
106
- *
107
- * ## What is excluded, and why each exclusion goes the same way
108
- *
109
- * A timestamp that will not parse, a request URL that will not parse, and an
110
- * `unattributed` request all resolve *away* from `application`. That is not
111
- * symmetry for its own sake: the asymmetric cost this module was built around
112
- * says an `undetermined` that was really a bug costs one finding, and an
113
- * `application` that was really Descry's own timeout costs the tool. So an
114
- * unreadable URL is counted as third-party (it cannot name the application), an
115
- * unreadable timestamp is counted as outside the window, and a request whose
116
- * terminal event could not be assigned to it is not counted as a failure at
117
- * all — otherwise C3's own refusal to guess a join would come straight back as
118
- * a guess about blame.
119
- */
120
- export declare function evidenceInWindow(observation: Pick<BrowserObservation, "consoleErrors" | "requests">, window: ActionWindow, applicationOrigin: string): LaterEvidence;
121
- /**
122
- * Re-decide an attribution once evidence that was not available at the moment
123
- * of failure has arrived. Only ever called on `undetermined`: an attribution
124
- * that already reached one of the four rested on a signal this later evidence
125
- * cannot withdraw, and silently rewriting it would make the same failure read
126
- * two ways in two replies.
127
- */
128
- export declare function refineAttribution(attribution: FaultAttribution, failure: ActionFailure, later: LaterEvidence): FaultAttribution;
129
- export declare function faultNote(attribution: FaultAttribution): string;
130
- /**
131
- * RG-12(b): the vocabulary reconciliation. The site names three layers to a
132
- * user — "your product", "your environment", "a dependency" — and this
133
- * module's own five values are `application`, `automation`, `environment`,
134
- * `dependency`, `undetermined`. Two real gaps, not one:
135
- *
136
- * 1. `automation` (Descry's *own* fault — a bad ref, a stale handle, a
137
- * harness bug) has nowhere to go in the site's three layers, and it is
138
- * the one value that most protects a user's trust: folding it into
139
- * "your environment" would let Descry's own mistake read as the user's
140
- * infrastructure being at fault, which is backwards.
141
- * 2. `undetermined` has nowhere to go either, and collapsing it into any of
142
- * the three would state a layer the evidence did not actually reach.
143
- *
144
- * **Recommendation (implemented here, not on the site — that copy is a
145
- * different lane's to change): the site gains a fourth and fifth category
146
- * rather than losing this module's granularity.** "Descry itself" for
147
- * `automation` (visible, not hidden — this is the layer that most needs to
148
- * be named when the tool is the one that got it wrong) and "not
149
- * determined" for `undetermined` (an honest refusal is not a hidden
150
- * failure). No code value is deleted to fit the narrower copy; this
151
- * function is the one place that maps the closed five-value set onto
152
- * display text, so a copy change only ever touches this map.
153
- */
154
- export declare const FAULT_OWNER_DISPLAY_LABELS: Readonly<Record<FaultOwner, string>>;
155
- /**
156
- * RG-12(c): the type-level half of "every failure carries a layer, by
157
- * construction, not by convention." A `switch` with no `default` fails to
158
- * compile the moment `FAULT_OWNERS` gains or loses a value without this
159
- * function being updated to match — the same guarantee `ActionRecord`'s
160
- * discriminated union (`reachability.ts`) gives the *presence* of an
161
- * attribution; this is what gives the *display* side the same guarantee.
162
- */
163
- export declare function faultOwnerDisplayLabel(owner: FaultOwner): string;
164
- /**
165
- * RG-12(c): the run-level half. Not a convention check — `ActionRecord`'s
166
- * discriminated union already makes `{ succeeded: false, attribution: null }`
167
- * uncoinstructable inside this module. This is the belt for a caller
168
- * reaching in from outside the type system (a cast, a deserialised record,
169
- * a future refactor that widens the type back out) — the same "trust but
170
- * verify" `report()`'s own filter used to need before the union made it
171
- * unnecessary there. Throws by name rather than silently dropping the
172
- * finding, which is the failure mode this whole item exists to close.
173
- */
174
- export declare function assertEveryFailureAttributed(actions: readonly {
175
- readonly succeeded: boolean;
176
- readonly attribution?: FaultAttribution | null;
177
- }[]): void;
178
- //# sourceMappingURL=fault-attribution.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"fault-attribution.d.ts","sourceRoot":"","sources":["../../src/browser/fault-attribution.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAuE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAE3H;;;;;GAKG;AACH,eAAO,MAAM,YAAY,qFAAsF,CAAC;AAEhH,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,iEAAiE;IACjE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB;;wDAEoD;IACpD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,wEAAwE;AACxE,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,+CAA+C;IAC/C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,2DAA2D;IAC3D,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,+CAA+C;IAC/C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,4EAA4E;IAC5E,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;CAC3C;AAWD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,aAAa,GAAG,gBAAgB,CA4D/E;AAED;+EAC+E;AAC/E,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB;AAED;sCACsC;AACtC,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,wBAAwB,EAAE,MAAM,CAAC;CAC3C;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,IAAI,CAAC,kBAAkB,EAAE,eAAe,GAAG,UAAU,CAAC,EACnE,MAAM,EAAE,YAAY,EACpB,iBAAiB,EAAE,MAAM,GACxB,aAAa,CAsBf;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,gBAAgB,EAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,EAAE,aAAa,GACnB,gBAAgB,CAUlB;AAED,wBAAgB,SAAS,CAAC,WAAW,EAAE,gBAAgB,GAAG,MAAM,CAE/D;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,0BAA0B,EAAE,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,MAAM,CAAC,CAM3E,CAAC;AAEF;;;;;;;GAOG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAoBhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,OAAO,EAAE,SAAS;IAAE,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,gBAAgB,GAAG,IAAI,CAAA;CAAE,EAAE,GAAG,IAAI,CAStJ"}