@descryy/mcp 0.11.8 → 0.12.1

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.
Files changed (103) hide show
  1. package/dist/action-handshake.d.ts.map +1 -1
  2. package/dist/action-handshake.js +5 -1
  3. package/dist/action-handshake.js.map +1 -1
  4. package/dist/browser/driver.d.ts +74 -0
  5. package/dist/browser/driver.d.ts.map +1 -1
  6. package/dist/browser/driver.js +48 -0
  7. package/dist/browser/driver.js.map +1 -1
  8. package/dist/browser/fake-driver.d.ts +39 -0
  9. package/dist/browser/fake-driver.d.ts.map +1 -1
  10. package/dist/browser/fake-driver.js +123 -5
  11. package/dist/browser/fake-driver.js.map +1 -1
  12. package/dist/browser/fault-attribution.d.ts +75 -39
  13. package/dist/browser/fault-attribution.d.ts.map +1 -1
  14. package/dist/browser/fault-attribution.js +100 -89
  15. package/dist/browser/fault-attribution.js.map +1 -1
  16. package/dist/browser/graph-write.d.ts +22 -2
  17. package/dist/browser/graph-write.d.ts.map +1 -1
  18. package/dist/browser/graph-write.js +60 -2
  19. package/dist/browser/graph-write.js.map +1 -1
  20. package/dist/browser/identity-graph-write.d.ts +26 -2
  21. package/dist/browser/identity-graph-write.d.ts.map +1 -1
  22. package/dist/browser/identity-graph-write.js +44 -2
  23. package/dist/browser/identity-graph-write.js.map +1 -1
  24. package/dist/browser/playwright-driver.d.ts.map +1 -1
  25. package/dist/browser/playwright-driver.js +63 -8
  26. package/dist/browser/playwright-driver.js.map +1 -1
  27. package/dist/browser/provider.d.ts +5 -0
  28. package/dist/browser/provider.d.ts.map +1 -1
  29. package/dist/browser/provider.js.map +1 -1
  30. package/dist/browser/reach-recording-session.d.ts.map +1 -1
  31. package/dist/browser/reach-recording-session.js +10 -0
  32. package/dist/browser/reach-recording-session.js.map +1 -1
  33. package/dist/browser/scenario-runner.d.ts.map +1 -1
  34. package/dist/browser/scenario-runner.js +2 -0
  35. package/dist/browser/scenario-runner.js.map +1 -1
  36. package/dist/browser/tool-support.d.ts.map +1 -1
  37. package/dist/browser/tool-support.js +6 -1
  38. package/dist/browser/tool-support.js.map +1 -1
  39. package/dist/findings/index.d.ts +2 -0
  40. package/dist/findings/index.d.ts.map +1 -0
  41. package/dist/findings/index.js +2 -0
  42. package/dist/findings/index.js.map +1 -0
  43. package/dist/findings/store.d.ts +81 -0
  44. package/dist/findings/store.d.ts.map +1 -0
  45. package/dist/findings/store.js +148 -0
  46. package/dist/findings/store.js.map +1 -0
  47. package/dist/fs-gateway.d.ts +57 -0
  48. package/dist/fs-gateway.d.ts.map +1 -0
  49. package/dist/fs-gateway.js +86 -0
  50. package/dist/fs-gateway.js.map +1 -0
  51. package/dist/scenarios/storage.d.ts.map +1 -1
  52. package/dist/scenarios/storage.js +3 -3
  53. package/dist/scenarios/storage.js.map +1 -1
  54. package/dist/session.d.ts.map +1 -1
  55. package/dist/session.js +8 -13
  56. package/dist/session.js.map +1 -1
  57. package/dist/tools/browser-read.d.ts +19 -12
  58. package/dist/tools/browser-read.d.ts.map +1 -1
  59. package/dist/tools/browser-read.js +34 -18
  60. package/dist/tools/browser-read.js.map +1 -1
  61. package/dist/tools/browser-record-start.d.ts +20 -0
  62. package/dist/tools/browser-record-start.d.ts.map +1 -0
  63. package/dist/tools/browser-record-start.js +97 -0
  64. package/dist/tools/browser-record-start.js.map +1 -0
  65. package/dist/tools/browser-record-stop.d.ts +25 -0
  66. package/dist/tools/browser-record-stop.d.ts.map +1 -0
  67. package/dist/tools/browser-record-stop.js +102 -0
  68. package/dist/tools/browser-record-stop.js.map +1 -0
  69. package/dist/tools/browser-start-session.d.ts.map +1 -1
  70. package/dist/tools/browser-start-session.js +12 -0
  71. package/dist/tools/browser-start-session.js.map +1 -1
  72. package/dist/tools/browser.d.ts.map +1 -1
  73. package/dist/tools/browser.js +6 -0
  74. package/dist/tools/browser.js.map +1 -1
  75. package/dist/tools/chain.d.ts +5 -0
  76. package/dist/tools/chain.d.ts.map +1 -1
  77. package/dist/tools/chain.js +5 -2
  78. package/dist/tools/chain.js.map +1 -1
  79. package/dist/tools/draw-conclusion.d.ts +18 -2
  80. package/dist/tools/draw-conclusion.d.ts.map +1 -1
  81. package/dist/tools/draw-conclusion.js +69 -11
  82. package/dist/tools/draw-conclusion.js.map +1 -1
  83. package/dist/tools/finding-lookup.d.ts +58 -0
  84. package/dist/tools/finding-lookup.d.ts.map +1 -0
  85. package/dist/tools/finding-lookup.js +261 -0
  86. package/dist/tools/finding-lookup.js.map +1 -0
  87. package/dist/tools/kit.d.ts +1 -1
  88. package/dist/tools/link-workspace.d.ts +7 -0
  89. package/dist/tools/link-workspace.d.ts.map +1 -1
  90. package/dist/tools/link-workspace.js +20 -0
  91. package/dist/tools/link-workspace.js.map +1 -1
  92. package/dist/tools/propagation.d.ts +14 -8
  93. package/dist/tools/propagation.d.ts.map +1 -1
  94. package/dist/tools/propagation.js +23 -15
  95. package/dist/tools/propagation.js.map +1 -1
  96. package/dist/tools/prove-reach.d.ts +8 -0
  97. package/dist/tools/prove-reach.d.ts.map +1 -1
  98. package/dist/tools/prove-reach.js +80 -2
  99. package/dist/tools/prove-reach.js.map +1 -1
  100. package/dist/tools/workspace.d.ts.map +1 -1
  101. package/dist/tools/workspace.js +10 -2
  102. package/dist/tools/workspace.js.map +1 -1
  103. package/package.json +21 -21
