@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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@descryy/mcp",
|
|
3
|
-
"version": "0.11.
|
|
3
|
+
"version": "0.11.5",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Descry's MCP server: the agent-facing front door over the query layer. The stdio transport is JSON-RPC 2.0 by hand rather than seventeen packages of HTTP and OAuth. Twenty-one tools; most read the graph and nothing else. The @descryy dependencies are here for the three that do more: observe_runtime boots or attaches to a real application, observe_tests runs the project's own test suite, and the browser tools drive a real browser — each writing what it witnessed into the graph as R4 facts. @descryy/runtime-browser is declared below like the others. It is still imported by specifier at call time rather than statically — not because it is unpublished (it is not) but because that indirection is an injection seam real tests use to drive the settle logic against a fake module with no real browser involved; see playwright-driver.ts. A missing package, a missing Chromium binary, or an import failure each still returns a named, remediable refusal rather than a crash or an empty result.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -32,30 +32,27 @@
|
|
|
32
32
|
"registry": "https://registry.npmjs.org",
|
|
33
33
|
"access": "public"
|
|
34
34
|
},
|
|
35
|
-
"scripts": {
|
|
36
|
-
"build": "tsc -b"
|
|
37
|
-
},
|
|
38
35
|
"devDependencies": {
|
|
39
36
|
"pg": "8.13.1"
|
|
40
37
|
},
|
|
41
38
|
"dependencies": {
|
|
42
|
-
"@descryy/core": "0.9.
|
|
39
|
+
"@descryy/core": "0.9.2",
|
|
43
40
|
"@descryy/ir": "0.10.0",
|
|
44
41
|
"@descryy/runtime-backend-observation": "0.3.6",
|
|
45
|
-
"@descryy/runtime-browser": "0.4.
|
|
42
|
+
"@descryy/runtime-browser": "0.4.8",
|
|
46
43
|
"@descryy/runtime-contracts": "0.3.3",
|
|
47
|
-
"@descryy/runtime-controller": "0.3.
|
|
48
|
-
"@descryy/runtime-database-observation": "0.4.
|
|
44
|
+
"@descryy/runtime-controller": "0.3.8",
|
|
45
|
+
"@descryy/runtime-database-observation": "0.4.8",
|
|
49
46
|
"@descryy/runtime-environment-profile": "0.4.5",
|
|
50
|
-
"@descryy/runtime-evidence-correlation": "0.4.
|
|
47
|
+
"@descryy/runtime-evidence-correlation": "0.4.9",
|
|
51
48
|
"@descryy/runtime-evidence-store": "0.4.2",
|
|
52
|
-
"@descryy/runtime-graph-correlator": "0.4.
|
|
53
|
-
"@descryy/runtime-identity-grounding": "0.4.
|
|
54
|
-
"@descryy/runtime-orchestrator": "0.4.
|
|
55
|
-
"@descryy/runtime-test-runner": "0.4.
|
|
49
|
+
"@descryy/runtime-graph-correlator": "0.4.8",
|
|
50
|
+
"@descryy/runtime-identity-grounding": "0.4.4",
|
|
51
|
+
"@descryy/runtime-orchestrator": "0.4.9",
|
|
52
|
+
"@descryy/runtime-test-runner": "0.4.9"
|
|
56
53
|
},
|
|
57
54
|
"optionalDependencies": {
|
|
58
|
-
"@descryy/runtime-adapter-typescript": "0.3.
|
|
55
|
+
"@descryy/runtime-adapter-typescript": "0.3.7",
|
|
59
56
|
"@descryy/runtime-adapter-csharp": "0.1.5",
|
|
60
57
|
"@descryy/runtime-adapter-go": "0.1.5",
|
|
61
58
|
"@descryy/runtime-adapter-jvm": "0.1.5",
|
|
@@ -64,15 +61,18 @@
|
|
|
64
61
|
"@descryy/runtime-adapter-ruby": "0.0.4",
|
|
65
62
|
"@descryy/runtime-adapter-rust": "0.1.5",
|
|
66
63
|
"@descryy/runtime-adapter-swift": "0.1.5",
|
|
67
|
-
"@descryy/adapter-typescript": "0.5.
|
|
68
|
-
"@descryy/adapter-csharp": "0.5.
|
|
64
|
+
"@descryy/adapter-typescript": "0.5.2",
|
|
65
|
+
"@descryy/adapter-csharp": "0.5.2",
|
|
69
66
|
"@descryy/adapter-go": "0.5.1",
|
|
70
67
|
"@descryy/adapter-java": "0.5.1",
|
|
71
68
|
"@descryy/adapter-kotlin": "0.5.1",
|
|
72
69
|
"@descryy/adapter-php": "0.5.1",
|
|
73
|
-
"@descryy/adapter-python": "0.5.
|
|
74
|
-
"@descryy/adapter-ruby": "0.5.
|
|
70
|
+
"@descryy/adapter-python": "0.5.2",
|
|
71
|
+
"@descryy/adapter-ruby": "0.5.2",
|
|
75
72
|
"@descryy/adapter-rust": "0.5.1",
|
|
76
|
-
"@descryy/adapter-swift": "0.5.
|
|
73
|
+
"@descryy/adapter-swift": "0.5.2"
|
|
74
|
+
},
|
|
75
|
+
"scripts": {
|
|
76
|
+
"build": "tsc -b"
|
|
77
77
|
}
|
|
78
|
-
}
|
|
78
|
+
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/** Two-call action-tool handshake, §7/DEC-278. G5 doesn't run in MCP mode, so this replaces it —
|
|
2
|
-
* the server owns both decision and state, holding the gate without client cooperation. A tool
|
|
3
|
-
* opts in via `class: "action"` + `describeAction`. Token binds to call 1's exact args, is
|
|
4
|
-
* single-use, expires in 5 minutes (a starting value), and any bad token throws
|
|
5
|
-
* `ToolInputError` rather than a silent no-op.
|
|
6
|
-
*
|
|
7
|
-
* **Redemption runs the frozen args and says so when that cost the caller something.** It used
|
|
8
|
-
* to ignore anything else supplied and disclose nothing, which is the "silently do less" rule 7
|
|
9
|
-
* forbids: documenting a substitution in five tool descriptions does not make it not silent,
|
|
10
|
-
* because the caller who gets it wrong is by definition the one who did not read them. So a
|
|
11
|
-
* conflicting value is still discarded — the frozen args are the ones a human saw in `willDo`,
|
|
12
|
-
* and honouring a value nobody confirmed would defeat the gate — but the keys dropped come back
|
|
13
|
-
* on the dispatch and are disclosed by name in the reply.
|
|
14
|
-
*
|
|
15
|
-
* What is *not* a discard, and this is the whole difficulty: call 2 carrying only the token is
|
|
16
|
-
* the documented normal path, and a client echoing the original args back alongside it is
|
|
17
|
-
* equally correct. An omitted key used its frozen value; a re-sent identical key changed
|
|
18
|
-
* nothing. Only a conflicting value is reported, or the disclosure would fire on every correct
|
|
19
|
-
* call and be trained away before the one time it mattered. Ruled in
|
|
20
|
-
* `DEC-NEXT-late-arguments-on-a-confirming-call.md`. */
|
|
21
|
-
import { type ToolContext, type ToolDefinition } from "./tools/kit.ts";
|
|
22
|
-
export type ActionDispatch = {
|
|
23
|
-
readonly kind: "run";
|
|
24
|
-
readonly args: Record<string, unknown>;
|
|
25
|
-
/** Arguments the confirming call supplied that conflicted with the frozen ones and were
|
|
26
|
-
* therefore not used. Present only on a redemption, and only when non-empty — every other
|
|
27
|
-
* path discarded nothing and must say nothing. Rendered into the reply's `disclosures`. */
|
|
28
|
-
readonly discardedArgs?: readonly string[];
|
|
29
|
-
} | {
|
|
30
|
-
readonly kind: "handshake";
|
|
31
|
-
readonly token: string;
|
|
32
|
-
readonly willDo: string;
|
|
33
|
-
};
|
|
34
|
-
/** Decides what a call should do, before any budget timer starts. `read`/`stateful-read` and an
|
|
35
|
-
* ungated `action` call resolve to `{ kind: "run", args }`; an unconfirmed gated call resolves to
|
|
36
|
-
* `{ kind: "handshake", token, willDo }`; a redeemed one runs the args captured at mint time. */
|
|
37
|
-
export declare function resolveActionDispatch(tool: ToolDefinition, args: Record<string, unknown>, ctx: ToolContext): Promise<ActionDispatch>;
|
|
38
|
-
//# sourceMappingURL=action-handshake.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-handshake.d.ts","sourceRoot":"","sources":["../src/action-handshake.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;yDAmByD;AAIzD,OAAO,EAAkB,KAAK,WAAW,EAAE,KAAK,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAiCvF,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC;IACrB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC;;gGAE4F;IAC5F,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CAC5C,GACD;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEpF;;kGAEkG;AAClG,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,cAAc,EACpB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,GAAG,EAAE,WAAW,GACf,OAAO,CAAC,cAAc,CAAC,CAazB"}
|
package/dist/action-handshake.js
DELETED
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/** Two-call action-tool handshake, §7/DEC-278. G5 doesn't run in MCP mode, so this replaces it —
|
|
2
|
-
* the server owns both decision and state, holding the gate without client cooperation. A tool
|
|
3
|
-
* opts in via `class: "action"` + `describeAction`. Token binds to call 1's exact args, is
|
|
4
|
-
* single-use, expires in 5 minutes (a starting value), and any bad token throws
|
|
5
|
-
* `ToolInputError` rather than a silent no-op.
|
|
6
|
-
*
|
|
7
|
-
* **Redemption runs the frozen args and says so when that cost the caller something.** It used
|
|
8
|
-
* to ignore anything else supplied and disclose nothing, which is the "silently do less" rule 7
|
|
9
|
-
* forbids: documenting a substitution in five tool descriptions does not make it not silent,
|
|
10
|
-
* because the caller who gets it wrong is by definition the one who did not read them. So a
|
|
11
|
-
* conflicting value is still discarded — the frozen args are the ones a human saw in `willDo`,
|
|
12
|
-
* and honouring a value nobody confirmed would defeat the gate — but the keys dropped come back
|
|
13
|
-
* on the dispatch and are disclosed by name in the reply.
|
|
14
|
-
*
|
|
15
|
-
* What is *not* a discard, and this is the whole difficulty: call 2 carrying only the token is
|
|
16
|
-
* the documented normal path, and a client echoing the original args back alongside it is
|
|
17
|
-
* equally correct. An omitted key used its frozen value; a re-sent identical key changed
|
|
18
|
-
* nothing. Only a conflicting value is reported, or the disclosure would fire on every correct
|
|
19
|
-
* call and be trained away before the one time it mattered. Ruled in
|
|
20
|
-
* `DEC-NEXT-late-arguments-on-a-confirming-call.md`. */
|
|
21
|
-
import { randomBytes } from "node:crypto";
|
|
22
|
-
import { ToolInputError } from "./tools/kit.js";
|
|
23
|
-
const TOKEN_TTL_MS = 5 * 60 * 1000;
|
|
24
|
-
const storesBySession = new WeakMap();
|
|
25
|
-
function storeFor(session) {
|
|
26
|
-
let store = storesBySession.get(session);
|
|
27
|
-
if (store === undefined) {
|
|
28
|
-
store = new Map();
|
|
29
|
-
storesBySession.set(session, store);
|
|
30
|
-
}
|
|
31
|
-
return store;
|
|
32
|
-
}
|
|
33
|
-
function prune(store) {
|
|
34
|
-
const now = Date.now();
|
|
35
|
-
for (const [token, pending] of store) {
|
|
36
|
-
if (pending.expiresAt < now)
|
|
37
|
-
store.delete(token);
|
|
38
|
-
}
|
|
39
|
-
}
|
|
40
|
-
function mintToken() {
|
|
41
|
-
return `act_${randomBytes(9).toString("base64url")}`;
|
|
42
|
-
}
|
|
43
|
-
/** Decides what a call should do, before any budget timer starts. `read`/`stateful-read` and an
|
|
44
|
-
* ungated `action` call resolve to `{ kind: "run", args }`; an unconfirmed gated call resolves to
|
|
45
|
-
* `{ kind: "handshake", token, willDo }`; a redeemed one runs the args captured at mint time. */
|
|
46
|
-
export async function resolveActionDispatch(tool, args, ctx) {
|
|
47
|
-
if (tool.class !== "action")
|
|
48
|
-
return { kind: "run", args };
|
|
49
|
-
const confirmToken = args["confirmToken"];
|
|
50
|
-
if (confirmToken !== undefined && typeof confirmToken !== "string") {
|
|
51
|
-
throw new ToolInputError('"confirmToken" must be a string');
|
|
52
|
-
}
|
|
53
|
-
if (confirmToken === undefined) {
|
|
54
|
-
return mintOrPassThrough(tool, args, ctx);
|
|
55
|
-
}
|
|
56
|
-
return redeem(tool, args, confirmToken, ctx);
|
|
57
|
-
}
|
|
58
|
-
async function mintOrPassThrough(tool, args, ctx) {
|
|
59
|
-
if (tool.describeAction === undefined) {
|
|
60
|
-
// Registry bug, not a caller mistake: `class: "action"` declared with no describeAction.
|
|
61
|
-
throw new Error(`${tool.name} declares class "action" but has no describeAction`);
|
|
62
|
-
}
|
|
63
|
-
const willDo = await tool.describeAction(args, ctx);
|
|
64
|
-
if (willDo === undefined)
|
|
65
|
-
return { kind: "run", args };
|
|
66
|
-
const store = storeFor(ctx.session);
|
|
67
|
-
prune(store);
|
|
68
|
-
const token = mintToken();
|
|
69
|
-
store.set(token, { toolName: tool.name, args, expiresAt: Date.now() + TOKEN_TTL_MS });
|
|
70
|
-
return { kind: "handshake", token, willDo };
|
|
71
|
-
}
|
|
72
|
-
async function redeem(tool, supplied, confirmToken, ctx) {
|
|
73
|
-
const store = storeFor(ctx.session);
|
|
74
|
-
const pending = store.get(confirmToken);
|
|
75
|
-
// Deleted on lookup, not on success: a replayed token is a used token
|
|
76
|
-
// whether or not what follows here succeeds.
|
|
77
|
-
store.delete(confirmToken);
|
|
78
|
-
if (pending === undefined) {
|
|
79
|
-
throw new ToolInputError(`"confirmToken" is unknown or was already used. Call ${tool.name} again without confirmToken for a fresh one.`);
|
|
80
|
-
}
|
|
81
|
-
if (pending.expiresAt < Date.now()) {
|
|
82
|
-
throw new ToolInputError(`"confirmToken" expired. Call ${tool.name} again without confirmToken for a fresh one.`);
|
|
83
|
-
}
|
|
84
|
-
if (pending.toolName !== tool.name) {
|
|
85
|
-
throw new ToolInputError(`"confirmToken" was not issued for ${tool.name}.`);
|
|
86
|
-
}
|
|
87
|
-
const discardedArgs = conflictingKeys(supplied, pending.args);
|
|
88
|
-
return discardedArgs.length === 0
|
|
89
|
-
? { kind: "run", args: pending.args }
|
|
90
|
-
: { kind: "run", args: pending.args, discardedArgs };
|
|
91
|
-
}
|
|
92
|
-
/** Keys the confirming call supplied with a value the frozen args do not already hold. `confirmToken`
|
|
93
|
-
* is excluded: it is the handshake's own argument, never one of the tool's. Sorted so the disclosure
|
|
94
|
-
* reads the same on every run — a reply a caller diffs must not reorder on rerun (§9 layer 6). */
|
|
95
|
-
function conflictingKeys(supplied, frozen) {
|
|
96
|
-
const conflicts = [];
|
|
97
|
-
for (const key of Object.keys(supplied)) {
|
|
98
|
-
if (key === "confirmToken")
|
|
99
|
-
continue;
|
|
100
|
-
if (!sameValue(supplied[key], frozen[key]))
|
|
101
|
-
conflicts.push(key);
|
|
102
|
-
}
|
|
103
|
-
return conflicts.sort();
|
|
104
|
-
}
|
|
105
|
-
/** Structural equality over the JSON an MCP client can actually send — objects, arrays, and the
|
|
106
|
-
* four scalar types. Object key *order* is not part of a JSON value's identity, so it is not
|
|
107
|
-
* compared: a client that rebuilds an argument from its own state and sends the same fields in a
|
|
108
|
-
* different order discarded nothing, and telling it otherwise is the false positive that would
|
|
109
|
-
* make this disclosure worth ignoring. */
|
|
110
|
-
function sameValue(a, b) {
|
|
111
|
-
if (a === b)
|
|
112
|
-
return true;
|
|
113
|
-
if (typeof a !== "object" || typeof b !== "object" || a === null || b === null)
|
|
114
|
-
return false;
|
|
115
|
-
if (Array.isArray(a) || Array.isArray(b)) {
|
|
116
|
-
if (!Array.isArray(a) || !Array.isArray(b) || a.length !== b.length)
|
|
117
|
-
return false;
|
|
118
|
-
return a.every((item, index) => sameValue(item, b[index]));
|
|
119
|
-
}
|
|
120
|
-
const left = a;
|
|
121
|
-
const right = b;
|
|
122
|
-
const leftKeys = Object.keys(left);
|
|
123
|
-
if (leftKeys.length !== Object.keys(right).length)
|
|
124
|
-
return false;
|
|
125
|
-
return leftKeys.every((key) => Object.hasOwn(right, key) && sameValue(left[key], right[key]));
|
|
126
|
-
}
|
|
127
|
-
//# sourceMappingURL=action-handshake.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"action-handshake.js","sourceRoot":"","sources":["../src/action-handshake.ts"],"names":[],"mappings":"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"}
|
package/dist/bin/descry-mcp.d.ts
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/** The executable an MCP host launches. Takes the repo path (default cwd); everything else comes
|
|
3
|
-
* from `.descry/config.json`. `serveStdio` redirects console to stderr on its first line, so this
|
|
4
|
-
* file writes nothing before opening anything — earlier output corrupts the handshake frame, the
|
|
5
|
-
* worst place to fail (host just reports "server did not start"). */
|
|
6
|
-
export {};
|
|
7
|
-
//# sourceMappingURL=descry-mcp.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descry-mcp.d.ts","sourceRoot":"","sources":["../../src/bin/descry-mcp.ts"],"names":[],"mappings":";AACA;;;sEAGsE"}
|
package/dist/bin/descry-mcp.js
DELETED
|
@@ -1,72 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
/** The executable an MCP host launches. Takes the repo path (default cwd); everything else comes
|
|
3
|
-
* from `.descry/config.json`. `serveStdio` redirects console to stderr on its first line, so this
|
|
4
|
-
* file writes nothing before opening anything — earlier output corrupts the handshake frame, the
|
|
5
|
-
* worst place to fail (host just reports "server did not start"). */
|
|
6
|
-
import process from "node:process";
|
|
7
|
-
import { createRequire } from "node:module";
|
|
8
|
-
import { resolve } from "node:path";
|
|
9
|
-
import { createMcpServer, isOutOfBand } from "../server.js";
|
|
10
|
-
import { Session } from "../session.js";
|
|
11
|
-
import { serveStdio } from "../transport.js";
|
|
12
|
-
import { createPlaywrightBrowserDriver } from "../browser/playwright-driver.js";
|
|
13
|
-
import { createDefaultCredentialStore } from "../credential-store.js";
|
|
14
|
-
/** Read from the installed package, not hardcoded. It used to be literal `"0.0.0"` for every
|
|
15
|
-
* release, so no host could tell that 0.1.2 shipped from an off-main branch with an extra tool —
|
|
16
|
-
* a server that can't say what it is can't be caught drifting. */
|
|
17
|
-
const VERSION = (() => {
|
|
18
|
-
try {
|
|
19
|
-
const pkg = createRequire(import.meta.url)("../../package.json");
|
|
20
|
-
return typeof pkg.version === "string" ? pkg.version : "0.0.0";
|
|
21
|
-
}
|
|
22
|
-
catch {
|
|
23
|
-
// Never fatal. A host that cannot read a version still gets a server, and
|
|
24
|
-
// failing the handshake over a label would be the worse trade.
|
|
25
|
-
return "0.0.0";
|
|
26
|
-
}
|
|
27
|
-
})();
|
|
28
|
-
const USAGE = `descry-mcp — Descry's MCP server (stdio)
|
|
29
|
-
|
|
30
|
-
descry-mcp [repository-path]
|
|
31
|
-
|
|
32
|
-
Reads .descry/config.json from the repository for the graph location and the
|
|
33
|
-
list of adapter packages to load. Runs until stdin closes.
|
|
34
|
-
`;
|
|
35
|
-
async function main() {
|
|
36
|
-
const args = process.argv.slice(2);
|
|
37
|
-
if (args.includes("--help") || args.includes("-h")) {
|
|
38
|
-
process.stderr.write(USAGE);
|
|
39
|
-
return 0;
|
|
40
|
-
}
|
|
41
|
-
const repoPath = resolve(args[0] ?? process.cwd());
|
|
42
|
-
const session = await Session.open({ repoPath });
|
|
43
|
-
// Session never defaults this driver factory away from null; without this line every browser_*
|
|
44
|
-
// tool refuses unconditionally regardless of what's installed. createPlaywrightBrowserDriver
|
|
45
|
-
// still turns a missing package/binary into a named refusal, not a crash.
|
|
46
|
-
session.useBrowserDriverFactory((options) => createPlaywrightBrowserDriver(options));
|
|
47
|
-
// RG-1(4)'s remaining gap: `credentialStore` was settable but nothing outside a test ever
|
|
48
|
-
// set it, so `${credential:NAME}` refused unconditionally in real use. The documented
|
|
49
|
-
// default location is `~/.descry/credentials` (`credential-store.ts`'s own header) — the
|
|
50
|
-
// same store `descry credential set` writes into.
|
|
51
|
-
session.credentialStore = createDefaultCredentialStore();
|
|
52
|
-
const server = createMcpServer({ session, name: "descry", version: VERSION });
|
|
53
|
-
try {
|
|
54
|
-
await serveStdio({ stdin: process.stdin, stdout: process.stdout, stderr: process.stderr }, (line, transport) => server.dispatch(line, transport),
|
|
55
|
-
// Without this, `notifications/cancelled` waits in the ordered queue
|
|
56
|
-
// behind the very call it cancels and can never do anything.
|
|
57
|
-
{ isOutOfBand });
|
|
58
|
-
return 0;
|
|
59
|
-
}
|
|
60
|
-
finally {
|
|
61
|
-
// `dispose`, not `close`: end-of-stdin is "disconnect," and §4 requires reaping every browser
|
|
62
|
-
// this connection owns — a leaked Chromium keeps running on the developer's machine.
|
|
63
|
-
await session.dispose();
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
main().then((code) => {
|
|
67
|
-
process.exitCode = code;
|
|
68
|
-
}, (error) => {
|
|
69
|
-
process.stderr.write(`descry-mcp: ${error instanceof Error ? error.stack ?? error.message : String(error)}\n`);
|
|
70
|
-
process.exitCode = 1;
|
|
71
|
-
});
|
|
72
|
-
//# sourceMappingURL=descry-mcp.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"descry-mcp.js","sourceRoot":"","sources":["../../src/bin/descry-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/browser/auth.d.ts
DELETED
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Reading an authenticated session in from a file — B1 of
|
|
3
|
-
* `documents/plans/browser-reliability.md`.
|
|
4
|
-
*
|
|
5
|
-
* ## What was already here, and what was missing
|
|
6
|
-
*
|
|
7
|
-
* `browser_start_session` already accepted an inline `storageState` (11.4-b)
|
|
8
|
-
* and `driver.ts` already carries it. Two things were missing and both are
|
|
9
|
-
* about *reuse*: a caller had no way to point at a file, and a session had no
|
|
10
|
-
* way to write one. Without those, "seed an authenticated session" means the
|
|
11
|
-
* caller has to produce the cookie values by hand every time, which in
|
|
12
|
-
* practice means nobody does it.
|
|
13
|
-
*
|
|
14
|
-
* So this module is the file half: load a browser's own saved state blob and
|
|
15
|
-
* narrow it to the same-origin shape the port carries, refusing anything that
|
|
16
|
-
* reaches outside the consented origin.
|
|
17
|
-
*
|
|
18
|
-
* ## Why the narrowing refuses rather than filters
|
|
19
|
-
*
|
|
20
|
-
* A saved state is whatever the browser had. A developer who logs in to their
|
|
21
|
-
* application and saves the state has a file with one origin in it; a
|
|
22
|
-
* developer who reuses a personal profile has a file with everything they are
|
|
23
|
-
* logged into. Loading the second one wholesale would put unrelated
|
|
24
|
-
* production sessions inside a browser the developer approved for one local
|
|
25
|
-
* application. Quietly keeping only the matching cookies is worse than
|
|
26
|
-
* refusing: a caller who believes they seeded a session and did not gets a run
|
|
27
|
-
* that silently tested the logged-out surface and reported it as a clean one.
|
|
28
|
-
*
|
|
29
|
-
* ## Secrets
|
|
30
|
-
*
|
|
31
|
-
* Nothing here formats a value, including in a refusal — every message names a
|
|
32
|
-
* cookie, a host or a path. `storageStateSecrets` returns the literal values
|
|
33
|
-
* for `@descryy/core`'s `redactSecretsInText`, which replaces literal
|
|
34
|
-
* substrings and never interprets one as a pattern, for the reason that
|
|
35
|
-
* redactor's own header gives.
|
|
36
|
-
*
|
|
37
|
-
* Rule 1: a cookie, a header and an origin are facts about HTTP. No language,
|
|
38
|
-
* framework or file extension is named here.
|
|
39
|
-
*/
|
|
40
|
-
import type { BrowserStorageState } from "./driver.ts";
|
|
41
|
-
export interface StorageStateContext {
|
|
42
|
-
/** The origin this session's consent is bound to. Everything loaded must be within it. */
|
|
43
|
-
readonly consentedOrigin: string;
|
|
44
|
-
/** The repository root, for resolving a relative path. */
|
|
45
|
-
readonly repoPath: string;
|
|
46
|
-
}
|
|
47
|
-
/**
|
|
48
|
-
* Load a browser's saved storage state and narrow it to one origin.
|
|
49
|
-
*
|
|
50
|
-
* `path` is absolute or relative to the repository root. Throws
|
|
51
|
-
* `ToolInputError` — every failure here is something the caller can fix by
|
|
52
|
-
* changing an argument, and none of them is a bug in this server.
|
|
53
|
-
*/
|
|
54
|
-
export declare function loadStorageStateFile(path: string, context: StorageStateContext): BrowserStorageState;
|
|
55
|
-
/**
|
|
56
|
-
* The parse-and-narrow half of {@link loadStorageStateFile}, taken directly rather than read
|
|
57
|
-
* from a file — `browser-start-session.ts`'s `storageStateCredential` calls this against text
|
|
58
|
-
* retrieved from `Session.credentialStore` (RG-1(4), lane "signin"). `sourceLabel` replaces the
|
|
59
|
-
* file path in every message this can throw, so a credential-sourced refusal reads
|
|
60
|
-
* `credential "NAME"` rather than a nonexistent file path.
|
|
61
|
-
*/
|
|
62
|
-
export declare function parseStorageStateJson(text: string, sourceLabel: string, context: StorageStateContext): BrowserStorageState;
|
|
63
|
-
/**
|
|
64
|
-
* Where a saved state may be written.
|
|
65
|
-
*
|
|
66
|
-
* Inside the repository is refused. A storage state is a live credential in a
|
|
67
|
-
* file, and the likeliest thing to happen to a file written into a working
|
|
68
|
-
* tree is that it gets committed. Refusing costs the caller one argument; the
|
|
69
|
-
* alternative costs them a session in their history.
|
|
70
|
-
*/
|
|
71
|
-
export declare function resolveSavePath(raw: string, repoPath: string): string;
|
|
72
|
-
/**
|
|
73
|
-
* Every literal value a state carries. Names are deliberately absent — a
|
|
74
|
-
* cookie called `session` is not a secret, and redacting the word would make
|
|
75
|
-
* every reply that mentions a session unreadable.
|
|
76
|
-
*
|
|
77
|
-
* Values under four characters are dropped: one that short matches everywhere
|
|
78
|
-
* and would redact a reply into noise, which is a worse outcome than leaving
|
|
79
|
-
* a four-character credential in it.
|
|
80
|
-
*/
|
|
81
|
-
export declare function storageStateSecrets(state: BrowserStorageState | null): readonly string[];
|
|
82
|
-
/** The same, for header values. Separate because headers are not part of a storage state. */
|
|
83
|
-
export declare function headerSecrets(headers: Readonly<Record<string, string>> | null): readonly string[];
|
|
84
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/browser/auth.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAMH,OAAO,KAAK,EAAE,mBAAmB,EAAgB,MAAM,aAAa,CAAC;AAErE,MAAM,WAAW,mBAAmB;IAClC,0FAA0F;IAC1F,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,0DAA0D;IAC1D,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AA0BD;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAepG;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,mBAAmB,CAW1H;AAmGD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAWrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,IAAI,GAAG,SAAS,MAAM,EAAE,CAIxF;AAED,6FAA6F;AAC7F,wBAAgB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,MAAM,EAAE,CAGjG"}
|