@descryy/mcp 0.2.0 → 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.
Files changed (160) hide show
  1. package/dist/bin/descry-mcp.js +6 -1
  2. package/dist/bin/descry-mcp.js.map +1 -1
  3. package/dist/browser/driver.d.ts +236 -0
  4. package/dist/browser/driver.d.ts.map +1 -0
  5. package/dist/browser/driver.js +70 -0
  6. package/dist/browser/driver.js.map +1 -0
  7. package/dist/browser/evidence.d.ts +47 -0
  8. package/dist/browser/evidence.d.ts.map +1 -0
  9. package/dist/browser/evidence.js +55 -0
  10. package/dist/browser/evidence.js.map +1 -0
  11. package/dist/browser/fake-driver.d.ts +58 -0
  12. package/dist/browser/fake-driver.d.ts.map +1 -0
  13. package/dist/browser/fake-driver.js +161 -0
  14. package/dist/browser/fake-driver.js.map +1 -0
  15. package/dist/browser/graph-write.d.ts +86 -0
  16. package/dist/browser/graph-write.d.ts.map +1 -0
  17. package/dist/browser/graph-write.js +135 -0
  18. package/dist/browser/graph-write.js.map +1 -0
  19. package/dist/browser/playwright-driver.d.ts +65 -0
  20. package/dist/browser/playwright-driver.d.ts.map +1 -0
  21. package/dist/browser/playwright-driver.js +359 -0
  22. package/dist/browser/playwright-driver.js.map +1 -0
  23. package/dist/browser/provider.d.ts +49 -0
  24. package/dist/browser/provider.d.ts.map +1 -0
  25. package/dist/browser/provider.js +28 -0
  26. package/dist/browser/provider.js.map +1 -0
  27. package/dist/browser/registry.d.ts +182 -0
  28. package/dist/browser/registry.d.ts.map +1 -0
  29. package/dist/browser/registry.js +215 -0
  30. package/dist/browser/registry.js.map +1 -0
  31. package/dist/browser/scenario-resolve.d.ts +62 -0
  32. package/dist/browser/scenario-resolve.d.ts.map +1 -0
  33. package/dist/browser/scenario-resolve.js +127 -0
  34. package/dist/browser/scenario-resolve.js.map +1 -0
  35. package/dist/browser/scenario-runner.d.ts +113 -0
  36. package/dist/browser/scenario-runner.d.ts.map +1 -0
  37. package/dist/browser/scenario-runner.js +315 -0
  38. package/dist/browser/scenario-runner.js.map +1 -0
  39. package/dist/browser/stack-parser.d.ts +43 -0
  40. package/dist/browser/stack-parser.d.ts.map +1 -0
  41. package/dist/browser/stack-parser.js +112 -0
  42. package/dist/browser/stack-parser.js.map +1 -0
  43. package/dist/browser/tool-support.d.ts +113 -0
  44. package/dist/browser/tool-support.d.ts.map +1 -0
  45. package/dist/browser/tool-support.js +181 -0
  46. package/dist/browser/tool-support.js.map +1 -0
  47. package/dist/index.d.ts +11 -0
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +10 -0
  50. package/dist/index.js.map +1 -1
  51. package/dist/render.d.ts +112 -10
  52. package/dist/render.d.ts.map +1 -1
  53. package/dist/render.js +79 -13
  54. package/dist/render.js.map +1 -1
  55. package/dist/scenarios/index.d.ts +4 -0
  56. package/dist/scenarios/index.d.ts.map +1 -0
  57. package/dist/scenarios/index.js +4 -0
  58. package/dist/scenarios/index.js.map +1 -0
  59. package/dist/scenarios/parse.d.ts +32 -0
  60. package/dist/scenarios/parse.d.ts.map +1 -0
  61. package/dist/scenarios/parse.js +199 -0
  62. package/dist/scenarios/parse.js.map +1 -0
  63. package/dist/scenarios/scenario.d.ts +115 -0
  64. package/dist/scenarios/scenario.d.ts.map +1 -0
  65. package/dist/scenarios/scenario.js +41 -0
  66. package/dist/scenarios/scenario.js.map +1 -0
  67. package/dist/scenarios/storage.d.ts +51 -0
  68. package/dist/scenarios/storage.d.ts.map +1 -0
  69. package/dist/scenarios/storage.js +93 -0
  70. package/dist/scenarios/storage.js.map +1 -0
  71. package/dist/server.d.ts.map +1 -1
  72. package/dist/server.js +6 -3
  73. package/dist/server.js.map +1 -1
  74. package/dist/session.d.ts +68 -0
  75. package/dist/session.d.ts.map +1 -1
  76. package/dist/session.js +89 -0
  77. package/dist/session.js.map +1 -1
  78. package/dist/tools/analyze.d.ts +41 -1
  79. package/dist/tools/analyze.d.ts.map +1 -1
  80. package/dist/tools/analyze.js +81 -8
  81. package/dist/tools/analyze.js.map +1 -1
  82. package/dist/tools/browser-click.d.ts +36 -0
  83. package/dist/tools/browser-click.d.ts.map +1 -0
  84. package/dist/tools/browser-click.js +117 -0
  85. package/dist/tools/browser-click.js.map +1 -0
  86. package/dist/tools/browser-close-session.d.ts +24 -0
  87. package/dist/tools/browser-close-session.d.ts.map +1 -0
  88. package/dist/tools/browser-close-session.js +63 -0
  89. package/dist/tools/browser-close-session.js.map +1 -0
  90. package/dist/tools/browser-fill.d.ts +49 -0
  91. package/dist/tools/browser-fill.d.ts.map +1 -0
  92. package/dist/tools/browser-fill.js +138 -0
  93. package/dist/tools/browser-fill.js.map +1 -0
  94. package/dist/tools/browser-navigate.d.ts +32 -0
  95. package/dist/tools/browser-navigate.d.ts.map +1 -0
  96. package/dist/tools/browser-navigate.js +103 -0
  97. package/dist/tools/browser-navigate.js.map +1 -0
  98. package/dist/tools/browser-run-scenario.d.ts +54 -0
  99. package/dist/tools/browser-run-scenario.d.ts.map +1 -0
  100. package/dist/tools/browser-run-scenario.js +228 -0
  101. package/dist/tools/browser-run-scenario.js.map +1 -0
  102. package/dist/tools/browser-save-scenario.d.ts +44 -0
  103. package/dist/tools/browser-save-scenario.d.ts.map +1 -0
  104. package/dist/tools/browser-save-scenario.js +298 -0
  105. package/dist/tools/browser-save-scenario.js.map +1 -0
  106. package/dist/tools/browser-snapshot.d.ts +60 -0
  107. package/dist/tools/browser-snapshot.d.ts.map +1 -0
  108. package/dist/tools/browser-snapshot.js +139 -0
  109. package/dist/tools/browser-snapshot.js.map +1 -0
  110. package/dist/tools/browser-start-session.d.ts +43 -0
  111. package/dist/tools/browser-start-session.d.ts.map +1 -0
  112. package/dist/tools/browser-start-session.js +272 -0
  113. package/dist/tools/browser-start-session.js.map +1 -0
  114. package/dist/tools/browser-type.d.ts +48 -0
  115. package/dist/tools/browser-type.d.ts.map +1 -0
  116. package/dist/tools/browser-type.js +136 -0
  117. package/dist/tools/browser-type.js.map +1 -0
  118. package/dist/tools/contracts.d.ts +15 -0
  119. package/dist/tools/contracts.d.ts.map +1 -1
  120. package/dist/tools/contracts.js +14 -3
  121. package/dist/tools/contracts.js.map +1 -1
  122. package/dist/tools/git-diff.d.ts.map +1 -1
  123. package/dist/tools/git-diff.js +85 -6
  124. package/dist/tools/git-diff.js.map +1 -1
  125. package/dist/tools/impact.d.ts +9 -0
  126. package/dist/tools/impact.d.ts.map +1 -1
  127. package/dist/tools/impact.js +3 -3
  128. package/dist/tools/impact.js.map +1 -1
  129. package/dist/tools/index.d.ts +9 -0
  130. package/dist/tools/index.d.ts.map +1 -1
  131. package/dist/tools/index.js +27 -0
  132. package/dist/tools/index.js.map +1 -1
  133. package/dist/tools/kit.d.ts +10 -1
  134. package/dist/tools/kit.d.ts.map +1 -1
  135. package/dist/tools/kit.js +2 -0
  136. package/dist/tools/kit.js.map +1 -1
  137. package/dist/tools/observe-runtime.d.ts +113 -19
  138. package/dist/tools/observe-runtime.d.ts.map +1 -1
  139. package/dist/tools/observe-runtime.js +293 -52
  140. package/dist/tools/observe-runtime.js.map +1 -1
  141. package/dist/tools/observe-tests.d.ts +125 -0
  142. package/dist/tools/observe-tests.d.ts.map +1 -0
  143. package/dist/tools/observe-tests.js +313 -0
  144. package/dist/tools/observe-tests.js.map +1 -0
  145. package/dist/tools/pr-analysis.d.ts +11 -0
  146. package/dist/tools/pr-analysis.d.ts.map +1 -1
  147. package/dist/tools/pr-analysis.js +3 -3
  148. package/dist/tools/pr-analysis.js.map +1 -1
  149. package/dist/tools/pre-push.d.ts +77 -0
  150. package/dist/tools/pre-push.d.ts.map +1 -0
  151. package/dist/tools/pre-push.js +250 -0
  152. package/dist/tools/pre-push.js.map +1 -0
  153. package/dist/tools/questions.d.ts.map +1 -1
  154. package/dist/tools/questions.js +41 -16
  155. package/dist/tools/questions.js.map +1 -1
  156. package/dist/tools/verification-status.d.ts +22 -0
  157. package/dist/tools/verification-status.d.ts.map +1 -1
  158. package/dist/tools/verification-status.js +51 -5
  159. package/dist/tools/verification-status.js.map +1 -1
  160. package/package.json +14 -13
