@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,110 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `change_scope` — merges `scope` and `pre_push` behind one `verb`
|
|
3
|
-
* (documents/plans/mcp-surface-consolidation.md §2, group 2). Both are
|
|
4
|
-
* `read`/`evidence`, so the merge crosses neither boundary.
|
|
5
|
-
*
|
|
6
|
-
* Dispatch only. Each verb's own `run()` body is untouched and stays in its
|
|
7
|
-
* own module (`scope.ts` / `pre-push.ts`) — `pre-push.ts` itself already
|
|
8
|
-
* composes `scope`, `pr_analysis`, `contracts` and `validate` internally, and
|
|
9
|
-
* that composition is unaffected by this merge: it still calls `scopeTool.run`
|
|
10
|
-
* directly, not through this dispatcher.
|
|
11
|
-
*/
|
|
12
|
-
import { selectVerb } from "./verb.js";
|
|
13
|
-
import { scopeTool } from "./scope.js";
|
|
14
|
-
import { prePushTool } from "./pre-push.js";
|
|
15
|
-
const VERBS = ["diff", "pre_push"];
|
|
16
|
-
const TRIGGERS = ["pre-push", "pr", "nightly"];
|
|
17
|
-
const WORKING_TREE_SCOPES = ["unstaged", "staged", "all"];
|
|
18
|
-
const VERB_SPECS = [
|
|
19
|
-
{ verb: "diff", accepts: ["files", "nodeIds", "trigger", "budget", "limit"] },
|
|
20
|
-
{ verb: "pre_push", accepts: ["files", "base", "workingTree", "includeUntracked", "perSource"] },
|
|
21
|
-
];
|
|
22
|
-
const SCHEMA = {
|
|
23
|
-
type: "object",
|
|
24
|
-
properties: {
|
|
25
|
-
verb: {
|
|
26
|
-
type: "string",
|
|
27
|
-
enum: [...VERBS],
|
|
28
|
-
description: '"diff" — blast radius of changed files/nodes, ranked by impact score. "pre_push" — diff, ' +
|
|
29
|
-
"pr_analysis, contracts and validate together under the pre-push budget, in one envelope.",
|
|
30
|
-
},
|
|
31
|
-
files: {
|
|
32
|
-
type: "array",
|
|
33
|
-
items: { type: "string" },
|
|
34
|
-
description: "Repository-relative paths. diff: seeds the blast radius, with or instead of nodeIds. " +
|
|
35
|
-
"pre_push: required — the files about to be pushed.",
|
|
36
|
-
},
|
|
37
|
-
nodeIds: {
|
|
38
|
-
type: "array",
|
|
39
|
-
items: { type: "string" },
|
|
40
|
-
description: "diff only. Graph node ids to seed with directly, instead of or as well as files.",
|
|
41
|
-
},
|
|
42
|
-
trigger: {
|
|
43
|
-
type: "string",
|
|
44
|
-
enum: [...TRIGGERS],
|
|
45
|
-
description: "diff only. Node budget: pre-push 200, pr 1000, nightly 5000. Default pr.",
|
|
46
|
-
},
|
|
47
|
-
budget: {
|
|
48
|
-
type: "integer",
|
|
49
|
-
minimum: 1,
|
|
50
|
-
description: "diff only. Override the trigger's node budget.",
|
|
51
|
-
},
|
|
52
|
-
limit: {
|
|
53
|
-
type: "integer",
|
|
54
|
-
minimum: 1,
|
|
55
|
-
description: "diff only. Cap how many affected nodes come back. Default 25.",
|
|
56
|
-
},
|
|
57
|
-
base: {
|
|
58
|
-
type: "string",
|
|
59
|
-
description: 'pre_push only. Git ref to diff against, three-dot, for the pr_analysis section. Mutually ' +
|
|
60
|
-
'exclusive with "workingTree".',
|
|
61
|
-
},
|
|
62
|
-
workingTree: {
|
|
63
|
-
type: "string",
|
|
64
|
-
enum: [...WORKING_TREE_SCOPES],
|
|
65
|
-
description: 'pre_push only. Review the working tree instead of a ref range. Mutually exclusive with "base".',
|
|
66
|
-
},
|
|
67
|
-
includeUntracked: {
|
|
68
|
-
type: "boolean",
|
|
69
|
-
description: 'pre_push only. With "workingTree", include files git has never seen. Default true.',
|
|
70
|
-
},
|
|
71
|
-
perSource: {
|
|
72
|
-
type: "integer",
|
|
73
|
-
minimum: 1,
|
|
74
|
-
description: "pre_push only. How many items each source contributes. Default 3.",
|
|
75
|
-
},
|
|
76
|
-
},
|
|
77
|
-
required: ["verb"],
|
|
78
|
-
additionalProperties: false,
|
|
79
|
-
};
|
|
80
|
-
const DISPATCH = {
|
|
81
|
-
diff: scopeTool,
|
|
82
|
-
pre_push: prePushTool,
|
|
83
|
-
};
|
|
84
|
-
async function run(args, ctx) {
|
|
85
|
-
const verb = selectVerb(args, "verb", VERB_SPECS);
|
|
86
|
-
// `ToolDefinition` erases its answer's type parameter — it has to, the
|
|
87
|
-
// registry is one array of many shapes — so the delegated call comes back as
|
|
88
|
-
// an erased answer type. The verb table is what makes the union true: every
|
|
89
|
-
// entry's own `run` is declared against one of ChangeScopeData's members, and a verb
|
|
90
|
-
// added without its shape stops compiling at the union. The assertion
|
|
91
|
-
// re-applies what the table already guarantees rather than asserting
|
|
92
|
-
// something unchecked.
|
|
93
|
-
return (await DISPATCH[verb].run(args, ctx));
|
|
94
|
-
}
|
|
95
|
-
export const changeScopeTool = {
|
|
96
|
-
name: "change_scope",
|
|
97
|
-
class: "read",
|
|
98
|
-
tier: "evidence",
|
|
99
|
-
version: "1.0.0",
|
|
100
|
-
title: "Blast radius of a change, or everything worth knowing before a push",
|
|
101
|
-
description: 'What a change touches, by verb. "diff" — given files or symbols you are changing, return what ' +
|
|
102
|
-
"else is affected, ranked by impact score and grouped into tiers 1-4; names paths it could not " +
|
|
103
|
-
'find rather than reporting them unaffected. "pre_push" — runs diff, pr_analysis, contracts and ' +
|
|
104
|
-
"validate together under the pre-push node budget and returns one short envelope: blast radius, " +
|
|
105
|
-
"untested reach, contract breaks, and environment claims that do not hold. blockingTotal counts " +
|
|
106
|
-
"only defects; leads are reported separately.",
|
|
107
|
-
inputSchema: SCHEMA,
|
|
108
|
-
run,
|
|
109
|
-
};
|
|
110
|
-
//# sourceMappingURL=change-scope.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"change-scope.js","sourceRoot":"","sources":["../../src/tools/change-scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,83 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `code_context` — merges `impact`, `history` and `propagation` behind one
|
|
3
|
-
* `verb` (mcp-surface-consolidation.md group 1: all three are read/evidence,
|
|
4
|
-
* so the merge crosses no class or tier boundary).
|
|
5
|
-
*
|
|
6
|
-
* Each verb's behaviour is unchanged from the tool it replaces — this file
|
|
7
|
-
* reuses the same query-layer calls and the same reply shapes, dispatched per
|
|
8
|
-
* verb rather than reimplemented. Because the merged schema is the union of
|
|
9
|
-
* all three verbs' properties, `additionalProperties: false` alone can no
|
|
10
|
-
* longer catch a property sent to the wrong verb (verb.ts's header explains
|
|
11
|
-
* why); `selectVerb` re-establishes that per verb before any verb's logic runs.
|
|
12
|
-
*/
|
|
13
|
-
import type { EdgeType } from "@descryy/ir";
|
|
14
|
-
import { type BriefNode, type NodeCandidates, type ToolDefinition } from "./kit.ts";
|
|
15
|
-
export type CodeContextVerb = "impact" | "history" | "propagation";
|
|
16
|
-
/** A node in the blast radius, with how far out and how hard it is hit. */
|
|
17
|
-
export interface ImpactedNode extends BriefNode {
|
|
18
|
-
readonly depth: number;
|
|
19
|
-
readonly score: number;
|
|
20
|
-
/** 1-based position in this answer, highest score first. */
|
|
21
|
-
readonly rank: number;
|
|
22
|
-
/** `top`/`notable`/`rest` by rank, never an absolute score threshold. */
|
|
23
|
-
readonly prominence: "top" | "notable" | "rest";
|
|
24
|
-
}
|
|
25
|
-
/** An INCIDENT or FIX_PATTERN linked to the start node, and by which edge. */
|
|
26
|
-
export interface RelatedNode extends BriefNode {
|
|
27
|
-
readonly via: EdgeType;
|
|
28
|
-
}
|
|
29
|
-
/** Present only when `to` was given and resolved. */
|
|
30
|
-
export interface TracedPath {
|
|
31
|
-
readonly to: BriefNode;
|
|
32
|
-
readonly hops: number;
|
|
33
|
-
readonly nodes: readonly BriefNode[];
|
|
34
|
-
}
|
|
35
|
-
export interface ImpactReport {
|
|
36
|
-
readonly from: BriefNode;
|
|
37
|
-
readonly affected: readonly ImpactedNode[];
|
|
38
|
-
readonly affectedTotal: number;
|
|
39
|
-
readonly coveringTests: readonly BriefNode[];
|
|
40
|
-
readonly related: readonly RelatedNode[];
|
|
41
|
-
readonly path: TracedPath | null;
|
|
42
|
-
readonly analysed: boolean;
|
|
43
|
-
readonly edgeTypesWalked: readonly EdgeType[];
|
|
44
|
-
readonly edgeTypesPresent: readonly string[];
|
|
45
|
-
}
|
|
46
|
-
export type ImpactData = ImpactReport | NodeCandidates;
|
|
47
|
-
/** A file this one moves with, and how strongly. */
|
|
48
|
-
export interface CoChangedFile extends BriefNode {
|
|
49
|
-
readonly support: number;
|
|
50
|
-
readonly confidence: number;
|
|
51
|
-
}
|
|
52
|
-
export interface HistoryFileResolved extends BriefNode {
|
|
53
|
-
readonly resolved: true;
|
|
54
|
-
}
|
|
55
|
-
export interface HistoryFileUnresolved {
|
|
56
|
-
readonly resolved: false;
|
|
57
|
-
readonly path: string;
|
|
58
|
-
}
|
|
59
|
-
export type HistoryFile = HistoryFileResolved | HistoryFileUnresolved;
|
|
60
|
-
export interface HistoryReport {
|
|
61
|
-
readonly file: HistoryFile;
|
|
62
|
-
readonly coChanged: readonly CoChangedFile[];
|
|
63
|
-
readonly coChangedTotal: number;
|
|
64
|
-
}
|
|
65
|
-
export type HistoryData = HistoryReport;
|
|
66
|
-
/** A node the data can reach, with how far along the walk it sits. */
|
|
67
|
-
export interface ReachedNode extends BriefNode {
|
|
68
|
-
readonly depth: number;
|
|
69
|
-
readonly score: number;
|
|
70
|
-
}
|
|
71
|
-
export interface PropagationReport {
|
|
72
|
-
readonly from: BriefNode;
|
|
73
|
-
readonly reached: readonly ReachedNode[];
|
|
74
|
-
readonly reachedTotal: number;
|
|
75
|
-
readonly fieldLevel: boolean;
|
|
76
|
-
readonly analysed: boolean;
|
|
77
|
-
readonly edgeTypesWalked: readonly string[];
|
|
78
|
-
readonly edgeTypesPresent: readonly string[];
|
|
79
|
-
}
|
|
80
|
-
export type PropagationData = PropagationReport | NodeCandidates;
|
|
81
|
-
export type CodeContextData = ImpactData | HistoryData | PropagationData;
|
|
82
|
-
export declare const codeContextTool: ToolDefinition;
|
|
83
|
-
//# sourceMappingURL=code-context.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-context.d.ts","sourceRoot":"","sources":["../../src/tools/code-context.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,416 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `code_context` — merges `impact`, `history` and `propagation` behind one
|
|
3
|
-
* `verb` (mcp-surface-consolidation.md group 1: all three are read/evidence,
|
|
4
|
-
* so the merge crosses no class or tier boundary).
|
|
5
|
-
*
|
|
6
|
-
* Each verb's behaviour is unchanged from the tool it replaces — this file
|
|
7
|
-
* reuses the same query-layer calls and the same reply shapes, dispatched per
|
|
8
|
-
* verb rather than reimplemented. Because the merged schema is the union of
|
|
9
|
-
* all three verbs' properties, `additionalProperties: false` alone can no
|
|
10
|
-
* longer catch a property sent to the wrong verb (verb.ts's header explains
|
|
11
|
-
* why); `selectVerb` re-establishes that per verb before any verb's logic runs.
|
|
12
|
-
*/
|
|
13
|
-
import { changesWith, dataFlowFrom, DATA_FLOW_EDGE_TYPES, findNodes, getNode, impactOf, rootCauseSearch, testsCovering, traceApi, withProminence, } from "@descryy/core";
|
|
14
|
-
import { answer, briefNode, optionalBoolean, optionalEnum, optionalInteger, optionalString, optionalStringArray, ToolInputError, } from "./kit.js";
|
|
15
|
-
import { resolveOneNode } from "./lookup.js";
|
|
16
|
-
import { selectVerb } from "./verb.js";
|
|
17
|
-
const STRUCTURAL_EDGE_TYPES = [
|
|
18
|
-
"CALLS",
|
|
19
|
-
"IMPORTS",
|
|
20
|
-
"IMPLEMENTS",
|
|
21
|
-
"INHERITS",
|
|
22
|
-
"USES_API",
|
|
23
|
-
"SERVES_API",
|
|
24
|
-
];
|
|
25
|
-
// --- per-verb argument ownership, for selectVerb ----------------------------
|
|
26
|
-
const VERB_SPECS = [
|
|
27
|
-
{
|
|
28
|
-
verb: "impact",
|
|
29
|
-
accepts: ["nodeId", "symbol", "file", "to", "edgeTypes", "direction", "crossApiEndpoint", "maxDepth", "limit"],
|
|
30
|
-
},
|
|
31
|
-
{ verb: "history", accepts: ["file", "limit"] },
|
|
32
|
-
{ verb: "propagation", accepts: ["nodeId", "symbol", "file", "edgeTypes", "maxDepth", "limit"] },
|
|
33
|
-
];
|
|
34
|
-
const SCHEMA = {
|
|
35
|
-
type: "object",
|
|
36
|
-
properties: {
|
|
37
|
-
verb: {
|
|
38
|
-
type: "string",
|
|
39
|
-
enum: ["impact", "history", "propagation"],
|
|
40
|
-
description: "impact: blast radius + covering tests + linked incidents over structural edges, plus " +
|
|
41
|
-
"\"to\" to trace a path. history: stored co-change (CHANGES_WITH) for one file. " +
|
|
42
|
-
"propagation: data-flow walk (what a value reaches).",
|
|
43
|
-
},
|
|
44
|
-
nodeId: { type: "string", description: "Graph node id to start from (impact, propagation)." },
|
|
45
|
-
symbol: {
|
|
46
|
-
type: "string",
|
|
47
|
-
description: "Symbol name to start from when you don't have a node id (impact, propagation). Ambiguity " +
|
|
48
|
-
"is reported, not guessed at — narrow with \"file\".",
|
|
49
|
-
},
|
|
50
|
-
file: {
|
|
51
|
-
type: "string",
|
|
52
|
-
description: "Repository-relative path. Required for history. For impact/propagation, disambiguates " +
|
|
53
|
-
"\"symbol\" or starts the walk from a file.",
|
|
54
|
-
},
|
|
55
|
-
to: {
|
|
56
|
-
type: "string",
|
|
57
|
-
description: "impact only: a second node id, symbol or path — also traces a path from the start node to it.",
|
|
58
|
-
},
|
|
59
|
-
edgeTypes: {
|
|
60
|
-
type: "array",
|
|
61
|
-
items: { type: "string" },
|
|
62
|
-
description: "Restrict the walk (impact, propagation). impact defaults to CALLS/IMPORTS/IMPLEMENTS/" +
|
|
63
|
-
"INHERITS/USES_API/SERVES_API (structural). propagation defaults to PROPAGATES_TO/READS/" +
|
|
64
|
-
"ASSIGNS/RETURNS (data-flow, and PROPAGATES_TO has only one narrow single-hop producer today).",
|
|
65
|
-
},
|
|
66
|
-
direction: {
|
|
67
|
-
type: "string",
|
|
68
|
-
enum: ["in", "out"],
|
|
69
|
-
description: "impact only. Default \"in\" — what depends on this symbol. \"out\" — what this symbol " +
|
|
70
|
-
"reaches, e.g. toward a route served by another repository.",
|
|
71
|
-
},
|
|
72
|
-
crossApiEndpoint: {
|
|
73
|
-
type: "boolean",
|
|
74
|
-
description: "impact only: at an API_ENDPOINT, also follow the USES_API/SERVES_API edge the walk's own " +
|
|
75
|
-
"direction wouldn't otherwise see, to the API_ROUTE on the other side. Off by default.",
|
|
76
|
-
},
|
|
77
|
-
maxDepth: { type: "integer", minimum: 1, description: "Hop limit (impact, propagation). Default unbounded." },
|
|
78
|
-
limit: {
|
|
79
|
-
type: "integer",
|
|
80
|
-
minimum: 1,
|
|
81
|
-
description: "Cap on items in the reply. Default 25 for impact/propagation, 50 for history. A capped " +
|
|
82
|
-
"reply always discloses shown/total; raise this when the full set is needed.",
|
|
83
|
-
},
|
|
84
|
-
},
|
|
85
|
-
required: ["verb"],
|
|
86
|
-
additionalProperties: false,
|
|
87
|
-
};
|
|
88
|
-
/** First criteria shape that resolves, or null — `resolveOneNode` is single-shot per criterion, so
|
|
89
|
-
* a parameter documented as accepting several shapes needs each tried before reporting no match. */
|
|
90
|
-
function firstResolved(session, attempts) {
|
|
91
|
-
for (const criteria of attempts) {
|
|
92
|
-
const found = resolveOneNode(session, criteria);
|
|
93
|
-
if (found.node !== null)
|
|
94
|
-
return found;
|
|
95
|
-
}
|
|
96
|
-
return null;
|
|
97
|
-
}
|
|
98
|
-
async function runImpact(args, ctx) {
|
|
99
|
-
const nodeId = optionalString(args, "nodeId");
|
|
100
|
-
const symbol = optionalString(args, "symbol");
|
|
101
|
-
const file = optionalString(args, "file");
|
|
102
|
-
const to = optionalString(args, "to");
|
|
103
|
-
const edgeTypes = optionalStringArray(args, "edgeTypes");
|
|
104
|
-
const direction = optionalEnum(args, "direction", ["in", "out"]);
|
|
105
|
-
const crossApiEndpoint = optionalBoolean(args, "crossApiEndpoint") ?? false;
|
|
106
|
-
const maxDepth = optionalInteger(args, "maxDepth", 1);
|
|
107
|
-
const limit = optionalInteger(args, "limit", 1) ?? 25;
|
|
108
|
-
if (nodeId === undefined && symbol === undefined && file === undefined) {
|
|
109
|
-
throw new ToolInputError('give one of "nodeId", "symbol" or "file"');
|
|
110
|
-
}
|
|
111
|
-
const provider = ctx.session.provider();
|
|
112
|
-
const found = resolveOneNode(ctx.session, { nodeId, symbol, file });
|
|
113
|
-
if (found.node === null) {
|
|
114
|
-
const base = provider.baseStamp();
|
|
115
|
-
return {
|
|
116
|
-
result: {
|
|
117
|
-
data: { candidates: found.candidates.map(briefNode) },
|
|
118
|
-
stamp: { commitSha: base.commitSha, graphBuiltAt: base.graphBuiltAt, irSchemaVersion: base.irSchemaVersion, commitSpread: base.commitSpread, repoCount: base.repoCount, resolutionFloor: 0 },
|
|
119
|
-
truncated: false,
|
|
120
|
-
notes: found.notes,
|
|
121
|
-
},
|
|
122
|
-
nameLevel: true,
|
|
123
|
-
state: "refused",
|
|
124
|
-
headline: found.headline,
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
const walked = edgeTypes ?? STRUCTURAL_EDGE_TYPES;
|
|
128
|
-
ctx.progress(direction === "out" ? `Finding what ${found.node.name} reaches` : `Finding what depends on ${found.node.name}`);
|
|
129
|
-
const impact = impactOf(provider, [found.node.id], {
|
|
130
|
-
types: walked,
|
|
131
|
-
...(direction === undefined ? {} : { direction }),
|
|
132
|
-
...(crossApiEndpoint ? { crossApiEndpoint } : {}),
|
|
133
|
-
...(maxDepth === undefined ? {} : { maxDepth }),
|
|
134
|
-
});
|
|
135
|
-
const affected = impact.data.filter((entry) => entry.node.id !== found.node?.id);
|
|
136
|
-
const shownAffected = affected.slice(0, limit);
|
|
137
|
-
ctx.progress(`Finding tests covering ${found.node.name}`);
|
|
138
|
-
const tests = testsCovering(provider, found.node.id, maxDepth === undefined ? {} : { maxDepth });
|
|
139
|
-
ctx.progress(`Checking for related incidents and fix patterns`);
|
|
140
|
-
const related = rootCauseSearch(provider, found.node.id);
|
|
141
|
-
let path = null;
|
|
142
|
-
const pathNotes = [];
|
|
143
|
-
if (to !== undefined) {
|
|
144
|
-
const target = firstResolved(ctx.session, [{ nodeId: to }, { symbol: to }, { file: to }]) ??
|
|
145
|
-
resolveOneNode(ctx.session, { symbol: to, file: undefined });
|
|
146
|
-
if (target.node === null) {
|
|
147
|
-
pathNotes.push(`"to" (${JSON.stringify(to)}) did not resolve: ${target.headline}`);
|
|
148
|
-
}
|
|
149
|
-
else {
|
|
150
|
-
ctx.progress(`Tracing a path to ${target.node.name}`);
|
|
151
|
-
const traced = traceApi(provider, found.node.id, target.node.id, { direction: "both" });
|
|
152
|
-
path = { to: briefNode(target.node), hops: traced.data.hops, nodes: traced.data.path.map(briefNode) };
|
|
153
|
-
pathNotes.push(...traced.notes);
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
const present = new Set();
|
|
157
|
-
for (const edge of [...provider.outgoing(found.node.id), ...provider.incoming(found.node.id)]) {
|
|
158
|
-
if (walked.includes(edge.type))
|
|
159
|
-
present.add(edge.type);
|
|
160
|
-
}
|
|
161
|
-
const absent = walked.filter((type) => !present.has(type));
|
|
162
|
-
const analysed = present.size > 0;
|
|
163
|
-
const notes = [...found.notes, ...impact.notes, ...tests.notes, ...related.notes, ...pathNotes];
|
|
164
|
-
if (shownAffected.length < affected.length) {
|
|
165
|
-
notes.push(`${affected.length - shownAffected.length} further affected node(s) exist but are not listed — ` +
|
|
166
|
-
`the reply is capped at ${limit}.`);
|
|
167
|
-
}
|
|
168
|
-
if (absent.length > 0) {
|
|
169
|
-
notes.push(`No ${absent.join(", ")} edge touches this node, so ${absent.length === 1 ? "that type" : "those types"} ` +
|
|
170
|
-
"contributed nothing to the blast radius.");
|
|
171
|
-
}
|
|
172
|
-
if (!analysed) {
|
|
173
|
-
notes.push(`None of the requested edge types (${walked.join(", ")}) appear on any edge touching this node. ` +
|
|
174
|
-
"That is not a finding that nothing depends on it — a producer for these edges may not run in " +
|
|
175
|
-
"this graph. This probe is local to one node and does not choose between the causes.");
|
|
176
|
-
}
|
|
177
|
-
const contributing = [
|
|
178
|
-
impact.stamp.resolutionFloor,
|
|
179
|
-
...(tests.data.length > 0 ? [tests.stamp.resolutionFloor] : []),
|
|
180
|
-
...(related.data.length > 0 ? [related.stamp.resolutionFloor] : []),
|
|
181
|
-
];
|
|
182
|
-
const resolutionFloor = Math.min(...contributing);
|
|
183
|
-
return {
|
|
184
|
-
result: {
|
|
185
|
-
data: {
|
|
186
|
-
from: briefNode(found.node),
|
|
187
|
-
affected: withProminence(shownAffected.map((entry) => ({
|
|
188
|
-
...briefNode(entry.node),
|
|
189
|
-
depth: entry.depth,
|
|
190
|
-
score: Number(entry.score.toFixed(4)),
|
|
191
|
-
}))),
|
|
192
|
-
affectedTotal: affected.length,
|
|
193
|
-
coveringTests: tests.data.map(briefNode),
|
|
194
|
-
related: related.data.map((m) => ({ ...briefNode(m.incident), via: m.via })),
|
|
195
|
-
path,
|
|
196
|
-
analysed,
|
|
197
|
-
edgeTypesWalked: walked,
|
|
198
|
-
edgeTypesPresent: [...present].sort(),
|
|
199
|
-
},
|
|
200
|
-
stamp: { ...impact.stamp, resolutionFloor },
|
|
201
|
-
truncated: impact.truncated || tests.truncated || related.truncated || shownAffected.length < affected.length,
|
|
202
|
-
notes,
|
|
203
|
-
},
|
|
204
|
-
nameLevel: false,
|
|
205
|
-
...(analysed ? (affected.length === 0 ? { state: "empty" } : {}) : { state: "refused" }),
|
|
206
|
-
...(shownAffected.length < affected.length
|
|
207
|
-
? { truncatedDetail: { shown: shownAffected.length, total: affected.length, more: null } }
|
|
208
|
-
: {}),
|
|
209
|
-
headline: !analysed
|
|
210
|
-
? `${found.node.name}'s blast radius was not analysed: the graph holds no ${walked.join("/")} edge ` +
|
|
211
|
-
"touching it. This is not a finding that nothing depends on it."
|
|
212
|
-
: direction === "out"
|
|
213
|
-
? `${found.node.name} reaches ${affected.length} node(s); ${tests.data.length} test(s) cover it` +
|
|
214
|
-
`${related.data.length > 0 ? `; ${related.data.length} related incident(s)/fix(es)` : ""}.`
|
|
215
|
-
: `${found.node.name} affects ${affected.length} node(s); ${tests.data.length} test(s) cover it` +
|
|
216
|
-
`${related.data.length > 0 ? `; ${related.data.length} related incident(s)/fix(es)` : ""}.`,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
async function runHistory(args, ctx) {
|
|
220
|
-
const file = optionalString(args, "file");
|
|
221
|
-
if (file === undefined)
|
|
222
|
-
throw new ToolInputError('give "file"');
|
|
223
|
-
const limit = optionalInteger(args, "limit", 1) ?? 50;
|
|
224
|
-
const driver = ctx.session.store().driver;
|
|
225
|
-
const candidates = findNodes(driver, { file, type: "FILE", limit: 1 });
|
|
226
|
-
const provider = ctx.session.provider();
|
|
227
|
-
const base = provider.baseStamp();
|
|
228
|
-
if (candidates.length === 0) {
|
|
229
|
-
const byId = getNode(driver, file);
|
|
230
|
-
if (byId !== undefined && byId.type !== "FILE") {
|
|
231
|
-
return {
|
|
232
|
-
result: {
|
|
233
|
-
data: { file: { resolved: false, path: file }, coChanged: [], coChangedTotal: 0 },
|
|
234
|
-
stamp: { commitSha: base.commitSha, graphBuiltAt: base.graphBuiltAt, irSchemaVersion: base.irSchemaVersion, commitSpread: base.commitSpread, repoCount: base.repoCount, resolutionFloor: 0 },
|
|
235
|
-
truncated: false,
|
|
236
|
-
notes: [
|
|
237
|
-
`"${file}" is a node id, but it names a ${byId.type} node, not a FILE — this tool only ` +
|
|
238
|
-
"reports co-change history for files. Pass the file's repository-relative path instead.",
|
|
239
|
-
],
|
|
240
|
-
},
|
|
241
|
-
nameLevel: true,
|
|
242
|
-
state: "refused",
|
|
243
|
-
headline: `"${file}" is a ${byId.type} node id, not a FILE.`,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
if (byId !== undefined) {
|
|
247
|
-
candidates.push(byId);
|
|
248
|
-
}
|
|
249
|
-
}
|
|
250
|
-
if (candidates.length === 0) {
|
|
251
|
-
return {
|
|
252
|
-
result: {
|
|
253
|
-
data: { file: { resolved: false, path: file }, coChanged: [], coChangedTotal: 0 },
|
|
254
|
-
stamp: { commitSha: base.commitSha, graphBuiltAt: base.graphBuiltAt, irSchemaVersion: base.irSchemaVersion, commitSpread: base.commitSpread, repoCount: base.repoCount, resolutionFloor: 0 },
|
|
255
|
-
truncated: false,
|
|
256
|
-
notes: [
|
|
257
|
-
"No FILE node matches this exact repository-relative path or node id. Either the path is " +
|
|
258
|
-
"wrong, git history was skipped when the graph was built (analyze's \"history\" option), " +
|
|
259
|
-
"or this file has never appeared in a commit the git source read — a file with zero " +
|
|
260
|
-
"history is not distinguishable here from one this graph never analysed.",
|
|
261
|
-
],
|
|
262
|
-
},
|
|
263
|
-
nameLevel: true,
|
|
264
|
-
state: "refused",
|
|
265
|
-
headline: `No FILE node at "${file}".`,
|
|
266
|
-
};
|
|
267
|
-
}
|
|
268
|
-
const node = candidates[0];
|
|
269
|
-
ctx.progress(`Reading co-change history for ${file}`);
|
|
270
|
-
const history = changesWith(provider, node.id);
|
|
271
|
-
const shown = history.data.slice(0, limit);
|
|
272
|
-
const notes = [...history.notes];
|
|
273
|
-
if (shown.length < history.data.length) {
|
|
274
|
-
notes.push(`${history.data.length - shown.length} further co-changed file(s) exist but are not listed — ` +
|
|
275
|
-
`the reply is capped at ${limit}.`);
|
|
276
|
-
}
|
|
277
|
-
const cappedByLimit = shown.length < history.data.length;
|
|
278
|
-
return {
|
|
279
|
-
result: {
|
|
280
|
-
data: {
|
|
281
|
-
file: { ...briefNode(node), resolved: true },
|
|
282
|
-
coChanged: shown.map((c) => ({ ...briefNode(c.node), support: c.support, confidence: Number(c.confidence.toFixed(4)) })),
|
|
283
|
-
coChangedTotal: history.data.length,
|
|
284
|
-
},
|
|
285
|
-
stamp: history.stamp,
|
|
286
|
-
truncated: history.truncated || cappedByLimit,
|
|
287
|
-
notes,
|
|
288
|
-
},
|
|
289
|
-
...(shown.length === 0 ? { state: "empty" } : {}),
|
|
290
|
-
...(cappedByLimit ? { truncatedDetail: { shown: shown.length, total: history.data.length, more: null } } : {}),
|
|
291
|
-
nameLevel: false,
|
|
292
|
-
headline: shown.length === 0
|
|
293
|
-
? `"${file}" has no recorded co-change history above the graph's own support/confidence floor.`
|
|
294
|
-
: `"${file}" tends to change alongside ${history.data.length} other file(s); most-coupled: ` +
|
|
295
|
-
`${shown[0].node.file ?? shown[0].node.name} (${shown[0].support} commit(s) together).`,
|
|
296
|
-
};
|
|
297
|
-
}
|
|
298
|
-
async function runPropagation(args, ctx) {
|
|
299
|
-
const nodeId = optionalString(args, "nodeId");
|
|
300
|
-
const symbol = optionalString(args, "symbol");
|
|
301
|
-
const file = optionalString(args, "file");
|
|
302
|
-
const edgeTypes = optionalStringArray(args, "edgeTypes");
|
|
303
|
-
const maxDepth = optionalInteger(args, "maxDepth", 1);
|
|
304
|
-
const limit = optionalInteger(args, "limit", 1) ?? 25;
|
|
305
|
-
if (nodeId === undefined && symbol === undefined && file === undefined) {
|
|
306
|
-
throw new ToolInputError('give one of "nodeId", "symbol" or "file"');
|
|
307
|
-
}
|
|
308
|
-
const found = resolveOneNode(ctx.session, { nodeId, symbol, file });
|
|
309
|
-
if (found.node === null) {
|
|
310
|
-
const base = ctx.session.provider().baseStamp();
|
|
311
|
-
return answer({
|
|
312
|
-
headline: found.headline,
|
|
313
|
-
state: "refused",
|
|
314
|
-
nameLevel: true,
|
|
315
|
-
resolutionFloor: 0,
|
|
316
|
-
commitSha: base.commitSha,
|
|
317
|
-
graphBuiltAt: base.graphBuiltAt,
|
|
318
|
-
irSchemaVersion: base.irSchemaVersion,
|
|
319
|
-
commitSpread: base.commitSpread,
|
|
320
|
-
repoCount: base.repoCount,
|
|
321
|
-
notes: found.notes,
|
|
322
|
-
data: { candidates: found.candidates.map(briefNode) },
|
|
323
|
-
});
|
|
324
|
-
}
|
|
325
|
-
ctx.progress(`Following data out of ${found.node.name}`);
|
|
326
|
-
const flow = dataFlowFrom(ctx.session.provider(), found.node.id, {
|
|
327
|
-
...(maxDepth === undefined ? {} : { maxDepth }),
|
|
328
|
-
...(edgeTypes === undefined ? {} : { types: edgeTypes }),
|
|
329
|
-
});
|
|
330
|
-
const reached = flow.data.filter((entry) => entry.node.id !== found.node?.id);
|
|
331
|
-
const shown = reached.slice(0, limit);
|
|
332
|
-
const notes = [...found.notes, ...flow.notes];
|
|
333
|
-
if (shown.length < reached.length) {
|
|
334
|
-
notes.push(`${reached.length - shown.length} further node(s) are on the path but not listed — the reply ` +
|
|
335
|
-
`is capped at ${limit}.`);
|
|
336
|
-
}
|
|
337
|
-
const walked = edgeTypes ?? DATA_FLOW_EDGE_TYPES;
|
|
338
|
-
const present = new Set();
|
|
339
|
-
for (const edge of [
|
|
340
|
-
...ctx.session.provider().outgoing(found.node.id),
|
|
341
|
-
...ctx.session.provider().incoming(found.node.id),
|
|
342
|
-
]) {
|
|
343
|
-
if (walked.includes(edge.type))
|
|
344
|
-
present.add(edge.type);
|
|
345
|
-
}
|
|
346
|
-
const absent = walked.filter((type) => !present.has(type));
|
|
347
|
-
const analysed = present.size > 0;
|
|
348
|
-
if (absent.length > 0) {
|
|
349
|
-
notes.push(`No ${absent.join(", ")} edge touches this node, so ${absent.length === 1 ? "that type" : "those types"} ` +
|
|
350
|
-
"contributed nothing to this answer.");
|
|
351
|
-
}
|
|
352
|
-
if (!analysed) {
|
|
353
|
-
notes.push(`None of the requested edge types (${walked.join(", ")}) appear on any edge touching this node, ` +
|
|
354
|
-
"so the walk had nothing to follow. That is not a finding that no data leaves this symbol: " +
|
|
355
|
-
"no adapter configured here emitting these edge types at all (PROPAGATES_TO's only shipped " +
|
|
356
|
-
"producer today is narrow single-hop and may simply not have fired here), a " +
|
|
357
|
-
"graph built without the source that would carry them, and a symbol that genuinely " +
|
|
358
|
-
"propagates nothing are three different situations. This probe is local to one node and " +
|
|
359
|
-
"cannot tell them apart — it reports that the walk did not run rather than choosing between them.");
|
|
360
|
-
}
|
|
361
|
-
const fieldLevel = flow.stamp.resolutionFloor >= 3;
|
|
362
|
-
return {
|
|
363
|
-
result: {
|
|
364
|
-
...flow,
|
|
365
|
-
data: {
|
|
366
|
-
from: briefNode(found.node),
|
|
367
|
-
reached: shown.map((entry) => ({
|
|
368
|
-
...briefNode(entry.node),
|
|
369
|
-
depth: entry.depth,
|
|
370
|
-
score: Number(entry.score.toFixed(4)),
|
|
371
|
-
})),
|
|
372
|
-
reachedTotal: reached.length,
|
|
373
|
-
fieldLevel,
|
|
374
|
-
analysed,
|
|
375
|
-
edgeTypesWalked: walked,
|
|
376
|
-
edgeTypesPresent: [...present].sort(),
|
|
377
|
-
},
|
|
378
|
-
notes,
|
|
379
|
-
},
|
|
380
|
-
...(analysed ? (reached.length === 0 ? { state: "empty" } : {}) : { state: "refused" }),
|
|
381
|
-
nameLevel: false,
|
|
382
|
-
headline: !analysed
|
|
383
|
-
? `Data flow out of ${found.node.name} was not analysed: the graph holds no ` +
|
|
384
|
-
`${walked.join("/")} edge touching it. This is not a finding that nothing propagates.`
|
|
385
|
-
: fieldLevel
|
|
386
|
-
? `Data from ${found.node.name} reaches ${reached.length} node(s), at field level.`
|
|
387
|
-
: `${found.node.name} can reach ${reached.length} node(s). This is where data *can* flow, ` +
|
|
388
|
-
"not which field arrives where — that needs R3.",
|
|
389
|
-
};
|
|
390
|
-
}
|
|
391
|
-
async function run(args, ctx) {
|
|
392
|
-
const verb = selectVerb(args, "verb", VERB_SPECS);
|
|
393
|
-
switch (verb) {
|
|
394
|
-
case "impact":
|
|
395
|
-
return runImpact(args, ctx);
|
|
396
|
-
case "history":
|
|
397
|
-
return runHistory(args, ctx);
|
|
398
|
-
case "propagation":
|
|
399
|
-
return runPropagation(args, ctx);
|
|
400
|
-
}
|
|
401
|
-
}
|
|
402
|
-
export const codeContextTool = {
|
|
403
|
-
name: "code_context",
|
|
404
|
-
class: "read",
|
|
405
|
-
tier: "evidence",
|
|
406
|
-
version: "1.0.0",
|
|
407
|
-
title: "Blast radius, co-change history and data flow for a symbol or file",
|
|
408
|
-
description: "One call over three verbs. \"impact\": what depends on a symbol (blast radius over CALLS/" +
|
|
409
|
-
"IMPORTS/IMPLEMENTS/INHERITS/USES_API/SERVES_API), covering tests, linked incidents/fix " +
|
|
410
|
-
"patterns, and an optional traced path to a second symbol via \"to\". \"history\": which files " +
|
|
411
|
-
"a given file tends to change alongside (stored CHANGES_WITH co-change, not a live git log). " +
|
|
412
|
-
"\"propagation\": where a value from a symbol can flow (data-flow edges); field-level only at R3.",
|
|
413
|
-
inputSchema: SCHEMA,
|
|
414
|
-
run,
|
|
415
|
-
};
|
|
416
|
-
//# sourceMappingURL=code-context.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"code-context.js","sourceRoot":"","sources":["../../src/tools/code-context.ts"],"names":[],"mappings":"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"}
|