@descryy/mcp 0.1.2 → 0.3.0
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/bin/descry-mcp.js +30 -2
- package/dist/bin/descry-mcp.js.map +1 -1
- package/dist/browser/driver.d.ts +236 -0
- package/dist/browser/driver.d.ts.map +1 -0
- package/dist/browser/driver.js +70 -0
- package/dist/browser/driver.js.map +1 -0
- package/dist/browser/evidence.d.ts +47 -0
- package/dist/browser/evidence.d.ts.map +1 -0
- package/dist/browser/evidence.js +55 -0
- package/dist/browser/evidence.js.map +1 -0
- package/dist/browser/fake-driver.d.ts +58 -0
- package/dist/browser/fake-driver.d.ts.map +1 -0
- package/dist/browser/fake-driver.js +161 -0
- package/dist/browser/fake-driver.js.map +1 -0
- package/dist/browser/graph-write.d.ts +86 -0
- package/dist/browser/graph-write.d.ts.map +1 -0
- package/dist/browser/graph-write.js +135 -0
- package/dist/browser/graph-write.js.map +1 -0
- package/dist/browser/playwright-driver.d.ts +65 -0
- package/dist/browser/playwright-driver.d.ts.map +1 -0
- package/dist/browser/playwright-driver.js +359 -0
- package/dist/browser/playwright-driver.js.map +1 -0
- package/dist/browser/provider.d.ts +49 -0
- package/dist/browser/provider.d.ts.map +1 -0
- package/dist/browser/provider.js +28 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/registry.d.ts +182 -0
- package/dist/browser/registry.d.ts.map +1 -0
- package/dist/browser/registry.js +215 -0
- package/dist/browser/registry.js.map +1 -0
- package/dist/browser/scenario-resolve.d.ts +62 -0
- package/dist/browser/scenario-resolve.d.ts.map +1 -0
- package/dist/browser/scenario-resolve.js +127 -0
- package/dist/browser/scenario-resolve.js.map +1 -0
- package/dist/browser/scenario-runner.d.ts +113 -0
- package/dist/browser/scenario-runner.d.ts.map +1 -0
- package/dist/browser/scenario-runner.js +315 -0
- package/dist/browser/scenario-runner.js.map +1 -0
- package/dist/browser/stack-parser.d.ts +43 -0
- package/dist/browser/stack-parser.d.ts.map +1 -0
- package/dist/browser/stack-parser.js +112 -0
- package/dist/browser/stack-parser.js.map +1 -0
- package/dist/browser/tool-support.d.ts +113 -0
- package/dist/browser/tool-support.d.ts.map +1 -0
- package/dist/browser/tool-support.js +181 -0
- package/dist/browser/tool-support.js.map +1 -0
- package/dist/disclosure-ledger.d.ts +38 -0
- package/dist/disclosure-ledger.d.ts.map +1 -0
- package/dist/disclosure-ledger.js +40 -0
- package/dist/disclosure-ledger.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +12 -3
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +12 -3
- package/dist/protocol.js.map +1 -1
- package/dist/render.d.ts +121 -10
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +96 -15
- package/dist/render.js.map +1 -1
- package/dist/runtime-registry.d.ts +63 -0
- package/dist/runtime-registry.d.ts.map +1 -0
- package/dist/runtime-registry.js +131 -0
- package/dist/runtime-registry.js.map +1 -0
- package/dist/scenarios/index.d.ts +4 -0
- package/dist/scenarios/index.d.ts.map +1 -0
- package/dist/scenarios/index.js +4 -0
- package/dist/scenarios/index.js.map +1 -0
- package/dist/scenarios/parse.d.ts +32 -0
- package/dist/scenarios/parse.d.ts.map +1 -0
- package/dist/scenarios/parse.js +199 -0
- package/dist/scenarios/parse.js.map +1 -0
- package/dist/scenarios/scenario.d.ts +115 -0
- package/dist/scenarios/scenario.d.ts.map +1 -0
- package/dist/scenarios/scenario.js +41 -0
- package/dist/scenarios/scenario.js.map +1 -0
- package/dist/scenarios/storage.d.ts +51 -0
- package/dist/scenarios/storage.d.ts.map +1 -0
- package/dist/scenarios/storage.js +93 -0
- package/dist/scenarios/storage.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -3
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +142 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +266 -4
- package/dist/session.js.map +1 -1
- package/dist/tools/analyze.d.ts +41 -1
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +111 -9
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/browser-click.d.ts +36 -0
- package/dist/tools/browser-click.d.ts.map +1 -0
- package/dist/tools/browser-click.js +117 -0
- package/dist/tools/browser-click.js.map +1 -0
- package/dist/tools/browser-close-session.d.ts +24 -0
- package/dist/tools/browser-close-session.d.ts.map +1 -0
- package/dist/tools/browser-close-session.js +63 -0
- package/dist/tools/browser-close-session.js.map +1 -0
- package/dist/tools/browser-fill.d.ts +49 -0
- package/dist/tools/browser-fill.d.ts.map +1 -0
- package/dist/tools/browser-fill.js +138 -0
- package/dist/tools/browser-fill.js.map +1 -0
- package/dist/tools/browser-navigate.d.ts +32 -0
- package/dist/tools/browser-navigate.d.ts.map +1 -0
- package/dist/tools/browser-navigate.js +103 -0
- package/dist/tools/browser-navigate.js.map +1 -0
- package/dist/tools/browser-run-scenario.d.ts +54 -0
- package/dist/tools/browser-run-scenario.d.ts.map +1 -0
- package/dist/tools/browser-run-scenario.js +228 -0
- package/dist/tools/browser-run-scenario.js.map +1 -0
- package/dist/tools/browser-save-scenario.d.ts +44 -0
- package/dist/tools/browser-save-scenario.d.ts.map +1 -0
- package/dist/tools/browser-save-scenario.js +298 -0
- package/dist/tools/browser-save-scenario.js.map +1 -0
- package/dist/tools/browser-snapshot.d.ts +60 -0
- package/dist/tools/browser-snapshot.d.ts.map +1 -0
- package/dist/tools/browser-snapshot.js +139 -0
- package/dist/tools/browser-snapshot.js.map +1 -0
- package/dist/tools/browser-start-session.d.ts +43 -0
- package/dist/tools/browser-start-session.d.ts.map +1 -0
- package/dist/tools/browser-start-session.js +272 -0
- package/dist/tools/browser-start-session.js.map +1 -0
- package/dist/tools/browser-type.d.ts +48 -0
- package/dist/tools/browser-type.d.ts.map +1 -0
- package/dist/tools/browser-type.js +136 -0
- package/dist/tools/browser-type.js.map +1 -0
- package/dist/tools/contracts.d.ts +15 -0
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +14 -3
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/cross-pr.d.ts.map +1 -1
- package/dist/tools/cross-pr.js +1 -0
- package/dist/tools/cross-pr.js.map +1 -1
- package/dist/tools/git-diff.d.ts.map +1 -1
- package/dist/tools/git-diff.js +104 -4
- package/dist/tools/git-diff.js.map +1 -1
- package/dist/tools/git-history.d.ts.map +1 -1
- package/dist/tools/git-history.js +1 -0
- package/dist/tools/git-history.js.map +1 -1
- package/dist/tools/history.js +1 -1
- package/dist/tools/history.js.map +1 -1
- package/dist/tools/impact.d.ts +9 -0
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +4 -4
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/index.d.ts +12 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kit.d.ts +11 -1
- package/dist/tools/kit.d.ts.map +1 -1
- package/dist/tools/kit.js +3 -0
- package/dist/tools/kit.js.map +1 -1
- package/dist/tools/link-workspace.d.ts.map +1 -1
- package/dist/tools/link-workspace.js +13 -1
- package/dist/tools/link-workspace.js.map +1 -1
- package/dist/tools/mark-incident.d.ts +69 -0
- package/dist/tools/mark-incident.d.ts.map +1 -0
- package/dist/tools/mark-incident.js +212 -0
- package/dist/tools/mark-incident.js.map +1 -0
- package/dist/tools/observe-runtime.d.ts +292 -0
- package/dist/tools/observe-runtime.d.ts.map +1 -0
- package/dist/tools/observe-runtime.js +1192 -0
- package/dist/tools/observe-runtime.js.map +1 -0
- package/dist/tools/observe-tests.d.ts +125 -0
- package/dist/tools/observe-tests.d.ts.map +1 -0
- package/dist/tools/observe-tests.js +313 -0
- package/dist/tools/observe-tests.js.map +1 -0
- package/dist/tools/pr-analysis.d.ts +71 -13
- package/dist/tools/pr-analysis.d.ts.map +1 -1
- package/dist/tools/pr-analysis.js +55 -12
- package/dist/tools/pr-analysis.js.map +1 -1
- package/dist/tools/pre-push.d.ts +77 -0
- package/dist/tools/pre-push.d.ts.map +1 -0
- package/dist/tools/pre-push.js +250 -0
- package/dist/tools/pre-push.js.map +1 -0
- package/dist/tools/propagation.d.ts.map +1 -1
- package/dist/tools/propagation.js +1 -0
- package/dist/tools/propagation.js.map +1 -1
- package/dist/tools/questions.d.ts.map +1 -1
- package/dist/tools/questions.js +101 -14
- package/dist/tools/questions.js.map +1 -1
- package/dist/tools/refusal-fetch.d.ts.map +1 -1
- package/dist/tools/refusal-fetch.js +1 -0
- package/dist/tools/refusal-fetch.js.map +1 -1
- package/dist/tools/runtime-incident.d.ts +92 -0
- package/dist/tools/runtime-incident.d.ts.map +1 -0
- package/dist/tools/runtime-incident.js +144 -0
- package/dist/tools/runtime-incident.js.map +1 -0
- package/dist/tools/scope.d.ts.map +1 -1
- package/dist/tools/scope.js +1 -0
- package/dist/tools/scope.js.map +1 -1
- package/dist/tools/similar-incidents.d.ts +13 -0
- package/dist/tools/similar-incidents.d.ts.map +1 -1
- package/dist/tools/similar-incidents.js +22 -8
- package/dist/tools/similar-incidents.js.map +1 -1
- package/dist/tools/verification-status.d.ts +22 -0
- package/dist/tools/verification-status.d.ts.map +1 -1
- package/dist/tools/verification-status.js +52 -5
- package/dist/tools/verification-status.js.map +1 -1
- package/dist/tools/verify-claim.d.ts.map +1 -1
- package/dist/tools/verify-claim.js +5 -0
- package/dist/tools/verify-claim.js.map +1 -1
- package/package.json +16 -4
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe-runtime.js","sourceRoot":"","sources":["../../src/tools/observe-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `observe_tests` — run the project's suite and record which tests actually ran.
|
|
3
|
+
*
|
|
4
|
+
* This is the coverage axis, and it is the one runtime signal in this server
|
|
5
|
+
* that needs **no application booted**: a suite runs, and what it exercised
|
|
6
|
+
* becomes a durable fact. `observe_runtime`'s standing complaint from the UAT
|
|
7
|
+
* was that it "assumes local setup is already solved"; this dissolves that for
|
|
8
|
+
* the coverage half rather than documenting around it.
|
|
9
|
+
*
|
|
10
|
+
* ## What it writes, and what it deliberately does not
|
|
11
|
+
*
|
|
12
|
+
* It writes `observed_tests` rows through `applyObservedTests` — the EARNED
|
|
13
|
+
* carrier. It does **not** promote any edge to R4, and the distinction is the
|
|
14
|
+
* whole reason that table exists.
|
|
15
|
+
*
|
|
16
|
+
* An edge needs two endpoints and a witnessed relationship between them. The
|
|
17
|
+
* test-runner collector's evidence carries no stack — every item it emits has
|
|
18
|
+
* `stackTrace: null` — so an observed test names exactly one node, its own
|
|
19
|
+
* `TEST_CASE`. Nothing here witnesses which function that test reached, and
|
|
20
|
+
* pairing the test with a function that merely co-occurred in the same run
|
|
21
|
+
* would mint an edge from temporal coincidence. That is the wrong-direction
|
|
22
|
+
* failure rule 2 exists to prevent, and `observe-runtime.ts`'s own header
|
|
23
|
+
* already refuses it by name for the same reason.
|
|
24
|
+
*
|
|
25
|
+
* So: "this test executed and passed" is a fact about one node, recorded as
|
|
26
|
+
* one. "This test covers that function" remains whatever the static graph
|
|
27
|
+
* already claimed, at whatever resolution it claimed it.
|
|
28
|
+
*
|
|
29
|
+
* ## Why the denominators are reported and not just the successes
|
|
30
|
+
*
|
|
31
|
+
* `TraceCoverage` carries `testsObserved` and `notRun` because the collector
|
|
32
|
+
* learned the hard way that "12 passed" must never silently be "9 passed and 3
|
|
33
|
+
* that never ran". The same discipline applies one layer up: this reply reports
|
|
34
|
+
* how many results the runner produced, how many resolved to a graph node, and
|
|
35
|
+
* how many did not — because `recorded: 3` against a 40-test suite reads as
|
|
36
|
+
* full coverage to anyone who is not shown the denominator.
|
|
37
|
+
*
|
|
38
|
+
* ## Class and tier
|
|
39
|
+
*
|
|
40
|
+
* `action` — it spawns a process that executes the repository's own code, and
|
|
41
|
+
* it writes EARNED rows that a later `verification_status` will read. Gated by
|
|
42
|
+
* the same two-call `confirmToken` handshake `observe_runtime` and `questions`
|
|
43
|
+
* use.
|
|
44
|
+
*
|
|
45
|
+
* `evidence` — it reports what ran. It draws no conclusion about the code and
|
|
46
|
+
* writes no finding or hypothesis.
|
|
47
|
+
*
|
|
48
|
+
* It does carry a `reportCategory`, and it used to read oddly:
|
|
49
|
+
* `deriveEnvelopeCategory` hardcoded `hasRuntimeEvidence: false`, so a reply
|
|
50
|
+
* whose `resolutionFloor` was 4 and whose `reliabilityCap` was A still
|
|
51
|
+
* rendered as `unconfirmed` — the envelope contradicting itself. The flag is
|
|
52
|
+
* now *declared* rather than inferred: this tool runs the repository's own
|
|
53
|
+
* test suite, so it hands the render layer a {@link WitnessedEvidence} count
|
|
54
|
+
* of the channels its run actually saw, and an answer resting on edges it
|
|
55
|
+
* witnessed renders `strongly supported`. Declaring it is what makes the
|
|
56
|
+
* promotion true rather than assumed — a resolution floor of 4 can be reached
|
|
57
|
+
* without anything having been watched, which is why the floor is no longer
|
|
58
|
+
* what the category reads.
|
|
59
|
+
*
|
|
60
|
+
* The count comes from `observe_runtime`'s `witnessedSignalTypes`, not from a
|
|
61
|
+
* tally here. The clamp to the six declared channels and the drop of signals
|
|
62
|
+
* Descry does not count are that function's rules, and a second
|
|
63
|
+
* implementation of them is a second place for the vocabulary to drift.
|
|
64
|
+
*
|
|
65
|
+
* `confirmed` is still unreachable from this surface, and deliberately: it
|
|
66
|
+
* needs direct mechanism evidence, which no graph query produces. Shared
|
|
67
|
+
* render-layer behaviour, identical for `observe_runtime`, and still not this
|
|
68
|
+
* tool's to override.
|
|
69
|
+
*/
|
|
70
|
+
import { type ObservedTestObservation, type ObservedTestOutcome, type SqlDriver } from "@descryy/core";
|
|
71
|
+
import type { Evidence } from "@descryy/runtime-contracts";
|
|
72
|
+
import { type ToolDefinition } from "./kit.ts";
|
|
73
|
+
/**
|
|
74
|
+
* What a collector hands to `emit`: an evidence item before the store has
|
|
75
|
+
* assigned it an id or tied it to an execution. Those two fields exist only
|
|
76
|
+
* after `EvidenceStore.write()` returns, and nothing here needs them — the
|
|
77
|
+
* resolver reads `eventType`, `payload` and `sourceLocation` and nothing else.
|
|
78
|
+
*/
|
|
79
|
+
type EmittedEvidence = Omit<Evidence, "evidenceId" | "executionId">;
|
|
80
|
+
/** One test the runner reported that could not be tied to a node in this graph. */
|
|
81
|
+
export interface UnresolvedObservedTest {
|
|
82
|
+
readonly qualifiedName: string;
|
|
83
|
+
readonly outcome: ObservedTestOutcome;
|
|
84
|
+
/** The resolver's own words — never summarised into "not found". */
|
|
85
|
+
readonly reason: string;
|
|
86
|
+
}
|
|
87
|
+
export interface ObserveTestsData {
|
|
88
|
+
readonly runId: string | null;
|
|
89
|
+
/** How many results the runner actually produced. The denominator — read every other count against this. */
|
|
90
|
+
readonly testsReported: number;
|
|
91
|
+
/** Tests the runner said did not run (`.skip`/`.todo`). Reported separately so a pass count is never inflated by them. */
|
|
92
|
+
readonly notRun: number;
|
|
93
|
+
/** Node ids written to the EARNED ledger. */
|
|
94
|
+
readonly recorded: readonly string[];
|
|
95
|
+
/** Results that reached no node in this graph, with the resolver's reason for each. */
|
|
96
|
+
readonly unresolved: readonly UnresolvedObservedTest[];
|
|
97
|
+
/** Observations the write path itself declined, with its reason. Distinct from `unresolved`: these named a node. */
|
|
98
|
+
readonly refused: readonly {
|
|
99
|
+
readonly nodeId: string;
|
|
100
|
+
readonly reason: string;
|
|
101
|
+
}[];
|
|
102
|
+
readonly outcomes: Readonly<Record<string, number>>;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Turn a run's evidence into observations this graph can hold.
|
|
106
|
+
*
|
|
107
|
+
* Separated from {@link run} because it is the part with a decision in it, and
|
|
108
|
+
* a decision that is only reachable by spawning a real test runner is a
|
|
109
|
+
* decision that does not get tested. Every result lands in `observations` or
|
|
110
|
+
* `unresolved`, so the caller can report a denominator rather than a success
|
|
111
|
+
* count on its own.
|
|
112
|
+
*
|
|
113
|
+
* `TEST_STARTED` is deliberately ignored: it is announced before the runner
|
|
114
|
+
* knows the outcome, so counting it would double every test and count a
|
|
115
|
+
* skipped one as having run.
|
|
116
|
+
*/
|
|
117
|
+
export declare function observationsFromEvidence(driver: SqlDriver, evidence: readonly EmittedEvidence[], repo: string, options?: {
|
|
118
|
+
readonly repoRoot?: string;
|
|
119
|
+
}): {
|
|
120
|
+
readonly observations: readonly ObservedTestObservation[];
|
|
121
|
+
readonly unresolved: readonly UnresolvedObservedTest[];
|
|
122
|
+
};
|
|
123
|
+
export declare const observeTestsTool: ToolDefinition;
|
|
124
|
+
export {};
|
|
125
|
+
//# sourceMappingURL=observe-tests.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe-tests.d.ts","sourceRoot":"","sources":["../../src/tools/observe-tests.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoEG;AAKH,OAAO,EAA8B,KAAK,uBAAuB,EAAE,KAAK,mBAAmB,EAAE,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AACnI,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAM3D,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAKlB;;;;;GAKG;AACH,KAAK,eAAe,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;AAmCpE,mFAAmF;AACnF,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,mBAAmB,CAAC;IACtC,oEAAoE;IACpE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,4GAA4G;IAC5G,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,0HAA0H;IAC1H,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,6CAA6C;IAC7C,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,uFAAuF;IACvF,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACvD,oHAAoH;IACpH,QAAQ,CAAC,OAAO,EAAE,SAAS;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAClF,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACrD;AAiBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,SAAS,eAAe,EAAE,EACpC,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC3C;IAAE,QAAQ,CAAC,YAAY,EAAE,SAAS,uBAAuB,EAAE,CAAC;IAAC,QAAQ,CAAC,UAAU,EAAE,SAAS,sBAAsB,EAAE,CAAA;CAAE,CA0BvH;AAqKD,eAAO,MAAM,gBAAgB,EAAE,cAgB9B,CAAC"}
|
|
@@ -0,0 +1,313 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `observe_tests` — run the project's suite and record which tests actually ran.
|
|
3
|
+
*
|
|
4
|
+
* This is the coverage axis, and it is the one runtime signal in this server
|
|
5
|
+
* that needs **no application booted**: a suite runs, and what it exercised
|
|
6
|
+
* becomes a durable fact. `observe_runtime`'s standing complaint from the UAT
|
|
7
|
+
* was that it "assumes local setup is already solved"; this dissolves that for
|
|
8
|
+
* the coverage half rather than documenting around it.
|
|
9
|
+
*
|
|
10
|
+
* ## What it writes, and what it deliberately does not
|
|
11
|
+
*
|
|
12
|
+
* It writes `observed_tests` rows through `applyObservedTests` — the EARNED
|
|
13
|
+
* carrier. It does **not** promote any edge to R4, and the distinction is the
|
|
14
|
+
* whole reason that table exists.
|
|
15
|
+
*
|
|
16
|
+
* An edge needs two endpoints and a witnessed relationship between them. The
|
|
17
|
+
* test-runner collector's evidence carries no stack — every item it emits has
|
|
18
|
+
* `stackTrace: null` — so an observed test names exactly one node, its own
|
|
19
|
+
* `TEST_CASE`. Nothing here witnesses which function that test reached, and
|
|
20
|
+
* pairing the test with a function that merely co-occurred in the same run
|
|
21
|
+
* would mint an edge from temporal coincidence. That is the wrong-direction
|
|
22
|
+
* failure rule 2 exists to prevent, and `observe-runtime.ts`'s own header
|
|
23
|
+
* already refuses it by name for the same reason.
|
|
24
|
+
*
|
|
25
|
+
* So: "this test executed and passed" is a fact about one node, recorded as
|
|
26
|
+
* one. "This test covers that function" remains whatever the static graph
|
|
27
|
+
* already claimed, at whatever resolution it claimed it.
|
|
28
|
+
*
|
|
29
|
+
* ## Why the denominators are reported and not just the successes
|
|
30
|
+
*
|
|
31
|
+
* `TraceCoverage` carries `testsObserved` and `notRun` because the collector
|
|
32
|
+
* learned the hard way that "12 passed" must never silently be "9 passed and 3
|
|
33
|
+
* that never ran". The same discipline applies one layer up: this reply reports
|
|
34
|
+
* how many results the runner produced, how many resolved to a graph node, and
|
|
35
|
+
* how many did not — because `recorded: 3` against a 40-test suite reads as
|
|
36
|
+
* full coverage to anyone who is not shown the denominator.
|
|
37
|
+
*
|
|
38
|
+
* ## Class and tier
|
|
39
|
+
*
|
|
40
|
+
* `action` — it spawns a process that executes the repository's own code, and
|
|
41
|
+
* it writes EARNED rows that a later `verification_status` will read. Gated by
|
|
42
|
+
* the same two-call `confirmToken` handshake `observe_runtime` and `questions`
|
|
43
|
+
* use.
|
|
44
|
+
*
|
|
45
|
+
* `evidence` — it reports what ran. It draws no conclusion about the code and
|
|
46
|
+
* writes no finding or hypothesis.
|
|
47
|
+
*
|
|
48
|
+
* It does carry a `reportCategory`, and it used to read oddly:
|
|
49
|
+
* `deriveEnvelopeCategory` hardcoded `hasRuntimeEvidence: false`, so a reply
|
|
50
|
+
* whose `resolutionFloor` was 4 and whose `reliabilityCap` was A still
|
|
51
|
+
* rendered as `unconfirmed` — the envelope contradicting itself. The flag is
|
|
52
|
+
* now *declared* rather than inferred: this tool runs the repository's own
|
|
53
|
+
* test suite, so it hands the render layer a {@link WitnessedEvidence} count
|
|
54
|
+
* of the channels its run actually saw, and an answer resting on edges it
|
|
55
|
+
* witnessed renders `strongly supported`. Declaring it is what makes the
|
|
56
|
+
* promotion true rather than assumed — a resolution floor of 4 can be reached
|
|
57
|
+
* without anything having been watched, which is why the floor is no longer
|
|
58
|
+
* what the category reads.
|
|
59
|
+
*
|
|
60
|
+
* The count comes from `observe_runtime`'s `witnessedSignalTypes`, not from a
|
|
61
|
+
* tally here. The clamp to the six declared channels and the drop of signals
|
|
62
|
+
* Descry does not count are that function's rules, and a second
|
|
63
|
+
* implementation of them is a second place for the vocabulary to drift.
|
|
64
|
+
*
|
|
65
|
+
* `confirmed` is still unreachable from this surface, and deliberately: it
|
|
66
|
+
* needs direct mechanism evidence, which no graph query produces. Shared
|
|
67
|
+
* render-layer behaviour, identical for `observe_runtime`, and still not this
|
|
68
|
+
* tool's to override.
|
|
69
|
+
*/
|
|
70
|
+
import { isAbsolute, join } from "node:path";
|
|
71
|
+
import { randomBytes } from "node:crypto";
|
|
72
|
+
import { applyObservedTests, counts } from "@descryy/core";
|
|
73
|
+
import { witnessedSignalTypes } from "./observe-runtime.js";
|
|
74
|
+
import { createTestRunnerCollector } from "@descryy/runtime-test-runner";
|
|
75
|
+
import { resolveObservedTestCase } from "@descryy/runtime-test-runner";
|
|
76
|
+
import { answer, optionalInteger, optionalString, requiredString, ToolInputError, } from "./kit.js";
|
|
77
|
+
const DEFAULT_TIMEOUT_MS = 600_000;
|
|
78
|
+
const SCHEMA = {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: {
|
|
81
|
+
command: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "The command that runs this project's test suite, exactly as you would type it in a terminal, " +
|
|
84
|
+
"whatever this project's runner happens to be. It is run in the repository and it executes your " +
|
|
85
|
+
"code, which is why the call takes a two-step confirmation. The runner is identified from the " +
|
|
86
|
+
"command itself; a runner Descry has no reporter for is refused by name rather than run blind.",
|
|
87
|
+
},
|
|
88
|
+
cwd: {
|
|
89
|
+
type: "string",
|
|
90
|
+
description: "Where to run it. Relative paths resolve against the repository root; absent means the " +
|
|
91
|
+
"repository root itself.",
|
|
92
|
+
},
|
|
93
|
+
timeoutMs: {
|
|
94
|
+
type: "integer",
|
|
95
|
+
minimum: 1,
|
|
96
|
+
description: "How long to let the suite run before giving up on it. Default 600000 (10 minutes).",
|
|
97
|
+
},
|
|
98
|
+
confirmToken: {
|
|
99
|
+
type: "string",
|
|
100
|
+
description: "The token returned by an unconfirmed call. This tool runs nothing without it: the first " +
|
|
101
|
+
"call describes what it would do and mints a token, the second performs it.",
|
|
102
|
+
},
|
|
103
|
+
},
|
|
104
|
+
required: ["command"],
|
|
105
|
+
additionalProperties: false,
|
|
106
|
+
};
|
|
107
|
+
const TEST_RESULT_EVENT_TYPES = new Set(["TEST_PASSED", "TEST_FAILED", "TEST_SKIPPED"]);
|
|
108
|
+
function outcomeOf(eventType) {
|
|
109
|
+
if (eventType === "TEST_PASSED")
|
|
110
|
+
return "passed";
|
|
111
|
+
if (eventType === "TEST_FAILED")
|
|
112
|
+
return "failed";
|
|
113
|
+
return "skipped";
|
|
114
|
+
}
|
|
115
|
+
function nameOf(evidence) {
|
|
116
|
+
const payload = evidence.payload;
|
|
117
|
+
if (typeof payload.qualifiedName === "string")
|
|
118
|
+
return payload.qualifiedName;
|
|
119
|
+
if (typeof payload.name === "string")
|
|
120
|
+
return payload.name;
|
|
121
|
+
return "(unnamed test)";
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Turn a run's evidence into observations this graph can hold.
|
|
125
|
+
*
|
|
126
|
+
* Separated from {@link run} because it is the part with a decision in it, and
|
|
127
|
+
* a decision that is only reachable by spawning a real test runner is a
|
|
128
|
+
* decision that does not get tested. Every result lands in `observations` or
|
|
129
|
+
* `unresolved`, so the caller can report a denominator rather than a success
|
|
130
|
+
* count on its own.
|
|
131
|
+
*
|
|
132
|
+
* `TEST_STARTED` is deliberately ignored: it is announced before the runner
|
|
133
|
+
* knows the outcome, so counting it would double every test and count a
|
|
134
|
+
* skipped one as having run.
|
|
135
|
+
*/
|
|
136
|
+
export function observationsFromEvidence(driver, evidence, repo, options = {}) {
|
|
137
|
+
const observations = [];
|
|
138
|
+
const unresolved = [];
|
|
139
|
+
for (const item of evidence) {
|
|
140
|
+
if (!TEST_RESULT_EVENT_TYPES.has(item.eventType))
|
|
141
|
+
continue;
|
|
142
|
+
const outcome = outcomeOf(item.eventType);
|
|
143
|
+
const qualifiedName = nameOf(item);
|
|
144
|
+
const resolution = resolveObservedTestCase(driver, item, repo, options);
|
|
145
|
+
if (resolution.outcome !== "resolved") {
|
|
146
|
+
unresolved.push({ qualifiedName, outcome, reason: resolution.reason });
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
const payload = item.payload;
|
|
150
|
+
observations.push({
|
|
151
|
+
nodeId: resolution.node.id,
|
|
152
|
+
qualifiedName,
|
|
153
|
+
outcome,
|
|
154
|
+
durationMs: typeof payload.durationMs === "number" ? payload.durationMs : null,
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
return { observations, unresolved };
|
|
158
|
+
}
|
|
159
|
+
async function run(args, ctx) {
|
|
160
|
+
const session = ctx.session;
|
|
161
|
+
const command = requiredString(args, "command");
|
|
162
|
+
const cwdArg = optionalString(args, "cwd");
|
|
163
|
+
const timeoutMs = optionalInteger(args, "timeoutMs", 1) ?? DEFAULT_TIMEOUT_MS;
|
|
164
|
+
const base = session.provider().baseStamp();
|
|
165
|
+
const notes = [
|
|
166
|
+
"This records which tests ran, not what they covered. A test that executed is a fact about one " +
|
|
167
|
+
"node — its own TEST_CASE. Nothing here witnesses which functions a test reached, so no edge is " +
|
|
168
|
+
"promoted and any TESTS edge keeps whatever resolution the static graph gave it.",
|
|
169
|
+
"Read every count against testsReported. A recorded count on its own cannot distinguish a fully " +
|
|
170
|
+
"mapped suite from a mostly unmapped one.",
|
|
171
|
+
];
|
|
172
|
+
const refuse = (headline, data = {}) => answer({
|
|
173
|
+
headline,
|
|
174
|
+
state: "refused",
|
|
175
|
+
nameLevel: true,
|
|
176
|
+
// Nothing ran, so nothing was observed. A refusal reporting the tier its
|
|
177
|
+
// successful path would have reached is indistinguishable from a real
|
|
178
|
+
// answer, which is the failure this repository's own UAT already caught.
|
|
179
|
+
resolutionFloor: 0,
|
|
180
|
+
commitSha: base.commitSha,
|
|
181
|
+
graphBuiltAt: base.graphBuiltAt,
|
|
182
|
+
irSchemaVersion: base.irSchemaVersion,
|
|
183
|
+
commitSpread: base.commitSpread,
|
|
184
|
+
notes,
|
|
185
|
+
data: {
|
|
186
|
+
runId: null,
|
|
187
|
+
testsReported: 0,
|
|
188
|
+
notRun: 0,
|
|
189
|
+
recorded: [],
|
|
190
|
+
unresolved: [],
|
|
191
|
+
refused: [],
|
|
192
|
+
outcomes: {},
|
|
193
|
+
...data,
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
// Correlation resolves each result against this graph. Against an empty one
|
|
197
|
+
// it resolves nothing, and reporting that as a clean run would be the exact
|
|
198
|
+
// "empty means broken" collapse the five states exist to stop.
|
|
199
|
+
const driver = session.store().driver;
|
|
200
|
+
if (counts(driver).nodes === 0) {
|
|
201
|
+
return refuse("This repository has no graph yet, so a test result has nothing to be resolved against. Run " +
|
|
202
|
+
"analyze first — an observation that cannot name a node cannot become a fact.");
|
|
203
|
+
}
|
|
204
|
+
const root = await session.root();
|
|
205
|
+
const cwd = cwdArg === undefined ? session.repoPath : isAbsolute(cwdArg) ? cwdArg : join(session.repoPath, cwdArg);
|
|
206
|
+
const collected = [];
|
|
207
|
+
const collector = createTestRunnerCollector({
|
|
208
|
+
configuration: { command, cwd },
|
|
209
|
+
});
|
|
210
|
+
ctx.progress(`Running ${command}`);
|
|
211
|
+
const started = await collector.start({
|
|
212
|
+
executionId: `observe-tests-${Date.now()}`,
|
|
213
|
+
configuration: {
|
|
214
|
+
environmentTier: "tier-0-ci-attached",
|
|
215
|
+
fidelityLevel: 1,
|
|
216
|
+
timeoutMs,
|
|
217
|
+
services: {},
|
|
218
|
+
testRunner: { command, cwd },
|
|
219
|
+
},
|
|
220
|
+
emit: (item) => {
|
|
221
|
+
collected.push(item);
|
|
222
|
+
},
|
|
223
|
+
});
|
|
224
|
+
if (!started.available) {
|
|
225
|
+
return refuse(`The test command could not be run: ${started.reason} Nothing was started and nothing was written.`);
|
|
226
|
+
}
|
|
227
|
+
await collector.waitForCompletion();
|
|
228
|
+
await collector.stop();
|
|
229
|
+
const coverage = collector.traceCoverage();
|
|
230
|
+
const { observations, unresolved } = observationsFromEvidence(driver, collected, root.repo, {
|
|
231
|
+
repoRoot: root.absolutePath,
|
|
232
|
+
});
|
|
233
|
+
const runId = `tests-${randomBytes(6).toString("hex")}`;
|
|
234
|
+
const written = applyObservedTests(driver, {
|
|
235
|
+
runId,
|
|
236
|
+
commitSha: root.commitSha,
|
|
237
|
+
observations,
|
|
238
|
+
});
|
|
239
|
+
const outcomes = {};
|
|
240
|
+
for (const observation of observations) {
|
|
241
|
+
outcomes[observation.outcome] = (outcomes[observation.outcome] ?? 0) + 1;
|
|
242
|
+
}
|
|
243
|
+
if (unresolved.length > 0) {
|
|
244
|
+
notes.push(`${unresolved.length} of ${coverage.testsObserved} results reached no node in this graph and were ` +
|
|
245
|
+
"not recorded. Each carries the resolver's own reason — a test file the graph never indexed and " +
|
|
246
|
+
"a name the graph spells differently are different problems.");
|
|
247
|
+
}
|
|
248
|
+
return answer({
|
|
249
|
+
headline: `${command} produced ${coverage.testsObserved} result${coverage.testsObserved === 1 ? "" : "s"}; ` +
|
|
250
|
+
`${written.recorded.length} recorded against graph nodes` +
|
|
251
|
+
(coverage.notRun > 0 ? `, ${coverage.notRun} did not run` : "") +
|
|
252
|
+
".",
|
|
253
|
+
state: written.recorded.length > 0 ? "ok" : "empty",
|
|
254
|
+
data: {
|
|
255
|
+
runId,
|
|
256
|
+
testsReported: coverage.testsObserved,
|
|
257
|
+
notRun: coverage.notRun,
|
|
258
|
+
recorded: written.recorded,
|
|
259
|
+
unresolved,
|
|
260
|
+
refused: written.refused.map((r) => ({ nodeId: r.nodeId, reason: r.reason })),
|
|
261
|
+
outcomes,
|
|
262
|
+
},
|
|
263
|
+
// G3's precondition, declared rather than inferred, on the same guard
|
|
264
|
+
// `observe_runtime` uses: a completed run that collected nothing witnessed
|
|
265
|
+
// nothing, and claiming otherwise would assert a precondition on an empty
|
|
266
|
+
// array.
|
|
267
|
+
//
|
|
268
|
+
// Gated on evidence, not on `written.recorded.length`. Whether a result
|
|
269
|
+
// could be recorded against a graph node is a fact about the graph, and
|
|
270
|
+
// `resolutionFloor` below already caps the category for a run that
|
|
271
|
+
// recorded none — a suite that ran and resolved to nothing reports
|
|
272
|
+
// `unconfirmed` through the cap, not by pretending it watched nothing.
|
|
273
|
+
...(collected.length === 0
|
|
274
|
+
? {}
|
|
275
|
+
: { runtimeEvidence: { independentSignalTypes: witnessedSignalTypes(collected) } }),
|
|
276
|
+
// Witnessed by running it. R4 is what "observed at runtime" means, and that
|
|
277
|
+
// is exactly what happened to every recorded row — regardless of the
|
|
278
|
+
// resolution the static graph holds for the same node.
|
|
279
|
+
resolutionFloor: written.recorded.length > 0 ? 4 : 0,
|
|
280
|
+
nameLevel: true,
|
|
281
|
+
commitSha: base.commitSha,
|
|
282
|
+
graphBuiltAt: base.graphBuiltAt,
|
|
283
|
+
irSchemaVersion: base.irSchemaVersion,
|
|
284
|
+
commitSpread: base.commitSpread,
|
|
285
|
+
notes,
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
function describeAction(args) {
|
|
289
|
+
const command = args["command"];
|
|
290
|
+
if (typeof command !== "string")
|
|
291
|
+
throw new ToolInputError('"command" must be a string');
|
|
292
|
+
const cwd = args["cwd"];
|
|
293
|
+
return (`Run "${command}"${typeof cwd === "string" ? ` in ${cwd}` : ""} and record which tests executed. ` +
|
|
294
|
+
"This executes your repository's own code. It writes to the graph's earned ledger; it changes no " +
|
|
295
|
+
"source file and promotes no edge.");
|
|
296
|
+
}
|
|
297
|
+
export const observeTestsTool = {
|
|
298
|
+
name: "observe_tests",
|
|
299
|
+
class: "action",
|
|
300
|
+
tier: "evidence",
|
|
301
|
+
version: "1.0.0",
|
|
302
|
+
title: "Run the test suite and record what actually executed",
|
|
303
|
+
description: "Runs this project's test suite and records which test cases actually ran, and how they finished, " +
|
|
304
|
+
"against the graph's own TEST_CASE nodes. This is the coverage axis — what was actually verified — " +
|
|
305
|
+
"which is a separate question from any finding's confidence, and it is the one runtime signal that " +
|
|
306
|
+
"needs no application booted. It records that a test executed; it does not witness which functions " +
|
|
307
|
+
"the test reached, so it promotes no edge. Running takes a two-call confirmation: the first call " +
|
|
308
|
+
"describes what it would run and returns a token, the second sends \"confirmToken\" to actually run it.",
|
|
309
|
+
inputSchema: SCHEMA,
|
|
310
|
+
describeAction,
|
|
311
|
+
run,
|
|
312
|
+
};
|
|
313
|
+
//# sourceMappingURL=observe-tests.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"observe-tests.js","sourceRoot":"","sources":["../../src/tools/observe-tests.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,13 +21,79 @@
|
|
|
21
21
|
* test" means "no test that this graph can link", and the difference is
|
|
22
22
|
* disclosed. Reporting the untested list without it would turn a measured recall
|
|
23
23
|
* gap into a confident accusation.
|
|
24
|
+
*
|
|
25
|
+
* ## One node map, three id lists
|
|
26
|
+
*
|
|
27
|
+
* `affected`, `untested` and `tests` overlap heavily by construction — an
|
|
28
|
+
* affected node with no covering test is in two of them — and each used to
|
|
29
|
+
* carry the whole node inline, so the same fields were serialized up to three
|
|
30
|
+
* times in one reply. `indexPrAnalysisNodes` collapses that: the lists name
|
|
31
|
+
* ids, `nodes` holds each node once. Tool version 2.0.0 for it.
|
|
24
32
|
*/
|
|
25
33
|
import { type BriefNode, type ToolDefinition } from "./kit.ts";
|
|
26
|
-
/**
|
|
27
|
-
|
|
34
|
+
/**
|
|
35
|
+
* A node in the change's blast radius, named by id into `nodes`.
|
|
36
|
+
*
|
|
37
|
+
* It used to carry the whole node inline, and so did `untested` and `tests` —
|
|
38
|
+
* three lists over one heavily-overlapping population, every member
|
|
39
|
+
* serialized up to three times. An affected node with no covering test is in
|
|
40
|
+
* two of them by construction, which is the normal case rather than the
|
|
41
|
+
* unusual one, so the duplication scaled with exactly the answer a caller
|
|
42
|
+
* most wants. One map, three id lists.
|
|
43
|
+
*/
|
|
44
|
+
export interface AffectedRef {
|
|
45
|
+
readonly id: string;
|
|
28
46
|
readonly score: number;
|
|
29
47
|
readonly depth: number;
|
|
48
|
+
/** 1-based position in this answer, highest score first. */
|
|
49
|
+
readonly rank: number;
|
|
50
|
+
/**
|
|
51
|
+
* `top` / `notable` / `rest` by rank, never by an absolute score threshold.
|
|
52
|
+
* This score is `weightedBfs`'s confidence decay — `changeRisk` passes only a
|
|
53
|
+
* budget, so it takes the default `weightFor` — and §12.7's tiers were
|
|
54
|
+
* calibrated against `scoping/`'s designed weights instead. See
|
|
55
|
+
* `prominence.ts`'s header for why reusing them here would be a calibrated
|
|
56
|
+
* label on an uncalibrated number.
|
|
57
|
+
*/
|
|
58
|
+
readonly prominence: "top" | "notable" | "rest";
|
|
30
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The three lists and the one node map they name into.
|
|
62
|
+
*
|
|
63
|
+
* `nodes` holds each node once, whichever lists mention it. A caller reads a
|
|
64
|
+
* list, then looks each id up — never the reverse, and never by scanning.
|
|
65
|
+
*/
|
|
66
|
+
export interface PrAnalysisLists {
|
|
67
|
+
readonly nodes: Readonly<Record<string, BriefNode>>;
|
|
68
|
+
readonly affected: readonly AffectedRef[];
|
|
69
|
+
readonly untested: readonly string[];
|
|
70
|
+
readonly tests: readonly string[];
|
|
71
|
+
}
|
|
72
|
+
/** What `briefNode` accepts — the graph-node shape these three lists arrive as. */
|
|
73
|
+
interface IndexableNode {
|
|
74
|
+
readonly id: string;
|
|
75
|
+
readonly type: string;
|
|
76
|
+
readonly name: string;
|
|
77
|
+
readonly file: string | null;
|
|
78
|
+
readonly range: {
|
|
79
|
+
readonly startLine: number;
|
|
80
|
+
readonly endLine: number;
|
|
81
|
+
} | null;
|
|
82
|
+
readonly language: string | null;
|
|
83
|
+
readonly resolution: number;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Collapse three overlapping node lists into one map plus three id lists.
|
|
87
|
+
*
|
|
88
|
+
* Order within each list is preserved exactly — it is the ranking the query
|
|
89
|
+
* layer produced, and re-sorting it here would silently change which nodes a
|
|
90
|
+
* caller's own `limit` keeps.
|
|
91
|
+
*/
|
|
92
|
+
export declare function indexPrAnalysisNodes(affected: readonly {
|
|
93
|
+
readonly node: IndexableNode;
|
|
94
|
+
readonly score: number;
|
|
95
|
+
readonly depth: number;
|
|
96
|
+
}[], untested: readonly IndexableNode[], tests: readonly IndexableNode[]): PrAnalysisLists;
|
|
31
97
|
/** Shared by every branch: what was diffed, and what came out of git. */
|
|
32
98
|
export interface PrAnalysisRange {
|
|
33
99
|
readonly base: string;
|
|
@@ -48,10 +114,7 @@ export type PrAnalysisGitFailure = PrAnalysisRange;
|
|
|
48
114
|
* The three lists are present and empty on purpose — the absence here **is**
|
|
49
115
|
* a fact about the change. No `missing`, because there was nothing to resolve.
|
|
50
116
|
*/
|
|
51
|
-
export interface PrAnalysisEmptyDiff extends PrAnalysisRange {
|
|
52
|
-
readonly affected: readonly AffectedNode[];
|
|
53
|
-
readonly untested: readonly BriefNode[];
|
|
54
|
-
readonly tests: readonly BriefNode[];
|
|
117
|
+
export interface PrAnalysisEmptyDiff extends PrAnalysisRange, PrAnalysisLists {
|
|
55
118
|
}
|
|
56
119
|
/**
|
|
57
120
|
* The diff resolved to no graph node at all, so no blast radius was computed.
|
|
@@ -71,19 +134,14 @@ export interface PrAnalysisUnresolved extends PrAnalysisEmptyDiff {
|
|
|
71
134
|
* so a genuinely covered symbol can appear here. A gap to check, never a
|
|
72
135
|
* proven hole. Narrow on `"changedSymbols" in data`.
|
|
73
136
|
*/
|
|
74
|
-
export interface PrAnalysisReport extends PrAnalysisRange {
|
|
137
|
+
export interface PrAnalysisReport extends PrAnalysisRange, PrAnalysisLists {
|
|
75
138
|
readonly missing: readonly string[];
|
|
76
139
|
readonly changedSymbols: number;
|
|
77
140
|
readonly affectedTotal: number;
|
|
78
|
-
/** Capped by `limit`. */
|
|
79
|
-
readonly affected: readonly AffectedNode[];
|
|
80
141
|
readonly untestedTotal: number;
|
|
81
|
-
/** Capped by `limit`. */
|
|
82
|
-
readonly untested: readonly BriefNode[];
|
|
83
|
-
/** Capped by `limit`. */
|
|
84
|
-
readonly tests: readonly BriefNode[];
|
|
85
142
|
readonly testsTotal: number;
|
|
86
143
|
}
|
|
87
144
|
export type PrAnalysisData = PrAnalysisGitFailure | PrAnalysisEmptyDiff | PrAnalysisUnresolved | PrAnalysisReport;
|
|
88
145
|
export declare const prAnalysisTool: ToolDefinition;
|
|
146
|
+
export {};
|
|
89
147
|
//# sourceMappingURL=pr-analysis.d.ts.map
|