@@ -0,0 +1,250 @@
1
+ /**
2
+ * `pre_push` — one call where a developer about to push would otherwise make four.
3
+ *
4
+ * The UAT's own verdict was that in agentic use the gap is composition, not
5
+ * correctness: `scope`, `pr_analysis`, `contracts` and `validate` each answer
6
+ * well, and nothing puts them together at the moment someone actually wants
7
+ * them together. This is that composition, under the tightest budget the
8
+ * scoping tiers define.
9
+ *
10
+ * ## What "under the pre-push tier" actually means, per constituent
11
+ *
12
+ * The plan this comes from said the tier was "honoured by `scope`, `pr_analysis`
13
+ * and `contracts`". Two of those are true and the third is not, and the
14
+ * difference decides what this tool can pass down:
15
+ *
16
+ * - `scope` and `pr_analysis` take a `trigger`, and apply
17
+ * `NODE_BUDGETS["pre-push"]` (200 nodes) to their traversal. Passed straight
18
+ * through.
19
+ * - `contracts` has **no `trigger` and no node budget**, because it does not
20
+ * traverse — it compares every endpoint in the graph. Its expensive half is
21
+ * the shape comparison, and its own schema already names the answer:
22
+ * `pathsOnly` is "the honest choice for a pre-push run". So that is what the
23
+ * tier means here, and this tool sets it.
24
+ * - `validate` has no traversal budget either; it is bounded by `maxFindings`,
25
+ * which this tool tightens rather than leaving at its default 25.
26
+ *
27
+ * ## Why findings are grouped by source and not merged into one ranking
28
+ *
29
+ * A single global ranking would need to say that a contract mismatch outranks
30
+ * an unset environment variable, or the reverse. Descry has no model that
31
+ * supports either claim, and inventing one would be a judgement presented as a
32
+ * measurement — the same reason `contracts` ranks by evidence strength rather
33
+ * than severity. So each source contributes its own top few, and the envelope
34
+ * says plainly that the sources are not ranked against each other.
35
+ *
36
+ * That is still one call, one envelope, and a short read. It just does not
37
+ * pretend to a comparison nobody has made.
38
+ *
39
+ * ## Blocking versus informational
40
+ *
41
+ * `blockingTotal` counts `contracts` and `validate` findings only. Those are
42
+ * claims that something is *wrong*. `scope` and `pr_analysis` answer "what does
43
+ * this change touch" — real, useful, and not a defect, so counting them would
44
+ * make every change with a blast radius look like a failure. `descry check`
45
+ * exits non-zero on `blockingTotal`, which is why the line has to be drawn
46
+ * here rather than left to the caller.
47
+ *
48
+ * ## Class and tier
49
+ *
50
+ * `read` — it runs four read tools and writes nothing. `evidence` — it reports
51
+ * what those four found and draws no conclusion of its own.
52
+ */
53
+ import { NODE_BUDGETS } from "@descryy/core";
54
+ import { contractsTool } from "./contracts.js";
55
+ import { answer, optionalInteger, optionalString, optionalStringArray, } from "./kit.js";
56
+ import { prAnalysisTool } from "./pr-analysis.js";
57
+ import { scopeTool } from "./scope.js";
58
+ import { validateTool } from "./validate.js";
59
+ /** How many items each source contributes to the envelope. Matches `PROMINENCE_CUTOFFS.top`. */
60
+ const PER_SOURCE = 3;
61
+ /** `validate`'s own default is 25; a blocked developer reads far fewer. */
62
+ const VALIDATE_MAX_FINDINGS = 10;
63
+ const SCHEMA = {
64
+ type: "object",
65
+ properties: {
66
+ files: {
67
+ type: "array",
68
+ items: { type: "string" },
69
+ description: "Repository-relative paths you are about to push. These seed the blast radius and scope " +
70
+ "the environment check. Required — without them there is nothing to be pre-push about.",
71
+ },
72
+ base: {
73
+ type: "string",
74
+ description: "Git ref to compare against, three-dot. Required by pr_analysis, which has no defensible " +
75
+ "default base and says so; without it that one section is reported as refused and the other " +
76
+ "three still run.",
77
+ },
78
+ perSource: {
79
+ type: "integer",
80
+ minimum: 1,
81
+ description: `How many items each source contributes. Default ${PER_SOURCE}.`,
82
+ },
83
+ },
84
+ required: ["files"],
85
+ additionalProperties: false,
86
+ };
87
+ function unwrap(reply) {
88
+ return {
89
+ state: reply.state ?? "ok",
90
+ headline: reply.headline,
91
+ notes: reply.result.notes,
92
+ data: (reply.result.data ?? {}),
93
+ resolutionFloor: reply.result.stamp.resolutionFloor,
94
+ };
95
+ }
96
+ function listOf(data, key) {
97
+ const value = data[key];
98
+ return Array.isArray(value) ? value : [];
99
+ }
100
+ async function run(args, ctx) {
101
+ const files = optionalStringArray(args, "files") ?? [];
102
+ const perSource = optionalInteger(args, "perSource", 1) ?? PER_SOURCE;
103
+ const baseRef = optionalString(args, "base");
104
+ const base = ctx.session.provider().baseStamp();
105
+ const nodeBudget = NODE_BUDGETS["pre-push"];
106
+ const notes = [
107
+ "Four tools in one call: scope, pr_analysis, contracts and validate, under the pre-push node " +
108
+ `budget (${nodeBudget}). Each still answers on its own; this composes them for the moment ` +
109
+ "someone is about to push.",
110
+ "Sources are NOT ranked against each other. Whether a contract mismatch outranks an unset " +
111
+ "environment variable is a judgement Descry has no model for, so each source contributes its " +
112
+ "own top few and the totals say what they were selected from.",
113
+ "blockingTotal counts contracts and validate findings only. scope and pr_analysis answer what a " +
114
+ "change touches, which is not a defect — counting them would make every change with a blast " +
115
+ "radius look like a failure.",
116
+ ];
117
+ if (files.length === 0) {
118
+ return answer({
119
+ headline: "No files were named, so there is nothing to check before a push.",
120
+ state: "refused",
121
+ nameLevel: true,
122
+ resolutionFloor: 0,
123
+ commitSha: base.commitSha,
124
+ graphBuiltAt: base.graphBuiltAt,
125
+ irSchemaVersion: base.irSchemaVersion,
126
+ commitSpread: base.commitSpread,
127
+ notes,
128
+ data: { files: [], sections: [], blockingTotal: 0, nodeBudget },
129
+ });
130
+ }
131
+ // Sequential rather than concurrent, deliberately: these share one SQLite
132
+ // connection through the session, and the driver is synchronous. Racing them
133
+ // would buy nothing and interleave progress messages into nonsense.
134
+ const sections = [];
135
+ const collectedNotes = [];
136
+ // The composite's floor is the weakest of whatever actually ran. Reporting
137
+ // the strongest, or a default, would let one well-resolved section vouch for
138
+ // three that were not -- the same leaked-default failure this repository's
139
+ // own UAT caught on a refusal path.
140
+ const floors = [];
141
+ const runOne = async (source, tool, toolArgs, pick, blocking) => {
142
+ ctx.progress(`Running ${source}`);
143
+ let sub;
144
+ try {
145
+ sub = unwrap(await tool.run(toolArgs, ctx));
146
+ }
147
+ catch (error) {
148
+ // One constituent failing must not take the other three with it: a
149
+ // developer mid-push is better served by three answers and a named gap
150
+ // than by nothing at all.
151
+ sections.push({
152
+ source,
153
+ state: "failed",
154
+ total: 0,
155
+ shown: [],
156
+ blocking,
157
+ headline: `${source} failed: ${error instanceof Error ? error.message : String(error)}`,
158
+ });
159
+ return;
160
+ }
161
+ floors.push(sub.resolutionFloor);
162
+ const items = pick(sub.data);
163
+ sections.push({
164
+ source,
165
+ state: sub.state,
166
+ total: items.length,
167
+ shown: items.slice(0, perSource),
168
+ blocking,
169
+ headline: sub.headline,
170
+ });
171
+ for (const note of sub.notes)
172
+ collectedNotes.push(`${source}: ${note}`);
173
+ };
174
+ await runOne("scope", scopeTool, { files, trigger: "pre-push" }, (data) => listOf(data, "affected"), false);
175
+ if (baseRef === undefined) {
176
+ // Reported, not skipped silently, and not as a failure either: pr_analysis
177
+ // requires a base and deliberately refuses to invent one ("there is no
178
+ // defensible default base"). Borrowing this tool's own working-tree default
179
+ // would manufacture exactly the guess that tool declines to make.
180
+ sections.push({
181
+ source: "pr_analysis",
182
+ state: "refused",
183
+ total: 0,
184
+ shown: [],
185
+ blocking: false,
186
+ headline: "pr_analysis needs a base ref to diff against and has no default. Pass \"base\" to include it.",
187
+ });
188
+ }
189
+ else {
190
+ // Stated because it is not obvious and it was not obvious in a real run:
191
+ // called with two files and a three-commit base, the envelope said "across
192
+ // 2 changed file(s)" while this section said "across 25". Both are right --
193
+ // pr_analysis takes no file list, by design, and derives its own from
194
+ // base...head -- but two sections describing different change sets side by
195
+ // side read as one answer about one change unless the reply says otherwise.
196
+ notes.push("pr_analysis scopes itself from the base diff (" +
197
+ `${baseRef}...HEAD), not from the files given here: it takes no file list, deliberately, ` +
198
+ "because the diff is what defines a change to review. So its section may describe a wider " +
199
+ "or narrower set of files than the other three, which use the list you passed.");
200
+ await runOne("pr_analysis", prAnalysisTool, { base: baseRef, trigger: "pre-push" }, (data) => listOf(data, "untested"), false);
201
+ }
202
+ await runOne("contracts", contractsTool,
203
+ // pathsOnly is what the pre-push tier means for a tool with no traversal to
204
+ // budget — see the module header.
205
+ { pathsOnly: true }, (data) => listOf(data, "findings"), true);
206
+ await runOne("validate", validateTool, { files, maxFindings: VALIDATE_MAX_FINDINGS }, (data) => listOf(data, "findings"), true);
207
+ const blockingTotal = sections
208
+ .filter((section) => section.blocking)
209
+ .reduce((sum, section) => sum + section.total, 0);
210
+ const failed = sections.filter((section) => section.state === "failed");
211
+ if (failed.length > 0) {
212
+ notes.push(`${failed.length} of 4 constituent(s) failed and contributed nothing: ` +
213
+ `${failed.map((f) => f.source).join(", ")}. The remaining sections are complete; this ` +
214
+ "reply is not.");
215
+ }
216
+ return answer({
217
+ headline: blockingTotal === 0
218
+ ? `No contract or environment findings across ${files.length} changed file(s).`
219
+ : `${blockingTotal} blocking finding(s) across ${files.length} changed file(s) — see the ` +
220
+ "contracts and validate sections.",
221
+ // `empty` is earned here: all four ran against a real graph and found
222
+ // nothing blocking. A constituent that refused makes that untrue, so the
223
+ // state follows the weakest link rather than the happy path.
224
+ state: failed.length > 0 ? "failed" : blockingTotal > 0 ? "ok" : "empty",
225
+ data: { files, sections, blockingTotal, nodeBudget },
226
+ resolutionFloor: (floors.length === 0 ? 0 : Math.min(...floors)),
227
+ nameLevel: true,
228
+ commitSha: base.commitSha,
229
+ graphBuiltAt: base.graphBuiltAt,
230
+ irSchemaVersion: base.irSchemaVersion,
231
+ commitSpread: base.commitSpread,
232
+ notes: [...notes, ...collectedNotes],
233
+ });
234
+ }
235
+ export const prePushTool = {
236
+ name: "pre_push",
237
+ class: "read",
238
+ tier: "evidence",
239
+ version: "1.0.0",
240
+ title: "Everything worth knowing before you push, in one call",
241
+ description: "Runs scope, pr_analysis, contracts and validate together under the pre-push node budget and " +
242
+ "returns one short envelope: what your change touches, what it touches that has no test, which " +
243
+ "API contracts break, and which environment claims do not hold. Each source contributes its own " +
244
+ "top few — they are deliberately not ranked against each other, because Descry has no model for " +
245
+ "whether a contract mismatch outranks an unset variable. blockingTotal counts only the two " +
246
+ "sources that report defects, and is what a git hook should branch on.",
247
+ inputSchema: SCHEMA,
248
+ run,
249
+ };
250
+ //# sourceMappingURL=pre-push.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pre-push.js","sourceRoot":"","sources":["../../src/tools/pre-push.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/tools/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yFAAyF;IACzF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AAyPD,eAAO,MAAM,aAAa,EAAE,cAoB3B,CAAC"}
1
+ {"version":3,"file":"questions.d.ts","sourceRoot":"","sources":["../../src/tools/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAGH,OAAO,KAAK,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AACxE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAGjD,OAAO,EAOL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB;;;;;;GAMG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,EAAE,aAAa,GAAG,IAAI,CAAC;IACxC;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,SAAS,eAAe,EAAE,CAAC;IAC/C,0EAA0E;IAC1E,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC;;;;;OAKG;IACH,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,yFAAyF;IACzF,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,6DAA6D;IAC7D,QAAQ,CAAC,OAAO,EAAE,iBAAiB,CAAC;CACrC;AA6RD,eAAO,MAAM,aAAa,EAAE,cAoB3B,CAAC"}
@@ -94,6 +94,37 @@ const SCHEMA = {
94
94
  },
95
95
  additionalProperties: false,
96
96
  };