@@ -0,0 +1,261 @@
1
+ /**
2
+ * `draw_conclusion`'s `get`/`list` verbs — a read-class way for any MCP-connected agent to fetch
3
+ * a governed finding back from `.descry/findings/` (`../findings/store.ts`), rather than only
4
+ * being able to mint one (`gate`, `../draw-conclusion.ts`'s original behaviour) or lose it the
5
+ * moment a caller's own reply is gone.
6
+ *
7
+ * Lives in its own file rather than inline in `draw-conclusion.ts` for the same reason
8
+ * `predict-reach.ts`/`propose-journey.ts` sit beside `reach.ts`: the dispatcher stays readable,
9
+ * and each verb's own logic is one file a reader can hold in their head. Unlike those two,
10
+ * `get`/`list` never existed as standalone top-level tools, so there is no retired name to alias
11
+ * — `tools/aliases.ts` gets no new entry for this merge.
12
+ *
13
+ * `class: "read"`, same as `gate`: reading a finding back changes nothing and mints no token.
14
+ * `tier: "conclusion"`, same as `gate`: a stored finding's `category` is a G4-gated verdict, not
15
+ * a graph fact — the same reasoning `tool-tiers.test.ts` already states for `gate` itself.
16
+ */
17
+ import { rederive } from "@descryy/ir";
18
+ import { readFinding, listFindings } from "../findings/index.js";
19
+ import { capped } from "../capped.js";
20
+ import { answer, briefNode, optionalInteger, requiredString, } from "./kit.js";
21
+ /** Edge types `resolveLocation` walks to find a handler when a finding's own node carries no
22
+ * file — `documents/architecture` names this pair (`ROUTE_HANDLER_EXTRACTOR`,
23
+ * `packages/ir/src/capabilities.ts`) as declared by all ten language adapters as of 2026-09-20. */
24
+ const SERVES_API = ["SERVES_API"];
25
+ const CALLS = ["CALLS"];
26
+ /** Resolves one node id to a location, falling back from an endpoint (which the graph never
27
+ * gives a file — `API_ENDPOINT` is a name-level construct) to the function that actually serves
28
+ * it, via the route → handler `CALLS` edge. Returns `via` non-null only on that fallback path,
29
+ * so a caller can disclose exactly what it is looking at ("handler of GET /orders", not the
30
+ * endpoint itself). Never throws — an unresolvable id degrades to `{ node: null, via: null }`,
31
+ * same discipline as `lookup.ts#resolveOneNode`. */
32
+ function resolveLocation(ctx, nodeId) {
33
+ const provider = ctx.session.provider();
34
+ const node = provider.node(nodeId);
35
+ if (node === undefined)
36
+ return { node: null, via: null };
37
+ const brief = briefNode(node);
38
+ if (brief.file !== undefined)
39
+ return { node: brief, via: null };
40
+ // No file on the node itself — walk one SERVES_API hop back to the route, then one CALLS hop
41
+ // forward to whatever it invokes. First handler with a real file wins; rule 2 says omit rather
42
+ // than guess among several, so a route with more than one CALLS target reports the first found.
43
+ for (const servesEdge of provider.incoming(nodeId, { types: SERVES_API })) {
44
+ for (const callEdge of provider.outgoing(servesEdge.from, { types: CALLS })) {
45
+ const handler = provider.node(callEdge.to);
46
+ if (handler === undefined)
47
+ continue;
48
+ const handlerBrief = briefNode(handler);
49
+ if (handlerBrief.file !== undefined) {
50
+ return { node: handlerBrief, via: `handler of ${node.name}` };
51
+ }
52
+ }
53
+ }
54
+ return { node: brief, via: null };
55
+ }
56
+ function emptyFindingGetData(id) {
57
+ return {
58
+ id,
59
+ found: false,
60
+ producedBy: null,
61
+ recordedAt: null,
62
+ category: null,
63
+ reliabilityClass: null,
64
+ finding: null,
65
+ scope: null,
66
+ recommendedAction: null,
67
+ evidence: [],
68
+ affectedComponents: [],
69
+ file: null,
70
+ line: null,
71
+ locatedVia: null,
72
+ relevantChange: null,
73
+ };
74
+ }
75
+ export async function runFindingGet(args, ctx) {
76
+ const id = requiredString(args, "id");
77
+ const base = ctx.session.provider().baseStamp();
78
+ let stored;
79
+ try {
80
+ stored = await readFinding(ctx.session.repoPath, id);
81
+ }
82
+ catch (error) {
83
+ return answer({
84
+ headline: `Could not read finding "${id}".`,
85
+ state: "refused",
86
+ data: emptyFindingGetData(id),
87
+ resolutionFloor: 0,
88
+ nameLevel: true,
89
+ ...base,
90
+ notes: [
91
+ `${error instanceof Error ? error.message : String(error)}. No finding was read, which ` +
92
+ "is not the same fact as \"none exists\".",
93
+ ],
94
+ });
95
+ }
96
+ if (stored === null) {
97
+ return answer({
98
+ headline: `No finding stored under id "${id}".`,
99
+ state: "refused",
100
+ data: emptyFindingGetData(id),
101
+ resolutionFloor: 0,
102
+ nameLevel: true,
103
+ ...base,
104
+ notes: [
105
+ `Nothing is stored at .descry/findings/${id}.json in this repository. This does not mean ` +
106
+ "the finding never existed — it may have been recorded against a different repository, " +
107
+ "or a write failure at record time was disclosed there and never reached disk (rule 7).",
108
+ ],
109
+ });
110
+ }
111
+ let finding;
112
+ try {
113
+ finding = rederive(stored.record);
114
+ }
115
+ catch (error) {
116
+ return answer({
117
+ headline: `Finding "${id}" is stored but could not be rederived.`,
118
+ state: "refused",
119
+ data: { ...emptyFindingGetData(id), producedBy: stored.producedBy, recordedAt: stored.recordedAt },
120
+ resolutionFloor: 0,
121
+ nameLevel: true,
122
+ ...base,
123
+ notes: [error instanceof Error ? error.message : String(error)],
124
+ });
125
+ }
126
+ const provider = ctx.session.provider();
127
+ const affectedComponents = [];
128
+ for (const componentId of finding.affectedComponents) {
129
+ const node = provider.node(componentId);
130
+ if (node !== undefined)
131
+ affectedComponents.push(briefNode(node));
132
+ }
133
+ const primaryId = finding.affectedComponents[0];
134
+ const located = primaryId === undefined ? { node: null, via: null } : resolveLocation(ctx, primaryId);
135
+ const notes = [
136
+ "This category was rederived from the finding's stored G4 inputs, not read from a cached " +
137
+ "string — see @descryy/ir's rederive().",
138
+ ];
139
+ if (located.via !== null) {
140
+ notes.push(`The affected component itself carries no file or line — reporting the ${located.via} instead.`);
141
+ }
142
+ else if (located.node === null || located.node.file === undefined) {
143
+ notes.push("No file or line could be resolved for this finding's affected component(s).");
144
+ }
145
+ return answer({
146
+ headline: `"${id}": ${finding.confidence}, reliability ${finding.reliabilityClass} (${stored.producedBy}, recorded ${stored.recordedAt}).`,
147
+ data: {
148
+ id,
149
+ found: true,
150
+ producedBy: stored.producedBy,
151
+ recordedAt: stored.recordedAt,
152
+ category: finding.confidence,
153
+ reliabilityClass: finding.reliabilityClass,
154
+ finding: finding.finding,
155
+ scope: finding.scope,
156
+ recommendedAction: finding.recommendedAction,
157
+ evidence: finding.evidence,
158
+ affectedComponents,
159
+ file: located.node?.file ?? null,
160
+ line: located.node?.line ?? null,
161
+ locatedVia: located.via,
162
+ relevantChange: finding.relevantChange,
163
+ },
164
+ resolutionFloor: stored.record.inputs.resolution,
165
+ nameLevel: stored.record.inputs.nameLevel,
166
+ ...base,
167
+ notes,
168
+ });
169
+ }
170
+ export async function runFindingList(args, ctx) {
171
+ const limit = optionalInteger(args, "limit", 1) ?? 20;
172
+ const base = ctx.session.provider().baseStamp();
173
+ let ids;
174
+ try {
175
+ ids = await listFindings(ctx.session.repoPath);
176
+ }
177
+ catch (error) {
178
+ return answer({
179
+ headline: "Could not list stored findings.",
180
+ state: "refused",
181
+ data: { findings: [], total: 0 },
182
+ resolutionFloor: 0,
183
+ nameLevel: true,
184
+ ...base,
185
+ notes: [error instanceof Error ? error.message : String(error)],
186
+ });
187
+ }
188
+ if (ids.length === 0) {
189
+ return answer({
190
+ headline: "No findings are stored under .descry/findings/ yet.",
191
+ state: "empty",
192
+ data: { findings: [], total: 0 },
193
+ resolutionFloor: 0,
194
+ nameLevel: true,
195
+ ...base,
196
+ notes: [
197
+ "Nothing has written a finding here yet — prove_reach is the only producer today. This " +
198
+ "is not evidence that nothing has been checked, only that nothing was persisted.",
199
+ ],
200
+ });
201
+ }
202
+ const items = [];
203
+ const skipped = [];
204
+ for (const id of ids) {
205
+ let stored;
206
+ try {
207
+ stored = await readFinding(ctx.session.repoPath, id);
208
+ }
209
+ catch {
210
+ skipped.push(id);
211
+ continue;
212
+ }
213
+ if (stored === null)
214
+ continue;
215
+ let finding;
216
+ try {
217
+ finding = rederive(stored.record);
218
+ }
219
+ catch {
220
+ skipped.push(id);
221
+ continue;
222
+ }
223
+ items.push({
224
+ id: stored.id,
225
+ producedBy: stored.producedBy,
226
+ recordedAt: stored.recordedAt,
227
+ category: finding.confidence,
228
+ finding: finding.finding,
229
+ resolution: stored.record.inputs.resolution,
230
+ nameLevel: stored.record.inputs.nameLevel,
231
+ });
232
+ }
233
+ items.sort((a, b) => b.recordedAt.localeCompare(a.recordedAt));
234
+ const { shown, detail } = capped(items, limit);
235
+ // Conservative across a mixed list, same reasoning as rule 2: the worst hop caps the whole
236
+ // reply's reliability disclosure, exactly as `minimumResolution` does within one finding.
237
+ const worstResolution = shown.reduce((min, item) => Math.min(min, item.resolution), 4);
238
+ const allNameLevel = shown.length > 0 && shown.every((item) => item.nameLevel);
239
+ const notes = [];
240
+ if (detail !== null) {
241
+ notes.push(`Showing the newest ${shown.length} of ${items.length} stored findings; total is the real count. ` +
242
+ "Ask again with a larger limit for the rest.");
243
+ }
244
+ if (skipped.length > 0) {
245
+ notes.push(`${skipped.length} stored finding(s) could not be read back and were skipped: ${skipped.join(", ")}.`);
246
+ }
247
+ return answer({
248
+ headline: `${items.length} finding(s) stored, newest first` +
249
+ (detail === null ? "." : `, showing ${shown.length}.`),
250
+ data: {
251
+ findings: shown.map(({ resolution: _resolution, nameLevel: _nameLevel, ...rest }) => rest),
252
+ total: items.length,
253
+ },
254
+ resolutionFloor: (shown.length === 0 ? 0 : worstResolution),
255
+ nameLevel: shown.length === 0 ? true : allNameLevel,
256
+ ...(detail === null ? {} : { truncated: true, truncatedDetail: detail }),
257
+ ...base,
258
+ notes,
259
+ });
260
+ }
261
+ //# sourceMappingURL=finding-lookup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finding-lookup.js","sourceRoot":"","sources":["../../src/tools/finding-lookup.ts"],"names":[],"mappings":"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"}
@@ -29,7 +29,7 @@ export interface ToolDefinition {
29
29
  readonly version: string;
30
30
  readonly inputSchema: Record<string, unknown>;
31
31
  run(args: Record<string, unknown>, ctx: ToolContext): Promise<ToolAnswer<unknown>>;
32
- /** Required iff `class === "action"` (enforced in `action-handshake.ts` and
32
+ /** Required when `class === "action"` (enforced in `action-handshake.ts` and
33
33
  * `tool-classes.test.ts`, not by the type). Returns the "willDo" text, or `undefined` when this
34
34
  * call has nothing to confirm (e.g. `questions` with no `answer`). */
35
35
  describeAction?(args: Record<string, unknown>, ctx: ToolContext): string | undefined | Promise<string | undefined>;
@@ -20,5 +20,12 @@ export interface LinkWorkspaceData {
20
20
  /** How many were asked for. Compare against `written.length`. */
21
21
  readonly requested: number;
22
22
  }
23
+ /** The confirmation `workspace`'s `link` verb asks for before writing anything: this verb is the
24
+ * one door in the merged `workspace` tool that mutates the user's tree (`.descry/config.json` in
25
+ * every listed repository), so it takes the same two-call handshake an `action` tool does
26
+ * (`action-handshake.ts`) while `analyze`/`index` stay one call. A shape too incomplete to
27
+ * describe — fewer than two repos, or a `repo` name that is not a non-empty string — has nothing
28
+ * to confirm and is left to `run()`'s own validation, which refuses it on the one call. */
29
+ export declare function describeLinkAction(args: Record<string, unknown>): string | undefined;
23
30
  export declare const linkWorkspaceTool: ToolDefinition;
24
31
  //# sourceMappingURL=link-workspace.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"link-workspace.d.ts","sourceRoot":"","sources":["../../src/tools/link-workspace.ts"],"names":[],"mappings":"AAAA;;;;uHAIuH;AAMvH,OAAO,EAA4D,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAGzG,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;uGACmG;IACnG,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAsID,eAAO,MAAM,iBAAiB,EAAE,cAe/B,CAAC"}
1
+ {"version":3,"file":"link-workspace.d.ts","sourceRoot":"","sources":["../../src/tools/link-workspace.ts"],"names":[],"mappings":"AAAA;;;;uHAIuH;AAMvH,OAAO,EAA4D,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAGzG,+DAA+D;AAC/D,MAAM,WAAW,UAAU;IACzB,4BAA4B;IAC5B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,kDAAkD;IAClD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B;uGACmG;IACnG,QAAQ,CAAC,OAAO,EAAE,SAAS,UAAU,EAAE,CAAC;IACxC,iEAAiE;IACjE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAsID;;;;;4FAK4F;AAC5F,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAcpF;AAED,eAAO,MAAM,iBAAiB,EAAE,cAe/B,CAAC"}
@@ -113,6 +113,26 @@ async function run(args, ctx) {
113
113
  data: { workspace, written, requested: repos.length },
114
114
  });
