@descryy/mcp 0.11.5 → 0.11.7
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/dist/action-handshake.d.ts +38 -0
- package/dist/action-handshake.d.ts.map +1 -0
- package/dist/action-handshake.js +127 -0
- package/dist/action-handshake.js.map +1 -0
- package/dist/bin/descry-mcp.d.ts +7 -0
- package/dist/bin/descry-mcp.d.ts.map +1 -0
- package/dist/bin/descry-mcp.js +73 -0
- package/dist/bin/descry-mcp.js.map +1 -0
- package/dist/browser/auth.d.ts +84 -0
- package/dist/browser/auth.d.ts.map +1 -0
- package/dist/browser/auth.js +233 -0
- package/dist/browser/auth.js.map +1 -0
- package/dist/browser/capability-probe.d.ts +109 -0
- package/dist/browser/capability-probe.d.ts.map +1 -0
- package/dist/browser/capability-probe.js +201 -0
- package/dist/browser/capability-probe.js.map +1 -0
- package/dist/browser/driver.d.ts +591 -0
- package/dist/browser/driver.d.ts.map +1 -0
- package/dist/browser/driver.js +116 -0
- package/dist/browser/driver.js.map +1 -0
- package/dist/browser/evidence.d.ts +28 -0
- package/dist/browser/evidence.d.ts.map +1 -0
- package/dist/browser/evidence.js +82 -0
- package/dist/browser/evidence.js.map +1 -0
- package/dist/browser/fake-driver.d.ts +116 -0
- package/dist/browser/fake-driver.d.ts.map +1 -0
- package/dist/browser/fake-driver.js +416 -0
- package/dist/browser/fake-driver.js.map +1 -0
- package/dist/browser/fault-attribution.d.ts +178 -0
- package/dist/browser/fault-attribution.d.ts.map +1 -0
- package/dist/browser/fault-attribution.js +266 -0
- package/dist/browser/fault-attribution.js.map +1 -0
- package/dist/browser/graph-write.d.ts +45 -0
- package/dist/browser/graph-write.d.ts.map +1 -0
- package/dist/browser/graph-write.js +103 -0
- package/dist/browser/graph-write.js.map +1 -0
- package/dist/browser/identity-graph-write.d.ts +55 -0
- package/dist/browser/identity-graph-write.d.ts.map +1 -0
- package/dist/browser/identity-graph-write.js +45 -0
- package/dist/browser/identity-graph-write.js.map +1 -0
- package/dist/browser/page-probe.d.ts +81 -0
- package/dist/browser/page-probe.d.ts.map +1 -0
- package/dist/browser/page-probe.js +202 -0
- package/dist/browser/page-probe.js.map +1 -0
- package/dist/browser/playwright-driver.d.ts +115 -0
- package/dist/browser/playwright-driver.d.ts.map +1 -0
- package/dist/browser/playwright-driver.js +1545 -0
- package/dist/browser/playwright-driver.js.map +1 -0
- package/dist/browser/provider.d.ts +26 -0
- package/dist/browser/provider.d.ts.map +1 -0
- package/dist/browser/provider.js +14 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/reach-recording-session.d.ts +44 -0
- package/dist/browser/reach-recording-session.d.ts.map +1 -0
- package/dist/browser/reach-recording-session.js +151 -0
- package/dist/browser/reach-recording-session.js.map +1 -0
- package/dist/browser/reachability.d.ts +168 -0
- package/dist/browser/reachability.d.ts.map +1 -0
- package/dist/browser/reachability.js +294 -0
- package/dist/browser/reachability.js.map +1 -0
- package/dist/browser/registry.d.ts +126 -0
- package/dist/browser/registry.d.ts.map +1 -0
- package/dist/browser/registry.js +177 -0
- package/dist/browser/registry.js.map +1 -0
- package/dist/browser/scenario-provenance.d.ts +23 -0
- package/dist/browser/scenario-provenance.d.ts.map +1 -0
- package/dist/browser/scenario-provenance.js +73 -0
- package/dist/browser/scenario-provenance.js.map +1 -0
- package/dist/browser/scenario-resolve.d.ts +28 -0
- package/dist/browser/scenario-resolve.d.ts.map +1 -0
- package/dist/browser/scenario-resolve.js +96 -0
- package/dist/browser/scenario-resolve.js.map +1 -0
- package/dist/browser/scenario-runner.d.ts +72 -0
- package/dist/browser/scenario-runner.d.ts.map +1 -0
- package/dist/browser/scenario-runner.js +353 -0
- package/dist/browser/scenario-runner.js.map +1 -0
- package/dist/browser/stack-parser.d.ts +19 -0
- package/dist/browser/stack-parser.d.ts.map +1 -0
- package/dist/browser/stack-parser.js +85 -0
- package/dist/browser/stack-parser.js.map +1 -0
- package/dist/browser/tool-support.d.ts +71 -0
- package/dist/browser/tool-support.d.ts.map +1 -0
- package/dist/browser/tool-support.js +216 -0
- package/dist/browser/tool-support.js.map +1 -0
- package/dist/browser/url-scheme.d.ts +14 -0
- package/dist/browser/url-scheme.d.ts.map +1 -0
- package/dist/browser/url-scheme.js +38 -0
- package/dist/browser/url-scheme.js.map +1 -0
- package/dist/browser/wait-target.d.ts +37 -0
- package/dist/browser/wait-target.d.ts.map +1 -0
- package/dist/browser/wait-target.js +54 -0
- package/dist/browser/wait-target.js.map +1 -0
- package/dist/cancellation.d.ts +20 -0
- package/dist/cancellation.d.ts.map +1 -0
- package/dist/cancellation.js +41 -0
- package/dist/cancellation.js.map +1 -0
- package/dist/capped.d.ts +39 -0
- package/dist/capped.d.ts.map +1 -0
- package/dist/capped.js +43 -0
- package/dist/capped.js.map +1 -0
- package/dist/credential-store.d.ts +22 -0
- package/dist/credential-store.d.ts.map +1 -0
- package/dist/credential-store.js +33 -0
- package/dist/credential-store.js.map +1 -0
- package/dist/disclosure-ledger.d.ts +14 -0
- package/dist/disclosure-ledger.d.ts.map +1 -0
- package/dist/disclosure-ledger.js +18 -0
- package/dist/disclosure-ledger.js.map +1 -0
- package/dist/evidence/observed-route-evidence.d.ts +25 -0
- package/dist/evidence/observed-route-evidence.d.ts.map +1 -0
- package/dist/evidence/observed-route-evidence.js +76 -0
- package/dist/evidence/observed-route-evidence.js.map +1 -0
- package/dist/heap.d.ts +61 -0
- package/dist/heap.d.ts.map +1 -0
- package/dist/heap.js +82 -0
- package/dist/heap.js.map +1 -0
- package/dist/heartbeat.d.ts +46 -0
- package/dist/heartbeat.d.ts.map +1 -0
- package/dist/heartbeat.js +66 -0
- package/dist/heartbeat.js.map +1 -0
- package/dist/index.d.ts +32 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/module-trust.d.ts +37 -0
- package/dist/module-trust.d.ts.map +1 -0
- package/dist/module-trust.js +77 -0
- package/dist/module-trust.js.map +1 -0
- package/dist/path-confinement.d.ts +31 -0
- package/dist/path-confinement.d.ts.map +1 -0
- package/dist/path-confinement.js +44 -0
- package/dist/path-confinement.js.map +1 -0
- package/dist/planner/predict-then-propose.d.ts +134 -0
- package/dist/planner/predict-then-propose.d.ts.map +1 -0
- package/dist/planner/predict-then-propose.js +138 -0
- package/dist/planner/predict-then-propose.js.map +1 -0
- package/dist/planner/propose-journey.d.ts +75 -0
- package/dist/planner/propose-journey.d.ts.map +1 -0
- package/dist/planner/propose-journey.js +96 -0
- package/dist/planner/propose-journey.js.map +1 -0
- package/dist/protocol.d.ts +57 -0
- package/dist/protocol.d.ts.map +1 -0
- package/dist/protocol.js +90 -0
- package/dist/protocol.js.map +1 -0
- package/dist/ready-checks.d.ts +12 -0
- package/dist/ready-checks.d.ts.map +1 -0
- package/dist/ready-checks.js +43 -0
- package/dist/ready-checks.js.map +1 -0
- package/dist/registry.d.ts +103 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +327 -0
- package/dist/registry.js.map +1 -0
- package/dist/render.d.ts +623 -0
- package/dist/render.d.ts.map +1 -0
- package/dist/render.js +968 -0
- package/dist/render.js.map +1 -0
- package/dist/runtime-registry.d.ts +22 -0
- package/dist/runtime-registry.d.ts.map +1 -0
- package/dist/runtime-registry.js +142 -0
- package/dist/runtime-registry.js.map +1 -0
- package/dist/sandbox-defaults.d.ts +41 -0
- package/dist/sandbox-defaults.d.ts.map +1 -0
- package/dist/sandbox-defaults.js +14 -0
- package/dist/sandbox-defaults.js.map +1 -0
- package/dist/scenarios/browser-run-plan-projection.d.ts +161 -0
- package/dist/scenarios/browser-run-plan-projection.d.ts.map +1 -0
- package/dist/scenarios/browser-run-plan-projection.js +264 -0
- package/dist/scenarios/browser-run-plan-projection.js.map +1 -0
- package/dist/scenarios/credential-ref.d.ts +102 -0
- package/dist/scenarios/credential-ref.d.ts.map +1 -0
- package/dist/scenarios/credential-ref.js +148 -0
- package/dist/scenarios/credential-ref.js.map +1 -0
- package/dist/scenarios/index.d.ts +7 -0
- package/dist/scenarios/index.d.ts.map +1 -0
- package/dist/scenarios/index.js +7 -0
- package/dist/scenarios/index.js.map +1 -0
- package/dist/scenarios/parse.d.ts +18 -0
- package/dist/scenarios/parse.d.ts.map +1 -0
- package/dist/scenarios/parse.js +212 -0
- package/dist/scenarios/parse.js.map +1 -0
- package/dist/scenarios/scenario.d.ts +93 -0
- package/dist/scenarios/scenario.d.ts.map +1 -0
- package/dist/scenarios/scenario.js +27 -0
- package/dist/scenarios/scenario.js.map +1 -0
- package/dist/scenarios/secret-ref.d.ts +86 -0
- package/dist/scenarios/secret-ref.d.ts.map +1 -0
- package/dist/scenarios/secret-ref.js +125 -0
- package/dist/scenarios/secret-ref.js.map +1 -0
- package/dist/scenarios/storage.d.ts +21 -0
- package/dist/scenarios/storage.d.ts.map +1 -0
- package/dist/scenarios/storage.js +103 -0
- package/dist/scenarios/storage.js.map +1 -0
- package/dist/server.d.ts +61 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +642 -0
- package/dist/server.js.map +1 -0
- package/dist/session.d.ts +356 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +779 -0
- package/dist/session.js.map +1 -0
- package/dist/tools/alias-kit.d.ts +29 -0
- package/dist/tools/alias-kit.d.ts.map +1 -0
- package/dist/tools/alias-kit.js +21 -0
- package/dist/tools/alias-kit.js.map +1 -0
- package/dist/tools/aliases.d.ts +42 -0
- package/dist/tools/aliases.d.ts.map +1 -0
- package/dist/tools/aliases.js +52 -0
- package/dist/tools/aliases.js.map +1 -0
- package/dist/tools/analyze-workspace.d.ts +52 -0
- package/dist/tools/analyze-workspace.d.ts.map +1 -0
- package/dist/tools/analyze-workspace.js +207 -0
- package/dist/tools/analyze-workspace.js.map +1 -0
- package/dist/tools/analyze.d.ts +163 -0
- package/dist/tools/analyze.d.ts.map +1 -0
- package/dist/tools/analyze.js +724 -0
- package/dist/tools/analyze.js.map +1 -0
- package/dist/tools/browser-click.d.ts +18 -0
- package/dist/tools/browser-click.d.ts.map +1 -0
- package/dist/tools/browser-click.js +110 -0
- package/dist/tools/browser-click.js.map +1 -0
- package/dist/tools/browser-close-session.d.ts +39 -0
- package/dist/tools/browser-close-session.d.ts.map +1 -0
- package/dist/tools/browser-close-session.js +120 -0
- package/dist/tools/browser-close-session.js.map +1 -0
- package/dist/tools/browser-fill.d.ts +18 -0
- package/dist/tools/browser-fill.d.ts.map +1 -0
- package/dist/tools/browser-fill.js +117 -0
- package/dist/tools/browser-fill.js.map +1 -0
- package/dist/tools/browser-navigate.d.ts +15 -0
- package/dist/tools/browser-navigate.d.ts.map +1 -0
- package/dist/tools/browser-navigate.js +106 -0
- package/dist/tools/browser-navigate.js.map +1 -0
- package/dist/tools/browser-read.d.ts +33 -0
- package/dist/tools/browser-read.d.ts.map +1 -0
- package/dist/tools/browser-read.js +105 -0
- package/dist/tools/browser-read.js.map +1 -0
- package/dist/tools/browser-run-scenario.d.ts +28 -0
- package/dist/tools/browser-run-scenario.d.ts.map +1 -0
- package/dist/tools/browser-run-scenario.js +238 -0
- package/dist/tools/browser-run-scenario.js.map +1 -0
- package/dist/tools/browser-save-scenario.d.ts +19 -0
- package/dist/tools/browser-save-scenario.d.ts.map +1 -0
- package/dist/tools/browser-save-scenario.js +447 -0
- package/dist/tools/browser-save-scenario.js.map +1 -0
- package/dist/tools/browser-select.d.ts +20 -0
- package/dist/tools/browser-select.d.ts.map +1 -0
- package/dist/tools/browser-select.js +120 -0
- package/dist/tools/browser-select.js.map +1 -0
- package/dist/tools/browser-snapshot.d.ts +46 -0
- package/dist/tools/browser-snapshot.d.ts.map +1 -0
- package/dist/tools/browser-snapshot.js +127 -0
- package/dist/tools/browser-snapshot.js.map +1 -0
- package/dist/tools/browser-start-session.d.ts +24 -0
- package/dist/tools/browser-start-session.d.ts.map +1 -0
- package/dist/tools/browser-start-session.js +653 -0
- package/dist/tools/browser-start-session.js.map +1 -0
- package/dist/tools/browser-submit.d.ts +18 -0
- package/dist/tools/browser-submit.d.ts.map +1 -0
- package/dist/tools/browser-submit.js +106 -0
- package/dist/tools/browser-submit.js.map +1 -0
- package/dist/tools/browser-type.d.ts +18 -0
- package/dist/tools/browser-type.d.ts.map +1 -0
- package/dist/tools/browser-type.js +115 -0
- package/dist/tools/browser-type.js.map +1 -0
- package/dist/tools/browser-wait-for.d.ts +45 -0
- package/dist/tools/browser-wait-for.d.ts.map +1 -0
- package/dist/tools/browser-wait-for.js +164 -0
- package/dist/tools/browser-wait-for.js.map +1 -0
- package/dist/tools/browser.d.ts +69 -0
- package/dist/tools/browser.d.ts.map +1 -0
- package/dist/tools/browser.js +326 -0
- package/dist/tools/browser.js.map +1 -0
- package/dist/tools/chain.d.ts +41 -0
- package/dist/tools/chain.d.ts.map +1 -0
- package/dist/tools/chain.js +101 -0
- package/dist/tools/chain.js.map +1 -0
- package/dist/tools/change-scope.d.ts +25 -0
- package/dist/tools/change-scope.d.ts.map +1 -0
- package/dist/tools/change-scope.js +103 -0
- package/dist/tools/change-scope.js.map +1 -0
- package/dist/tools/code-context.d.ts +83 -0
- package/dist/tools/code-context.d.ts.map +1 -0
- package/dist/tools/code-context.js +432 -0
- package/dist/tools/code-context.js.map +1 -0
- package/dist/tools/contracts.d.ts +74 -0
- package/dist/tools/contracts.d.ts.map +1 -0
- package/dist/tools/contracts.js +214 -0
- package/dist/tools/contracts.js.map +1 -0
- package/dist/tools/cross-pr.d.ts +178 -0
- package/dist/tools/cross-pr.d.ts.map +1 -0
- package/dist/tools/cross-pr.js +362 -0
- package/dist/tools/cross-pr.js.map +1 -0
- package/dist/tools/disclosure.d.ts +75 -0
- package/dist/tools/disclosure.d.ts.map +1 -0
- package/dist/tools/disclosure.js +325 -0
- package/dist/tools/disclosure.js.map +1 -0
- package/dist/tools/draw-conclusion.d.ts +55 -0
- package/dist/tools/draw-conclusion.d.ts.map +1 -0
- package/dist/tools/draw-conclusion.js +243 -0
- package/dist/tools/draw-conclusion.js.map +1 -0
- package/dist/tools/git-context.d.ts +39 -0
- package/dist/tools/git-context.d.ts.map +1 -0
- package/dist/tools/git-context.js +374 -0
- package/dist/tools/git-context.js.map +1 -0
- package/dist/tools/git-diff.d.ts +45 -0
- package/dist/tools/git-diff.d.ts.map +1 -0
- package/dist/tools/git-diff.js +338 -0
- package/dist/tools/git-diff.js.map +1 -0
- package/dist/tools/git-history.d.ts +16 -0
- package/dist/tools/git-history.d.ts.map +1 -0
- package/dist/tools/git-history.js +106 -0
- package/dist/tools/git-history.js.map +1 -0
- package/dist/tools/history.d.ts +34 -0
- package/dist/tools/history.d.ts.map +1 -0
- package/dist/tools/history.js +121 -0
- package/dist/tools/history.js.map +1 -0
- package/dist/tools/impact.d.ts +46 -0
- package/dist/tools/impact.d.ts.map +1 -0
- package/dist/tools/impact.js +225 -0
- package/dist/tools/impact.js.map +1 -0
- package/dist/tools/index.d.ts +59 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +70 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/kit.d.ts +165 -0
- package/dist/tools/kit.d.ts.map +1 -0
- package/dist/tools/kit.js +153 -0
- package/dist/tools/kit.js.map +1 -0
- package/dist/tools/link-workspace.d.ts +24 -0
- package/dist/tools/link-workspace.d.ts.map +1 -0
- package/dist/tools/link-workspace.js +131 -0
- package/dist/tools/link-workspace.js.map +1 -0
- package/dist/tools/lookup.d.ts +19 -0
- package/dist/tools/lookup.d.ts.map +1 -0
- package/dist/tools/lookup.js +63 -0
- package/dist/tools/lookup.js.map +1 -0
- package/dist/tools/mark-incident.d.ts +28 -0
- package/dist/tools/mark-incident.d.ts.map +1 -0
- package/dist/tools/mark-incident.js +171 -0
- package/dist/tools/mark-incident.js.map +1 -0
- package/dist/tools/merged-browser.d.ts +11 -0
- package/dist/tools/merged-browser.d.ts.map +1 -0
- package/dist/tools/merged-browser.js +20 -0
- package/dist/tools/merged-browser.js.map +1 -0
- package/dist/tools/merged-context.d.ts +11 -0
- package/dist/tools/merged-context.d.ts.map +1 -0
- package/dist/tools/merged-context.js +21 -0
- package/dist/tools/merged-context.js.map +1 -0
- package/dist/tools/merged-observe.d.ts +13 -0
- package/dist/tools/merged-observe.d.ts.map +1 -0
- package/dist/tools/merged-observe.js +21 -0
- package/dist/tools/merged-observe.js.map +1 -0
- package/dist/tools/merged-workspace.d.ts +14 -0
- package/dist/tools/merged-workspace.d.ts.map +1 -0
- package/dist/tools/merged-workspace.js +21 -0
- package/dist/tools/merged-workspace.js.map +1 -0
- package/dist/tools/observe-runtime.d.ts +262 -0
- package/dist/tools/observe-runtime.d.ts.map +1 -0
- package/dist/tools/observe-runtime.js +1966 -0
- package/dist/tools/observe-runtime.js.map +1 -0
- package/dist/tools/observe-tests.d.ts +57 -0
- package/dist/tools/observe-tests.d.ts.map +1 -0
- package/dist/tools/observe-tests.js +391 -0
- package/dist/tools/observe-tests.js.map +1 -0
- package/dist/tools/observe.d.ts +28 -0
- package/dist/tools/observe.d.ts.map +1 -0
- package/dist/tools/observe.js +291 -0
- package/dist/tools/observe.js.map +1 -0
- package/dist/tools/pr-analysis.d.ts +189 -0
- package/dist/tools/pr-analysis.d.ts.map +1 -0
- package/dist/tools/pr-analysis.js +365 -0
- package/dist/tools/pr-analysis.js.map +1 -0
- package/dist/tools/pre-push.d.ts +168 -0
- package/dist/tools/pre-push.d.ts.map +1 -0
- package/dist/tools/pre-push.js +416 -0
- package/dist/tools/pre-push.js.map +1 -0
- package/dist/tools/predict-reach.d.ts +57 -0
- package/dist/tools/predict-reach.d.ts.map +1 -0
- package/dist/tools/predict-reach.js +183 -0
- package/dist/tools/predict-reach.js.map +1 -0
- package/dist/tools/propagation.d.ts +37 -0
- package/dist/tools/propagation.d.ts.map +1 -0
- package/dist/tools/propagation.js +162 -0
- package/dist/tools/propagation.js.map +1 -0
- package/dist/tools/propose-journey.d.ts +16 -0
- package/dist/tools/propose-journey.d.ts.map +1 -0
- package/dist/tools/propose-journey.js +132 -0
- package/dist/tools/propose-journey.js.map +1 -0
- package/dist/tools/prove-reach.d.ts +74 -0
- package/dist/tools/prove-reach.d.ts.map +1 -0
- package/dist/tools/prove-reach.js +274 -0
- package/dist/tools/prove-reach.js.map +1 -0
- package/dist/tools/questions.d.ts +30 -0
- package/dist/tools/questions.d.ts.map +1 -0
- package/dist/tools/questions.js +230 -0
- package/dist/tools/questions.js.map +1 -0
- package/dist/tools/refusal-fetch.d.ts +35 -0
- package/dist/tools/refusal-fetch.d.ts.map +1 -0
- package/dist/tools/refusal-fetch.js +123 -0
- package/dist/tools/refusal-fetch.js.map +1 -0
- package/dist/tools/runtime-incident.d.ts +33 -0
- package/dist/tools/runtime-incident.d.ts.map +1 -0
- package/dist/tools/runtime-incident.js +67 -0
- package/dist/tools/runtime-incident.js.map +1 -0
- package/dist/tools/runtime-journey-drive.d.ts +102 -0
- package/dist/tools/runtime-journey-drive.d.ts.map +1 -0
- package/dist/tools/runtime-journey-drive.js +247 -0
- package/dist/tools/runtime-journey-drive.js.map +1 -0
- package/dist/tools/scope.d.ts +45 -0
- package/dist/tools/scope.d.ts.map +1 -0
- package/dist/tools/scope.js +217 -0
- package/dist/tools/scope.js.map +1 -0
- package/dist/tools/similar-incidents.d.ts +43 -0
- package/dist/tools/similar-incidents.d.ts.map +1 -0
- package/dist/tools/similar-incidents.js +190 -0
- package/dist/tools/similar-incidents.js.map +1 -0
- package/dist/tools/validate.d.ts +133 -0
- package/dist/tools/validate.d.ts.map +1 -0
- package/dist/tools/validate.js +488 -0
- package/dist/tools/validate.js.map +1 -0
- package/dist/tools/verb.d.ts +46 -0
- package/dist/tools/verb.d.ts.map +1 -0
- package/dist/tools/verb.js +78 -0
- package/dist/tools/verb.js.map +1 -0
- package/dist/tools/verification-status.d.ts +38 -0
- package/dist/tools/verification-status.d.ts.map +1 -0
- package/dist/tools/verification-status.js +203 -0
- package/dist/tools/verification-status.js.map +1 -0
- package/dist/tools/verify-claim.d.ts +29 -0
- package/dist/tools/verify-claim.d.ts.map +1 -0
- package/dist/tools/verify-claim.js +218 -0
- package/dist/tools/verify-claim.js.map +1 -0
- package/dist/tools/workspace.d.ts +28 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +94 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/transport.d.ts +32 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +85 -0
- package/dist/transport.js.map +1 -0
- package/dist/workspace-index.d.ts +164 -0
- package/dist/workspace-index.d.ts.map +1 -0
- package/dist/workspace-index.js +381 -0
- package/dist/workspace-index.js.map +1 -0
- package/package.json +5 -5
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `workspace` — merges `analyze`, `analyze_workspace` and `link_workspace`
|
|
3
|
+
* behind one `verb` (documents/plans/mcp-surface-consolidation.md §2, group 1).
|
|
4
|
+
* All three are `stateful-read`/`evidence`, so the merge crosses neither
|
|
5
|
+
* boundary.
|
|
6
|
+
*
|
|
7
|
+
* Dispatch only. Each verb's own `run()` body is untouched and stays in its
|
|
8
|
+
* own module (`analyze.ts` / `analyze-workspace.ts` / `link-workspace.ts`) —
|
|
9
|
+
* this file never holds a second copy of that logic, it only routes to it
|
|
10
|
+
* after `selectVerb` has re-established, per verb, the argument strength a
|
|
11
|
+
* flat union schema loses (`verb.ts`'s own header explains why that is
|
|
12
|
+
* mandatory once a schema covers more than one verb).
|
|
13
|
+
*/
|
|
14
|
+
import { selectVerb } from "./verb.js";
|
|
15
|
+
import { analyzeTool } from "./analyze.js";
|
|
16
|
+
import { analyzeWorkspaceTool } from "./analyze-workspace.js";
|
|
17
|
+
import { linkWorkspaceTool } from "./link-workspace.js";
|
|
18
|
+
const VERBS = ["analyze", "index", "link"];
|
|
19
|
+
const VERB_SPECS = [
|
|
20
|
+
{ verb: "analyze", accepts: ["includeHistory", "maxCommits", "reload"] },
|
|
21
|
+
{ verb: "index", accepts: ["includeHistory", "maxCommits"] },
|
|
22
|
+
{ verb: "link", accepts: ["workspace", "repos"] },
|
|
23
|
+
];
|
|
24
|
+
const SCHEMA = {
|
|
25
|
+
type: "object",
|
|
26
|
+
properties: {
|
|
27
|
+
verb: {
|
|
28
|
+
type: "string",
|
|
29
|
+
enum: [...VERBS],
|
|
30
|
+
description: "analyze: this repository. index: every linked repository. link: declare a shared workspace.",
|
|
31
|
+
},
|
|
32
|
+
includeHistory: {
|
|
33
|
+
type: "boolean",
|
|
34
|
+
description: "analyze/index. Read git history for co-change. Default true.",
|
|
35
|
+
},
|
|
36
|
+
maxCommits: {
|
|
37
|
+
type: "integer",
|
|
38
|
+
minimum: 1,
|
|
39
|
+
description: "analyze/index. Cap on commits read. Default 2000.",
|
|
40
|
+
},
|
|
41
|
+
reload: {
|
|
42
|
+
type: "boolean",
|
|
43
|
+
description: "analyze only. Re-read config from disk first.",
|
|
44
|
+
},
|
|
45
|
+
workspace: {
|
|
46
|
+
type: "string",
|
|
47
|
+
description: "link only. Workspace id to write into every repo in \"repos\".",
|
|
48
|
+
},
|
|
49
|
+
repos: {
|
|
50
|
+
type: "array",
|
|
51
|
+
minItems: 2,
|
|
52
|
+
items: {
|
|
53
|
+
type: "object",
|
|
54
|
+
properties: {
|
|
55
|
+
path: { type: "string", description: "Absolute path on disk." },
|
|
56
|
+
repo: { type: "string" },
|
|
57
|
+
},
|
|
58
|
+
required: ["path", "repo"],
|
|
59
|
+
additionalProperties: false,
|
|
60
|
+
},
|
|
61
|
+
description: "link only. Repositories that share this workspace. Only ones the user confirmed — never inferred.",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
required: ["verb"],
|
|
65
|
+
additionalProperties: false,
|
|
66
|
+
};
|
|
67
|
+
const DISPATCH = {
|
|
68
|
+
analyze: analyzeTool,
|
|
69
|
+
index: analyzeWorkspaceTool,
|
|
70
|
+
link: linkWorkspaceTool,
|
|
71
|
+
};
|
|
72
|
+
async function run(args, ctx) {
|
|
73
|
+
const verb = selectVerb(args, "verb", VERB_SPECS);
|
|
74
|
+
// `ToolDefinition` erases its answer's type parameter — it has to, the
|
|
75
|
+
// registry is one array of many shapes — so the delegated call comes back as
|
|
76
|
+
// an erased answer type. The verb table is what makes the union true: every
|
|
77
|
+
// entry's own `run` is declared against one of WorkspaceData's members, and a verb
|
|
78
|
+
// added without its shape stops compiling at the union. The assertion
|
|
79
|
+
// re-applies what the table already guarantees rather than asserting
|
|
80
|
+
// something unchecked.
|
|
81
|
+
return (await DISPATCH[verb].run(args, ctx));
|
|
82
|
+
}
|
|
83
|
+
export const workspaceTool = {
|
|
84
|
+
name: "workspace",
|
|
85
|
+
class: "stateful-read",
|
|
86
|
+
tier: "evidence",
|
|
87
|
+
version: "1.0.0",
|
|
88
|
+
title: "Analyse a repository or workspace into the code graph",
|
|
89
|
+
description: "analyze: read this repository. index: read linked repositories into one graph. link: " +
|
|
90
|
+
"declare a shared workspace. Most tools build the graph automatically; call to control timing.",
|
|
91
|
+
inputSchema: SCHEMA,
|
|
92
|
+
run,
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=workspace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace.js","sourceRoot":"","sources":["../../src/tools/workspace.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,UAAU,EAAiB,MAAM,WAAW,CAAC;AAItD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAkBxD,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAU,CAAC;AAGpD,MAAM,UAAU,GAA8B;IAC5C,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE;IACxE,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,gBAAgB,EAAE,YAAY,CAAC,EAAE;IAC5D,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,CAAC,EAAE;CAClD,CAAC;AAEF,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC;YAChB,WAAW,EAAE,6FAA6F;SAC3G;QACD,cAAc,EAAE;YACd,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,8DAA8D;SAC5E;QACD,UAAU,EAAE;YACV,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,mDAAmD;SACjE;QACD,MAAM,EAAE;YACN,IAAI,EAAE,SAAS;YACf,WAAW,EAAE,+CAA+C;SAC7D;QACD,SAAS,EAAE;YACT,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gEAAgE;SAC9E;QACD,KAAK,EAAE;YACL,IAAI,EAAE,OAAO;YACb,QAAQ,EAAE,CAAC;YACX,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBAC/D,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;iBACzB;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;gBAC1B,oBAAoB,EAAE,KAAK;aAC5B;YACD,WAAW,EAAE,mGAAmG;SACjH;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAEX,MAAM,QAAQ,GAA2C;IACvD,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,oBAAoB;IAC3B,IAAI,EAAE,iBAAiB;CACxB,CAAC;AAEF,KAAK,UAAU,GAAG,CAAC,IAA6B,EAAE,GAAgB;IAChE,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC;IAClD,uEAAuE;IACvE,6EAA6E;IAC7E,4EAA4E;IAC5E,mFAAmF;IACnF,sEAAsE;IACtE,qEAAqE;IACrE,uBAAuB;IACvB,OAAO,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,CAA8B,CAAC;AAC5E,CAAC;AAED,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC3C,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,eAAe;IACtB,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,uDAAuD;IAC9D,WAAW,EACT,uFAAuF;QACvF,+FAA+F;IACjG,WAAW,EAAE,MAA4C;IACzD,GAAG;CACJ,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/** stdio transport: newline-delimited JSON over stdin/stdout. Stdout is the protocol
|
|
2
|
+
* channel and nothing else may write to it — a stray `console.log` anywhere (engine,
|
|
3
|
+
* adapter, dependency) corrupts a frame and kills the session with a misleading error;
|
|
4
|
+
* `guardStdout()` redirects console.* to stderr instead. Framing: one JSON object per
|
|
5
|
+
* line, UTF-8, no embedded newlines; reads use `StringDecoder` since a chunk boundary can split a multibyte character. */
|
|
6
|
+
import type { Readable, Writable } from "node:stream";
|
|
7
|
+
export interface Transport {
|
|
8
|
+
/** Write one frame. Must never be called with anything but a JSON-RPC message. */
|
|
9
|
+
send(frame: unknown): void;
|
|
10
|
+
}
|
|
11
|
+
/** Redirects every console channel to stderr and returns the real stdout writer. Called
|
|
12
|
+
* once, before any handler runs — the returned function is the only sanctioned path to stdout. */
|
|
13
|
+
export declare function guardStdout(stdout: Writable, stderr: Writable): (line: string) => void;
|
|
14
|
+
/** Splits a byte stream into lines, decoding correctly across chunk boundaries. Returned as
|
|
15
|
+
* a function, not a class — the buffer is the entire state, nothing else to hang on an object. */
|
|
16
|
+
export declare function createLineReader(onLine: (line: string) => void): (chunk: Buffer) => void;
|
|
17
|
+
export interface StdioOptions {
|
|
18
|
+
readonly stdin: Readable;
|
|
19
|
+
readonly stdout: Writable;
|
|
20
|
+
readonly stderr: Writable;
|
|
21
|
+
}
|
|
22
|
+
/** Runs a dispatcher over stdio until stdin closes. Resolves on end-of-input — how an MCP
|
|
23
|
+
* host asks a stdio server to shut down. Anything the server holds open (DB handle, worker
|
|
24
|
+
* pool) is disposed by the caller after, not here — this function knows only about bytes. */
|
|
25
|
+
export interface ServeOptions {
|
|
26
|
+
/** Frames that must not wait behind an in-flight call. Supplied by the caller — which
|
|
27
|
+
* methods mean what is the server's knowledge; `server.ts`'s `isOutOfBand` answers true
|
|
28
|
+
* only for `notifications/cancelled`. */
|
|
29
|
+
readonly isOutOfBand?: (line: string) => boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare function serveStdio(options: StdioOptions, dispatch: (line: string, transport: Transport) => Promise<void>, serveOptions?: ServeOptions): Promise<void>;
|
|
32
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;2HAI2H;AAG3H,OAAO,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEtD,MAAM,WAAW,SAAS;IACxB,kFAAkF;IAClF,IAAI,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;CAC5B;AAED;mGACmG;AACnG,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,EAChB,MAAM,EAAE,QAAQ,GACf,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAiBxB;AAWD;mGACmG;AACnG,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAcxF;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC;CAC3B;AAED;;8FAE8F;AAC9F,MAAM,WAAW,YAAY;IAC3B;;8CAE0C;IAC1C,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC;CAClD;AAED,wBAAgB,UAAU,CACxB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,KAAK,OAAO,CAAC,IAAI,CAAC,EAC/D,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqCf"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/** stdio transport: newline-delimited JSON over stdin/stdout. Stdout is the protocol
|
|
2
|
+
* channel and nothing else may write to it — a stray `console.log` anywhere (engine,
|
|
3
|
+
* adapter, dependency) corrupts a frame and kills the session with a misleading error;
|
|
4
|
+
* `guardStdout()` redirects console.* to stderr instead. Framing: one JSON object per
|
|
5
|
+
* line, UTF-8, no embedded newlines; reads use `StringDecoder` since a chunk boundary can split a multibyte character. */
|
|
6
|
+
import { StringDecoder } from "node:string_decoder";
|
|
7
|
+
/** Redirects every console channel to stderr and returns the real stdout writer. Called
|
|
8
|
+
* once, before any handler runs — the returned function is the only sanctioned path to stdout. */
|
|
9
|
+
export function guardStdout(stdout, stderr) {
|
|
10
|
+
const toStderr = (...args) => {
|
|
11
|
+
stderr.write(`${args
|
|
12
|
+
.map((a) => (typeof a === "string" ? a : inspectish(a)))
|
|
13
|
+
.join(" ")}\n`);
|
|
14
|
+
};
|
|
15
|
+
console.log = toStderr;
|
|
16
|
+
console.info = toStderr;
|
|
17
|
+
console.warn = toStderr;
|
|
18
|
+
console.debug = toStderr;
|
|
19
|
+
console.error = toStderr;
|
|
20
|
+
return (line) => {
|
|
21
|
+
stdout.write(line);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
function inspectish(value) {
|
|
25
|
+
if (value instanceof Error)
|
|
26
|
+
return `${value.name}: ${value.message}`;
|
|
27
|
+
try {
|
|
28
|
+
return JSON.stringify(value) ?? String(value);
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
return String(value);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/** Splits a byte stream into lines, decoding correctly across chunk boundaries. Returned as
|
|
35
|
+
* a function, not a class — the buffer is the entire state, nothing else to hang on an object. */
|
|
36
|
+
export function createLineReader(onLine) {
|
|
37
|
+
const decoder = new StringDecoder("utf8");
|
|
38
|
+
let buffer = "";
|
|
39
|
+
return (chunk) => {
|
|
40
|
+
buffer += decoder.write(chunk);
|
|
41
|
+
let index = buffer.indexOf("\n");
|
|
42
|
+
while (index !== -1) {
|
|
43
|
+
const line = buffer.slice(0, index).replace(/\r$/, "");
|
|
44
|
+
buffer = buffer.slice(index + 1);
|
|
45
|
+
if (line.trim() !== "")
|
|
46
|
+
onLine(line);
|
|
47
|
+
index = buffer.indexOf("\n");
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function serveStdio(options, dispatch, serveOptions = {}) {
|
|
52
|
+
const write = guardStdout(options.stdout, options.stderr);
|
|
53
|
+
const transport = {
|
|
54
|
+
send: (frame) => {
|
|
55
|
+
write(`${JSON.stringify(frame)}\n`);
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
// Frames handled strictly in order — concurrency would let a fast `tools/list` overtake a
|
|
59
|
+
// slow `analyze` and read a half-built graph. Exempt: `notifications/cancelled` alone (useless
|
|
60
|
+
// if queued, does no graph work) — narrowly scoped so a future notification doesn't inherit this silently.
|
|
61
|
+
const isOutOfBand = serveOptions.isOutOfBand ?? (() => false);
|
|
62
|
+
let chain = Promise.resolve();
|
|
63
|
+
return new Promise((resolve, reject) => {
|
|
64
|
+
const onError = (error) => {
|
|
65
|
+
// A dispatcher that throws is a bug here — `dispatch` should turn every failure into
|
|
66
|
+
// an error frame. Report on stderr and keep the session alive rather than killing the editor integration.
|
|
67
|
+
options.stderr.write(`descry-mcp: dispatch failed: ${inspectish(error)}\n`);
|
|
68
|
+
};
|
|
69
|
+
const feed = createLineReader((line) => {
|
|
70
|
+
if (isOutOfBand(line)) {
|
|
71
|
+
// Deliberately not joined to `chain` or awaited — an out-of-band frame must not
|
|
72
|
+
// delay ordered work; its rejection is still handled so it can't surface as unhandled and crash the process.
|
|
73
|
+
void dispatch(line, transport).catch(onError);
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
chain = chain.then(() => dispatch(line, transport)).catch(onError);
|
|
77
|
+
});
|
|
78
|
+
options.stdin.on("data", feed);
|
|
79
|
+
options.stdin.on("error", reject);
|
|
80
|
+
options.stdin.on("end", () => {
|
|
81
|
+
chain.then(resolve, resolve);
|
|
82
|
+
});
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAAA;;;;2HAI2H;AAE3H,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAQpD;mGACmG;AACnG,MAAM,UAAU,WAAW,CACzB,MAAgB,EAChB,MAAgB;IAEhB,MAAM,QAAQ,GAAG,CAAC,GAAG,IAAe,EAAQ,EAAE;QAC5C,MAAM,CAAC,KAAK,CACV,GAAG,IAAI;aACJ,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;aACvD,IAAI,CAAC,GAAG,CAAC,IAAI,CACjB,CAAC;IACJ,CAAC,CAAC;IACF,OAAO,CAAC,GAAG,GAAG,QAAQ,CAAC;IACvB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,IAAI,GAAG,QAAQ,CAAC;IACxB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IACzB,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;IAEzB,OAAO,CAAC,IAAY,EAAQ,EAAE;QAC5B,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACrB,CAAC,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,KAAK,YAAY,KAAK;QAAE,OAAO,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;IACrE,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;AACH,CAAC;AAED;mGACmG;AACnG,MAAM,UAAU,gBAAgB,CAAC,MAA8B;IAC7D,MAAM,OAAO,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,MAAM,GAAG,EAAE,CAAC;IAEhB,OAAO,CAAC,KAAa,EAAQ,EAAE;QAC7B,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACvD,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACjC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YACrC,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAkBD,MAAM,UAAU,UAAU,CACxB,OAAqB,EACrB,QAA+D,EAC/D,eAA6B,EAAE;IAE/B,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE;YACd,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACtC,CAAC;KACF,CAAC;IAEF,0FAA0F;IAC1F,+FAA+F;IAC/F,2GAA2G;IAC3G,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,IAAI,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;IAC9D,IAAI,KAAK,GAAkB,OAAO,CAAC,OAAO,EAAE,CAAC;IAE7C,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,OAAO,GAAG,CAAC,KAAc,EAAQ,EAAE;YACvC,qFAAqF;YACrF,0GAA0G;YAC1G,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC9E,CAAC,CAAC;QAEF,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,IAAI,EAAE,EAAE;YACrC,IAAI,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,gFAAgF;gBAChF,6GAA6G;gBAC7G,KAAK,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC9C,OAAO;YACT,CAAC;YACD,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;QAEH,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC/B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YAC3B,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `indexWorkspace` — the cross-repo counterpart of `analyze`'s single-repo run.
|
|
3
|
+
*
|
|
4
|
+
* Gap 1 of `documents/plans/site-claims-closure-production-plan.md`. A
|
|
5
|
+
* standalone function, **not** a second constructor on `Session` — see that
|
|
6
|
+
* plan section for why: `session.ts`'s own header states "one repo, one
|
|
7
|
+
* graph, one process", `DescryConfig` is singular throughout, and well over a
|
|
8
|
+
* dozen other tool files read `session.config`/`session.repoPath` as singular
|
|
9
|
+
* values. Widening `Session` itself would mean widening all of them. This
|
|
10
|
+
* function instead does, once per repository in a loop, exactly what
|
|
11
|
+
* `analyze.ts`'s `run()` already does once per source — load a repository's
|
|
12
|
+
* own configured sources, detect, emit, read its git history — and then
|
|
13
|
+
* merges and persists every repository's batches together in **one**
|
|
14
|
+
* `buildGraph`/`persistGraph` pass, into one shared store.
|
|
15
|
+
*
|
|
16
|
+
* Ported in spirit from `descry-desktop`'s `packages/session/src/indexing
|
|
17
|
+
* /index.ts` (`indexRepository`), which solved the same "index N
|
|
18
|
+
* repositories into one store" problem for the desktop app's engine. The
|
|
19
|
+
* adaptation reuses `descry-core`'s own existing per-repo pieces —
|
|
20
|
+
* `loadConfig`, `registry.ts`'s `loadSources`/`detectSources`, `analyze.ts`'s
|
|
21
|
+
* `optionalBatchLists`/`sourceFailureNote`/`sourceProvenanceNote` — instead of
|
|
22
|
+
* re-discovering adapters or re-deriving batch handling, because those
|
|
23
|
+
* already live in this package (`@descryy/mcp`) beside `analyze.ts`; there
|
|
24
|
+
* was nothing to extract into `@descryy/core`.
|
|
25
|
+
*
|
|
26
|
+
* ## Why every repository's batches are merged in one `buildGraph` call,
|
|
27
|
+
* ## not one call per repository
|
|
28
|
+
*
|
|
29
|
+
* `buildGraph`'s `JoinMetric`/`crossRepoJoins` (`packages/core/src/graph
|
|
30
|
+
* /build.ts`) is computed from the batches handed to *that one call*: it
|
|
31
|
+
* counts, per workspace-scoped node type, how many of the repositories
|
|
32
|
+
* represented **in that call** supplied a node with the same id. A
|
|
33
|
+
* `buildGraph` call given only one repository's batches at a time can never
|
|
34
|
+
* see two repositories agreeing on an id — `crossRepoJoinPossible` would be
|
|
35
|
+
* false for every type on every call, and the workspace join `analyze_workspace`
|
|
36
|
+
* exists to prove would be invisible in its own reply. So every repository in
|
|
37
|
+
* this call is read first, and their batches are combined into one list
|
|
38
|
+
* before `buildGraph` runs once — the same shape `analyze.ts` already uses
|
|
39
|
+
* for merging one repository's several *sources*, extended one level up to
|
|
40
|
+
* merging several *repositories*. `persistGraph` still writes each batch's
|
|
41
|
+
* rows under its own `producedBy` (DEC-014's per-adapter invalidation rule is
|
|
42
|
+
* unaffected — a batch is still a batch, whichever repository it came from).
|
|
43
|
+
*
|
|
44
|
+
* ## What this deliberately does not do
|
|
45
|
+
*
|
|
46
|
+
* Unlike `analyze.ts`'s `run()`, this does not mint edges from confirmed
|
|
47
|
+
* facts or re-project confirmed incidents — both are per-repository testimony
|
|
48
|
+
* recorded in that repository's own `.descry/config.json`, and folding them
|
|
49
|
+
* into a cross-repo indexing pass is a separate, unscoped question. A
|
|
50
|
+
* repository indexed through `indexWorkspace` gets the code-reading half of
|
|
51
|
+
* what `analyze` gives it; the two are not currently unified, and that is
|
|
52
|
+
* disclosed by the caller (`analyze_workspace`), not silently assumed away
|
|
53
|
+
* here.
|
|
54
|
+
*/
|
|
55
|
+
import { type AmbiguousApiJoin, type AmbiguousTableJoin, type BuildResult, type GraphStamp, type ResolvedApiJoin, type ResolvedTableJoin, type StoreCounts } from "@descryy/core";
|
|
56
|
+
import { type SourceRun } from "./tools/analyze.ts";
|
|
57
|
+
export interface IndexWorkspaceRepoInput {
|
|
58
|
+
/** Absolute path to the repository on disk. */
|
|
59
|
+
readonly repoPath: string;
|
|
60
|
+
/**
|
|
61
|
+
* The repository's identity as `link_workspace` recorded it
|
|
62
|
+
* (`WorkspaceRepo.repo`). Used only when the repository's own
|
|
63
|
+
* `.descry/config.json` cannot be read at all — whenever it can, its own
|
|
64
|
+
* `repo` field wins instead, because that is the value its adapters
|
|
65
|
+
* actually hash node ids under; a mismatch between the two is disclosed,
|
|
66
|
+
* never silently resolved one way (`repoIdentityNote`).
|
|
67
|
+
*/
|
|
68
|
+
readonly repo: string;
|
|
69
|
+
}
|
|
70
|
+
export interface IndexWorkspaceRepoResult {
|
|
71
|
+
readonly repo: string;
|
|
72
|
+
readonly repoPath: string;
|
|
73
|
+
/** `null` when this repository could not be read at all — not a git repository, or its config would not load. */
|
|
74
|
+
readonly commitSha: string | null;
|
|
75
|
+
readonly sources: readonly SourceRun[];
|
|
76
|
+
readonly sourcesFailed: readonly {
|
|
77
|
+
readonly module: string;
|
|
78
|
+
readonly reason: string;
|
|
79
|
+
}[];
|
|
80
|
+
readonly sourcesSkipped: readonly {
|
|
81
|
+
readonly source: string;
|
|
82
|
+
readonly reason: string;
|
|
83
|
+
}[];
|
|
84
|
+
readonly notes: readonly string[];
|
|
85
|
+
/** This repository's share of the one shared-store write this call made. */
|
|
86
|
+
readonly written: {
|
|
87
|
+
readonly nodes: number;
|
|
88
|
+
readonly edges: number;
|
|
89
|
+
readonly unresolved: number;
|
|
90
|
+
readonly evictedFiles: number;
|
|
91
|
+
};
|
|
92
|
+
/** Lowest resolution reached by a code-reading source in this repository, or 0 if none ran. */
|
|
93
|
+
readonly reachedResolution: number;
|
|
94
|
+
}
|
|
95
|
+
export interface IndexWorkspaceProgress {
|
|
96
|
+
readonly repo: string;
|
|
97
|
+
readonly phase: "detecting" | "emitting" | "history" | "merging" | "writing" | "done";
|
|
98
|
+
readonly completed: number;
|
|
99
|
+
readonly total: number;
|
|
100
|
+
}
|
|
101
|
+
export interface IndexWorkspaceOptions {
|
|
102
|
+
readonly workspaceId: string;
|
|
103
|
+
readonly repos: readonly IndexWorkspaceRepoInput[];
|
|
104
|
+
/** Where to open/create the shared store. Passed straight to `openStore`. */
|
|
105
|
+
readonly graphDbPath: string;
|
|
106
|
+
/** Default true, matching `analyze`'s own default. */
|
|
107
|
+
readonly includeHistory?: boolean;
|
|
108
|
+
readonly maxCommits?: number;
|
|
109
|
+
readonly onProgress?: (progress: IndexWorkspaceProgress) => void;
|
|
110
|
+
readonly signal?: AbortSignal;
|
|
111
|
+
}
|
|
112
|
+
export interface IndexWorkspaceResult {
|
|
113
|
+
readonly workspaceId: string;
|
|
114
|
+
readonly graphDbPath: string;
|
|
115
|
+
/** One entry per repository requested, in the order given — including one for a repository that could not be read at all. */
|
|
116
|
+
readonly repos: readonly IndexWorkspaceRepoResult[];
|
|
117
|
+
/** Row counts in the shared store after every repository has been indexed. */
|
|
118
|
+
readonly stored: StoreCounts;
|
|
119
|
+
/** The shared store's own stamp — `repoCount` here is the fact that this graph now spans more than one repository, not a staleness signal (`GraphStamp`'s own doc). `resolutionFloor` is this call's own, mirroring `analyze`'s (the minimum across every repository's code-reading sources; 0 if none ran anywhere). */
|
|
120
|
+
readonly stamp: GraphStamp;
|
|
121
|
+
readonly merge: {
|
|
122
|
+
readonly mergedNodes: number;
|
|
123
|
+
readonly mergedEdges: number;
|
|
124
|
+
readonly collisions: number;
|
|
125
|
+
readonly droppedEdges: number;
|
|
126
|
+
readonly rejections: number;
|
|
127
|
+
};
|
|
128
|
+
/** Per workspace-scoped node type: whether this call actually saw the join happen (DEC-054).
|
|
129
|
+
* API_ENDPOINT is no longer one of these types (DEC-NEXT-endpoint-identity-repo-scoping) —
|
|
130
|
+
* see `apiJoins` for its own, separate join accounting. */
|
|
131
|
+
readonly crossRepoJoins: BuildResult["crossRepoJoins"];
|
|
132
|
+
/** The staged frontend-to-backend API_ENDPOINT join (Gap 10,
|
|
133
|
+
* `packages/core/src/contracts/workspace-join.ts`) — run once, after `buildGraph`, over the
|
|
134
|
+
* whole merged workspace graph. */
|
|
135
|
+
readonly apiJoins: {
|
|
136
|
+
readonly resolved: readonly ResolvedApiJoin[];
|
|
137
|
+
readonly ambiguous: readonly AmbiguousApiJoin[];
|
|
138
|
+
readonly unmatched: number;
|
|
139
|
+
readonly unkeyed: number;
|
|
140
|
+
};
|
|
141
|
+
/** The staged cross-repo DATABASE_TABLE/DATABASE_COLUMN join (Gap 10's table
|
|
142
|
+
* half, `packages/core/src/contracts/workspace-table-join.ts`) — run once,
|
|
143
|
+
* after `buildGraph` and the API_ENDPOINT join, over the whole merged
|
|
144
|
+
* workspace graph. */
|
|
145
|
+
readonly tableJoins: {
|
|
146
|
+
readonly resolved: readonly ResolvedTableJoin[];
|
|
147
|
+
readonly ambiguous: readonly AmbiguousTableJoin[];
|
|
148
|
+
readonly unkeyed: number;
|
|
149
|
+
readonly singletons: number;
|
|
150
|
+
};
|
|
151
|
+
readonly notes: readonly string[];
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Index every repository in `options.repos` into one shared graph store at
|
|
155
|
+
* `options.graphDbPath`, creating it if absent.
|
|
156
|
+
*
|
|
157
|
+
* One repository failing to read — not a git repository, an unreadable
|
|
158
|
+
* config, every adapter refusing it — costs only its own rows; the others
|
|
159
|
+
* are still read, merged and persisted, the same "one adapter's failure
|
|
160
|
+
* costs its own rows and nothing else" posture `analyze.ts` already takes one
|
|
161
|
+
* level down.
|
|
162
|
+
*/
|
|
163
|
+
export declare function indexWorkspace(options: IndexWorkspaceOptions): Promise<IndexWorkspaceResult>;
|
|
164
|
+
//# sourceMappingURL=workspace-index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workspace-index.d.ts","sourceRoot":"","sources":["../src/workspace-index.ts"],"names":[],"mappings":"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"}
|