97
+ /**
98
+ * The `answer` argument, read and validated in one place.
99
+ *
100
+ * Extracted so `describeAction` can call it too: an `action` tool's mint must
101
+ * refuse what its run would refuse, or it asks a developer to confirm a
102
+ * sentence with no referent. The instance that made this concrete here is the
103
+ * worst one this tool can produce — a `scope: "workspace"` answer in a
104
+ * repository with no workspace was described as *"reaching EVERY repository in
105
+ * this workspace"* and then refused on the second call, after the
106
+ * confirmation. Ruled in
107
+ * `documents/decisions-inbox/DEC-387.md`.
108
+ *
109
+ * Reads the session only for `config.workspace`; writes nothing, so it is safe
110
+ * to run at mint time, outside the call budget.
111
+ */
112
+ function readAnswer(answerArg, session) {
113
+ if (typeof answerArg !== "object" || answerArg === null) {
114
+ throw new ToolInputError('"answer" must be an object');
115
+ }
116
+ const a = answerArg;
117
+ const blockedBy = requiredString(a, "blockedBy");
118
+ const value = requiredString(a, "value");
119
+ const environment = optionalString(a, "environment");
120
+ const confirmedBy = optionalString(a, "confirmedBy") ?? "user";
121
+ const scope = optionalEnum(a, "scope", ["repo", "workspace"]) ?? "repo";
122
+ if (scope === "workspace" && session.config.workspace === undefined) {
123
+ throw new ToolInputError('scope "workspace" needs a configured workspace, and this repository has none. Call ' +
124
+ '"link_workspace" first, or record this answer with scope "repo".');
125
+ }
126
+ return { blockedBy, value, environment, confirmedBy, scope };
127
+ }
97
128
  async function run(args, ctx) {
98
129
  const { session } = ctx;
99
130
  const notes = [];
@@ -104,16 +135,7 @@ async function run(args, ctx) {
104
135
  if (typeof answerArg !== "object" || answerArg === null) {
105
136
  throw new ToolInputError('"answer" must be an object');
106
137
  }
107
- const a = answerArg;
108
- const blockedBy = requiredString(a, "blockedBy");
109
- const value = requiredString(a, "value");
110
- const environment = optionalString(a, "environment");
111
- const confirmedBy = optionalString(a, "confirmedBy") ?? "user";
112
- const scope = optionalEnum(a, "scope", ["repo", "workspace"]) ?? "repo";
113
- if (scope === "workspace" && session.config.workspace === undefined) {
114
- throw new ToolInputError('scope "workspace" needs a configured workspace, and this repository has none. Call ' +
115
- '"link_workspace" first, or record this answer with scope "repo".');
116
- }
138
+ const { blockedBy, value, environment, confirmedBy, scope } = readAnswer(answerArg, session);
117
139
  // "Against what" (see ConfirmedFact.confirmedAtCommit) — the repo's own
118
140
  // commit at the moment this answer is given, so a later mint can tell
119
141
  // whether the code has moved since a human said this value was correct.
@@ -235,13 +257,16 @@ async function run(args, ctx) {
235
257
  * `ConfirmedFact` describes itself, so `resolveActionDispatch` mints a token
236
258
  * for that call alone.
237
259
  */
238
- function describeAction(args) {
239
- const a = args["answer"];
240
- if (typeof a !== "object" || a === null)
241
- return undefined;
242
- const { blockedBy, value, environment, scope } = a;
243
- if (typeof blockedBy !== "string" || typeof value !== "string")
260
+ function describeAction(args, ctx) {
261
+ const answerArg = args["answer"];
262
+ // No `answer` at all is a pure read of the open-question queue: nothing to
263
+ // confirm, and gating it would make the tool unable to answer the first
264
+ // question asked of it. Every other shape goes through the same reader the
265
+ // run uses, so a call this tool would refuse is refused here instead of
266
+ // being described and minted.
267
+ if (answerArg === undefined)
244
268
  return undefined;
269
+ const { blockedBy, value, environment, scope } = readAnswer(answerArg, ctx.session);
245
270
  return (`record a ConfirmedFact: "${blockedBy}" = "${value}"` +
246
271
  (typeof environment === "string" ? ` (environment: ${environment})` : "") +
247
272
  // The reach is part of what is being approved. A workspace-scoped answer
@@ -1 +1 @@
1
- {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/tools/questions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/tools/questions.ts"],"names":[],"mappings":"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"}
@@ -63,6 +63,28 @@ export interface VerificationStatusData {
63
63
  readonly scope: string;
64
64
  readonly reason: string;
65
65
  }[];
66
+ /**
67
+ * The runtime half: refs a real test run bore on, and how those tests
68
+ * finished. Empty when no suite has been run through `observe_tests`, which
69
+ * is a different statement from "nothing covers this" and is why the notes
70
+ * say which of the two a reader is looking at.
71
+ */
72
+ readonly verifiedByTests: readonly VerificationStatusTestedItem[];
73
+ }
74
+ export interface VerificationStatusTestedItem {
75
+ readonly ref: string;
76
+ /**
77
+ * `false` when this ref was reached across a static `TESTS` edge rather than
78
+ * observed itself. The run witnessed that a test executed; it did not witness
79
+ * the test touching this ref. Carried per item so the distinction survives
80
+ * into the reply instead of living only in a disclosure.
81
+ */
82
+ readonly direct: boolean;
83
+ readonly tests: readonly {
84
+ readonly qualifiedName: string;
85
+ readonly outcome: string;
86
+ readonly runId: string;
87
+ }[];
66
88
  }
67
89
  export declare const verificationStatusTool: ToolDefinition;
68
90
  //# sourceMappingURL=verification-status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verification-status.d.ts","sourceRoot":"","sources":["../../src/tools/verification-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAIH,OAAO,KAAK,EAA4B,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAqBlB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAC/D,QAAQ,CAAC,YAAY,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CACvF;AAqHD,eAAO,MAAM,sBAAsB,EAAE,cAgBpC,CAAC"}
1
+ {"version":3,"file":"verification-status.d.ts","sourceRoot":"","sources":["../../src/tools/verification-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAUH,OAAO,KAAK,EAA4B,eAAe,EAAE,MAAM,aAAa,CAAC;AAE7E,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAqBlB,MAAM,WAAW,+BAA+B;IAC9C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,eAAe,CAAC;CACtC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAC/D,QAAQ,CAAC,YAAY,EAAE,SAAS;QAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtF;;;;;OAKG;IACH,QAAQ,CAAC,eAAe,EAAE,SAAS,4BAA4B,EAAE,CAAC;CACnE;AAED,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,SAAS;QACvB,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;QAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;KACxB,EAAE,CAAC;CACL;AAgKD,eAAO,MAAM,sBAAsB,EAAE,cAkBpC,CAAC"}
@@ -50,7 +50,7 @@
50
50
  * package, since a file is only as verified as its least-resolved member.
51
51
  * A ref that resolves neither way is `notExercised`.
52
52
  */
53
- import { getNode, findNodes, computeVerificationStatus, resolutionOfExercised } from "@descryy/core";
53
+ import { getNode, findNodes, computeVerificationStatus, observedTestCoverage, resolutionOfExercised, } from "@descryy/core";
54
54
  import { answer, optionalStringArray, ToolInputError, } from "./kit.js";
55
55
  import { loadSources } from "../registry.js";
56
56
  const SCHEMA = {
@@ -134,12 +134,42 @@ async function run(args, ctx) {
134
134
  }));
135
135
  const status = computeVerificationStatus(scope);
136
136
  const exercised = status.exercised.map((entry) => resolutionOfExercised(entry));
137
+ // The runtime half, composed here rather than inside computeVerificationStatus.
138
+ // That module builds the static half and says so in its own header; keeping it
139
+ // that way and joining above it is the same posture observe_runtime takes —
140
+ // the tool layer is where composition belongs. Only refs that resolved to a
141
+ // real node can be looked up: an unresolved ref has no id to join on.
142
+ const lookupIds = resolved.filter((r) => r.node !== null).map((r) => r.node.id);
143
+ const coverage = observedTestCoverage(driver, lookupIds);
144
+ const verifiedByTests = resolved.flatMap((r) => {
145
+ if (r.node === null)
146
+ return [];
147
+ const found = coverage.get(r.node.id);
148
+ if (found === undefined)
149
+ return [];
150
+ return [
151
+ {
152
+ ref: r.ref,
153
+ // Every test reaching this ref crossed the same kind of link, so the
154
+ // ref is "direct" only when the caller asked about the test case itself.
155
+ direct: found.tests.every((t) => t.direct),
156
+ tests: found.tests.map((t) => ({
157
+ qualifiedName: t.qualifiedName,
158
+ outcome: t.outcome,
159
+ runId: t.runId,
160
+ })),
161
+ },
162
+ ];
163
+ });
137
164
  return answer({
138
- headline: exercised.length === refs.length
165
+ headline: (exercised.length === refs.length
139
166
  ? `All ${refs.length} ref(s) were reached by the graph.`
140
167
  : `${exercised.length} of ${refs.length} ref(s) were reached by the graph; ` +
141
- `${status.notExercised.length} were not — see notExercised for why.`,
142
- data: { checked: refs, exercised, notExercised: status.notExercised },
168
+ `${status.notExercised.length} were not — see notExercised for why.`) +
169
+ (verifiedByTests.length > 0
170
+ ? ` ${verifiedByTests.length} of them ${verifiedByTests.length === 1 ? "has" : "have"} an observed test run behind ${verifiedByTests.length === 1 ? "it" : "them"}.`
171
+ : ""),
172
+ data: { checked: refs, exercised, notExercised: status.notExercised, verifiedByTests },
143
173
  resolutionFloor: exercised.length === 0 ? 0 : Math.min(...exercised.map((e) => e.resolution)),
144
174
  commitSha: base.commitSha,
145
175
  graphBuiltAt: base.graphBuiltAt,
@@ -157,6 +187,20 @@ async function run(args, ctx) {
157
187
  "loaded adapter whether it owns that path. See each notExercised reason for exactly " +
158
188
  "what was determined.",
159
189
  ]),
190
+ // Two different facts wear the same empty list, and reading one as the
191
+ // other is the whole failure this axis exists to prevent.
192
+ ...(verifiedByTests.length === 0
193
+ ? [
194
+ "No observed test run bears on any of these refs. That is not the same as \"nothing " +
195
+ "tests this\": it is also what you see when no suite has been run through observe_tests " +
196
+ "yet, and this tool cannot tell those apart from the ledger alone.",
197
+ ]
198
+ : [
199
+ "verifiedByTests reports that a test which claims to cover a ref actually ran, and how it " +
200
+ "finished. Where direct is false the claim crosses a static TESTS edge: the run witnessed " +
201
+ "the test executing, not the test touching that ref. An outcome of failed or skipped is " +
202
+ "reported rather than filtered — being covered by a failing test is not being verified.",
203
+ ]),
160
204
  ...failedNotes,
161
205
  ],
162
206
  });
@@ -173,7 +217,9 @@ export const verificationStatusTool = {
173
217
  "what that call's answer does and does not actually cover, rather than trusting silence as " +
174
218
  "coverage. When a session's configured adapters can say whether they own an unreached file, " +
175
219
  "real declared capabilities are attached to explain the gap more precisely — see the tool's own " +
176
- "notes when some refs are not exercised.",
220
+ "notes when some refs are not exercised. When a test suite has been run through observe_tests, " +
221
+ "verifiedByTests additionally reports which of these refs a real run bore on and how those tests " +
222
+ "finished — the difference between what the graph could reach and what was actually executed.",
177
223
  inputSchema: SCHEMA,
178
224
  run,
179
225
  };
@@ -1 +1 @@
1
- {"version":3,"file":"verification-status.js","sourceRoot":"","sources":["../../src/tools/verification-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verification-status.js","sourceRoot":"","sources":["../../src/tools/verification-status.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AAEH,OAAO,EACL,OAAO,EACP,SAAS,EACT,yBAAyB,EACzB,oBAAoB,EACpB,qBAAqB,GACtB,MAAM,eAAe,CAAC;AAIvB,OAAO,EACL,MAAM,EACN,mBAAmB,EACnB,cAAc,GAGf,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,WAAW,EAAmB,MAAM,gBAAgB,CAAC;AAE9D,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,IAAI,EAAE;YACJ,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;YACzB,QAAQ,EAAE,CAAC;YACX,WAAW,EACT,uFAAuF;gBACvF,2FAA2F;gBAC3F,qCAAqC;SACxC;KACF;IACD,QAAQ,EAAE,CAAC,MAAM,CAAC;IAClB,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAoCX,mHAAmH;AACnH,SAAS,qBAAqB,CAAC,KAAwB;IACrD,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC;IACtD,IAAI,QAAQ,KAAK,SAAS;QAAE,OAAO,QAAQ,CAAC;IAC5C,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;AACzF,CAAC;AASD,SAAS,UAAU,CAAC,MAAiB,EAAE,GAAW;IAChD,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5E,MAAM,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAC;IAChD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;QAC3C,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IAChD,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,6BAA6B,CAC1C,OAA8B,EAC9B,cAAiC;IAEjC,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC9D,MAAM,WAAW,GAAa,EAAE,CAAC;IACjC,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;IAEnG,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;IACtD,IAAI,CAAC;QACH,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC;YAC9E,IAAI,KAAK,EAAE,OAAO,KAAK,SAAS,IAAI,KAAK,EAAE,OAAO,KAAK,IAAI,EAAE,CAAC;gBAC5D,iBAAiB,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,MAAM,OAAO,IAAI,MAAM,EAAE,CAAC;QAC7B,WAAW,CAAC,IAAI,CACd,wBAAwB,OAAO,CAAC,IAAI,CAAC,MAAM,qBAAqB,OAAO,CAAC,MAAM,iBAAiB;YAC7F,kEAAkE,CACrE,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,CAAC;AAC5C,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,IAA6B,EAAE,GAAgB;IAChE,MAAM,IAAI,GAAG,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;IACrD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,MAAM,IAAI,cAAc,CACtB,6FAA6F;YAC3F,oEAAoE,CACvE,CAAC;IACJ,CAAC;IACD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC;IAC1C,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;IAEhD,GAAG,CAAC,QAAQ,CAAC,yBAAyB,IAAI,CAAC,MAAM,SAAS,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC;IAE5D,MAAM,cAAc,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACjF,MAAM,EAAE,iBAAiB,EAAE,WAAW,EAAE,GAAG,MAAM,6BAA6B,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IAE3H,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,GAAG,EAAE,CAAC,CAAC,GAAG;QACV,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,YAAY,EAAE,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KACzE,CAAC,CAAC,CAAC;IAEJ,MAAM,MAAM,GAAG,yBAAyB,CAAC,KAAK,CAAC,CAAC;IAChD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAE,CAAC,CAAC;IAEjF,gFAAgF;IAChF,+EAA+E;IAC/E,4EAA4E;IAC5E,4EAA4E;IAC5E,sEAAsE;IACtE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAK,CAAC,EAAE,CAAC,CAAC;IACjF,MAAM,QAAQ,GAAG,oBAAoB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACtC,IAAI,KAAK,KAAK,SAAS;YAAE,OAAO,EAAE,CAAC;QACnC,OAAO;YACL;gBACE,GAAG,EAAE,CAAC,CAAC,GAAG;gBACV,qEAAqE;gBACrE,yEAAyE;gBACzE,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBAC1C,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBAC7B,aAAa,EAAE,CAAC,CAAC,aAAa;oBAC9B,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,KAAK,EAAE,CAAC,CAAC,KAAK;iBACf,CAAC,CAAC;aACJ;SACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,OAAO,MAAM,CAAC;QACZ,QAAQ,EACN,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM;YAC/B,CAAC,CAAC,OAAO,IAAI,CAAC,MAAM,oCAAoC;YACxD,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,OAAO,IAAI,CAAC,MAAM,qCAAqC;gBAC1E,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,uCAAuC,CAAC;YACzE,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;gBACzB,CAAC,CAAC,IAAI,eAAe,CAAC,MAAM,YAAY,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,gCAAgC,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG;gBACpK,CAAC,CAAC,EAAE,CAAC;QACT,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,eAAe,EAAE;QACtF,eAAe,EAAE,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAqB;QAClH,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,eAAe,EAAE,IAAI,CAAC,eAAe;QACrC,YAAY,EAAE,IAAI,CAAC,YAAY;QAC/B,6EAA6E;QAC7E,iFAAiF;QACjF,eAAe;QACf,SAAS,EAAE,IAAI;QACf,KAAK,EAAE;YACL,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;gBAClC,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC;oBACE,qFAAqF;wBACnF,qFAAqF;wBACrF,sBAAsB;iBACzB,CAAC;YACN,uEAAuE;YACvE,0DAA0D;YAC1D,GAAG,CAAC,eAAe,CAAC,MAAM,KAAK,CAAC;gBAC9B,CAAC,CAAC;oBACE,qFAAqF;wBACnF,yFAAyF;wBACzF,mEAAmE;iBACtE;gBACH,CAAC,CAAC;oBACE,2FAA2F;wBACzF,2FAA2F;wBAC3F,yFAAyF;wBACzF,wFAAwF;iBAC3F,CAAC;YACN,GAAG,WAAW;SACf;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,sBAAsB,GAAmB;IACpD,IAAI,EAAE,qBAAqB;IAC3B,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,oDAAoD;IAC3D,WAAW,EACT,8FAA8F;QAC9F,2FAA2F;QAC3F,8FAA8F;QAC9F,4FAA4F;QAC5F,6FAA6F;QAC7F,iGAAiG;QACjG,gGAAgG;QAChG,kGAAkG;QAClG,8FAA8F;IAChG,WAAW,EAAE,MAA4C;IACzD,GAAG;CACJ,CAAC"}
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@descryy/mcp",
3
- "version": "0.2.0",
3
+ "version": "0.3.0",
4
4
  "type": "module",
5
- "description": "Descry's MCP server: the agent-facing front door over the query layer. The stdio transport is JSON-RPC 2.0 by hand rather than seventeen packages of HTTP and OAuth; the only dependencies are @descryy's own, and they are here so `observe_runtime` can boot a real application and write what it witnessed into the graph as R4 facts.",
5
+ "description": "Descry's MCP server: the agent-facing front door over the query layer. The stdio transport is JSON-RPC 2.0 by hand rather than seventeen packages of HTTP and OAuth. Twenty-eight tools; most read the graph and nothing else. The @descryy dependencies are here for the three that do more: observe_runtime boots or attaches to a real application, observe_tests runs the project's own test suite, and the browser tools drive a real browser \u2014 each writing what it witnessed into the graph as R4 facts. @descryy/runtime-browser is deliberately NOT among the dependencies below: it is imported by specifier at call time, so this server installs and runs without it, and the browser tools refuse with a named remedy rather than appearing to work. That is temporary and tracked in documents/plans/mcp-browser-tools.md; declaring it is the last step of that plan.",
6
6
  "license": "MIT",
7
7
  "engines": {
8
8
  "node": ">=22.5"
@@ -27,18 +27,19 @@
27
27
  "build": "tsc -b"
28
28
  },
29
29
  "dependencies": {
30
- "@descryy/core": "0.2.0",
31
- "@descryy/ir": "0.2.0",
32
- "@descryy/runtime-backend-observation": "0.0.0",
33
- "@descryy/runtime-contracts": "0.0.0",
34
- "@descryy/runtime-controller": "0.0.0",
35
- "@descryy/runtime-environment-profile": "0.0.1",
36
- "@descryy/runtime-evidence-correlation": "0.0.1",
37
- "@descryy/runtime-evidence-store": "0.0.0",
38
- "@descryy/runtime-graph-correlator": "0.0.0",
39
- "@descryy/runtime-orchestrator": "0.0.1"
30
+ "@descryy/core": "0.3.0",
31
+ "@descryy/ir": "0.3.0",
32
+ "@descryy/runtime-backend-observation": "0.1.0",
33
+ "@descryy/runtime-contracts": "0.1.0",
34
+ "@descryy/runtime-controller": "0.1.0",
35
+ "@descryy/runtime-environment-profile": "0.1.0",
36
+ "@descryy/runtime-evidence-correlation": "0.1.0",
37
+ "@descryy/runtime-evidence-store": "0.1.0",
38
+ "@descryy/runtime-graph-correlator": "0.1.0",
39
+ "@descryy/runtime-orchestrator": "0.1.0",
40
+ "@descryy/runtime-test-runner": "0.1.0"
40
41
  },
41
42
  "devDependencies": {
42
- "@descryy/runtime-adapter-typescript": "0.0.0"
43
+ "@descryy/runtime-adapter-typescript": "0.1.0"
43
44
  }
44
45
  }