115
115
  }
116
+ /** The confirmation `workspace`'s `link` verb asks for before writing anything: this verb is the
117
+ * one door in the merged `workspace` tool that mutates the user's tree (`.descry/config.json` in
118
+ * every listed repository), so it takes the same two-call handshake an `action` tool does
119
+ * (`action-handshake.ts`) while `analyze`/`index` stay one call. A shape too incomplete to
120
+ * describe — fewer than two repos, or a `repo` name that is not a non-empty string — has nothing
121
+ * to confirm and is left to `run()`'s own validation, which refuses it on the one call. */
122
+ export function describeLinkAction(args) {
123
+ const workspace = args["workspace"];
124
+ const repos = args["repos"];
125
+ if (typeof workspace !== "string" || workspace.length === 0)
126
+ return undefined;
127
+ if (!Array.isArray(repos) || repos.length < 2)
128
+ return undefined;
129
+ const names = repos.map((entry) => typeof entry === "object" && entry !== null ? entry["repo"] : undefined);
130
+ if (!names.every((name) => typeof name === "string" && name.length > 0))
131
+ return undefined;
132
+ return (`write workspace "${workspace}" into .descry/config.json in ${repos.length} repositories ` +
133
+ `(${names.slice(0, 3).join(", ")}${names.length > 3 ? ", …" : ""}), so their graphs can be read ` +
134
+ "together. Each repository's own config is replaced with the shared workspace id.");
135
+ }
116
136
  export const linkWorkspaceTool = {
117
137
  name: "link_workspace",
118
138
  class: "stateful-read",
@@ -1 +1 @@
1
- {"version":3,"file":"link-workspace.js","sourceRoot":"","sources":["../../src/tools/link-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"link-workspace.js","sourceRoot":"","sources":["../../src/tools/link-workspace.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,17 @@
1
1
  /**
2
2
  * `propagation` — §11.9 data-flow query. Field-level answers require R3 (§11A.6:
3
3
  * shapes need a type checker); below R3, path-level only, labelled as such.
4
- * `PROPAGATES_TO` now has one narrow producer (`adapter-typescript`'s
5
- * `extractPropagatesTo`, `descry-adapters`) — single call-argument, no
6
- * cross-function chasing, by its own doc comment. Multi-hop/interprocedural
7
- * data-flow chasing does not exist in any adapter yet. An empty walk is still
8
- * attributed (edge types actually present near the node), never reported as
9
- * "reaches 0 nodes", since most graphs still have nothing on this edge type. */
4
+ * `PROPAGATES_TO`'s only producer is `adapter-typescript` (`descry-adapters`):
5
+ * a single-hop base case (`extractPropagatesTo`, one call argument) plus an
6
+ * interprocedural composition (`extractInterproceduralPropagatesTo`) that
7
+ * follows a parameter forwarded unchanged into a resolved callee's typed
8
+ * parameter, and a callee's return value substituted into the caller's local
9
+ * when the callee is an identity passthrough — bounded to four hops, refused
10
+ * on any unresolved, dynamically-dispatched or unannotated-through hop. It is
11
+ * still not open-ended data-flow analysis and it is still one language: no
12
+ * other adapter emits this edge at all. An empty walk is still attributed
13
+ * (edge types actually present near the node), never reported as "reaches 0
14
+ * nodes", since most graphs still have nothing on this edge type. */
10
15
  import { type BriefNode, type NodeCandidates, type ToolDefinition } from "./kit.ts";
11
16
  /** A node the data can reach, with how far along the walk it sits. */
12
17
  export interface ReachedNode extends BriefNode {
@@ -23,8 +28,9 @@ export interface PropagationReport {
23
28
  readonly fieldLevel: boolean;
24
29
  /** False when no edge of any walked type touches the start node. Empty `reached`
25
30
  * with `analysed: false` means the walk didn't run, not that nothing propagates —
26
- * the common case, since `PROPAGATES_TO` has only one narrow single-hop producer
27
- * (`adapter-typescript`) and most graphs still carry none of it. */
31
+ * the common case, since `PROPAGATES_TO`'s only producer is `adapter-typescript`
32
+ * (narrow and bounded even there — see the file doc comment) and most graphs
33
+ * still carry none of it. */
28
34
  readonly analysed: boolean;
29
35
  readonly edgeTypesWalked: readonly string[];
30
36
  /** The subset of `edgeTypesWalked` actually found on an edge touching this node. */
@@ -1 +1 @@
1
- {"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../../src/tools/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;gFAQgF;AAIhF,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,sEAAsE;AACtE,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;uEACmE;IACnE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B;;;yEAGqE;IACrE,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,oFAAoF;IACpF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;6EAC6E;AAC7E,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAgKjE,eAAO,MAAM,eAAe,EAAE,cAY7B,CAAC"}
1
+ {"version":3,"file":"propagation.d.ts","sourceRoot":"","sources":["../../src/tools/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;qEAaqE;AAIrE,OAAO,EAOL,KAAK,SAAS,EACd,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,sEAAsE;AACtE,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,+DAA+D;IAC/D,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B;uEACmE;IACnE,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B;;;;kCAI8B;IAC9B,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,eAAe,EAAE,SAAS,MAAM,EAAE,CAAC;IAC5C,oFAAoF;IACpF,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;6EAC6E;AAC7E,MAAM,MAAM,eAAe,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAmKjE,eAAO,MAAM,eAAe,EAAE,cAY7B,CAAC"}
@@ -1,12 +1,17 @@
1
1
  /**
2
2
  * `propagation` — §11.9 data-flow query. Field-level answers require R3 (§11A.6:
3
3
  * shapes need a type checker); below R3, path-level only, labelled as such.
4
- * `PROPAGATES_TO` now has one narrow producer (`adapter-typescript`'s
5
- * `extractPropagatesTo`, `descry-adapters`) — single call-argument, no
6
- * cross-function chasing, by its own doc comment. Multi-hop/interprocedural
7
- * data-flow chasing does not exist in any adapter yet. An empty walk is still
8
- * attributed (edge types actually present near the node), never reported as
9
- * "reaches 0 nodes", since most graphs still have nothing on this edge type. */
4
+ * `PROPAGATES_TO`'s only producer is `adapter-typescript` (`descry-adapters`):
5
+ * a single-hop base case (`extractPropagatesTo`, one call argument) plus an
6
+ * interprocedural composition (`extractInterproceduralPropagatesTo`) that
7
+ * follows a parameter forwarded unchanged into a resolved callee's typed
8
+ * parameter, and a callee's return value substituted into the caller's local
9
+ * when the callee is an identity passthrough — bounded to four hops, refused
10
+ * on any unresolved, dynamically-dispatched or unannotated-through hop. It is
11
+ * still not open-ended data-flow analysis and it is still one language: no
12
+ * other adapter emits this edge at all. An empty walk is still attributed
13
+ * (edge types actually present near the node), never reported as "reaches 0
14
+ * nodes", since most graphs still have nothing on this edge type. */
10
15
  import { dataFlowFrom, DATA_FLOW_EDGE_TYPES } from "@descryy/core";
11
16
  import { answer, briefNode, optionalInteger, optionalString, optionalStringArray, ToolInputError, } from "./kit.js";
12
17
  import { resolveOneNode } from "./lookup.js";
@@ -27,10 +32,12 @@ const SCHEMA = {
27
32
  type: "array",
28
33
  items: { type: "string" },
29
34
  description: "Restrict the walk. Defaults to PROPAGATES_TO, READS, ASSIGNS and RETURNS — the four that " +
30
- "carry data rather than control. Only one shipped adapter produces PROPAGATES_TO today, and " +
31
- "only narrowly (single call-argument, no cross-function chasing); no adapter does " +
32
- "multi-hop/interprocedural data-flow chasing yet, so in most repos this walk still runs " +
33
- "over the other three; an empty result is disclosed as such rather than reported as " +
35
+ "carry data rather than control. Only one shipped adapter produces PROPAGATES_TO today " +
36
+ "(one language adapter): a single call-argument base case, plus an interprocedural " +
37
+ "composition across resolved calls, bounded to four hops and refused on any unresolved or " +
38
+ "dynamically-dispatched hop — not open-ended data-flow chasing, and no other adapter emits " +
39
+ "this edge at all, so in most repos this walk still runs over " +
40
+ "the other three; an empty result is disclosed as such rather than reported as " +
34
41
  "\"reaches 0 nodes\".",
35
42
  },
36
43
  maxDepth: { type: "integer", minimum: 1, description: "Hop limit. Default unbounded." },
@@ -103,11 +110,12 @@ async function run(args, ctx) {
103
110
  if (!analysed) {
104
111
  notes.push(`None of the requested edge types (${walked.join(", ")}) appear on any edge touching this node, ` +
105
112
  "so the walk had nothing to follow. That is not a finding that no data leaves this symbol: " +
106
- "no adapter configured here emitting these edge types at all (PROPAGATES_TO's only shipped " +
107
- "producer today is narrow single-hop and may simply not have fired here), a " +
108
- "graph built without the source that would carry them, and a symbol that genuinely " +
109
- "propagates nothing are three different situations. This probe is local to one node and " +
110
- "cannot tell them apart — it reports that the walk did not run rather than choosing between them.");
113
+ "no adapter configured here emitting these edge types at all (PROPAGATES_TO has exactly one " +
114
+ "shipped producer today, narrow and bounded even there, which may simply not " +
115
+ "have fired here), a graph built without the source that would carry them, and a symbol " +
116
+ "that genuinely propagates nothing are three different situations. This probe is local to " +
117
+ "one node and cannot tell them apart — it reports that the walk did not run rather than " +
118
+ "choosing between them.");
111
119
  }
112
120
  const fieldLevel = flow.stamp.resolutionFloor >= 3;
113
121
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"propagation.js","sourceRoot":"","sources":["../../src/tools/propagation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"propagation.js","sourceRoot":"","sources":["../../src/tools/propagation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;qEAaqE;AAErE,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAEnE,OAAO,EACL,MAAM,EACN,SAAS,EACT,eAAe,EACf,cAAc,EACd,mBAAmB,EACnB,cAAc,GAKf,MAAM,UAAU,CAAC;AA+BlB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;QACvE,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,0FAA0F;gBAC1F,4CAA4C;SAC/C;QACD,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,+EAA+E;SAC7F;QACD,SAAS,EAAE;YACT,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,WAAW,EACT,2FAA2F;gBAC3F,wFAAwF;gBACxF,oFAAoF;gBACpF,2FAA2F;gBAC3F,4FAA4F;gBAC5F,+DAA+D;gBAC/D,gFAAgF;gBAChF,sBAAsB;SACzB;QACD,QAAQ,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,EAAE,+BAA+B,EAAE;QACvF,KAAK,EAAE;YACL,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,WAAW,EACT,uFAAuF;gBACvF,yFAAyF;gBACzF,yCAAyC;SAC5C;KACF;IACD,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAEX,KAAK,UAAU,GAAG,CAChB,IAA6B,EAC7B,GAAgB;IAEhB,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,IAAI,GAAG,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEtD,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvE,MAAM,IAAI,cAAc,CAAC,0CAA0C,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;QACxB,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;QAChD,OAAO,MAAM,CAAkB;YAC7B,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,KAAK,EAAE,SAAS;YAChB,SAAS,EAAE,IAAI;YACf,eAAe,EAAE,CAAC;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;YACrC,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,IAAI,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE;SACtD,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,yBAAyB,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACzD,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;QAC/D,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC;KAClE,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAC9E,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,IAAI,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CACR,GAAG,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,8DAA8D;YAC5F,gBAAgB,KAAK,GAAG,CAC3B,CAAC;IACJ,CAAC;IAED,mFAAmF;IACnF,uFAAuF;IACvF,MAAM,MAAM,GAAsB,SAAS,IAAI,oBAAoB,CAAC;IACpE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI;QACjB,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACjD,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;KAClD,EAAE,CAAC;QACF,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzD,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,GAAG,CAAC,CAAC;IAElC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,KAAK,CAAC,IAAI,CACR,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,+BAA+B,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,GAAG;YACxG,qCAAqC,CACxC,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,KAAK,CAAC,IAAI,CACR,qCAAqC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,2CAA2C;YAC/F,4FAA4F;YAC5F,6FAA6F;YAC7F,8EAA8E;YAC9E,yFAAyF;YACzF,2FAA2F;YAC3F,yFAAyF;YACzF,wBAAwB,CAC3B,CAAC;IACJ,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;IACnD,OAAO;QACL,MAAM,EAAE;YACN,GAAG,IAAI;YACP,IAAI,EAAE;gBACJ,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;gBAC3B,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;oBAC7B,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC;oBACxB,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBACtC,CAAC,CAAC;gBACH,YAAY,EAAE,OAAO,CAAC,MAAM;gBAC5B,UAAU;gBACV;6GAC6F;gBAC7F,QAAQ;gBACR,eAAe,EAAE,MAAM;gBACvB,gBAAgB,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,EAAE;aACtC;YACD,KAAK;SACN;QACD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAgB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,SAAkB,EAAE,CAAC;QACzG,6EAA6E;QAC7E,4EAA4E;QAC5E,4EAA4E;QAC5E,SAAS,EAAE,KAAK;QAChB,6EAA6E;QAC7E,gFAAgF;QAChF,4DAA4D;QAC5D,QAAQ,EAAE,CAAC,QAAQ;YACjB,CAAC,CAAC,oBAAoB,KAAK,CAAC,IAAI,CAAC,IAAI,wCAAwC;gBAC3E,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,mEAAmE;YACxF,CAAC,CAAC,UAAU;gBACV,CAAC,CAAC,aAAa,KAAK,CAAC,IAAI,CAAC,IAAI,YAAY,OAAO,CAAC,MAAM,2BAA2B;gBACnF,CAAC,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,cAAc,OAAO,CAAC,MAAM,2CAA2C;oBACzF,gDAAgD;KACvD,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,eAAe,GAAmB;IAC7C,IAAI,EAAE,aAAa;IACnB,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,8BAA8B;IACrC,WAAW,EACT,2FAA2F;QAC3F,2FAA2F;QAC3F,0CAA0C;IAC5C,WAAW,EAAE,MAA4C;IACzD,GAAG;CACJ,CAAC"}
@@ -67,6 +67,14 @@ export interface ProveReachReport {
67
67
  readonly independentSignalTypes: number;
68
68
  readonly directMechanismEvidence: boolean;
69
69
  readonly hasRuntimeEvidence: boolean;
70
+ /** This drive's own identity — mints once per confirming call, threads through to
71
+ * the stored finding's `executionId` so the two can be joined later. */
72
+ readonly executionId: string;
73
+ /** The id `writeFinding` (`../findings/store.ts`) stored this conclusion under,
74
+ * readable back via `readFinding` in a later session — or `null` when the write
75
+ * itself failed (see `notes`); the conclusion above is still this call's real
76
+ * answer either way, only its durability changed. */
77
+ readonly findingId: string | null;
70
78
  } | null;
71
79
  }
72
80
  export type ProveReachData = ProveReachReport | NodeCandidates;
@@ -1 +1 @@
1
- {"version":3,"file":"prove-reach.d.ts","sourceRoot":"","sources":["../../src/tools/prove-reach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAeH,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAG1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IACpE,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,oBAAoB,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACxH;+FAC2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC;8EAC0E;IAC1E,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;KACtC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAqQ/D,eAAO,MAAM,cAAc,EAAE,cAa5B,CAAC"}
1
+ {"version":3,"file":"prove-reach.d.ts","sourceRoot":"","sources":["../../src/tools/prove-reach.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AAmBH,OAAO,EAML,KAAK,WAAW,EACjB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,+BAA+B,CAAC;AAI1E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAML,KAAK,SAAS,EACd,KAAK,cAAc,EAEnB,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAIlB,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,QAAQ,GAAG,YAAY,GAAG,YAAY,CAAC;IACpE,QAAQ,CAAC,KAAK,EAAE,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC7E,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,SAAS,SAAS,EAAE,CAAC;IAC5C,QAAQ,CAAC,QAAQ,EAAE;QAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;QAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,oBAAoB,EAAE,CAAA;KAAE,GAAG,IAAI,CAAC;IACxH;+FAC2F;IAC3F,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,CAAC;IACnC;8EAC0E;IAC1E,QAAQ,CAAC,UAAU,EAAE;QACnB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;QAC1B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;QAClC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAC5B,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;QACxC,QAAQ,CAAC,uBAAuB,EAAE,OAAO,CAAC;QAC1C,QAAQ,CAAC,kBAAkB,EAAE,OAAO,CAAC;QACrC;iFACyE;QACzE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAC7B;;;8DAGsD;QACtD,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;KACnC,GAAG,IAAI,CAAC;CACV;AAED,MAAM,MAAM,cAAc,GAAG,gBAAgB,GAAG,cAAc,CAAC;AAuV/D,eAAO,MAAM,cAAc,EAAE,cAa5B,CAAC"}