@descryy/mcp 0.5.0 → 0.7.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/action-handshake.d.ts +8 -75
- package/dist/action-handshake.d.ts.map +1 -1
- package/dist/action-handshake.js +9 -79
- package/dist/action-handshake.js.map +1 -1
- package/dist/bin/descry-mcp.d.ts +4 -15
- package/dist/bin/descry-mcp.d.ts.map +1 -1
- package/dist/bin/descry-mcp.js +12 -42
- package/dist/bin/descry-mcp.js.map +1 -1
- package/dist/browser/driver.d.ts +62 -178
- package/dist/browser/driver.d.ts.map +1 -1
- package/dist/browser/driver.js +14 -46
- package/dist/browser/driver.js.map +1 -1
- package/dist/browser/evidence.d.ts +11 -35
- package/dist/browser/evidence.d.ts.map +1 -1
- package/dist/browser/evidence.js +25 -51
- package/dist/browser/evidence.js.map +1 -1
- package/dist/browser/fake-driver.d.ts +12 -16
- package/dist/browser/fake-driver.d.ts.map +1 -1
- package/dist/browser/fake-driver.js +24 -17
- package/dist/browser/fake-driver.js.map +1 -1
- package/dist/browser/graph-write.d.ts +4 -45
- package/dist/browser/graph-write.d.ts.map +1 -1
- package/dist/browser/graph-write.js +8 -53
- package/dist/browser/graph-write.js.map +1 -1
- package/dist/browser/playwright-driver.d.ts +17 -67
- package/dist/browser/playwright-driver.d.ts.map +1 -1
- package/dist/browser/playwright-driver.js +169 -166
- package/dist/browser/playwright-driver.js.map +1 -1
- package/dist/browser/provider.d.ts +5 -34
- package/dist/browser/provider.d.ts.map +1 -1
- package/dist/browser/provider.js +4 -24
- package/dist/browser/provider.js.map +1 -1
- package/dist/browser/registry.d.ts +26 -106
- package/dist/browser/registry.d.ts.map +1 -1
- package/dist/browser/registry.js +20 -77
- package/dist/browser/registry.js.map +1 -1
- package/dist/browser/scenario-resolve.d.ts +10 -44
- package/dist/browser/scenario-resolve.d.ts.map +1 -1
- package/dist/browser/scenario-resolve.js +10 -41
- package/dist/browser/scenario-resolve.js.map +1 -1
- package/dist/browser/scenario-runner.d.ts +12 -70
- package/dist/browser/scenario-runner.d.ts.map +1 -1
- package/dist/browser/scenario-runner.js +33 -91
- package/dist/browser/scenario-runner.js.map +1 -1
- package/dist/browser/stack-parser.d.ts +4 -28
- package/dist/browser/stack-parser.d.ts.map +1 -1
- package/dist/browser/stack-parser.js +12 -39
- package/dist/browser/stack-parser.js.map +1 -1
- package/dist/browser/tool-support.d.ts +20 -67
- package/dist/browser/tool-support.d.ts.map +1 -1
- package/dist/browser/tool-support.js +22 -66
- package/dist/browser/tool-support.js.map +1 -1
- 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/cancellation.d.ts +11 -46
- package/dist/cancellation.d.ts.map +1 -1
- package/dist/cancellation.js +11 -46
- package/dist/cancellation.js.map +1 -1
- package/dist/capped.d.ts +17 -0
- package/dist/capped.d.ts.map +1 -0
- package/dist/capped.js +15 -0
- package/dist/capped.js.map +1 -0
- package/dist/disclosure-ledger.d.ts +6 -30
- package/dist/disclosure-ledger.d.ts.map +1 -1
- package/dist/disclosure-ledger.js +4 -26
- package/dist/disclosure-ledger.js.map +1 -1
- package/dist/index.d.ts +10 -26
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -17
- package/dist/index.js.map +1 -1
- package/dist/module-trust.d.ts +24 -0
- package/dist/module-trust.d.ts.map +1 -0
- package/dist/module-trust.js +60 -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/protocol.d.ts +10 -53
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +14 -60
- package/dist/protocol.js.map +1 -1
- package/dist/registry.d.ts +10 -58
- package/dist/registry.d.ts.map +1 -1
- package/dist/registry.js +38 -90
- package/dist/registry.js.map +1 -1
- package/dist/render.d.ts +79 -11
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +126 -14
- package/dist/render.js.map +1 -1
- package/dist/runtime-registry.d.ts +8 -49
- package/dist/runtime-registry.d.ts.map +1 -1
- package/dist/runtime-registry.js +72 -63
- package/dist/runtime-registry.js.map +1 -1
- package/dist/scenarios/index.d.ts +1 -1
- package/dist/scenarios/index.d.ts.map +1 -1
- package/dist/scenarios/index.js +1 -1
- package/dist/scenarios/index.js.map +1 -1
- package/dist/scenarios/parse.d.ts +4 -18
- package/dist/scenarios/parse.d.ts.map +1 -1
- package/dist/scenarios/parse.js +14 -34
- package/dist/scenarios/parse.js.map +1 -1
- package/dist/scenarios/scenario.d.ts +18 -74
- package/dist/scenarios/scenario.d.ts.map +1 -1
- package/dist/scenarios/scenario.js +7 -34
- package/dist/scenarios/scenario.js.map +1 -1
- package/dist/scenarios/storage.d.ts +11 -41
- package/dist/scenarios/storage.d.ts.map +1 -1
- package/dist/scenarios/storage.js +57 -47
- package/dist/scenarios/storage.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +55 -13
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +69 -239
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +76 -231
- package/dist/session.js.map +1 -1
- package/dist/tools/analyze.d.ts +27 -101
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +58 -148
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/browser-click.d.ts +3 -21
- package/dist/tools/browser-click.d.ts.map +1 -1
- package/dist/tools/browser-click.js +10 -31
- package/dist/tools/browser-click.js.map +1 -1
- package/dist/tools/browser-close-session.d.ts +4 -13
- package/dist/tools/browser-close-session.d.ts.map +1 -1
- package/dist/tools/browser-close-session.js +4 -13
- package/dist/tools/browser-close-session.js.map +1 -1
- package/dist/tools/browser-fill.d.ts +5 -36
- package/dist/tools/browser-fill.d.ts.map +1 -1
- package/dist/tools/browser-fill.js +9 -44
- package/dist/tools/browser-fill.js.map +1 -1
- package/dist/tools/browser-navigate.d.ts +6 -27
- package/dist/tools/browser-navigate.d.ts.map +1 -1
- package/dist/tools/browser-navigate.js +6 -23
- package/dist/tools/browser-navigate.js.map +1 -1
- package/dist/tools/browser-run-scenario.d.ts +5 -31
- package/dist/tools/browser-run-scenario.d.ts.map +1 -1
- package/dist/tools/browser-run-scenario.js +10 -46
- package/dist/tools/browser-run-scenario.js.map +1 -1
- package/dist/tools/browser-save-scenario.d.ts +3 -28
- package/dist/tools/browser-save-scenario.d.ts.map +1 -1
- package/dist/tools/browser-save-scenario.js +102 -55
- package/dist/tools/browser-save-scenario.js.map +1 -1
- package/dist/tools/browser-snapshot.d.ts +6 -39
- package/dist/tools/browser-snapshot.d.ts.map +1 -1
- package/dist/tools/browser-snapshot.js +4 -31
- package/dist/tools/browser-snapshot.js.map +1 -1
- package/dist/tools/browser-start-session.d.ts +4 -23
- package/dist/tools/browser-start-session.d.ts.map +1 -1
- package/dist/tools/browser-start-session.js +38 -51
- package/dist/tools/browser-start-session.js.map +1 -1
- package/dist/tools/browser-type.d.ts +5 -35
- package/dist/tools/browser-type.d.ts.map +1 -1
- package/dist/tools/browser-type.js +10 -45
- package/dist/tools/browser-type.js.map +1 -1
- package/dist/tools/contracts.d.ts +17 -63
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +91 -47
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/cross-pr.d.ts +56 -15
- package/dist/tools/cross-pr.d.ts.map +1 -1
- package/dist/tools/cross-pr.js +141 -38
- package/dist/tools/cross-pr.js.map +1 -1
- package/dist/tools/git-diff.d.ts +18 -2
- package/dist/tools/git-diff.d.ts.map +1 -1
- package/dist/tools/git-diff.js +143 -23
- package/dist/tools/git-diff.js.map +1 -1
- package/dist/tools/git-history.d.ts +5 -16
- package/dist/tools/git-history.d.ts.map +1 -1
- package/dist/tools/git-history.js +3 -10
- package/dist/tools/git-history.js.map +1 -1
- package/dist/tools/history.d.ts +4 -33
- package/dist/tools/history.d.ts.map +1 -1
- package/dist/tools/history.js +6 -31
- package/dist/tools/history.js.map +1 -1
- package/dist/tools/impact.d.ts +7 -51
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +15 -67
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/index.d.ts +3 -8
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +3 -8
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kit.d.ts +66 -113
- package/dist/tools/kit.d.ts.map +1 -1
- package/dist/tools/kit.js +60 -28
- package/dist/tools/kit.js.map +1 -1
- package/dist/tools/link-workspace.d.ts +7 -45
- package/dist/tools/link-workspace.d.ts.map +1 -1
- package/dist/tools/link-workspace.js +10 -48
- package/dist/tools/link-workspace.js.map +1 -1
- package/dist/tools/lookup.d.ts +4 -14
- package/dist/tools/lookup.d.ts.map +1 -1
- package/dist/tools/lookup.js +4 -14
- package/dist/tools/lookup.js.map +1 -1
- package/dist/tools/mark-incident.d.ts +7 -54
- package/dist/tools/mark-incident.d.ts.map +1 -1
- package/dist/tools/mark-incident.js +15 -68
- package/dist/tools/mark-incident.js.map +1 -1
- package/dist/tools/observe-runtime.d.ts +27 -210
- package/dist/tools/observe-runtime.d.ts.map +1 -1
- package/dist/tools/observe-runtime.js +258 -436
- package/dist/tools/observe-runtime.js.map +1 -1
- package/dist/tools/observe-tests.d.ts +9 -88
- package/dist/tools/observe-tests.d.ts.map +1 -1
- package/dist/tools/observe-tests.js +34 -108
- package/dist/tools/observe-tests.js.map +1 -1
- package/dist/tools/pr-analysis.d.ts +18 -2
- package/dist/tools/pr-analysis.d.ts.map +1 -1
- package/dist/tools/pr-analysis.js +73 -23
- package/dist/tools/pr-analysis.js.map +1 -1
- package/dist/tools/pre-push.d.ts +94 -9
- package/dist/tools/pre-push.d.ts.map +1 -1
- package/dist/tools/pre-push.js +139 -34
- package/dist/tools/pre-push.js.map +1 -1
- package/dist/tools/propagation.d.ts +11 -53
- package/dist/tools/propagation.d.ts.map +1 -1
- package/dist/tools/propagation.js +14 -57
- package/dist/tools/propagation.js.map +1 -1
- package/dist/tools/questions.d.ts +13 -63
- package/dist/tools/questions.d.ts.map +1 -1
- package/dist/tools/questions.js +33 -105
- package/dist/tools/questions.js.map +1 -1
- package/dist/tools/refusal-fetch.d.ts +4 -40
- package/dist/tools/refusal-fetch.d.ts.map +1 -1
- package/dist/tools/refusal-fetch.js +4 -40
- package/dist/tools/refusal-fetch.js.map +1 -1
- package/dist/tools/runtime-incident.d.ts +4 -63
- package/dist/tools/runtime-incident.d.ts.map +1 -1
- package/dist/tools/runtime-incident.js +10 -87
- package/dist/tools/runtime-incident.js.map +1 -1
- package/dist/tools/scope.d.ts +7 -25
- package/dist/tools/scope.d.ts.map +1 -1
- package/dist/tools/scope.js +17 -20
- package/dist/tools/scope.js.map +1 -1
- package/dist/tools/similar-incidents.d.ts +11 -86
- package/dist/tools/similar-incidents.d.ts.map +1 -1
- package/dist/tools/similar-incidents.js +7 -71
- package/dist/tools/similar-incidents.js.map +1 -1
- package/dist/tools/validate.d.ts +31 -47
- package/dist/tools/validate.d.ts.map +1 -1
- package/dist/tools/validate.js +133 -61
- package/dist/tools/validate.js.map +1 -1
- package/dist/tools/verification-status.d.ts +9 -64
- package/dist/tools/verification-status.d.ts.map +1 -1
- package/dist/tools/verification-status.js +9 -62
- package/dist/tools/verification-status.js.map +1 -1
- package/dist/tools/verify-claim.d.ts +5 -52
- package/dist/tools/verify-claim.d.ts.map +1 -1
- package/dist/tools/verify-claim.js +6 -56
- package/dist/tools/verify-claim.js.map +1 -1
- package/dist/transport.d.ts +15 -52
- package/dist/transport.d.ts.map +1 -1
- package/dist/transport.js +16 -60
- package/dist/transport.js.map +1 -1
- package/package.json +33 -16
|
@@ -1,38 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What a saved scenario
|
|
3
|
-
* `
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* deliberately. A scenario is an artifact a person authored and a reviewer
|
|
7
|
-
* reads in a diff; whether one can be *replayed* is the runner's question, and
|
|
8
|
-
* keeping the two apart is what lets the format be tested without launching
|
|
9
|
-
* anything.
|
|
10
|
-
*
|
|
11
|
-
* ## The one shape decision worth reading before the types
|
|
12
|
-
*
|
|
13
|
-
* **A step stores no `ref`.** The port's action verbs take a `ref` and that is
|
|
14
|
-
* correct — a ref ties an action to a snapshot the agent actually saw. But a
|
|
15
|
-
* ref is scoped to the snapshot that issued it, and a replay is always a later
|
|
16
|
-
* session, so a stored ref resolves to nothing or, worse, to something else. A
|
|
17
|
-
* step therefore stores a `TargetDescriptor` and the runner re-resolves it
|
|
18
|
-
* against a fresh snapshot.
|
|
19
|
-
*
|
|
20
|
-
* All three descriptor fields are required, together, always. Not one of them
|
|
21
|
-
* and not a fallback chain: `selector` alone breaks on a markup refactor and
|
|
22
|
-
* silently matches the wrong element when a class is reused; `role` + `name`
|
|
23
|
-
* alone breaks on a copy change; and "try the selector, else role+name" is the
|
|
24
|
-
* dangerous option, because it turns a real disagreement into a quiet
|
|
25
|
-
* substitution — which is how a scenario keeps reporting green against a page
|
|
26
|
-
* that changed underneath it.
|
|
27
|
-
*/
|
|
2
|
+
* What a saved scenario is (DEC-383's schema half). No browser import — replayability
|
|
3
|
+
* is the runner's separate question. A step stores a `TargetDescriptor`, never a `ref`
|
|
4
|
+
* (refs are snapshot-scoped, stale by replay). All 3 descriptor fields are required
|
|
5
|
+
* together — a fallback chain would quietly substitute a match instead of disagreeing. */
|
|
28
6
|
/** Bumped when a stored scenario's shape changes. An integer, never semver: one repository, one reader, nothing to argue about. */
|
|
29
7
|
export declare const SCENARIO_SCHEMA_VERSION = 1;
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
* fresh snapshot, and required to match **exactly one** element — zero,
|
|
33
|
-
* ambiguous and partial are each a refusal that names which of these three
|
|
34
|
-
* fields disagreed and what the page holds now.
|
|
35
|
-
*/
|
|
8
|
+
/** How a step names its element. Re-resolved at replay against a fresh snapshot,
|
|
9
|
+
* must match exactly one — zero/ambiguous/partial each refuse, naming what disagreed. */
|
|
36
10
|
export interface TargetDescriptor {
|
|
37
11
|
readonly role: string;
|
|
38
12
|
readonly name: string;
|
|
@@ -49,20 +23,9 @@ export interface ScenarioStep {
|
|
|
49
23
|
/** What to enter. Present for `type` and `fill` alone. `type` appends, `fill` replaces — the runtime's two text verbs, kept distinct here because the stored artifact must say which one a replay should perform. */
|
|
50
24
|
readonly text: string | null;
|
|
51
25
|
}
|
|
52
|
-
/**
|
|
53
|
-
*
|
|
54
|
-
*
|
|
55
|
-
* Kept deliberately small and derived from what a snapshot and a run's
|
|
56
|
-
* observations already carry, rather than invented: an assertion the runner
|
|
57
|
-
* cannot evaluate from real evidence is a promise the format cannot keep.
|
|
58
|
-
*
|
|
59
|
-
* `noConsoleErrors` and `noFailedRequests` are worth one note, because they
|
|
60
|
-
* interact with `DEC-384`. An *observed* console
|
|
61
|
-
* error does not block a push — it is frequently true of a working page. An
|
|
62
|
-
* *asserted* absence of console errors that then fails does block, because the
|
|
63
|
-
* author opted in and wrote the claim down. Same evidence, different status,
|
|
64
|
-
* and the difference is entirely whether a person claimed something about it.
|
|
65
|
-
*/
|
|
26
|
+
/** What the scenario claims. Kept small, derived only from what a snapshot/run
|
|
27
|
+
* can observe — an assertion the runner can't evaluate is a promise it can't keep.
|
|
28
|
+
* DEC-384: an *observed* console error/failed request doesn't block; an *asserted* one does. */
|
|
66
29
|
export type ScenarioAssertionKind = "elementVisible" | "textEquals" | "urlEquals" | "noConsoleErrors" | "noFailedRequests";
|
|
67
30
|
export interface ScenarioAssertion {
|
|
68
31
|
readonly kind: ScenarioAssertionKind;
|
|
@@ -78,38 +41,19 @@ export interface Scenario {
|
|
|
78
41
|
readonly name: string;
|
|
79
42
|
readonly description: string | null;
|
|
80
43
|
readonly targetUrl: string;
|
|
81
|
-
/**
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* Neither expires anything and neither is checked at replay. They exist so a
|
|
85
|
-
* failure can say *the scenario was written against a different revision of
|
|
86
|
-
* this application*, which is usually the answer to "why did this break".
|
|
87
|
-
* DEC-223 §7's disclosed-non-detection choice, repeated on purpose: building
|
|
88
|
-
* an expiry against a population of zero real scenarios would be machinery
|
|
89
|
-
* ahead of its evidence, and retrofitting one later needs no schema change
|
|
90
|
-
* because the fields are already here.
|
|
91
|
-
*/
|
|
44
|
+
/** When saved + commit authored against. Neither expires nor is checked at replay —
|
|
45
|
+
* exists to explain "written against a different revision" failures. DEC-223 §7's
|
|
46
|
+
* disclosed-non-detection choice: no expiry machinery until real scenarios exist. */
|
|
92
47
|
readonly savedAt: string;
|
|
93
48
|
readonly savedAtCommit: string;
|
|
94
49
|
readonly steps: readonly ScenarioStep[];
|
|
95
|
-
/**
|
|
96
|
-
*
|
|
97
|
-
*
|
|
98
|
-
* on it, and the runner cannot invent assertions at replay time — it has no
|
|
99
|
-
* idea what the author meant to check. So they are stored with the steps.
|
|
100
|
-
*
|
|
101
|
-
* Empty is storable, because saving an exploration must stay possible. It is
|
|
102
|
-
* never `passed`: see `isUnverifying`.
|
|
103
|
-
*/
|
|
50
|
+
/** Required, may be empty. The runner can't invent assertions at replay — a
|
|
51
|
+
* successful click-through of a broken page with none stored would be a
|
|
52
|
+
* confident false negative. Empty is storable (exploration); never `passed`. */
|
|
104
53
|
readonly assertions: readonly ScenarioAssertion[];
|
|
105
54
|
}
|
|
106
|
-
/**
|
|
107
|
-
*
|
|
108
|
-
*
|
|
109
|
-
* A replay of one of these that meets no error has established that the steps
|
|
110
|
-
* still resolve — real information, and not the same statement as "the
|
|
111
|
-
* application is behaving." The exit rule reports it as `unverified`; this is
|
|
112
|
-
* the predicate that decides which word is honest.
|
|
113
|
-
*/
|
|
55
|
+
/** True when a scenario claims nothing, so verifies nothing. A clean replay still
|
|
56
|
+
* proves the steps resolve — real info, not "the app is behaving". Reported as
|
|
57
|
+
* `unverified`. */
|
|
114
58
|
export declare function isUnverifying(scenario: Scenario): boolean;
|
|
115
59
|
//# sourceMappingURL=scenario.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../src/scenarios/scenario.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scenario.d.ts","sourceRoot":"","sources":["../../src/scenarios/scenario.ts"],"names":[],"mappings":"AAAA;;;;0FAI0F;AAE1F,mIAAmI;AACnI,eAAO,MAAM,uBAAuB,IAAI,CAAC;AAEzC;0FAC0F;AAC1F,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,2IAA2I;AAC3I,MAAM,MAAM,kBAAkB,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;AAExE,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,wKAAwK;IACxK,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,iDAAiD;IACjD,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,qNAAqN;IACrN,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED;;iGAEiG;AACjG,MAAM,MAAM,qBAAqB,GAC7B,gBAAgB,GAChB,YAAY,GACZ,WAAW,GACX,iBAAiB,GACjB,kBAAkB,CAAC;AAEvB,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,gLAAgL;IAChL,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mFAAmF;IACnF,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAAC;IACzC,0EAA0E;IAC1E,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;;0FAEsF;IACtF,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,KAAK,EAAE,SAAS,YAAY,EAAE,CAAC;IACxC;;qFAEiF;IACjF,QAAQ,CAAC,UAAU,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACnD;AAED;;oBAEoB;AACpB,wBAAgB,aAAa,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAEzD"}
|
|
@@ -1,40 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* What a saved scenario
|
|
3
|
-
* `
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* deliberately. A scenario is an artifact a person authored and a reviewer
|
|
7
|
-
* reads in a diff; whether one can be *replayed* is the runner's question, and
|
|
8
|
-
* keeping the two apart is what lets the format be tested without launching
|
|
9
|
-
* anything.
|
|
10
|
-
*
|
|
11
|
-
* ## The one shape decision worth reading before the types
|
|
12
|
-
*
|
|
13
|
-
* **A step stores no `ref`.** The port's action verbs take a `ref` and that is
|
|
14
|
-
* correct — a ref ties an action to a snapshot the agent actually saw. But a
|
|
15
|
-
* ref is scoped to the snapshot that issued it, and a replay is always a later
|
|
16
|
-
* session, so a stored ref resolves to nothing or, worse, to something else. A
|
|
17
|
-
* step therefore stores a `TargetDescriptor` and the runner re-resolves it
|
|
18
|
-
* against a fresh snapshot.
|
|
19
|
-
*
|
|
20
|
-
* All three descriptor fields are required, together, always. Not one of them
|
|
21
|
-
* and not a fallback chain: `selector` alone breaks on a markup refactor and
|
|
22
|
-
* silently matches the wrong element when a class is reused; `role` + `name`
|
|
23
|
-
* alone breaks on a copy change; and "try the selector, else role+name" is the
|
|
24
|
-
* dangerous option, because it turns a real disagreement into a quiet
|
|
25
|
-
* substitution — which is how a scenario keeps reporting green against a page
|
|
26
|
-
* that changed underneath it.
|
|
27
|
-
*/
|
|
2
|
+
* What a saved scenario is (DEC-383's schema half). No browser import — replayability
|
|
3
|
+
* is the runner's separate question. A step stores a `TargetDescriptor`, never a `ref`
|
|
4
|
+
* (refs are snapshot-scoped, stale by replay). All 3 descriptor fields are required
|
|
5
|
+
* together — a fallback chain would quietly substitute a match instead of disagreeing. */
|
|
28
6
|
/** Bumped when a stored scenario's shape changes. An integer, never semver: one repository, one reader, nothing to argue about. */
|
|
29
7
|
export const SCENARIO_SCHEMA_VERSION = 1;
|
|
30
|
-
/**
|
|
31
|
-
*
|
|
32
|
-
*
|
|
33
|
-
* A replay of one of these that meets no error has established that the steps
|
|
34
|
-
* still resolve — real information, and not the same statement as "the
|
|
35
|
-
* application is behaving." The exit rule reports it as `unverified`; this is
|
|
36
|
-
* the predicate that decides which word is honest.
|
|
37
|
-
*/
|
|
8
|
+
/** True when a scenario claims nothing, so verifies nothing. A clean replay still
|
|
9
|
+
* proves the steps resolve — real info, not "the app is behaving". Reported as
|
|
10
|
+
* `unverified`. */
|
|
38
11
|
export function isUnverifying(scenario) {
|
|
39
12
|
return scenario.assertions.length === 0;
|
|
40
13
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../src/scenarios/scenario.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"scenario.js","sourceRoot":"","sources":["../../src/scenarios/scenario.ts"],"names":[],"mappings":"AAAA;;;;0FAI0F;AAE1F,mIAAmI;AACnI,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AA4DzC;;oBAEoB;AACpB,MAAM,UAAU,aAAa,CAAC,QAAkB;IAC9C,OAAO,QAAQ,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1C,CAAC"}
|
|
@@ -1,51 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* obvious home was beside `config.json` and `graph.db`, and it is wrong: §7's
|
|
6
|
-
* whole point is a run with no agent in it — a pre-push hook and a CI step —
|
|
7
|
-
* and CI runs on a fresh checkout. `.descry/` holds a regenerable graph and a
|
|
8
|
-
* config naming absolute adapter paths, which is why it is ignored; a scenario
|
|
9
|
-
* stored there works locally, vanishes in CI, and reports nothing rather than
|
|
10
|
-
* failing.
|
|
11
|
-
*
|
|
12
|
-
* The split is by kind, not by prefix: `.descry/` for what Descry can rebuild
|
|
13
|
-
* or what is true only on this machine, `descry/` for what a person wrote and a
|
|
14
|
-
* reviewer should see in a diff.
|
|
15
|
-
*
|
|
16
|
-
* One file per scenario, so two branches adding scenarios do not conflict and
|
|
17
|
-
* each is reviewable on its own.
|
|
2
|
+
* Scenario storage — `DEC-383` §1. Lives in committed `descry/scenarios/`,
|
|
3
|
+
* never `.descry/` (gitignored, regenerable): §7 needs agent-free runs on
|
|
4
|
+
* a fresh CI checkout, where `.descry/` would vanish and fail silently. One file per scenario avoids merge conflicts.
|
|
18
5
|
*/
|
|
19
6
|
import { type ScenarioParseResult } from "./parse.ts";
|
|
20
7
|
import type { Scenario } from "./scenario.ts";
|
|
21
8
|
export declare function scenariosDirectory(repoPath: string): string;
|
|
9
|
+
/** Not the disk-safe path — `readScenario`/`writeScenario` go through `confinedScenarioPath` below. This one is for display messages naming even a refused name. */
|
|
22
10
|
export declare function scenarioPath(repoPath: string, name: string): string;
|
|
23
|
-
/**
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
* distinction the five reply states exist to keep, applied one layer down.
|
|
29
|
-
*/
|
|
11
|
+
/** Thrown when the scenarios directory exists but can't be read (permission error, not-a-directory, ...) — a fact about Descry's ability to look, never about count. Must not collapse to `[]` (C-F2): that would teach a false "nothing saved". */
|
|
12
|
+
export declare class ScenarioListError extends Error {
|
|
13
|
+
constructor(dir: string, cause: unknown);
|
|
14
|
+
}
|
|
15
|
+
/** Every saved scenario's name. ENOENT means "nothing has ever been saved" → `[]`; any other read error (permission, not-a-directory) throws `ScenarioListError` instead — the five-reply-states distinction, one layer down. */
|
|
30
16
|
export declare function listScenarios(repoPath: string): Promise<readonly string[]>;
|
|
31
|
-
/**
|
|
32
|
-
* Read one scenario.
|
|
33
|
-
*
|
|
34
|
-
* Never throws: a missing file, unreadable text and a malformed document are
|
|
35
|
-
* all refusals carrying the path, because a caller replaying scenarios in CI
|
|
36
|
-
* needs to report which file was wrong rather than die on the first one. The
|
|
37
|
-
* message distinguishes *nothing is there* from *something is there and is
|
|
38
|
-
* wrong* — conflating them sends someone to debug a file that does not exist.
|
|
39
|
-
*/
|
|
17
|
+
/** Reads one scenario; never throws — missing file, unreadable text, malformed document are all refusals carrying the path, so a CI replay can report which file was wrong rather than die on the first. */
|
|
40
18
|
export declare function readScenario(repoPath: string, name: string): Promise<ScenarioParseResult>;
|
|
41
|
-
/**
|
|
42
|
-
* Write one scenario, refusing to store anything this reader could not read
|
|
43
|
-
* back.
|
|
44
|
-
*
|
|
45
|
-
* The validation on the way out is not redundant with the one on the way in.
|
|
46
|
-
* A scenario is written once and read on every push afterwards, so a fault
|
|
47
|
-
* saved today surfaces at the worst possible moment — during a check somebody
|
|
48
|
-
* is waiting on — and by then the session that could have explained it is gone.
|
|
49
|
-
*/
|
|
19
|
+
/** Writes one scenario, refusing anything this reader couldn't read back. Validating on the way out isn't redundant — a fault saved today surfaces during a push check, long after the session that could explain it is gone. */
|
|
50
20
|
export declare function writeScenario(repoPath: string, scenario: Scenario): Promise<void>;
|
|
51
21
|
//# sourceMappingURL=storage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/scenarios/storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../src/scenarios/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,EAAoC,KAAK,mBAAmB,EAAE,MAAM,YAAY,CAAC;AACxF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAI9C,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED,oKAAoK;AACpK,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAEnE;AAED,oPAAoP;AACpP,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO;CAMxC;AA4BD,iOAAiO;AACjO,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAUhF;AAED,4MAA4M;AAC5M,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwB/F;AAED,iOAAiO;AACjO,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAQvF"}
|
|
@@ -1,59 +1,76 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* obvious home was beside `config.json` and `graph.db`, and it is wrong: §7's
|
|
6
|
-
* whole point is a run with no agent in it — a pre-push hook and a CI step —
|
|
7
|
-
* and CI runs on a fresh checkout. `.descry/` holds a regenerable graph and a
|
|
8
|
-
* config naming absolute adapter paths, which is why it is ignored; a scenario
|
|
9
|
-
* stored there works locally, vanishes in CI, and reports nothing rather than
|
|
10
|
-
* failing.
|
|
11
|
-
*
|
|
12
|
-
* The split is by kind, not by prefix: `.descry/` for what Descry can rebuild
|
|
13
|
-
* or what is true only on this machine, `descry/` for what a person wrote and a
|
|
14
|
-
* reviewer should see in a diff.
|
|
15
|
-
*
|
|
16
|
-
* One file per scenario, so two branches adding scenarios do not conflict and
|
|
17
|
-
* each is reviewable on its own.
|
|
2
|
+
* Scenario storage — `DEC-383` §1. Lives in committed `descry/scenarios/`,
|
|
3
|
+
* never `.descry/` (gitignored, regenerable): §7 needs agent-free runs on
|
|
4
|
+
* a fresh CI checkout, where `.descry/` would vanish and fail silently. One file per scenario avoids merge conflicts.
|
|
18
5
|
*/
|
|
19
6
|
import { mkdir, readFile, readdir, writeFile } from "node:fs/promises";
|
|
20
|
-
import { join } from "node:path";
|
|
7
|
+
import { join, resolve, sep } from "node:path";
|
|
21
8
|
import { parseScenario, serializeScenario } from "./parse.js";
|
|
22
9
|
const SCENARIO_SUFFIX = ".scenario.json";
|
|
23
10
|
export function scenariosDirectory(repoPath) {
|
|
24
11
|
return join(repoPath, "descry", "scenarios");
|
|
25
12
|
}
|
|
13
|
+
/** Not the disk-safe path — `readScenario`/`writeScenario` go through `confinedScenarioPath` below. This one is for display messages naming even a refused name. */
|
|
26
14
|
export function scenarioPath(repoPath, name) {
|
|
27
15
|
return join(scenariosDirectory(repoPath), `${name}${SCENARIO_SUFFIX}`);
|
|
28
16
|
}
|
|
29
|
-
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
17
|
+
/** Thrown when the scenarios directory exists but can't be read (permission error, not-a-directory, ...) — a fact about Descry's ability to look, never about count. Must not collapse to `[]` (C-F2): that would teach a false "nothing saved". */
|
|
18
|
+
export class ScenarioListError extends Error {
|
|
19
|
+
constructor(dir, cause) {
|
|
20
|
+
const detail = cause instanceof Error ? cause.message : String(cause);
|
|
21
|
+
super(`could not read ${dir} (${detail})`);
|
|
22
|
+
this.name = "ScenarioListError";
|
|
23
|
+
this.cause = cause;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/** A-F4: name comes straight from tool args; `join` silently normalises `..`, so an unchecked `"../../../etc/passwd"` (or absolute path) escapes `descry/scenarios/`. Reject the shape here, then `confinedScenarioPath` re-checks containment on the resolved path — belt-and-braces, mirroring descry-desktop's write-finding-export. */
|
|
27
|
+
function invalidScenarioNameReason(name) {
|
|
28
|
+
if (name === "")
|
|
29
|
+
return "a scenario name cannot be empty";
|
|
30
|
+
if (name.includes("/") || name.includes("\\")) {
|
|
31
|
+
return `"${name}" is not a valid scenario name — a name may not contain a path separator`;
|
|
32
|
+
}
|
|
33
|
+
if (name === "." || name === "..") {
|
|
34
|
+
return `"${name}" is not a valid scenario name`;
|
|
35
|
+
}
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
function confinedScenarioPath(repoPath, name) {
|
|
39
|
+
const invalid = invalidScenarioNameReason(name);
|
|
40
|
+
if (invalid !== null)
|
|
41
|
+
throw new Error(invalid);
|
|
42
|
+
const dir = scenariosDirectory(repoPath);
|
|
43
|
+
const path = join(dir, `${name}${SCENARIO_SUFFIX}`);
|
|
44
|
+
const resolvedDir = resolve(dir) + sep;
|
|
45
|
+
// Belt and braces: if this ever resolves outside the scenarios directory, refuse rather than touch it.
|
|
46
|
+
if (!resolve(path).startsWith(resolvedDir)) {
|
|
47
|
+
throw new Error(`refusing to use a scenario path outside ${dir}`);
|
|
48
|
+
}
|
|
49
|
+
return path;
|
|
50
|
+
}
|
|
51
|
+
/** Every saved scenario's name. ENOENT means "nothing has ever been saved" → `[]`; any other read error (permission, not-a-directory) throws `ScenarioListError` instead — the five-reply-states distinction, one layer down. */
|
|
36
52
|
export async function listScenarios(repoPath) {
|
|
53
|
+
const dir = scenariosDirectory(repoPath);
|
|
37
54
|
let entries;
|
|
38
55
|
try {
|
|
39
|
-
entries = await readdir(
|
|
56
|
+
entries = await readdir(dir);
|
|
40
57
|
}
|
|
41
|
-
catch {
|
|
42
|
-
|
|
58
|
+
catch (error) {
|
|
59
|
+
if (error.code === "ENOENT")
|
|
60
|
+
return [];
|
|
61
|
+
throw new ScenarioListError(dir, error);
|
|
43
62
|
}
|
|
44
63
|
return entries.filter((e) => e.endsWith(SCENARIO_SUFFIX)).map((e) => e.slice(0, -SCENARIO_SUFFIX.length));
|
|
45
64
|
}
|
|
46
|
-
/**
|
|
47
|
-
* Read one scenario.
|
|
48
|
-
*
|
|
49
|
-
* Never throws: a missing file, unreadable text and a malformed document are
|
|
50
|
-
* all refusals carrying the path, because a caller replaying scenarios in CI
|
|
51
|
-
* needs to report which file was wrong rather than die on the first one. The
|
|
52
|
-
* message distinguishes *nothing is there* from *something is there and is
|
|
53
|
-
* wrong* — conflating them sends someone to debug a file that does not exist.
|
|
54
|
-
*/
|
|
65
|
+
/** Reads one scenario; never throws — missing file, unreadable text, malformed document are all refusals carrying the path, so a CI replay can report which file was wrong rather than die on the first. */
|
|
55
66
|
export async function readScenario(repoPath, name) {
|
|
56
|
-
|
|
67
|
+
let path;
|
|
68
|
+
try {
|
|
69
|
+
path = confinedScenarioPath(repoPath, name);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return { valid: false, problems: [error.message] };
|
|
73
|
+
}
|
|
57
74
|
let text;
|
|
58
75
|
try {
|
|
59
76
|
text = await readFile(path, "utf8");
|
|
@@ -73,21 +90,14 @@ export async function readScenario(repoPath, name) {
|
|
|
73
90
|
return result;
|
|
74
91
|
return { valid: false, problems: result.problems.map((p) => `${path}: ${p}`) };
|
|
75
92
|
}
|
|
76
|
-
/**
|
|
77
|
-
* Write one scenario, refusing to store anything this reader could not read
|
|
78
|
-
* back.
|
|
79
|
-
*
|
|
80
|
-
* The validation on the way out is not redundant with the one on the way in.
|
|
81
|
-
* A scenario is written once and read on every push afterwards, so a fault
|
|
82
|
-
* saved today surfaces at the worst possible moment — during a check somebody
|
|
83
|
-
* is waiting on — and by then the session that could have explained it is gone.
|
|
84
|
-
*/
|
|
93
|
+
/** Writes one scenario, refusing anything this reader couldn't read back. Validating on the way out isn't redundant — a fault saved today surfaces during a push check, long after the session that could explain it is gone. */
|
|
85
94
|
export async function writeScenario(repoPath, scenario) {
|
|
86
95
|
const check = parseScenario(scenario);
|
|
87
96
|
if (!check.valid) {
|
|
88
97
|
throw new Error(`refusing to save scenario "${scenario.name}": ${check.problems.join("; ")}`);
|
|
89
98
|
}
|
|
99
|
+
const path = confinedScenarioPath(repoPath, scenario.name);
|
|
90
100
|
await mkdir(scenariosDirectory(repoPath), { recursive: true });
|
|
91
|
-
await writeFile(
|
|
101
|
+
await writeFile(path, serializeScenario(scenario), "utf8");
|
|
92
102
|
}
|
|
93
103
|
//# sourceMappingURL=storage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/scenarios/storage.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/scenarios/storage.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACvE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,WAAW,CAAC;AAE/C,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAA4B,MAAM,YAAY,CAAC;AAGxF,MAAM,eAAe,GAAG,gBAAgB,CAAC;AAEzC,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;AAC/C,CAAC;AAED,oKAAoK;AACpK,MAAM,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IACzD,OAAO,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,GAAG,IAAI,GAAG,eAAe,EAAE,CAAC,CAAC;AACzE,CAAC;AAED,oPAAoP;AACpP,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,GAAW,EAAE,KAAc;QACrC,MAAM,MAAM,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACtE,KAAK,CAAC,kBAAkB,GAAG,KAAK,MAAM,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACF;AAED,2UAA2U;AAC3U,SAAS,yBAAyB,CAAC,IAAY;IAC7C,IAAI,IAAI,KAAK,EAAE;QAAE,OAAO,iCAAiC,CAAC;IAC1D,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QAC9C,OAAO,IAAI,IAAI,0EAA0E,CAAC;IAC5F,CAAC;IACD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClC,OAAO,IAAI,IAAI,gCAAgC,CAAC;IAClD,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,oBAAoB,CAAC,QAAgB,EAAE,IAAY;IAC1D,MAAM,OAAO,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;IAChD,IAAI,OAAO,KAAK,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,GAAG,eAAe,EAAE,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;IACvC,uGAAuG;IACvG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,2CAA2C,GAAG,EAAE,CAAC,CAAC;IACpE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iOAAiO;AACjO,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB;IAClD,MAAM,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,OAAiB,CAAC;IACtB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,CAAC;QAClE,MAAM,IAAI,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IACD,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;AAC5G,CAAC;AAED,4MAA4M;AAC5M,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,QAAgB,EAAE,IAAY;IAC/D,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAE,KAAe,CAAC,OAAO,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,sBAAsB,IAAI,kBAAkB,IAAI,EAAE,CAAC,EAAE,CAAC;IAC1F,CAAC;IAED,IAAI,OAAgB,CAAC;IACrB,IAAI,CAAC;QACH,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,oCAAoC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;IAClG,CAAC;IAED,MAAM,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;IACtC,IAAI,MAAM,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAChC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,iOAAiO;AACjO,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,QAAkB;IACtE,MAAM,KAAK,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACtC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,IAAI,MAAM,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAChG,CAAC;IACD,MAAM,IAAI,GAAG,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/D,MAAM,SAAS,CAAC,IAAI,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC"}
|
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AA6BH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAC5C,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAYhD,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYjD;AAED,MAAM,WAAW,SAAS;IACxB,uFAAuF;IACvF,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5D,wDAAwD;IACxD,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC;CAC/B;AAqED,wBAAgB,eAAe,CAAC,OAAO,EAAE,gBAAgB,GAAG,SAAS,CAqUpE"}
|
package/dist/server.js
CHANGED
|
@@ -25,9 +25,10 @@
|
|
|
25
25
|
* content with `isError`, which the model can read and act on. Only genuinely
|
|
26
26
|
* broken protocol produces an error frame.
|
|
27
27
|
*/
|
|
28
|
+
import { randomUUID } from "node:crypto";
|
|
28
29
|
import { resolveActionDispatch } from "./action-handshake.js";
|
|
29
30
|
import { fail, isRequest, negotiateVersion, ok, parseMessage, ProtocolError, RPC_INTERNAL_ERROR, RPC_INVALID_PARAMS, RPC_METHOD_NOT_FOUND, } from "./protocol.js";
|
|
30
|
-
import { renderAnswer, renderFailed, renderHandshake, renderTimedOut, renderToolError, TOOL_OUTPUT_SCHEMA, } from "./render.js";
|
|
31
|
+
import { renderAnswer, renderFailed, renderHandshake, renderRefusedInput, renderTimedOut, renderToolError, TOOL_OUTPUT_SCHEMA, } from "./render.js";
|
|
31
32
|
import { createDisclosureLedger } from "./disclosure-ledger.js";
|
|
32
33
|
import { TOOLS, TOOLS_BY_NAME, ToolInputError, } from "./tools/index.js";
|
|
33
34
|
/** Every call's declared budget (§6). Fixed today; per-trigger budgets are P26/P28 work. */
|
|
@@ -70,6 +71,15 @@ const SERVER_INSTRUCTIONS = "Descry reads the repository's source into a code gr
|
|
|
70
71
|
"both \"nothing matched\" and \"I could not look\" would teach a false fact with no way to " +
|
|
71
72
|
"detect it — that is why these are distinct. Never read `refused` as \"clean\" or `empty` as " +
|
|
72
73
|
"\"broken\".\n\n" +
|
|
74
|
+
"**One case is not an answer at all and has its own shape**: a call naming no tool this " +
|
|
75
|
+
"server has — `name` is not a string, or names nothing in the registry — comes back with " +
|
|
76
|
+
"`isError: true` and `{ tool, status: \"error\", message }`, carrying no `state`, no `graph` " +
|
|
77
|
+
"and no `disclosures`. There is no `state` because there is no tool to say `state` about. " +
|
|
78
|
+
"This is narrower than it once was: a *resolved* tool given bad input — a missing required " +
|
|
79
|
+
"field, a value of the wrong type — is a fact about that tool's call and comes back as a " +
|
|
80
|
+
"real `state: \"refused\"` reply instead, with `disclosures` naming what was wrong. Branch " +
|
|
81
|
+
"on `isError` before reading `state` regardless — a caller that only ever sees the second, " +
|
|
82
|
+
"unresolved-tool shape in testing will still be surprised by it in production.\n\n" +
|
|
73
83
|
"Every reply also carries a `disclosures` list, a `resolutionFloor` and a `reliabilityCap` " +
|
|
74
84
|
"(A, B or C) inside `graph`. `resolutionFloor` is how much tooling actually ran under the " +
|
|
75
85
|
"weakest evidence behind the answer, R0 through R4: R0 is syntax only, nothing resolved; R1 " +
|
|
@@ -204,9 +214,30 @@ export function createMcpServer(options) {
|
|
|
204
214
|
if (tool === undefined) {
|
|
205
215
|
return renderToolError(name, `no such tool. Available: ${tools.map((t) => t.name).join(", ")}.`);
|
|
206
216
|
}
|
|
217
|
+
// `tool` is resolved from here on, so any input failure below has a real
|
|
218
|
+
// `ToolDefinition` to render a `state: "refused"` envelope from
|
|
219
|
+
// (`renderRefusedInput`) rather than `renderToolError`'s bare shape —
|
|
220
|
+
// minted here, ahead of the args check, so both that check and a
|
|
221
|
+
// `ToolInputError` thrown later out of `tool.run` share the one
|
|
222
|
+
// `renderOptions()`. Same precedent as B10's `callId`: a call that never
|
|
223
|
+
// reaches `tool.run` still gets one minted (`renderFailed`/`renderTimedOut`
|
|
224
|
+
// already do this for every call but `verify_claim`), and is never passed
|
|
225
|
+
// to `session.recordCallWithId` below, so no gap opens in what a citation
|
|
226
|
+
// can resolve.
|
|
227
|
+
const started = Date.now();
|
|
228
|
+
const callId = name === "verify_claim" ? randomUUID() : session.allocateCallId();
|
|
229
|
+
const renderOptions = () => ({
|
|
230
|
+
toolVersion: tool.version,
|
|
231
|
+
toolClass: tool.class,
|
|
232
|
+
toolTier: tool.tier,
|
|
233
|
+
elapsedMs: Date.now() - started,
|
|
234
|
+
limitMs: CALL_BUDGET_MS,
|
|
235
|
+
disclosureLedger,
|
|
236
|
+
callId,
|
|
237
|
+
});
|
|
207
238
|
const rawArgs = params["arguments"];
|
|
208
239
|
if (rawArgs !== undefined && (typeof rawArgs !== "object" || rawArgs === null || Array.isArray(rawArgs))) {
|
|
209
|
-
return
|
|
240
|
+
return renderRefusedInput(name, '"arguments" must be an object', renderOptions());
|
|
210
241
|
}
|
|
211
242
|
const args = (rawArgs ?? {});
|
|
212
243
|
const meta = params["_meta"];
|
|
@@ -251,15 +282,21 @@ export function createMcpServer(options) {
|
|
|
251
282
|
progress,
|
|
252
283
|
signal: AbortSignal.any([controller.signal, AbortSignal.timeout(CALL_BUDGET_MS)]),
|
|
253
284
|
};
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
285
|
+
// B10: `started`/`callId`/`renderOptions` are minted above, ahead of the
|
|
286
|
+
// `arguments` shape check, so every envelope this call can produce
|
|
287
|
+
// (refused, handshake, failed, timed-out, or a real answer) carries the
|
|
288
|
+
// exact id `recordCallWithId` will file the record under below — a
|
|
289
|
+
// caller reading `callId` off the reply and citing it in `verify_claim`
|
|
290
|
+
// is citing the id that call is actually recorded as.
|
|
291
|
+
//
|
|
292
|
+
// `verify_claim` itself is the one exception, on the same reasoning as
|
|
293
|
+
// its exclusion from recording just below: it produces no fact for a
|
|
294
|
+
// later claim to cite, so its own `callId` is not drawn from the
|
|
295
|
+
// session's call-id sequence at all — `session.allocateCallId()` is
|
|
296
|
+
// reserved for calls that will actually be recorded under the id it
|
|
297
|
+
// returns. Reusing it here would consume a real id `verify_claim` never
|
|
298
|
+
// gets recorded under, opening a gap in the sequence a caller relies on
|
|
299
|
+
// corresponding exactly to recorded calls.
|
|
263
300
|
try {
|
|
264
301
|
// §7's two-call handshake. Decided before any real work starts — a mint
|
|
265
302
|
// has no I/O to time out on — so this sits outside the try/catch's
|
|
@@ -280,8 +317,13 @@ export function createMcpServer(options) {
|
|
|
280
317
|
// host receives — not the pre-render outcome, which the host never
|
|
281
318
|
// sees. `verify_claim` itself is excluded: it produces no fact for a
|
|
282
319
|
// later claim to cite, only a verdict about other calls' facts.
|
|
320
|
+
//
|
|
321
|
+
// Recorded under `callId` — the same id `rendered.structuredContent`
|
|
322
|
+
// already carries as `callId` — rather than a freshly minted one
|
|
323
|
+
// (B10): the two must be the same value for a citation read off this
|
|
324
|
+
// reply to resolve.
|
|
283
325
|
if (name !== "verify_claim")
|
|
284
|
-
session.
|
|
326
|
+
session.recordCallWithId(callId, name, args, rendered.structuredContent);
|
|
285
327
|
return rendered;
|
|
286
328
|
}
|
|
287
329
|
catch (error) {
|
|
@@ -292,7 +334,7 @@ export function createMcpServer(options) {
|
|
|
292
334
|
if (controller.signal.aborted)
|
|
293
335
|
return null;
|
|
294
336
|
if (error instanceof ToolInputError)
|
|
295
|
-
return
|
|
337
|
+
return renderRefusedInput(name, error.message, renderOptions());
|
|
296
338
|
if (isAbort(error) || ctx.signal.aborted)
|
|
297
339
|
return renderTimedOut(name, renderOptions());
|
|
298
340
|
// Anything else is a bug or an environment failure. It still comes back as
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|