@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.
- package/package.json +20 -20
- package/dist/action-handshake.d.ts +0 -38
- package/dist/action-handshake.d.ts.map +0 -1
- package/dist/action-handshake.js +0 -127
- package/dist/action-handshake.js.map +0 -1
- package/dist/bin/descry-mcp.d.ts +0 -7
- package/dist/bin/descry-mcp.d.ts.map +0 -1
- package/dist/bin/descry-mcp.js +0 -72
- package/dist/bin/descry-mcp.js.map +0 -1
- package/dist/browser/auth.d.ts +0 -84
- package/dist/browser/auth.d.ts.map +0 -1
- package/dist/browser/auth.js +0 -233
- package/dist/browser/auth.js.map +0 -1
- package/dist/browser/capability-probe.d.ts +0 -109
- package/dist/browser/capability-probe.d.ts.map +0 -1
- package/dist/browser/capability-probe.js +0 -201
- package/dist/browser/capability-probe.js.map +0 -1
- package/dist/browser/driver.d.ts +0 -570
- package/dist/browser/driver.d.ts.map +0 -1
- package/dist/browser/driver.js +0 -116
- package/dist/browser/driver.js.map +0 -1
- package/dist/browser/evidence.d.ts +0 -28
- package/dist/browser/evidence.d.ts.map +0 -1
- package/dist/browser/evidence.js +0 -82
- package/dist/browser/evidence.js.map +0 -1
- package/dist/browser/fake-driver.d.ts +0 -116
- package/dist/browser/fake-driver.d.ts.map +0 -1
- package/dist/browser/fake-driver.js +0 -416
- package/dist/browser/fake-driver.js.map +0 -1
- package/dist/browser/fault-attribution.d.ts +0 -178
- package/dist/browser/fault-attribution.d.ts.map +0 -1
- package/dist/browser/fault-attribution.js +0 -266
- package/dist/browser/fault-attribution.js.map +0 -1
- package/dist/browser/graph-write.d.ts +0 -45
- package/dist/browser/graph-write.d.ts.map +0 -1
- package/dist/browser/graph-write.js +0 -103
- package/dist/browser/graph-write.js.map +0 -1
- package/dist/browser/identity-graph-write.d.ts +0 -55
- package/dist/browser/identity-graph-write.d.ts.map +0 -1
- package/dist/browser/identity-graph-write.js +0 -45
- package/dist/browser/identity-graph-write.js.map +0 -1
- package/dist/browser/page-probe.d.ts +0 -81
- package/dist/browser/page-probe.d.ts.map +0 -1
- package/dist/browser/page-probe.js +0 -202
- package/dist/browser/page-probe.js.map +0 -1
- package/dist/browser/playwright-driver.d.ts +0 -114
- package/dist/browser/playwright-driver.d.ts.map +0 -1
- package/dist/browser/playwright-driver.js +0 -1479
- package/dist/browser/playwright-driver.js.map +0 -1
- package/dist/browser/provider.d.ts +0 -26
- package/dist/browser/provider.d.ts.map +0 -1
- package/dist/browser/provider.js +0 -14
- package/dist/browser/provider.js.map +0 -1
- package/dist/browser/reach-recording-session.d.ts +0 -44
- package/dist/browser/reach-recording-session.d.ts.map +0 -1
- package/dist/browser/reach-recording-session.js +0 -143
- package/dist/browser/reach-recording-session.js.map +0 -1
- package/dist/browser/reachability.d.ts +0 -168
- package/dist/browser/reachability.d.ts.map +0 -1
- package/dist/browser/reachability.js +0 -294
- package/dist/browser/reachability.js.map +0 -1
- package/dist/browser/registry.d.ts +0 -126
- package/dist/browser/registry.d.ts.map +0 -1
- package/dist/browser/registry.js +0 -177
- package/dist/browser/registry.js.map +0 -1
- package/dist/browser/scenario-provenance.d.ts +0 -23
- package/dist/browser/scenario-provenance.d.ts.map +0 -1
- package/dist/browser/scenario-provenance.js +0 -73
- package/dist/browser/scenario-provenance.js.map +0 -1
- package/dist/browser/scenario-resolve.d.ts +0 -28
- package/dist/browser/scenario-resolve.d.ts.map +0 -1
- package/dist/browser/scenario-resolve.js +0 -96
- package/dist/browser/scenario-resolve.js.map +0 -1
- package/dist/browser/scenario-runner.d.ts +0 -72
- package/dist/browser/scenario-runner.d.ts.map +0 -1
- package/dist/browser/scenario-runner.js +0 -353
- package/dist/browser/scenario-runner.js.map +0 -1
- package/dist/browser/stack-parser.d.ts +0 -19
- package/dist/browser/stack-parser.d.ts.map +0 -1
- package/dist/browser/stack-parser.js +0 -85
- package/dist/browser/stack-parser.js.map +0 -1
- package/dist/browser/tool-support.d.ts +0 -71
- package/dist/browser/tool-support.d.ts.map +0 -1
- package/dist/browser/tool-support.js +0 -216
- package/dist/browser/tool-support.js.map +0 -1
- package/dist/browser/url-scheme.d.ts +0 -14
- package/dist/browser/url-scheme.d.ts.map +0 -1
- package/dist/browser/url-scheme.js +0 -38
- package/dist/browser/url-scheme.js.map +0 -1
- package/dist/browser/wait-target.d.ts +0 -37
- package/dist/browser/wait-target.d.ts.map +0 -1
- package/dist/browser/wait-target.js +0 -54
- package/dist/browser/wait-target.js.map +0 -1
- package/dist/cancellation.d.ts +0 -20
- package/dist/cancellation.d.ts.map +0 -1
- package/dist/cancellation.js +0 -41
- package/dist/cancellation.js.map +0 -1
- package/dist/capped.d.ts +0 -17
- package/dist/capped.d.ts.map +0 -1
- package/dist/capped.js +0 -15
- package/dist/capped.js.map +0 -1
- package/dist/credential-store.d.ts +0 -22
- package/dist/credential-store.d.ts.map +0 -1
- package/dist/credential-store.js +0 -33
- package/dist/credential-store.js.map +0 -1
- package/dist/disclosure-ledger.d.ts +0 -14
- package/dist/disclosure-ledger.d.ts.map +0 -1
- package/dist/disclosure-ledger.js +0 -18
- package/dist/disclosure-ledger.js.map +0 -1
- package/dist/evidence/observed-route-evidence.d.ts +0 -25
- package/dist/evidence/observed-route-evidence.d.ts.map +0 -1
- package/dist/evidence/observed-route-evidence.js +0 -76
- package/dist/evidence/observed-route-evidence.js.map +0 -1
- package/dist/heap.d.ts +0 -61
- package/dist/heap.d.ts.map +0 -1
- package/dist/heap.js +0 -82
- package/dist/heap.js.map +0 -1
- package/dist/heartbeat.d.ts +0 -46
- package/dist/heartbeat.d.ts.map +0 -1
- package/dist/heartbeat.js +0 -66
- package/dist/heartbeat.js.map +0 -1
- package/dist/index.d.ts +0 -32
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -19
- package/dist/index.js.map +0 -1
- package/dist/module-trust.d.ts +0 -37
- package/dist/module-trust.d.ts.map +0 -1
- package/dist/module-trust.js +0 -77
- package/dist/module-trust.js.map +0 -1
- package/dist/path-confinement.d.ts +0 -31
- package/dist/path-confinement.d.ts.map +0 -1
- package/dist/path-confinement.js +0 -44
- package/dist/path-confinement.js.map +0 -1
- package/dist/planner/predict-then-propose.d.ts +0 -134
- package/dist/planner/predict-then-propose.d.ts.map +0 -1
- package/dist/planner/predict-then-propose.js +0 -138
- package/dist/planner/predict-then-propose.js.map +0 -1
- package/dist/planner/propose-journey.d.ts +0 -75
- package/dist/planner/propose-journey.d.ts.map +0 -1
- package/dist/planner/propose-journey.js +0 -96
- package/dist/planner/propose-journey.js.map +0 -1
- package/dist/protocol.d.ts +0 -57
- package/dist/protocol.d.ts.map +0 -1
- package/dist/protocol.js +0 -90
- package/dist/protocol.js.map +0 -1
- package/dist/registry.d.ts +0 -103
- package/dist/registry.d.ts.map +0 -1
- package/dist/registry.js +0 -319
- package/dist/registry.js.map +0 -1
- package/dist/render.d.ts +0 -580
- package/dist/render.d.ts.map +0 -1
- package/dist/render.js +0 -867
- package/dist/render.js.map +0 -1
- package/dist/runtime-registry.d.ts +0 -22
- package/dist/runtime-registry.d.ts.map +0 -1
- package/dist/runtime-registry.js +0 -142
- package/dist/runtime-registry.js.map +0 -1
- package/dist/sandbox-defaults.d.ts +0 -41
- package/dist/sandbox-defaults.d.ts.map +0 -1
- package/dist/sandbox-defaults.js +0 -14
- package/dist/sandbox-defaults.js.map +0 -1
- package/dist/scenarios/browser-run-plan-projection.d.ts +0 -161
- package/dist/scenarios/browser-run-plan-projection.d.ts.map +0 -1
- package/dist/scenarios/browser-run-plan-projection.js +0 -264
- package/dist/scenarios/browser-run-plan-projection.js.map +0 -1
- package/dist/scenarios/credential-ref.d.ts +0 -102
- package/dist/scenarios/credential-ref.d.ts.map +0 -1
- package/dist/scenarios/credential-ref.js +0 -148
- package/dist/scenarios/credential-ref.js.map +0 -1
- package/dist/scenarios/index.d.ts +0 -7
- package/dist/scenarios/index.d.ts.map +0 -1
- package/dist/scenarios/index.js +0 -7
- package/dist/scenarios/index.js.map +0 -1
- package/dist/scenarios/parse.d.ts +0 -18
- package/dist/scenarios/parse.d.ts.map +0 -1
- package/dist/scenarios/parse.js +0 -212
- package/dist/scenarios/parse.js.map +0 -1
- package/dist/scenarios/scenario.d.ts +0 -93
- package/dist/scenarios/scenario.d.ts.map +0 -1
- package/dist/scenarios/scenario.js +0 -27
- package/dist/scenarios/scenario.js.map +0 -1
- package/dist/scenarios/secret-ref.d.ts +0 -86
- package/dist/scenarios/secret-ref.d.ts.map +0 -1
- package/dist/scenarios/secret-ref.js +0 -125
- package/dist/scenarios/secret-ref.js.map +0 -1
- package/dist/scenarios/storage.d.ts +0 -21
- package/dist/scenarios/storage.d.ts.map +0 -1
- package/dist/scenarios/storage.js +0 -103
- package/dist/scenarios/storage.js.map +0 -1
- package/dist/server.d.ts +0 -61
- package/dist/server.d.ts.map +0 -1
- package/dist/server.js +0 -541
- package/dist/server.js.map +0 -1
- package/dist/session.d.ts +0 -243
- package/dist/session.d.ts.map +0 -1
- package/dist/session.js +0 -602
- package/dist/session.js.map +0 -1
- package/dist/tools/alias-kit.d.ts +0 -29
- package/dist/tools/alias-kit.d.ts.map +0 -1
- package/dist/tools/alias-kit.js +0 -21
- package/dist/tools/alias-kit.js.map +0 -1
- package/dist/tools/aliases.d.ts +0 -42
- package/dist/tools/aliases.d.ts.map +0 -1
- package/dist/tools/aliases.js +0 -52
- package/dist/tools/aliases.js.map +0 -1
- package/dist/tools/analyze-workspace.d.ts +0 -52
- package/dist/tools/analyze-workspace.d.ts.map +0 -1
- package/dist/tools/analyze-workspace.js +0 -207
- package/dist/tools/analyze-workspace.js.map +0 -1
- package/dist/tools/analyze.d.ts +0 -163
- package/dist/tools/analyze.d.ts.map +0 -1
- package/dist/tools/analyze.js +0 -724
- package/dist/tools/analyze.js.map +0 -1
- package/dist/tools/browser-click.d.ts +0 -18
- package/dist/tools/browser-click.d.ts.map +0 -1
- package/dist/tools/browser-click.js +0 -110
- package/dist/tools/browser-click.js.map +0 -1
- package/dist/tools/browser-close-session.d.ts +0 -39
- package/dist/tools/browser-close-session.d.ts.map +0 -1
- package/dist/tools/browser-close-session.js +0 -120
- package/dist/tools/browser-close-session.js.map +0 -1
- package/dist/tools/browser-fill.d.ts +0 -18
- package/dist/tools/browser-fill.d.ts.map +0 -1
- package/dist/tools/browser-fill.js +0 -117
- package/dist/tools/browser-fill.js.map +0 -1
- package/dist/tools/browser-navigate.d.ts +0 -15
- package/dist/tools/browser-navigate.d.ts.map +0 -1
- package/dist/tools/browser-navigate.js +0 -104
- package/dist/tools/browser-navigate.js.map +0 -1
- package/dist/tools/browser-read.d.ts +0 -33
- package/dist/tools/browser-read.d.ts.map +0 -1
- package/dist/tools/browser-read.js +0 -113
- package/dist/tools/browser-read.js.map +0 -1
- package/dist/tools/browser-run-scenario.d.ts +0 -28
- package/dist/tools/browser-run-scenario.d.ts.map +0 -1
- package/dist/tools/browser-run-scenario.js +0 -206
- package/dist/tools/browser-run-scenario.js.map +0 -1
- package/dist/tools/browser-save-scenario.d.ts +0 -19
- package/dist/tools/browser-save-scenario.d.ts.map +0 -1
- package/dist/tools/browser-save-scenario.js +0 -447
- package/dist/tools/browser-save-scenario.js.map +0 -1
- package/dist/tools/browser-select.d.ts +0 -20
- package/dist/tools/browser-select.d.ts.map +0 -1
- package/dist/tools/browser-select.js +0 -120
- package/dist/tools/browser-select.js.map +0 -1
- package/dist/tools/browser-snapshot.d.ts +0 -46
- package/dist/tools/browser-snapshot.d.ts.map +0 -1
- package/dist/tools/browser-snapshot.js +0 -127
- package/dist/tools/browser-snapshot.js.map +0 -1
- package/dist/tools/browser-start-session.d.ts +0 -24
- package/dist/tools/browser-start-session.d.ts.map +0 -1
- package/dist/tools/browser-start-session.js +0 -622
- package/dist/tools/browser-start-session.js.map +0 -1
- package/dist/tools/browser-submit.d.ts +0 -18
- package/dist/tools/browser-submit.d.ts.map +0 -1
- package/dist/tools/browser-submit.js +0 -106
- package/dist/tools/browser-submit.js.map +0 -1
- package/dist/tools/browser-type.d.ts +0 -18
- package/dist/tools/browser-type.d.ts.map +0 -1
- package/dist/tools/browser-type.js +0 -115
- package/dist/tools/browser-type.js.map +0 -1
- package/dist/tools/browser-wait-for.d.ts +0 -45
- package/dist/tools/browser-wait-for.d.ts.map +0 -1
- package/dist/tools/browser-wait-for.js +0 -150
- package/dist/tools/browser-wait-for.js.map +0 -1
- package/dist/tools/browser.d.ts +0 -69
- package/dist/tools/browser.d.ts.map +0 -1
- package/dist/tools/browser.js +0 -386
- package/dist/tools/browser.js.map +0 -1
- package/dist/tools/chain.d.ts +0 -41
- package/dist/tools/chain.d.ts.map +0 -1
- package/dist/tools/chain.js +0 -105
- package/dist/tools/chain.js.map +0 -1
- package/dist/tools/change-scope.d.ts +0 -25
- package/dist/tools/change-scope.d.ts.map +0 -1
- package/dist/tools/change-scope.js +0 -110
- package/dist/tools/change-scope.js.map +0 -1
- package/dist/tools/code-context.d.ts +0 -83
- package/dist/tools/code-context.d.ts.map +0 -1
- package/dist/tools/code-context.js +0 -416
- package/dist/tools/code-context.js.map +0 -1
- package/dist/tools/contracts.d.ts +0 -74
- package/dist/tools/contracts.d.ts.map +0 -1
- package/dist/tools/contracts.js +0 -196
- package/dist/tools/contracts.js.map +0 -1
- package/dist/tools/cross-pr.d.ts +0 -178
- package/dist/tools/cross-pr.d.ts.map +0 -1
- package/dist/tools/cross-pr.js +0 -321
- package/dist/tools/cross-pr.js.map +0 -1
- package/dist/tools/disclosure.d.ts +0 -75
- package/dist/tools/disclosure.d.ts.map +0 -1
- package/dist/tools/disclosure.js +0 -288
- package/dist/tools/disclosure.js.map +0 -1
- package/dist/tools/draw-conclusion.d.ts +0 -55
- package/dist/tools/draw-conclusion.d.ts.map +0 -1
- package/dist/tools/draw-conclusion.js +0 -259
- package/dist/tools/draw-conclusion.js.map +0 -1
- package/dist/tools/git-context.d.ts +0 -39
- package/dist/tools/git-context.d.ts.map +0 -1
- package/dist/tools/git-context.js +0 -364
- package/dist/tools/git-context.js.map +0 -1
- package/dist/tools/git-diff.d.ts +0 -45
- package/dist/tools/git-diff.d.ts.map +0 -1
- package/dist/tools/git-diff.js +0 -338
- package/dist/tools/git-diff.js.map +0 -1
- package/dist/tools/git-history.d.ts +0 -16
- package/dist/tools/git-history.d.ts.map +0 -1
- package/dist/tools/git-history.js +0 -86
- package/dist/tools/git-history.js.map +0 -1
- package/dist/tools/history.d.ts +0 -34
- package/dist/tools/history.d.ts.map +0 -1
- package/dist/tools/history.js +0 -121
- package/dist/tools/history.js.map +0 -1
- package/dist/tools/impact.d.ts +0 -46
- package/dist/tools/impact.d.ts.map +0 -1
- package/dist/tools/impact.js +0 -225
- package/dist/tools/impact.js.map +0 -1
- package/dist/tools/index.d.ts +0 -59
- package/dist/tools/index.d.ts.map +0 -1
- package/dist/tools/index.js +0 -70
- package/dist/tools/index.js.map +0 -1
- package/dist/tools/kit.d.ts +0 -165
- package/dist/tools/kit.d.ts.map +0 -1
- package/dist/tools/kit.js +0 -153
- package/dist/tools/kit.js.map +0 -1
- package/dist/tools/link-workspace.d.ts +0 -24
- package/dist/tools/link-workspace.d.ts.map +0 -1
- package/dist/tools/link-workspace.js +0 -131
- package/dist/tools/link-workspace.js.map +0 -1
- package/dist/tools/lookup.d.ts +0 -19
- package/dist/tools/lookup.d.ts.map +0 -1
- package/dist/tools/lookup.js +0 -63
- package/dist/tools/lookup.js.map +0 -1
- package/dist/tools/mark-incident.d.ts +0 -28
- package/dist/tools/mark-incident.d.ts.map +0 -1
- package/dist/tools/mark-incident.js +0 -188
- package/dist/tools/mark-incident.js.map +0 -1
- package/dist/tools/merged-browser.d.ts +0 -11
- package/dist/tools/merged-browser.d.ts.map +0 -1
- package/dist/tools/merged-browser.js +0 -20
- package/dist/tools/merged-browser.js.map +0 -1
- package/dist/tools/merged-context.d.ts +0 -11
- package/dist/tools/merged-context.d.ts.map +0 -1
- package/dist/tools/merged-context.js +0 -21
- package/dist/tools/merged-context.js.map +0 -1
- package/dist/tools/merged-observe.d.ts +0 -13
- package/dist/tools/merged-observe.d.ts.map +0 -1
- package/dist/tools/merged-observe.js +0 -21
- package/dist/tools/merged-observe.js.map +0 -1
- package/dist/tools/merged-workspace.d.ts +0 -14
- package/dist/tools/merged-workspace.d.ts.map +0 -1
- package/dist/tools/merged-workspace.js +0 -21
- package/dist/tools/merged-workspace.js.map +0 -1
- package/dist/tools/observe-runtime.d.ts +0 -250
- package/dist/tools/observe-runtime.d.ts.map +0 -1
- package/dist/tools/observe-runtime.js +0 -1753
- package/dist/tools/observe-runtime.js.map +0 -1
- package/dist/tools/observe-tests.d.ts +0 -57
- package/dist/tools/observe-tests.d.ts.map +0 -1
- package/dist/tools/observe-tests.js +0 -368
- package/dist/tools/observe-tests.js.map +0 -1
- package/dist/tools/observe.d.ts +0 -28
- package/dist/tools/observe.d.ts.map +0 -1
- package/dist/tools/observe.js +0 -330
- package/dist/tools/observe.js.map +0 -1
- package/dist/tools/pr-analysis.d.ts +0 -189
- package/dist/tools/pr-analysis.d.ts.map +0 -1
- package/dist/tools/pr-analysis.js +0 -299
- package/dist/tools/pr-analysis.js.map +0 -1
- package/dist/tools/pre-push.d.ts +0 -168
- package/dist/tools/pre-push.d.ts.map +0 -1
- package/dist/tools/pre-push.js +0 -416
- package/dist/tools/pre-push.js.map +0 -1
- package/dist/tools/predict-reach.d.ts +0 -57
- package/dist/tools/predict-reach.d.ts.map +0 -1
- package/dist/tools/predict-reach.js +0 -159
- package/dist/tools/predict-reach.js.map +0 -1
- package/dist/tools/propagation.d.ts +0 -37
- package/dist/tools/propagation.d.ts.map +0 -1
- package/dist/tools/propagation.js +0 -162
- package/dist/tools/propagation.js.map +0 -1
- package/dist/tools/propose-journey.d.ts +0 -16
- package/dist/tools/propose-journey.d.ts.map +0 -1
- package/dist/tools/propose-journey.js +0 -121
- package/dist/tools/propose-journey.js.map +0 -1
- package/dist/tools/prove-reach.d.ts +0 -74
- package/dist/tools/prove-reach.d.ts.map +0 -1
- package/dist/tools/prove-reach.js +0 -286
- package/dist/tools/prove-reach.js.map +0 -1
- package/dist/tools/questions.d.ts +0 -30
- package/dist/tools/questions.d.ts.map +0 -1
- package/dist/tools/questions.js +0 -232
- package/dist/tools/questions.js.map +0 -1
- package/dist/tools/refusal-fetch.d.ts +0 -35
- package/dist/tools/refusal-fetch.d.ts.map +0 -1
- package/dist/tools/refusal-fetch.js +0 -103
- package/dist/tools/refusal-fetch.js.map +0 -1
- package/dist/tools/runtime-incident.d.ts +0 -33
- package/dist/tools/runtime-incident.d.ts.map +0 -1
- package/dist/tools/runtime-incident.js +0 -67
- package/dist/tools/runtime-incident.js.map +0 -1
- package/dist/tools/runtime-journey-drive.d.ts +0 -102
- package/dist/tools/runtime-journey-drive.d.ts.map +0 -1
- package/dist/tools/runtime-journey-drive.js +0 -247
- package/dist/tools/runtime-journey-drive.js.map +0 -1
- package/dist/tools/scope.d.ts +0 -45
- package/dist/tools/scope.d.ts.map +0 -1
- package/dist/tools/scope.js +0 -186
- package/dist/tools/scope.js.map +0 -1
- package/dist/tools/similar-incidents.d.ts +0 -43
- package/dist/tools/similar-incidents.d.ts.map +0 -1
- package/dist/tools/similar-incidents.js +0 -179
- package/dist/tools/similar-incidents.js.map +0 -1
- package/dist/tools/validate.d.ts +0 -133
- package/dist/tools/validate.d.ts.map +0 -1
- package/dist/tools/validate.js +0 -442
- package/dist/tools/validate.js.map +0 -1
- package/dist/tools/verb.d.ts +0 -46
- package/dist/tools/verb.d.ts.map +0 -1
- package/dist/tools/verb.js +0 -78
- package/dist/tools/verb.js.map +0 -1
- package/dist/tools/verification-status.d.ts +0 -38
- package/dist/tools/verification-status.d.ts.map +0 -1
- package/dist/tools/verification-status.js +0 -203
- package/dist/tools/verification-status.js.map +0 -1
- package/dist/tools/verify-claim.d.ts +0 -29
- package/dist/tools/verify-claim.d.ts.map +0 -1
- package/dist/tools/verify-claim.js +0 -220
- package/dist/tools/verify-claim.js.map +0 -1
- package/dist/tools/workspace.d.ts +0 -28
- package/dist/tools/workspace.d.ts.map +0 -1
- package/dist/tools/workspace.js +0 -101
- package/dist/tools/workspace.js.map +0 -1
- package/dist/transport.d.ts +0 -32
- package/dist/transport.d.ts.map +0 -1
- package/dist/transport.js +0 -85
- package/dist/transport.js.map +0 -1
- package/dist/workspace-index.d.ts +0 -164
- package/dist/workspace-index.d.ts.map +0 -1
- package/dist/workspace-index.js +0 -381
- package/dist/workspace-index.js.map +0 -1
|
@@ -1,103 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `refusal_fetch` — §4 technique 4: summarise, never enumerate (count, exemplar,
|
|
3
|
-
* handle). No `handle` → fresh summary; `handle` → redeem a page (mirrors
|
|
4
|
-
* `questions.ts`). Always reads `{classified: false}` — the default `true` would
|
|
5
|
-
* silently drop unclassified rows (DEC-243). No `limit`: the population must stay stable. */
|
|
6
|
-
import { fetchRefusalPage, summariseRefusals } from "@descryy/core";
|
|
7
|
-
import { answer, optionalInteger, optionalString, } from "./kit.js";
|
|
8
|
-
const SCHEMA = {
|
|
9
|
-
type: "object",
|
|
10
|
-
properties: {
|
|
11
|
-
handle: {
|
|
12
|
-
type: "string",
|
|
13
|
-
description: "Redeem a handle from a prior refusal_fetch call to fetch the next page of rows. Omit for " +
|
|
14
|
-
"a fresh summary — count, one exemplar reason, and a handle to start paging.",
|
|
15
|
-
},
|
|
16
|
-
pageSize: {
|
|
17
|
-
type: "integer",
|
|
18
|
-
minimum: 1,
|
|
19
|
-
description: "Rows per page when minting a fresh handle (a summary call). Default 50. Ignored on a paged call — the page size travels inside the handle itself.",
|
|
20
|
-
},
|
|
21
|
-
},
|
|
22
|
-
additionalProperties: false,
|
|
23
|
-
};
|
|
24
|
-
function brief(ref) {
|
|
25
|
-
return {
|
|
26
|
-
fromNodeId: ref.fromNodeId,
|
|
27
|
-
edgeType: ref.edgeType,
|
|
28
|
-
rawTarget: ref.rawTarget,
|
|
29
|
-
file: ref.file,
|
|
30
|
-
line: ref.line,
|
|
31
|
-
producedBy: ref.producedBy,
|
|
32
|
-
reason: ref.reason,
|
|
33
|
-
};
|
|
34
|
-
}
|
|
35
|
-
async function run(args, ctx) {
|
|
36
|
-
const handle = optionalString(args, "handle");
|
|
37
|
-
const pageSize = optionalInteger(args, "pageSize", 1);
|
|
38
|
-
const base = ctx.session.provider().baseStamp();
|
|
39
|
-
ctx.progress("Reading the unresolved-reference ledger");
|
|
40
|
-
const { refs } = ctx.session.provider().unresolvedRefs({ classified: false });
|
|
41
|
-
const envelopeBase = {
|
|
42
|
-
resolutionFloor: 0, // a ledger read, not a graph traversal claim — same convention as similar_incidents' R0 floor
|
|
43
|
-
commitSha: base.commitSha,
|
|
44
|
-
graphBuiltAt: base.graphBuiltAt,
|
|
45
|
-
irSchemaVersion: base.irSchemaVersion,
|
|
46
|
-
commitSpread: base.commitSpread,
|
|
47
|
-
repoCount: base.repoCount,
|
|
48
|
-
nameLevel: true,
|
|
49
|
-
};
|
|
50
|
-
if (handle === undefined) {
|
|
51
|
-
ctx.progress(`Summarising ${refs.length} unresolved reference(s)`);
|
|
52
|
-
const summary = summariseRefusals(refs, pageSize);
|
|
53
|
-
return answer({
|
|
54
|
-
...envelopeBase,
|
|
55
|
-
state: summary.count === 0 ? "empty" : "ok",
|
|
56
|
-
headline: summary.count === 0
|
|
57
|
-
? "No unresolved references are recorded — nothing for refusal_fetch to page through."
|
|
58
|
-
: `${summary.count} unresolved reference(s) recorded. Exemplar: "${summary.exemplar}". Call again with { "handle": "${summary.handle}" } to page through the rest.`,
|
|
59
|
-
notes: summary.count === 0
|
|
60
|
-
? ["The graph has no unresolved-reference rows at all — every edge either resolved or was never attempted."]
|
|
61
|
-
: [],
|
|
62
|
-
data: { kind: "summary", count: summary.count, exemplar: summary.exemplar, handle: summary.handle },
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
ctx.progress("Redeeming the refusal_fetch handle");
|
|
66
|
-
const page = fetchRefusalPage(refs, handle);
|
|
67
|
-
if (page.state === "refused") {
|
|
68
|
-
return answer({
|
|
69
|
-
...envelopeBase,
|
|
70
|
-
state: "refused",
|
|
71
|
-
headline: "This refusal_fetch handle could not be redeemed.",
|
|
72
|
-
notes: [page.reason],
|
|
73
|
-
data: { kind: "page", items: [], total: 0, nextHandle: null },
|
|
74
|
-
});
|
|
75
|
-
}
|
|
76
|
-
return answer({
|
|
77
|
-
...envelopeBase,
|
|
78
|
-
headline: `Page of ${page.items.length} unresolved reference(s), of ${page.total} total.`,
|
|
79
|
-
notes: [],
|
|
80
|
-
data: {
|
|
81
|
-
kind: "page",
|
|
82
|
-
items: page.items.map(brief),
|
|
83
|
-
total: page.total,
|
|
84
|
-
nextHandle: page.nextHandle,
|
|
85
|
-
},
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
export const refusalFetchTool = {
|
|
89
|
-
name: "refusal_fetch",
|
|
90
|
-
class: "read",
|
|
91
|
-
tier: "evidence",
|
|
92
|
-
version: "1.0.0",
|
|
93
|
-
title: "Page through the graph's recorded refusals",
|
|
94
|
-
description: "The graph's full ledger of unresolved references — edges an adapter could not resolve, with " +
|
|
95
|
-
"the reason recorded rather than guessed. Call with no arguments for a one-line summary (count, " +
|
|
96
|
-
"one exemplar reason, a handle); call again with that handle to page through every row. Never " +
|
|
97
|
-
"enumerates in full on the first call — §4 technique 4: summarise, don't enumerate. A handle " +
|
|
98
|
-
"issued against a population that has since changed (a re-analyse ran) refuses rather than " +
|
|
99
|
-
"silently returning a wrong page.",
|
|
100
|
-
inputSchema: SCHEMA,
|
|
101
|
-
run,
|
|
102
|
-
};
|
|
103
|
-
//# sourceMappingURL=refusal-fetch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"refusal-fetch.js","sourceRoot":"","sources":["../../src/tools/refusal-fetch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mints an `INCIDENT` from `observe_runtime`'s process exit/signal, never
|
|
3
|
-
* from `EXCEPTION` events (a caught, provoked error isn't a failure).
|
|
4
|
-
* Correlates to files an exception named — "implicated", not "caused". See `DEC-NEXT-incident-minting-beyond-explicit-reverts`.
|
|
5
|
-
*/
|
|
6
|
-
import type { ConfirmedIncident } from "@descryy/ir";
|
|
7
|
-
/** One observed service, in the shape `observe_runtime` already reports. */
|
|
8
|
-
export interface ObservedProcessOutcome {
|
|
9
|
-
readonly service: string;
|
|
10
|
-
readonly started: boolean;
|
|
11
|
-
readonly exitCode: number | null;
|
|
12
|
-
readonly signal: string | null;
|
|
13
|
-
}
|
|
14
|
-
/** An exception's own source location, as the runtime adapter parsed it. */
|
|
15
|
-
export interface ObservedExceptionLocation {
|
|
16
|
-
readonly file: string | null;
|
|
17
|
-
}
|
|
18
|
-
export interface RuntimeIncidentInput {
|
|
19
|
-
readonly repo: string;
|
|
20
|
-
readonly repoRoot: string;
|
|
21
|
-
readonly runId: string;
|
|
22
|
-
readonly services: readonly ObservedProcessOutcome[];
|
|
23
|
-
/** Every exception source location seen during the run, in observation order. */
|
|
24
|
-
readonly exceptionLocations: readonly ObservedExceptionLocation[];
|
|
25
|
-
/** The first line of each exception's text, for the message-similarity signal. */
|
|
26
|
-
readonly exceptionTexts: readonly string[];
|
|
27
|
-
readonly now?: () => Date;
|
|
28
|
-
}
|
|
29
|
-
/** Whether this service's exit is a failure rather than Descry stopping it. */
|
|
30
|
-
export declare function died(outcome: ObservedProcessOutcome): boolean;
|
|
31
|
-
/** The incident a run witnessed, or null when every service exited cleanly (the common case, not a finding). One record per run, not per dead service — two deaths are one system failure, not two. */
|
|
32
|
-
export declare function runtimeObservedIncident(input: RuntimeIncidentInput): ConfirmedIncident | null;
|
|
33
|
-
//# sourceMappingURL=runtime-incident.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-incident.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-incident.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAYrD,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,4EAA4E;AAC5E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,iFAAiF;IACjF,QAAQ,CAAC,kBAAkB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAClE,kFAAkF;IAClF,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,+EAA+E;AAC/E,wBAAgB,IAAI,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAI7D;AAWD,uMAAuM;AACvM,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,IAAI,CAkC7F"}
|
|
@@ -1,67 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Mints an `INCIDENT` from `observe_runtime`'s process exit/signal, never
|
|
3
|
-
* from `EXCEPTION` events (a caught, provoked error isn't a failure).
|
|
4
|
-
* Correlates to files an exception named — "implicated", not "caused". See `DEC-NEXT-incident-minting-beyond-explicit-reverts`.
|
|
5
|
-
*/
|
|
6
|
-
import { isAbsolute, relative } from "node:path";
|
|
7
|
-
/** Signals a process takes when it dies on its own; SIGTERM/SIGINT excluded on purpose — Descry's own teardown sends SIGTERM, and counting it would mint an incident on every successful run. */
|
|
8
|
-
const FATAL_SIGNALS = new Set([
|
|
9
|
-
"SIGSEGV",
|
|
10
|
-
"SIGABRT",
|
|
11
|
-
"SIGBUS",
|
|
12
|
-
"SIGFPE",
|
|
13
|
-
"SIGILL",
|
|
14
|
-
"SIGKILL",
|
|
15
|
-
]);
|
|
16
|
-
/** Whether this service's exit is a failure rather than Descry stopping it. */
|
|
17
|
-
export function died(outcome) {
|
|
18
|
-
if (!outcome.started)
|
|
19
|
-
return false;
|
|
20
|
-
if (outcome.exitCode !== null && outcome.exitCode !== 0)
|
|
21
|
-
return true;
|
|
22
|
-
return outcome.signal !== null && FATAL_SIGNALS.has(outcome.signal);
|
|
23
|
-
}
|
|
24
|
-
/** Repo-relative path, only when truly inside the repo — a `node_modules`/runtime-internal frame names code the developer can't change, so correlating to it would misattribute the failure. */
|
|
25
|
-
function insideRepo(repoRoot, file) {
|
|
26
|
-
if (!isAbsolute(file))
|
|
27
|
-
return file.includes("node_modules") ? null : file;
|
|
28
|
-
const rel = relative(repoRoot, file);
|
|
29
|
-
if (rel === "" || rel.startsWith("..") || isAbsolute(rel))
|
|
30
|
-
return null;
|
|
31
|
-
if (rel.split("/").includes("node_modules"))
|
|
32
|
-
return null;
|
|
33
|
-
return rel;
|
|
34
|
-
}
|
|
35
|
-
/** The incident a run witnessed, or null when every service exited cleanly (the common case, not a finding). One record per run, not per dead service — two deaths are one system failure, not two. */
|
|
36
|
-
export function runtimeObservedIncident(input) {
|
|
37
|
-
const dead = input.services.filter(died);
|
|
38
|
-
if (dead.length === 0)
|
|
39
|
-
return null;
|
|
40
|
-
const files = [
|
|
41
|
-
...new Set(input.exceptionLocations
|
|
42
|
-
.map((location) => (location.file === null ? null : insideRepo(input.repoRoot, location.file)))
|
|
43
|
-
.filter((path) => path !== null && path !== "")),
|
|
44
|
-
].sort();
|
|
45
|
-
// No owned file means nothing to attach to, and an unfindable record is
|
|
46
|
-
// worse than none — the death is still reported in the tool's own counts.
|
|
47
|
-
if (files.length === 0)
|
|
48
|
-
return null;
|
|
49
|
-
const names = dead.map((d) => d.service).sort();
|
|
50
|
-
const how = dead
|
|
51
|
-
.map((d) => `${d.service} ${d.exitCode !== null ? `exited ${String(d.exitCode)}` : `took ${String(d.signal)}`}`)
|
|
52
|
-
.join(", ");
|
|
53
|
-
return {
|
|
54
|
-
repo: input.repo,
|
|
55
|
-
// States only what was witnessed: the crash happened, not what's wrong.
|
|
56
|
-
summary: `observed run: ${how}`,
|
|
57
|
-
files,
|
|
58
|
-
// Input to the message-similarity signal — matches a future failure with the same error text.
|
|
59
|
-
...(input.exceptionTexts.length === 0
|
|
60
|
-
? {}
|
|
61
|
-
: { errorText: [...new Set(input.exceptionTexts)].slice(0, 5).join(" | ").slice(0, 2_000) }),
|
|
62
|
-
confirmedBy: `observe_runtime (${names.join(", ")})`,
|
|
63
|
-
confirmedAt: (input.now?.() ?? new Date()).toISOString(),
|
|
64
|
-
observedInRun: input.runId,
|
|
65
|
-
};
|
|
66
|
-
}
|
|
67
|
-
//# sourceMappingURL=runtime-incident.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-incident.js","sourceRoot":"","sources":["../../src/tools/runtime-incident.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,102 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RG-4 — both halves in the MCP layer, and RG-6's MCP half (video).
|
|
3
|
-
*
|
|
4
|
-
* `runInstrumentedExecution`'s `onReady` fires after every declared service's
|
|
5
|
-
* readiness has succeeded and before the observation window's sleep — the one
|
|
6
|
-
* moment in a run when the application is provably up and still alive. The
|
|
7
|
-
* desktop already composes exactly this way (`descry-desktop/packages/session/
|
|
8
|
-
* src/pipeline/browser-drive.ts`, invoked from `runtime-execution.ts`'s own
|
|
9
|
-
* `onReady`), so that browser evidence lands in the **same `EvidenceStore`
|
|
10
|
-
* under the same `executionId`** as the backend's. `observe_runtime` here
|
|
11
|
-
* never did: it passed no `onReady` and never drove a browser, so an MCP
|
|
12
|
-
* client got two calls with two lifetimes and nothing to prove they were the
|
|
13
|
-
* same run.
|
|
14
|
-
*
|
|
15
|
-
* This module is the MCP equivalent of the desktop's `browser-drive.ts` —
|
|
16
|
-
* same collectors, same package, same "never fabricate a step" discipline —
|
|
17
|
-
* built as its own file because `packages/mcp/src/browser/driver.ts` and
|
|
18
|
-
* `playwright-driver.ts` are lane identity's (a session-scoped, interactive
|
|
19
|
-
* `BrowserDriver` port for the `browser_*` tools' own lifetime) and this is a
|
|
20
|
-
* different lifetime entirely: one drive, bound to one execution's readiness
|
|
21
|
-
* window, torn down before that execution's observation window even starts.
|
|
22
|
-
* Composing through the identity lane's port would mean threading a whole
|
|
23
|
-
* interactive session through a callback that must complete before
|
|
24
|
-
* `onReady` returns — the wrong shape for what is, structurally, a single
|
|
25
|
-
* batch replay. `@descryy/runtime-browser`'s own collectors compose directly
|
|
26
|
-
* instead, the same way the desktop does it.
|
|
27
|
-
*
|
|
28
|
-
* ## The journey comes from the caller, projected by the ONE shared format
|
|
29
|
-
*
|
|
30
|
-
* `DEC-NEXT-runtime-journey-is-one-declared-format` (Q1) settled this: a
|
|
31
|
-
* saved `Scenario` and a driveable step list are two views of one format,
|
|
32
|
-
* and lane journey built the single projection both directions go through —
|
|
33
|
-
* `../scenarios/browser-run-plan-projection.ts`'s `projectScenarioToRunPlan`.
|
|
34
|
-
* This module calls that function and nothing else invents a second
|
|
35
|
-
* translation of the same scenario. Its own header explains exactly what
|
|
36
|
-
* projects and what refuses (seven shared verbs; `fill`, whole-page
|
|
37
|
-
* assertions and anything outside those seven are refused by name, never
|
|
38
|
-
* silently narrowed), and secret references are resolved inside it before
|
|
39
|
-
* this module ever sees a step — see that module's own doc.
|
|
40
|
-
*
|
|
41
|
-
* A `Scenario` with no steps drives to `startUrl` and observes, same as an
|
|
42
|
-
* empty step list does anywhere else in this codebase. No step is ever
|
|
43
|
-
* synthesized here.
|
|
44
|
-
*
|
|
45
|
-
* `@descryy/runtime-browser`'s `BrowserActionCollector` happens to support
|
|
46
|
-
* more than the shared projection's seven verbs (`assertVisible`/`assertText`
|
|
47
|
-
* included) — this module drives every one of the seven the projection
|
|
48
|
-
* can produce, which is a strict superset of what the desktop's narrower
|
|
49
|
-
* `BrowserStep` union can act on. `fill` is not among them: the shared
|
|
50
|
-
* projection refuses it because `BrowserStep` (the format's other consumer)
|
|
51
|
-
* has no counterpart for it, a decision this module does not own and does
|
|
52
|
-
* not work around — see the projection's own header for why collapsing it
|
|
53
|
-
* into `type` would be exactly the kind of silent narrowing rule 2 forbids.
|
|
54
|
-
*/
|
|
55
|
-
import { type BrowserSession, type BrowserSessionOptions } from "@descryy/runtime-browser";
|
|
56
|
-
import type { ExecutionConfiguration, SourceRootResolver } from "@descryy/runtime-contracts";
|
|
57
|
-
import type { StackTraceParser } from "@descryy/runtime-backend-observation";
|
|
58
|
-
import type { EvidenceStore } from "@descryy/runtime-evidence-store";
|
|
59
|
-
import { projectScenarioToRunPlan, type ProjectedStep, type ScenarioProjection } from "../scenarios/browser-run-plan-projection.ts";
|
|
60
|
-
export type { ProjectedStep, ScenarioProjection };
|
|
61
|
-
export { projectScenarioToRunPlan };
|
|
62
|
-
/** The one shared journey step type — lane journey's `ProjectedStep`, re-exported here so a
|
|
63
|
-
* caller of this module never has to import the projection module directly. */
|
|
64
|
-
export type JourneyStep = ProjectedStep;
|
|
65
|
-
export interface JourneyStepRefusal {
|
|
66
|
-
readonly index: number;
|
|
67
|
-
readonly kind: string;
|
|
68
|
-
readonly reason: string;
|
|
69
|
-
}
|
|
70
|
-
export interface JourneyDriveOutcome {
|
|
71
|
-
/** True once a real page existed and was navigated. False means `disclosure` covers the whole drive. */
|
|
72
|
-
readonly ran: boolean;
|
|
73
|
-
readonly startUrl: string;
|
|
74
|
-
readonly stepsCompleted: number;
|
|
75
|
-
readonly stepsRefused: readonly JourneyStepRefusal[];
|
|
76
|
-
/** Byte length of the captured video, or null when video was not requested / not produced. */
|
|
77
|
-
readonly videoBytes: number | null;
|
|
78
|
-
readonly disclosure: string | null;
|
|
79
|
-
}
|
|
80
|
-
export interface JourneyDriveInput {
|
|
81
|
-
readonly store: EvidenceStore;
|
|
82
|
-
readonly executionId: string;
|
|
83
|
-
readonly configuration: ExecutionConfiguration;
|
|
84
|
-
readonly resolveSourceRoot?: SourceRootResolver;
|
|
85
|
-
readonly stackTraceParser?: StackTraceParser;
|
|
86
|
-
}
|
|
87
|
-
export type DriveJourney = (input: JourneyDriveInput) => Promise<JourneyDriveOutcome>;
|
|
88
|
-
export interface JourneyPlan {
|
|
89
|
-
readonly startUrl: string;
|
|
90
|
-
readonly service?: string;
|
|
91
|
-
readonly steps?: readonly JourneyStep[];
|
|
92
|
-
readonly recordVideo?: boolean;
|
|
93
|
-
readonly headless?: boolean;
|
|
94
|
-
readonly settleForMs?: number;
|
|
95
|
-
/** Test seam only — see this module's header. Production callers must not pass it. */
|
|
96
|
-
readonly launchSession?: (options: BrowserSessionOptions) => Promise<BrowserSession>;
|
|
97
|
-
}
|
|
98
|
-
export declare function createRuntimeJourneyDrive(plan: JourneyPlan): DriveJourney;
|
|
99
|
-
/** This module's own collector version, distinct from `@descryy/runtime-browser`'s — these rows
|
|
100
|
-
* are the composition lane's own harness reports about driving, not the browser package's. */
|
|
101
|
-
export declare const RUNTIME_JOURNEY_DRIVE_VERSION = "descry-mcp-runtime-journey-drive@1";
|
|
102
|
-
//# sourceMappingURL=runtime-journey-drive.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-journey-drive.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-journey-drive.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AAEH,OAAO,EAML,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC3B,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAC7F,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAAE,wBAAwB,EAAE,KAAK,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,6CAA6C,CAAC;AAEpI,YAAY,EAAE,aAAa,EAAE,kBAAkB,EAAE,CAAC;AAClD,OAAO,EAAE,wBAAwB,EAAE,CAAC;AAEpC;gFACgF;AAChF,MAAM,MAAM,WAAW,GAAG,aAAa,CAAC;AAExC,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,mBAAmB;IAClC,wGAAwG;IACxG,QAAQ,CAAC,GAAG,EAAE,OAAO,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,YAAY,EAAE,SAAS,kBAAkB,EAAE,CAAC;IACrD,8FAA8F;IAC9F,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC;IAC9B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,sBAAsB,CAAC;IAC/C,QAAQ,CAAC,iBAAiB,CAAC,EAAE,kBAAkB,CAAC;IAChD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CAC9C;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,OAAO,CAAC,mBAAmB,CAAC,CAAC;AAEtF,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,WAAW,EAAE,CAAC;IACxC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,sFAAsF;IACtF,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,qBAAqB,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;CACtF;AAID,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,WAAW,GAAG,YAAY,CA4GzE;AA+FD;+FAC+F;AAC/F,eAAO,MAAM,6BAA6B,uCAAuC,CAAC"}
|
|
@@ -1,247 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* RG-4 — both halves in the MCP layer, and RG-6's MCP half (video).
|
|
3
|
-
*
|
|
4
|
-
* `runInstrumentedExecution`'s `onReady` fires after every declared service's
|
|
5
|
-
* readiness has succeeded and before the observation window's sleep — the one
|
|
6
|
-
* moment in a run when the application is provably up and still alive. The
|
|
7
|
-
* desktop already composes exactly this way (`descry-desktop/packages/session/
|
|
8
|
-
* src/pipeline/browser-drive.ts`, invoked from `runtime-execution.ts`'s own
|
|
9
|
-
* `onReady`), so that browser evidence lands in the **same `EvidenceStore`
|
|
10
|
-
* under the same `executionId`** as the backend's. `observe_runtime` here
|
|
11
|
-
* never did: it passed no `onReady` and never drove a browser, so an MCP
|
|
12
|
-
* client got two calls with two lifetimes and nothing to prove they were the
|
|
13
|
-
* same run.
|
|
14
|
-
*
|
|
15
|
-
* This module is the MCP equivalent of the desktop's `browser-drive.ts` —
|
|
16
|
-
* same collectors, same package, same "never fabricate a step" discipline —
|
|
17
|
-
* built as its own file because `packages/mcp/src/browser/driver.ts` and
|
|
18
|
-
* `playwright-driver.ts` are lane identity's (a session-scoped, interactive
|
|
19
|
-
* `BrowserDriver` port for the `browser_*` tools' own lifetime) and this is a
|
|
20
|
-
* different lifetime entirely: one drive, bound to one execution's readiness
|
|
21
|
-
* window, torn down before that execution's observation window even starts.
|
|
22
|
-
* Composing through the identity lane's port would mean threading a whole
|
|
23
|
-
* interactive session through a callback that must complete before
|
|
24
|
-
* `onReady` returns — the wrong shape for what is, structurally, a single
|
|
25
|
-
* batch replay. `@descryy/runtime-browser`'s own collectors compose directly
|
|
26
|
-
* instead, the same way the desktop does it.
|
|
27
|
-
*
|
|
28
|
-
* ## The journey comes from the caller, projected by the ONE shared format
|
|
29
|
-
*
|
|
30
|
-
* `DEC-NEXT-runtime-journey-is-one-declared-format` (Q1) settled this: a
|
|
31
|
-
* saved `Scenario` and a driveable step list are two views of one format,
|
|
32
|
-
* and lane journey built the single projection both directions go through —
|
|
33
|
-
* `../scenarios/browser-run-plan-projection.ts`'s `projectScenarioToRunPlan`.
|
|
34
|
-
* This module calls that function and nothing else invents a second
|
|
35
|
-
* translation of the same scenario. Its own header explains exactly what
|
|
36
|
-
* projects and what refuses (seven shared verbs; `fill`, whole-page
|
|
37
|
-
* assertions and anything outside those seven are refused by name, never
|
|
38
|
-
* silently narrowed), and secret references are resolved inside it before
|
|
39
|
-
* this module ever sees a step — see that module's own doc.
|
|
40
|
-
*
|
|
41
|
-
* A `Scenario` with no steps drives to `startUrl` and observes, same as an
|
|
42
|
-
* empty step list does anywhere else in this codebase. No step is ever
|
|
43
|
-
* synthesized here.
|
|
44
|
-
*
|
|
45
|
-
* `@descryy/runtime-browser`'s `BrowserActionCollector` happens to support
|
|
46
|
-
* more than the shared projection's seven verbs (`assertVisible`/`assertText`
|
|
47
|
-
* included) — this module drives every one of the seven the projection
|
|
48
|
-
* can produce, which is a strict superset of what the desktop's narrower
|
|
49
|
-
* `BrowserStep` union can act on. `fill` is not among them: the shared
|
|
50
|
-
* projection refuses it because `BrowserStep` (the format's other consumer)
|
|
51
|
-
* has no counterpart for it, a decision this module does not own and does
|
|
52
|
-
* not work around — see the projection's own header for why collapsing it
|
|
53
|
-
* into `type` would be exactly the kind of silent narrowing rule 2 forbids.
|
|
54
|
-
*/
|
|
55
|
-
import { createBrowserActionCollector, createBrowserConsoleCollector, createBrowserNetworkCollector, launchBrowserSession, } from "@descryy/runtime-browser";
|
|
56
|
-
import { projectScenarioToRunPlan } from "../scenarios/browser-run-plan-projection.js";
|
|
57
|
-
export { projectScenarioToRunPlan };
|
|
58
|
-
const DEFAULT_SETTLE_FOR_MS = 1_000;
|
|
59
|
-
export function createRuntimeJourneyDrive(plan) {
|
|
60
|
-
const launch = plan.launchSession ?? launchBrowserSession;
|
|
61
|
-
const steps = plan.steps ?? [];
|
|
62
|
-
return async (input) => {
|
|
63
|
-
const harnessError = (detail) => {
|
|
64
|
-
input.store.write({
|
|
65
|
-
executionId: input.executionId,
|
|
66
|
-
timestamp: new Date().toISOString(),
|
|
67
|
-
source: "harness",
|
|
68
|
-
service: plan.service ?? null,
|
|
69
|
-
process: null,
|
|
70
|
-
eventType: "COLLECTOR_ERROR",
|
|
71
|
-
payload: { raw: detail, error: detail, collectorId: "runtime-journey-drive" },
|
|
72
|
-
traceId: null,
|
|
73
|
-
requestId: null,
|
|
74
|
-
correlationId: null,
|
|
75
|
-
graphNodeId: null,
|
|
76
|
-
sourceLocation: null,
|
|
77
|
-
stackTrace: null,
|
|
78
|
-
confidence: 1,
|
|
79
|
-
collectorVersion: RUNTIME_JOURNEY_DRIVE_VERSION,
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
let session;
|
|
83
|
-
try {
|
|
84
|
-
session = await launch({
|
|
85
|
-
headless: plan.headless ?? true,
|
|
86
|
-
...(plan.recordVideo === true ? { recordVideo: true } : {}),
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
catch (error) {
|
|
90
|
-
const cause = describe(error);
|
|
91
|
-
const disclosure = `No browser was driven for this run: the browser session could not be launched (${cause}). ` +
|
|
92
|
-
`Backend evidence is unaffected — this drive runs inside the readiness window and never blocks it.`;
|
|
93
|
-
harnessError(disclosure);
|
|
94
|
-
return { ran: false, startUrl: plan.startUrl, stepsCompleted: 0, stepsRefused: [], videoBytes: null, disclosure };
|
|
95
|
-
}
|
|
96
|
-
const actions = createBrowserActionCollector({ session, ...(plan.service === undefined ? {} : { service: plan.service }) });
|
|
97
|
-
const consoleCollector = createBrowserConsoleCollector({
|
|
98
|
-
session,
|
|
99
|
-
...(plan.service === undefined ? {} : { service: plan.service }),
|
|
100
|
-
...(input.stackTraceParser === undefined ? {} : { stackTraceParser: input.stackTraceParser }),
|
|
101
|
-
});
|
|
102
|
-
const networkCollector = createBrowserNetworkCollector({
|
|
103
|
-
session,
|
|
104
|
-
...(plan.service === undefined ? {} : { service: plan.service }),
|
|
105
|
-
...(input.stackTraceParser === undefined ? {} : { stackTraceParser: input.stackTraceParser }),
|
|
106
|
-
});
|
|
107
|
-
const context = {
|
|
108
|
-
executionId: input.executionId,
|
|
109
|
-
configuration: input.configuration,
|
|
110
|
-
emit: (evidence) => {
|
|
111
|
-
input.store.write({ ...evidence, executionId: input.executionId });
|
|
112
|
-
},
|
|
113
|
-
...(input.resolveSourceRoot === undefined ? {} : { resolveSourceRoot: input.resolveSourceRoot }),
|
|
114
|
-
};
|
|
115
|
-
const refusals = [];
|
|
116
|
-
const unavailable = [];
|
|
117
|
-
let completed = 0;
|
|
118
|
-
let videoBytes = null;
|
|
119
|
-
try {
|
|
120
|
-
for (const [name, collector] of [
|
|
121
|
-
["browser-console", consoleCollector],
|
|
122
|
-
["browser-network", networkCollector],
|
|
123
|
-
["browser-action", actions],
|
|
124
|
-
]) {
|
|
125
|
-
try {
|
|
126
|
-
const started = await collector.start(context);
|
|
127
|
-
if (!started.available)
|
|
128
|
-
unavailable.push(`${name} (${started.reason ?? "no reason given"})`);
|
|
129
|
-
}
|
|
130
|
-
catch (error) {
|
|
131
|
-
unavailable.push(`${name} (start() threw: ${describe(error)})`);
|
|
132
|
-
harnessError(`browser collector "${name}" threw during start(): ${describe(error)}`);
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
await actions.navigate(plan.startUrl);
|
|
136
|
-
for (const [index, step] of steps.entries()) {
|
|
137
|
-
try {
|
|
138
|
-
await runStep(actions, step);
|
|
139
|
-
completed += 1;
|
|
140
|
-
}
|
|
141
|
-
catch (error) {
|
|
142
|
-
const reason = describe(error);
|
|
143
|
-
refusals.push({ index, kind: step.kind, reason });
|
|
144
|
-
harnessError(`journey step ${String(index + 1)} (${step.kind}) could not be performed: ${reason}`);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
await sleep(plan.settleForMs ?? DEFAULT_SETTLE_FOR_MS);
|
|
148
|
-
}
|
|
149
|
-
catch (error) {
|
|
150
|
-
const cause = describe(error);
|
|
151
|
-
harnessError(`the journey drive stopped early: ${cause}`);
|
|
152
|
-
refusals.push({ index: completed, kind: "navigate", reason: cause });
|
|
153
|
-
}
|
|
154
|
-
// Same ordering constraint as the desktop's browser-drive.ts: captureVideo() must run
|
|
155
|
-
// after session.close() (Playwright only finalizes recordVideo once the context closes)
|
|
156
|
-
// and before actions.stop() (which clears the emit channel it writes into).
|
|
157
|
-
videoBytes = await finish(consoleCollector, networkCollector, actions, session, input, harnessError);
|
|
158
|
-
const disclosure = describeShortfall(unavailable, refusals, plan);
|
|
159
|
-
return { ran: true, startUrl: plan.startUrl, stepsCompleted: completed, stepsRefused: refusals, videoBytes, disclosure };
|
|
160
|
-
};
|
|
161
|
-
}
|
|
162
|
-
async function finish(consoleCollector, networkCollector, actions, session, input, harnessError) {
|
|
163
|
-
const before = countVideoBytes(input);
|
|
164
|
-
for (const [name, stop] of [
|
|
165
|
-
["browser-console", () => consoleCollector.stop()],
|
|
166
|
-
["browser-network", () => networkCollector.stop()],
|
|
167
|
-
["browser-session", () => session.close()],
|
|
168
|
-
["browser-video", () => actions.captureVideo()],
|
|
169
|
-
["browser-action", () => actions.stop()],
|
|
170
|
-
]) {
|
|
171
|
-
try {
|
|
172
|
-
await stop();
|
|
173
|
-
}
|
|
174
|
-
catch (error) {
|
|
175
|
-
harnessError(`journey drive teardown step "${name}" failed: ${describe(error)}`);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
const after = countVideoBytes(input);
|
|
179
|
-
return after === before ? null : after;
|
|
180
|
-
}
|
|
181
|
-
function countVideoBytes(input) {
|
|
182
|
-
for (const evidence of input.store.getByExecution(input.executionId)) {
|
|
183
|
-
if (evidence.eventType !== "VIDEO")
|
|
184
|
-
continue;
|
|
185
|
-
const payload = evidence.payload;
|
|
186
|
-
if (typeof payload?.videoBase64 !== "string")
|
|
187
|
-
continue;
|
|
188
|
-
return Buffer.from(payload.videoBase64, "base64").length;
|
|
189
|
-
}
|
|
190
|
-
return null;
|
|
191
|
-
}
|
|
192
|
-
/** Never throws on a step this module cannot resolve to an action — that would surface as a
|
|
193
|
-
* bare refusal with a useless reason; a `ProjectedStep` naming no target/text for a kind that
|
|
194
|
-
* needs one is a defect in the projection this module trusts rather than something to re-check
|
|
195
|
-
* here, so those are stated plainly rather than re-validated. */
|
|
196
|
-
async function runStep(actions, step) {
|
|
197
|
-
switch (step.kind) {
|
|
198
|
-
case "navigate":
|
|
199
|
-
if (step.url === null)
|
|
200
|
-
throw new Error(`"navigate" step carries no url`);
|
|
201
|
-
return actions.navigate(step.url);
|
|
202
|
-
case "click":
|
|
203
|
-
return actions.click(requireSelector(step));
|
|
204
|
-
case "type":
|
|
205
|
-
return actions.type(requireSelector(step), requireText(step));
|
|
206
|
-
case "select":
|
|
207
|
-
return actions.select(requireSelector(step), requireText(step));
|
|
208
|
-
case "submit":
|
|
209
|
-
return actions.submit(requireSelector(step));
|
|
210
|
-
case "assertVisible":
|
|
211
|
-
return actions.assertVisible(requireSelector(step));
|
|
212
|
-
case "assertText":
|
|
213
|
-
return actions.assertText(requireSelector(step), requireText(step));
|
|
214
|
-
}
|
|
215
|
-
}
|
|
216
|
-
function requireSelector(step) {
|
|
217
|
-
if (step.target === null)
|
|
218
|
-
throw new Error(`"${step.kind}" step carries no target`);
|
|
219
|
-
return step.target.selector;
|
|
220
|
-
}
|
|
221
|
-
function requireText(step) {
|
|
222
|
-
if (step.text === null)
|
|
223
|
-
throw new Error(`"${step.kind}" step carries no text`);
|
|
224
|
-
return step.text;
|
|
225
|
-
}
|
|
226
|
-
function describeShortfall(unavailable, refusals, plan) {
|
|
227
|
-
const parts = [];
|
|
228
|
-
if (unavailable.length > 0) {
|
|
229
|
-
parts.push(`These browser collectors reported themselves unavailable and observed nothing: ${unavailable.join("; ")}.`);
|
|
230
|
-
}
|
|
231
|
-
if (refusals.length > 0) {
|
|
232
|
-
parts.push(`${String(refusals.length)} of ${String((plan.steps ?? []).length)} declared journey step(s) could not be performed: ` +
|
|
233
|
-
refusals.map((r) => `step ${String(r.index + 1)} (${r.kind}): ${r.reason}`).join("; ") +
|
|
234
|
-
".");
|
|
235
|
-
}
|
|
236
|
-
return parts.length === 0 ? null : parts.join(" ");
|
|
237
|
-
}
|
|
238
|
-
function describe(error) {
|
|
239
|
-
return error instanceof Error ? `${error.name}: ${error.message}` : String(error);
|
|
240
|
-
}
|
|
241
|
-
function sleep(ms) {
|
|
242
|
-
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
243
|
-
}
|
|
244
|
-
/** This module's own collector version, distinct from `@descryy/runtime-browser`'s — these rows
|
|
245
|
-
* are the composition lane's own harness reports about driving, not the browser package's. */
|
|
246
|
-
export const RUNTIME_JOURNEY_DRIVE_VERSION = "descry-mcp-runtime-journey-drive@1";
|
|
247
|
-
//# sourceMappingURL=runtime-journey-drive.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-journey-drive.js","sourceRoot":"","sources":["../../src/tools/runtime-journey-drive.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/scope.d.ts
DELETED
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `scope` — §12.5 diff scoping: what else does this change touch? Expansion stops
|
|
3
|
-
* on score, not hop count — a payment gateway 4 hops out matters, a logging import
|
|
4
|
-
* 1 hop out doesn't. A file the graph never heard of has two causes (not analysable,
|
|
5
|
-
* or stale graph) — both disclosed, never reported as "0 affected" (§20.2's collapse). */
|
|
6
|
-
import { type ScopeTier } from "@descryy/core";
|
|
7
|
-
import type { EdgeType } from "@descryy/ir";
|
|
8
|
-
import { type BriefNode, type ToolDefinition } from "./kit.ts";
|
|
9
|
-
/** A node in the scope, with why it is in it. */
|
|
10
|
-
export interface ScopedNodeReport extends BriefNode {
|
|
11
|
-
readonly score: number;
|
|
12
|
-
readonly tier: ScopeTier;
|
|
13
|
-
readonly depth: number;
|
|
14
|
-
/** The edge type this node was reached through. Absent for a seed. */
|
|
15
|
-
readonly via?: EdgeType;
|
|
16
|
-
}
|
|
17
|
-
/** Tier 1 is the changed set itself; 2-4 are the scoring bands beneath it. */
|
|
18
|
-
export interface ScopeTierCount {
|
|
19
|
-
readonly tier: number;
|
|
20
|
-
readonly count: number;
|
|
21
|
-
}
|
|
22
|
-
export interface ScopeReport {
|
|
23
|
-
/** Capped by `limit`; `changedTotal` is the uncapped count. Every seed is
|
|
24
|
-
* traversed either way — the cap shortens the listing, not the analysis. */
|
|
25
|
-
readonly changed: readonly ScopedNodeReport[];
|
|
26
|
-
readonly changedTotal: number;
|
|
27
|
-
/** Capped by `limit`; `affectedTotal` is the uncapped count. */
|
|
28
|
-
readonly affected: readonly ScopedNodeReport[];
|
|
29
|
-
readonly affectedTotal: number;
|
|
30
|
-
readonly droppedForBudget: number;
|
|
31
|
-
readonly budget: number;
|
|
32
|
-
readonly budgetUsed: number;
|
|
33
|
-
readonly byTier: readonly ScopeTierCount[];
|
|
34
|
-
}
|
|
35
|
-
/** Nothing named resolved into the graph, so the traversal never ran — a different
|
|
36
|
-
* shape, not a zeroed `ScopeReport`: no `budget`/`affectedTotal` because nothing ran.
|
|
37
|
-
* Narrow on `"seeds" in data`. */
|
|
38
|
-
export interface ScopeNotSeeded {
|
|
39
|
-
readonly changed: readonly ScopedNodeReport[];
|
|
40
|
-
readonly affected: readonly ScopedNodeReport[];
|
|
41
|
-
readonly seeds: number;
|
|
42
|
-
}
|
|
43
|
-
export type ScopeData = ScopeReport | ScopeNotSeeded;
|
|
44
|
-
export declare const scopeTool: ToolDefinition;
|
|
45
|
-
//# sourceMappingURL=scope.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"AAAA;;;;0FAI0F;AAE1F,OAAO,EAA8C,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAIlB,iDAAiD;AACjD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B;iFAC6E;IAC7E,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;mCAEmC;AACnC,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;AAoMrD,eAAO,MAAM,SAAS,EAAE,cAavB,CAAC"}
|