@descryy/mcp 0.1.2 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (207) hide show
  1. package/dist/bin/descry-mcp.js +30 -2
  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/disclosure-ledger.d.ts +38 -0
  48. package/dist/disclosure-ledger.d.ts.map +1 -0
  49. package/dist/disclosure-ledger.js +40 -0
  50. package/dist/disclosure-ledger.js.map +1 -0
  51. package/dist/index.d.ts +12 -1
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +10 -0
  54. package/dist/index.js.map +1 -1
  55. package/dist/protocol.d.ts +12 -3
  56. package/dist/protocol.d.ts.map +1 -1
  57. package/dist/protocol.js +12 -3
  58. package/dist/protocol.js.map +1 -1
  59. package/dist/render.d.ts +121 -10
  60. package/dist/render.d.ts.map +1 -1
  61. package/dist/render.js +96 -15
  62. package/dist/render.js.map +1 -1
  63. package/dist/runtime-registry.d.ts +63 -0
  64. package/dist/runtime-registry.d.ts.map +1 -0
  65. package/dist/runtime-registry.js +131 -0
  66. package/dist/runtime-registry.js.map +1 -0
  67. package/dist/scenarios/index.d.ts +4 -0
  68. package/dist/scenarios/index.d.ts.map +1 -0
  69. package/dist/scenarios/index.js +4 -0
  70. package/dist/scenarios/index.js.map +1 -0
  71. package/dist/scenarios/parse.d.ts +32 -0
  72. package/dist/scenarios/parse.d.ts.map +1 -0
  73. package/dist/scenarios/parse.js +199 -0
  74. package/dist/scenarios/parse.js.map +1 -0
  75. package/dist/scenarios/scenario.d.ts +115 -0
  76. package/dist/scenarios/scenario.d.ts.map +1 -0
  77. package/dist/scenarios/scenario.js +41 -0
  78. package/dist/scenarios/scenario.js.map +1 -0
  79. package/dist/scenarios/storage.d.ts +51 -0
  80. package/dist/scenarios/storage.d.ts.map +1 -0
  81. package/dist/scenarios/storage.js +93 -0
  82. package/dist/scenarios/storage.js.map +1 -0
  83. package/dist/server.d.ts.map +1 -1
  84. package/dist/server.js +11 -3
  85. package/dist/server.js.map +1 -1
  86. package/dist/session.d.ts +142 -2
  87. package/dist/session.d.ts.map +1 -1
  88. package/dist/session.js +266 -4
  89. package/dist/session.js.map +1 -1
  90. package/dist/tools/analyze.d.ts +41 -1
  91. package/dist/tools/analyze.d.ts.map +1 -1
  92. package/dist/tools/analyze.js +111 -9
  93. package/dist/tools/analyze.js.map +1 -1
  94. package/dist/tools/browser-click.d.ts +36 -0
  95. package/dist/tools/browser-click.d.ts.map +1 -0
  96. package/dist/tools/browser-click.js +117 -0
  97. package/dist/tools/browser-click.js.map +1 -0
  98. package/dist/tools/browser-close-session.d.ts +24 -0
  99. package/dist/tools/browser-close-session.d.ts.map +1 -0
  100. package/dist/tools/browser-close-session.js +63 -0
  101. package/dist/tools/browser-close-session.js.map +1 -0
  102. package/dist/tools/browser-fill.d.ts +49 -0
  103. package/dist/tools/browser-fill.d.ts.map +1 -0
  104. package/dist/tools/browser-fill.js +138 -0
  105. package/dist/tools/browser-fill.js.map +1 -0
  106. package/dist/tools/browser-navigate.d.ts +32 -0
  107. package/dist/tools/browser-navigate.d.ts.map +1 -0
  108. package/dist/tools/browser-navigate.js +103 -0
  109. package/dist/tools/browser-navigate.js.map +1 -0
  110. package/dist/tools/browser-run-scenario.d.ts +54 -0
  111. package/dist/tools/browser-run-scenario.d.ts.map +1 -0
  112. package/dist/tools/browser-run-scenario.js +228 -0
  113. package/dist/tools/browser-run-scenario.js.map +1 -0
  114. package/dist/tools/browser-save-scenario.d.ts +44 -0
  115. package/dist/tools/browser-save-scenario.d.ts.map +1 -0
  116. package/dist/tools/browser-save-scenario.js +298 -0
  117. package/dist/tools/browser-save-scenario.js.map +1 -0
  118. package/dist/tools/browser-snapshot.d.ts +60 -0
  119. package/dist/tools/browser-snapshot.d.ts.map +1 -0
  120. package/dist/tools/browser-snapshot.js +139 -0
  121. package/dist/tools/browser-snapshot.js.map +1 -0
  122. package/dist/tools/browser-start-session.d.ts +43 -0
  123. package/dist/tools/browser-start-session.d.ts.map +1 -0
  124. package/dist/tools/browser-start-session.js +272 -0
  125. package/dist/tools/browser-start-session.js.map +1 -0
  126. package/dist/tools/browser-type.d.ts +48 -0
  127. package/dist/tools/browser-type.d.ts.map +1 -0
  128. package/dist/tools/browser-type.js +136 -0
  129. package/dist/tools/browser-type.js.map +1 -0
  130. package/dist/tools/contracts.d.ts +15 -0
  131. package/dist/tools/contracts.d.ts.map +1 -1
  132. package/dist/tools/contracts.js +14 -3
  133. package/dist/tools/contracts.js.map +1 -1
  134. package/dist/tools/cross-pr.d.ts.map +1 -1
  135. package/dist/tools/cross-pr.js +1 -0
  136. package/dist/tools/cross-pr.js.map +1 -1
  137. package/dist/tools/git-diff.d.ts.map +1 -1
  138. package/dist/tools/git-diff.js +104 -4
  139. package/dist/tools/git-diff.js.map +1 -1
  140. package/dist/tools/git-history.d.ts.map +1 -1
  141. package/dist/tools/git-history.js +1 -0
  142. package/dist/tools/git-history.js.map +1 -1
  143. package/dist/tools/history.js +1 -1
  144. package/dist/tools/history.js.map +1 -1
  145. package/dist/tools/impact.d.ts +9 -0
  146. package/dist/tools/impact.d.ts.map +1 -1
  147. package/dist/tools/impact.js +4 -4
  148. package/dist/tools/impact.js.map +1 -1
  149. package/dist/tools/index.d.ts +12 -1
  150. package/dist/tools/index.d.ts.map +1 -1
  151. package/dist/tools/index.js +31 -0
  152. package/dist/tools/index.js.map +1 -1
  153. package/dist/tools/kit.d.ts +11 -1
  154. package/dist/tools/kit.d.ts.map +1 -1
  155. package/dist/tools/kit.js +3 -0
  156. package/dist/tools/kit.js.map +1 -1
  157. package/dist/tools/link-workspace.d.ts.map +1 -1
  158. package/dist/tools/link-workspace.js +13 -1
  159. package/dist/tools/link-workspace.js.map +1 -1
  160. package/dist/tools/mark-incident.d.ts +69 -0
  161. package/dist/tools/mark-incident.d.ts.map +1 -0
  162. package/dist/tools/mark-incident.js +212 -0
  163. package/dist/tools/mark-incident.js.map +1 -0
  164. package/dist/tools/observe-runtime.d.ts +292 -0
  165. package/dist/tools/observe-runtime.d.ts.map +1 -0
  166. package/dist/tools/observe-runtime.js +1192 -0
  167. package/dist/tools/observe-runtime.js.map +1 -0
  168. package/dist/tools/observe-tests.d.ts +125 -0
  169. package/dist/tools/observe-tests.d.ts.map +1 -0
  170. package/dist/tools/observe-tests.js +313 -0
  171. package/dist/tools/observe-tests.js.map +1 -0
  172. package/dist/tools/pr-analysis.d.ts +71 -13
  173. package/dist/tools/pr-analysis.d.ts.map +1 -1
  174. package/dist/tools/pr-analysis.js +55 -12
  175. package/dist/tools/pr-analysis.js.map +1 -1
  176. package/dist/tools/pre-push.d.ts +77 -0
  177. package/dist/tools/pre-push.d.ts.map +1 -0
  178. package/dist/tools/pre-push.js +250 -0
  179. package/dist/tools/pre-push.js.map +1 -0
  180. package/dist/tools/propagation.d.ts.map +1 -1
  181. package/dist/tools/propagation.js +1 -0
  182. package/dist/tools/propagation.js.map +1 -1
  183. package/dist/tools/questions.d.ts.map +1 -1
  184. package/dist/tools/questions.js +101 -14
  185. package/dist/tools/questions.js.map +1 -1
  186. package/dist/tools/refusal-fetch.d.ts.map +1 -1
  187. package/dist/tools/refusal-fetch.js +1 -0
  188. package/dist/tools/refusal-fetch.js.map +1 -1
  189. package/dist/tools/runtime-incident.d.ts +92 -0
  190. package/dist/tools/runtime-incident.d.ts.map +1 -0
  191. package/dist/tools/runtime-incident.js +144 -0
  192. package/dist/tools/runtime-incident.js.map +1 -0
  193. package/dist/tools/scope.d.ts.map +1 -1
  194. package/dist/tools/scope.js +1 -0
  195. package/dist/tools/scope.js.map +1 -1
  196. package/dist/tools/similar-incidents.d.ts +13 -0
  197. package/dist/tools/similar-incidents.d.ts.map +1 -1
  198. package/dist/tools/similar-incidents.js +22 -8
  199. package/dist/tools/similar-incidents.js.map +1 -1
  200. package/dist/tools/verification-status.d.ts +22 -0
  201. package/dist/tools/verification-status.d.ts.map +1 -1
  202. package/dist/tools/verification-status.js +52 -5
  203. package/dist/tools/verification-status.js.map +1 -1
  204. package/dist/tools/verify-claim.d.ts.map +1 -1
  205. package/dist/tools/verify-claim.js +5 -0
  206. package/dist/tools/verify-claim.js.map +1 -1
  207. package/package.json +16 -4
@@ -0,0 +1,181 @@
1
+ /**
2
+ * What the seven browser tools share.
3
+ *
4
+ * Kept in one place because the parts that repeat are the parts that must not
5
+ * drift: how a dead session is reported, how consent is checked, and how a
6
+ * reply is stamped. Seven copies of a refusal is seven chances for one of
7
+ * them to say something slightly different about the same state.
8
+ */
9
+ import { answer } from "../tools/kit.js";
10
+ import { evidenceNotes, evidenceReport } from "./evidence.js";
11
+ import { graphWriteNotes, writeBrowserObservations, NO_GRAPH_WRITE } from "./graph-write.js";
12
+ export function browserStamp(ctx) {
13
+ try {
14
+ const stamp = ctx.session.provider().baseStamp();
15
+ return {
16
+ commitSha: stamp.commitSha,
17
+ graphBuiltAt: stamp.graphBuiltAt,
18
+ irSchemaVersion: stamp.irSchemaVersion,
19
+ commitSpread: stamp.commitSpread,
20
+ note: null,
21
+ };
22
+ }
23
+ catch {
24
+ return {
25
+ commitSha: null,
26
+ graphBuiltAt: null,
27
+ irSchemaVersion: 0,
28
+ commitSpread: 0,
29
+ note: "This repository has no graph, so the reply carries no commit stamp. What the browser observed is " +
30
+ "still real; nothing here has been related to your code. Run analyze to connect the two.",
31
+ };
32
+ }
33
+ }
34
+ /**
35
+ * Every browser reply, stamped identically.
36
+ *
37
+ * `resolutionFloor: 4` on a successful observation, and that is not
38
+ * generosity: R4 is "observed at runtime", and a page element this call
39
+ * actually saw is the definition of it. A refusal or a failure observed
40
+ * nothing, so it stamps R0 — the floor has to describe the evidence behind
41
+ * *this* reply, not the tool's best case.
42
+ */
43
+ export function browserAnswer(options) {
44
+ const stamp = browserStamp(options.ctx);
45
+ const observed = (options.state ?? "ok") === "ok";
46
+ const notes = stamp.note === null ? [...options.notes] : [...options.notes, stamp.note];
47
+ return answer({
48
+ headline: options.headline,
49
+ data: options.data,
50
+ resolutionFloor: observed ? 4 : 0,
51
+ commitSha: stamp.commitSha,
52
+ graphBuiltAt: stamp.graphBuiltAt,
53
+ irSchemaVersion: stamp.irSchemaVersion,
54
+ commitSpread: stamp.commitSpread,
55
+ notes,
56
+ // A browser observation is a fact about names and structure on a page —
57
+ // "a button called Delete is here" — not about a program's types.
58
+ nameLevel: true,
59
+ ...(options.state === undefined || options.state === "ok" ? {} : { state: options.state }),
60
+ ...(options.fitToBudget === undefined ? {} : { fitToBudget: options.fitToBudget }),
61
+ });
62
+ }
63
+ /**
64
+ * Look a session up, or describe exactly why it cannot be used.
65
+ *
66
+ * The three dead states are deliberately not collapsed into one. "You never
67
+ * had this session", "it timed out five minutes ago, here is what it saw" and
68
+ * "the browser crashed" are three different things for a caller to do next,
69
+ * and only the last of them is a `failed`.
70
+ */
71
+ export async function useSession(registry, sessionId) {
72
+ const used = await registry.use(sessionId);
73
+ if (used.ok)
74
+ return { ok: true, entry: used.entry };
75
+ if (used.kind === "unknown") {
76
+ return { ok: false, dead: { state: "refused", headline: `No browser session "${sessionId}".`, notes: [used.reason], evidence: emptyEvidence() } };
77
+ }
78
+ const evidence = evidenceReport(used.reaped.observation);
79
+ const carried = evidence.consoleErrors.length + evidence.failedRequests.length > 0
80
+ ? ["Everything the session had observed but not yet reported is included here rather than discarded."]
81
+ : [];
82
+ return {
83
+ ok: false,
84
+ dead: {
85
+ // A crash is something breaking; a reap is Descry having tidied up. The
86
+ // five states exist to keep those apart.
87
+ state: used.kind === "crashed" ? "failed" : "refused",
88
+ headline: used.kind === "crashed" ? `Browser session ${sessionId} crashed.` : `Browser session ${sessionId} is gone.`,
89
+ notes: [used.reason, ...carried],
90
+ evidence,
91
+ },
92
+ };
93
+ }
94
+ /**
95
+ * Drain what the page has said, relate it to the graph, and produce both the
96
+ * payload and the disclosures in one place.
97
+ *
98
+ * Every evidence-bearing browser tool goes through this rather than draining
99
+ * for itself. Two reasons, and the second is the one that matters: a tool
100
+ * that drained without correlating would be a tool through which the R4 write
101
+ * silently does not happen, and nothing about its reply would look different.
102
+ *
103
+ * A repository with no graph correlates nothing and says so. That is a real
104
+ * state — a developer can drive a browser against an app they have never
105
+ * analysed — and it must not look like "we looked and found no connection".
106
+ */
107
+ export async function observeAndCorrelate(ctx, entry) {
108
+ const observation = await entry.page.drainEvidence();
109
+ const evidence = evidenceReport(observation);
110
+ let graph = NO_GRAPH_WRITE;
111
+ const notes = [];
112
+ if (observation.requests.length > 0) {
113
+ try {
114
+ const commitSha = ctx.session.provider().baseStamp().commitSha;
115
+ graph = writeBrowserObservations({
116
+ driver: ctx.session.store().driver,
117
+ repo: ctx.session.config.repo,
118
+ runId: entry.runId,
119
+ // An edge records the commit the observed application was built from,
120
+ // so a later reader can tell whether the code moved under the
121
+ // observation. Absent that, the observation is still real but cannot
122
+ // be dated against the source, so it is not written at all.
123
+ commitSha: commitSha ?? "",
124
+ repoRoot: ctx.session.repoPath,
125
+ requests: observation.requests,
126
+ });
127
+ notes.push(...graphWriteNotes(graph, observation.requests));
128
+ }
129
+ catch {
130
+ notes.push("This repository has no graph open, so nothing the browser observed was related to your code. The " +
131
+ "observations below are real; they are simply unconnected. Run analyze to connect them.");
132
+ }
133
+ }
134
+ return { evidence, graph, notes: [...evidenceNotes(evidence), ...notes] };
135
+ }
136
+ export function emptyEvidence() {
137
+ return { consoleErrors: [], failedRequests: [], totalRequests: 0, actions: [] };
138
+ }
139
+ export function reportOf(observation) {
140
+ return evidenceReport(observation);
141
+ }
142
+ /**
143
+ * Is `url` inside the origin this session was consented for?
144
+ *
145
+ * The consent ruling's one hard bound. Checked here rather than in each verb
146
+ * so that a future eighth tool cannot forget it.
147
+ */
148
+ /**
149
+ * Does this session's environment profile permit changing the application?
150
+ *
151
+ * Read off the profile the session was opened under — DEC-270's
152
+ * `safetyLevel`, the same field `observe_runtime` consults. Deliberately not
153
+ * a per-tool flag: two independent notions of "safe" is how a runtime run and
154
+ * a browser run end up disagreeing about the same environment.
155
+ *
156
+ * A session opened with no profile returns null here, and the session's own
157
+ * consent is then the only authorization — which is a real authorization,
158
+ * granted explicitly at `browser_start_session` against a named origin. The
159
+ * two are independent and both must pass: consent answers *may Descry drive a
160
+ * browser against this target at all*, the profile answers *may it mutate*,
161
+ * and neither excuses the other.
162
+ */
163
+ export function mutationRefusal(entry) {
164
+ if (entry.profile === null)
165
+ return null;
166
+ if (entry.profile.safetyLevel !== "readOnly")
167
+ return null;
168
+ return (`Environment profile "${entry.profile.name}" declares safetyLevel "readOnly", which does not permit ` +
169
+ "changing the application. Clicking, typing and filling can all change data, so they are refused; " +
170
+ "browser_navigate and browser_snapshot read the page and remain available. This is a fact about the " +
171
+ "profile you supplied, not about the page — the session's own consent is intact and does not override it.");
172
+ }
173
+ export function withinConsent(entry, url) {
174
+ try {
175
+ return new URL(url).origin === entry.consentedOrigin;
176
+ }
177
+ catch {
178
+ return false;
179
+ }
180
+ }
181
+ //# sourceMappingURL=tool-support.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-support.js","sourceRoot":"","sources":["../../src/browser/tool-support.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * Which standing disclosures this connection has already been given in full.
3
+ *
4
+ * The tax it removes was measured, not supposed: the R0/class-C reliability
5
+ * sentence is 354 characters — ~88 tokens — and appeared byte-for-byte
6
+ * identical on the large majority of one session's thirty-odd tool calls.
7
+ * Nothing about it was wrong; it was simply the same paragraph, re-billed to
8
+ * the caller's context window every call, and the loop this server is built
9
+ * for (edit, re-check, edit again) is the one that pays it most.
10
+ *
11
+ * ## What the ledger is allowed to shorten, and what it is not
12
+ *
13
+ * Only the *argument* for a cap. The floor and the class it caps to stay on
14
+ * every reply, first or fiftieth, in `graph.resolutionFloor` /
15
+ * `graph.reliabilityCap` and in the short disclosure itself. Rule 7 is about
16
+ * what reaches the user, and a reply that stopped naming its own cap after
17
+ * the first call would be a reply that silently does less.
18
+ *
19
+ * ## Per connection, deliberately not per process
20
+ *
21
+ * "Already disclosed" is a fact about one conversation. A ledger shared across
22
+ * connections would let the *second* client's first call inherit the first
23
+ * client's history — that client would receive the short form of a sentence it
24
+ * has never seen, which is the exact failure this is supposed to avoid, only
25
+ * harder to notice. So one ledger is created per `createMcpServer`, and it
26
+ * lives as long as that server does.
27
+ */
28
+ export interface DisclosureLedger {
29
+ /**
30
+ * `true` the first time this key is seen on this connection, `false` after.
31
+ * Records the sighting — calling it is what marks the key as disclosed.
32
+ */
33
+ firstSighting(key: string): boolean;
34
+ /** Keys disclosed in full so far. For tests and diagnostics. */
35
+ disclosed(): readonly string[];
36
+ }
37
+ export declare function createDisclosureLedger(): DisclosureLedger;
38
+ //# sourceMappingURL=disclosure-ledger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disclosure-ledger.d.ts","sourceRoot":"","sources":["../src/disclosure-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,WAAW,gBAAgB;IAC/B;;;OAGG;IACH,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;IACpC,gEAAgE;IAChE,SAAS,IAAI,SAAS,MAAM,EAAE,CAAC;CAChC;AAED,wBAAgB,sBAAsB,IAAI,gBAAgB,CAUzD"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Which standing disclosures this connection has already been given in full.
3
+ *
4
+ * The tax it removes was measured, not supposed: the R0/class-C reliability
5
+ * sentence is 354 characters — ~88 tokens — and appeared byte-for-byte
6
+ * identical on the large majority of one session's thirty-odd tool calls.
7
+ * Nothing about it was wrong; it was simply the same paragraph, re-billed to
8
+ * the caller's context window every call, and the loop this server is built
9
+ * for (edit, re-check, edit again) is the one that pays it most.
10
+ *
11
+ * ## What the ledger is allowed to shorten, and what it is not
12
+ *
13
+ * Only the *argument* for a cap. The floor and the class it caps to stay on
14
+ * every reply, first or fiftieth, in `graph.resolutionFloor` /
15
+ * `graph.reliabilityCap` and in the short disclosure itself. Rule 7 is about
16
+ * what reaches the user, and a reply that stopped naming its own cap after
17
+ * the first call would be a reply that silently does less.
18
+ *
19
+ * ## Per connection, deliberately not per process
20
+ *
21
+ * "Already disclosed" is a fact about one conversation. A ledger shared across
22
+ * connections would let the *second* client's first call inherit the first
23
+ * client's history — that client would receive the short form of a sentence it
24
+ * has never seen, which is the exact failure this is supposed to avoid, only
25
+ * harder to notice. So one ledger is created per `createMcpServer`, and it
26
+ * lives as long as that server does.
27
+ */
28
+ export function createDisclosureLedger() {
29
+ const seen = new Set();
30
+ return {
31
+ firstSighting(key) {
32
+ if (seen.has(key))
33
+ return false;
34
+ seen.add(key);
35
+ return true;
36
+ },
37
+ disclosed: () => [...seen],
38
+ };
39
+ }
40
+ //# sourceMappingURL=disclosure-ledger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disclosure-ledger.js","sourceRoot":"","sources":["../src/disclosure-ledger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAYH,MAAM,UAAU,sBAAsB;IACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO;QACL,aAAa,CAAC,GAAG;YACf,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,OAAO,KAAK,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,OAAO,IAAI,CAAC;QACd,CAAC;QACD,SAAS,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;KAC3B,CAAC;AACJ,CAAC"}
package/dist/index.d.ts CHANGED
@@ -24,9 +24,20 @@ export type { BriefNode, NodeCandidates, Progress, ToolContext, ToolDefinition,
24
24
  * **today**; where a tool's payload is genuinely conditional the type is a
25
25
  * union that says so rather than a widening to `unknown`.
26
26
  */
27
- export type { AffectedNode, AnalyzeData, BlockedCheck, CoChangedFile, ConfigDependencyReport, ContractPathFinding, ContractShapeMismatchReport, ContractShapeStatus, ContractsData, CrossPrData, CrossPrEmptyDiff, CrossPrGitFailure, CrossPrReport, EnvFindingReport, HiddenDependencyCheck, HiddenDependencyFinding, HistoryData, HistoryFile, HistoryFileResolved, HistoryFileUnresolved, HistoryReport, ImpactData, ImpactReport, ImpactedNode, LinkWorkspaceData, LinkedRepo, OverlapCheck, OverlapReportChecked, PrAnalysisData, PrAnalysisEmptyDiff, PrAnalysisGitFailure, PrAnalysisRange, PrAnalysisReport, PrAnalysisUnresolved, PropagationData, PropagationReport, QuestionsData, ReachedNode, RelatedNode, ScopeData, ScopeNotSeeded, ScopeReport, ScopeTierCount, ScopedNodeReport, SimilarIncidentReport, SimilarIncidentSignalReport, SimilarIncidentsData, SourceRun, SupersededCheck, TracedPath, ValidateData, } from "./tools/index.ts";
27
+ export type { AffectedRef, AnalyzeData, BlockedCheck, CoChangedFile, ConfigDependencyReport, ContractPathFinding, ContractShapeMismatchReport, ContractShapeStatus, ContractsData, CrossPrData, CrossPrEmptyDiff, CrossPrGitFailure, CrossPrReport, EnvFindingReport, HiddenDependencyCheck, HiddenDependencyFinding, HistoryData, HistoryFile, HistoryFileResolved, HistoryFileUnresolved, HistoryReport, ImpactData, ImpactReport, ImpactedNode, LinkWorkspaceData, MarkIncidentData, LinkedRepo, OverlapCheck, OverlapReportChecked, PrAnalysisData, PrAnalysisEmptyDiff, PrAnalysisGitFailure, PrAnalysisLists, PrAnalysisRange, PrAnalysisReport, PrAnalysisUnresolved, PropagationData, PropagationReport, QuestionsData, ReachedNode, RelatedNode, ScopeData, ScopeNotSeeded, ScopeReport, ScopeTierCount, ScopedNodeReport, SimilarIncidentReport, SimilarIncidentSignalReport, SimilarIncidentsData, SourceRun, SupersededCheck, TracedPath, ValidateData, } from "./tools/index.ts";
28
28
  export { serveStdio, guardStdout, createLineReader } from "./transport.ts";
29
29
  export type { Transport, StdioOptions } from "./transport.ts";
30
30
  export { PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, negotiateVersion, parseMessage, ProtocolError, } from "./protocol.ts";
31
31
  export type { RpcRequest, RpcNotification, RpcResponse, RpcMessage, RpcId } from "./protocol.ts";
32
+ /**
33
+ * The scenario format — storage, schema and the refusals.
34
+ *
35
+ * Re-exported here because `descry check` reads saved scenarios through this
36
+ * module and must not reach past the package boundary to do it. A CLI that
37
+ * imported `./scenarios/storage.ts` by relative path would be a second reader
38
+ * of the format, free to drift from this one the day the schema changes; the
39
+ * whole argument for a format module is that there is exactly one.
40
+ */
41
+ export { SCENARIO_SCHEMA_VERSION, isUnverifying, parseScenario, serializeScenario, scenariosDirectory, scenarioPath, listScenarios, readScenario, writeScenario, } from "./scenarios/index.ts";
42
+ export type { Scenario, ScenarioStep, ScenarioAssertion, ScenarioAssertionKind, ScenarioActionKind, ScenarioParseResult, TargetDescriptor, } from "./scenarios/index.ts";
32
43
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,YAAY,EACV,SAAS,EACT,cAAc,EACd,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,YAAY,EACV,YAAY,EACZ,WAAW,EACX,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAE/D,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE9E,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC1E,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEjG,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,cAAc,EACd,cAAc,EACd,UAAU,EACV,WAAW,EACX,UAAU,EACV,QAAQ,EACR,gBAAgB,GACjB,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxF,YAAY,EACV,SAAS,EACT,cAAc,EACd,QAAQ,EACR,WAAW,EACX,cAAc,GACf,MAAM,kBAAkB,CAAC;AAE1B;;;;;;;;GAQG;AACH,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,2BAA2B,EAC3B,mBAAmB,EACnB,aAAa,EACb,WAAW,EACX,gBAAgB,EAChB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,qBAAqB,EACrB,uBAAuB,EACvB,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,aAAa,EACb,UAAU,EACV,YAAY,EACZ,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,YAAY,EACZ,oBAAoB,EACpB,cAAc,EACd,mBAAmB,EACnB,oBAAoB,EACpB,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,WAAW,EACX,SAAS,EACT,cAAc,EACd,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,qBAAqB,EACrB,2BAA2B,EAC3B,oBAAoB,EACpB,SAAS,EACT,eAAe,EACf,UAAU,EACV,YAAY,GACb,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAC3E,YAAY,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9D,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAEjG;;;;;;;;GAQG;AACH,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EACV,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,GACjB,MAAM,sBAAsB,CAAC"}
package/dist/index.js CHANGED
@@ -12,4 +12,14 @@ export { renderAnswer, renderFailed, renderHandshake, renderTimedOut, renderTool
12
12
  export { TOOLS, TOOLS_BY_NAME, ToolInputError, resolveOneNode } from "./tools/index.js";
13
13
  export { serveStdio, guardStdout, createLineReader } from "./transport.js";
14
14
  export { PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, negotiateVersion, parseMessage, ProtocolError, } from "./protocol.js";
15
+ /**
16
+ * The scenario format — storage, schema and the refusals.
17
+ *
18
+ * Re-exported here because `descry check` reads saved scenarios through this
19
+ * module and must not reach past the package boundary to do it. A CLI that
20
+ * imported `./scenarios/storage.ts` by relative path would be a second reader
21
+ * of the format, free to drift from this one the day the schema changes; the
22
+ * whole argument for a format module is that there is exactly one.
23
+ */
24
+ export { SCENARIO_SCHEMA_VERSION, isUnverifying, parseScenario, serializeScenario, scenariosDirectory, scenarioPath, listScenarios, readScenario, writeScenario, } from "./scenarios/index.js";
15
25
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG1E,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAwExF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG3E,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9C,OAAO,EACL,OAAO,EACP,UAAU,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EACX,oBAAoB,EACpB,2BAA2B,GAC5B,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAG1E,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,cAAc,EACd,eAAe,EACf,eAAe,EACf,UAAU,GACX,MAAM,aAAa,CAAC;AAWrB,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AA0ExF,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG3E,OAAO,EACL,gBAAgB,EAChB,2BAA2B,EAC3B,gBAAgB,EAChB,YAAY,EACZ,aAAa,GACd,MAAM,eAAe,CAAC;AAGvB;;;;;;;;GAQG;AACH,OAAO,EACL,uBAAuB,EACvB,aAAa,EACb,aAAa,EACb,iBAAiB,EACjB,kBAAkB,EAClB,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,aAAa,GACd,MAAM,sBAAsB,CAAC"}
@@ -15,9 +15,18 @@
15
15
  * over `better-sqlite3`, `node --test` over a test runner, `tsc` over a bundler,
16
16
  * `git` invoked directly over a git library — every time on the same grounds:
17
17
  * this is a **locally installed developer tool**, and a dependency tree is a
18
- * distribution problem before it is anything else. Both shipped packages have
19
- * zero runtime dependencies today. Seventeen transitively-hundreds is a large
20
- * price for newline-delimited JSON.
18
+ * distribution problem before it is anything else. Seventeen
19
+ * transitively-hundreds is a large price for newline-delimited JSON.
20
+ *
21
+ * This package no longer has zero runtime dependencies — `observe_runtime`
22
+ * composes `descry-runtime`'s execution and correlation packages, ruled in
23
+ * `DEC-NEXT-mcp-runtime-dependency-boundary-for-r4-evidence` — and the
24
+ * argument above is unaffected, because it was never a vow of zero. It is a
25
+ * cost/benefit about *this* dependency: every package `@descryy/mcp` depends
26
+ * on is one of Descry's own, versioned and published alongside it, and each
27
+ * one is there because a stage of a real run happens inside it. That is a
28
+ * different trade from adding a stack of HTTP and OAuth packages to serve a
29
+ * transport this server will never open a socket for.
21
30
  *
22
31
  * **The cost is named, not waved away.** Hand-rolling means spec drift is
23
32
  * silent: the wire format changes, the client stops working, and nothing in this
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,mEAAmE;AACnE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;AAEtD,uEAAuE;AACvE,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAI3D;AAMD;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;gBAEd,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI;CAM5D;AAMD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAsCrD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,IAAI,UAAU,CAEpE;AAED,wBAAgB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,WAAW,CAE1D;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAM1F"}
1
+ {"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAEH,mEAAmE;AACnE,MAAM,MAAM,KAAK,GAAG,MAAM,GAAG,MAAM,CAAC;AAEpC,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC3C;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,KAAK,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,QAAQ,CAAC;CAC3B;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,eAAe,CAAC;AAEtD,uEAAuE;AACvE,eAAO,MAAM,eAAe,SAAS,CAAC;AACtC,eAAO,MAAM,mBAAmB,SAAS,CAAC;AAC1C,eAAO,MAAM,oBAAoB,SAAS,CAAC;AAC3C,eAAO,MAAM,kBAAkB,SAAS,CAAC;AACzC,eAAO,MAAM,kBAAkB,SAAS,CAAC;AAEzC;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,eAAe,CAAC;AAC7C,eAAO,MAAM,2BAA2B,EAAE,SAAS,MAAM,EAIxD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,MAAM,CAI3D;AAMD;;;;;;GAMG;AACH,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,QAAQ,CAAC,EAAE,EAAE,KAAK,GAAG,IAAI,CAAC;gBAEd,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,KAAK,GAAG,IAAI;CAM5D;AAMD,+EAA+E;AAC/E,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAsCrD;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,IAAI,UAAU,CAEpE;AAED,wBAAgB,EAAE,CAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,WAAW,CAE1D;AAED,wBAAgB,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,WAAW,CAM1F"}
package/dist/protocol.js CHANGED
@@ -15,9 +15,18 @@
15
15
  * over `better-sqlite3`, `node --test` over a test runner, `tsc` over a bundler,
16
16
  * `git` invoked directly over a git library — every time on the same grounds:
17
17
  * this is a **locally installed developer tool**, and a dependency tree is a
18
- * distribution problem before it is anything else. Both shipped packages have
19
- * zero runtime dependencies today. Seventeen transitively-hundreds is a large
20
- * price for newline-delimited JSON.
18
+ * distribution problem before it is anything else. Seventeen
19
+ * transitively-hundreds is a large price for newline-delimited JSON.
20
+ *
21
+ * This package no longer has zero runtime dependencies — `observe_runtime`
22
+ * composes `descry-runtime`'s execution and correlation packages, ruled in
23
+ * `DEC-NEXT-mcp-runtime-dependency-boundary-for-r4-evidence` — and the
24
+ * argument above is unaffected, because it was never a vow of zero. It is a
25
+ * cost/benefit about *this* dependency: every package `@descryy/mcp` depends
26
+ * on is one of Descry's own, versioned and published alongside it, and each
27
+ * one is there because a stage of a real run happens inside it. That is a
28
+ * different trade from adding a stack of HTTP and OAuth packages to serve a
29
+ * transport this server will never open a socket for.
21
30
  *
22
31
  * **The cost is named, not waved away.** Hand-rolling means spec drift is
23
32
  * silent: the wire format changes, the client stops working, and nothing in this
@@ -1 +1 @@
1
- {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAiCH,uEAAuE;AACvE,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAK,CAAC;AACtC,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAK,CAAC;AAC1C,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAK,CAAC;AAC3C,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC;AACzC,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,KAAK,CAAC;AAEzC;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAC7C,MAAM,CAAC,MAAM,2BAA2B,GAAsB;IAC5D,YAAY;IACZ,YAAY;IACZ,YAAY;CACb,CAAC;AAEF,MAAM,UAAU,gBAAgB,CAAC,SAAkB;IACjD,OAAO,OAAO,SAAS,KAAK,QAAQ,IAAI,2BAA2B,CAAC,QAAQ,CAAC,SAAS,CAAC;QACrF,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E;;;;;;GAMG;AACH,MAAM,OAAO,aAAc,SAAQ,KAAK;IAC7B,IAAI,CAAS;IACtB,iFAAiF;IACxE,EAAE,CAAe;IAE1B,YAAY,IAAY,EAAE,OAAe,EAAE,EAAgB;QACzD,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,EAAE,GAAG,EAAE,CAAC;IACf,CAAC;CACF;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,IAAI,GAAY,CAAC;IACjB,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,aAAa,CAAC,eAAe,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,+BAA+B,EAAE,IAAI,CAAC,CAAC;IACtF,CAAC;IACD,2EAA2E;IAC3E,4EAA4E;IAE5E,MAAM,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC;IACrB,MAAM,QAAQ,GACZ,OAAO,EAAE,KAAK,QAAQ,IAAI,OAAO,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;IAE/D,IAAI,GAAG,CAAC,SAAS,CAAC,KAAK,KAAK,EAAE,CAAC;QAC7B,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,QAAQ,EAAE,CAAC;QACtC,MAAM,IAAI,aAAa,CAAC,mBAAmB,EAAE,yBAAyB,EAAE,QAAQ,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC;IAC7B,IAAI,MAAM,KAAK,SAAS,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9C,6EAA6E;QAC7E,gFAAgF;QAChF,MAAM,IAAI,aAAa,CAAC,kBAAkB,EAAE,0BAA0B,EAAE,QAAQ,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,MAAM,GAAW,GAAG,CAAC,QAAQ,CAAC,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;IAEpD,OAAO,QAAQ,KAAK,IAAI;QACtB,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE;QACrC,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,CAAC;AACxD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAAmB;IAC3C,OAAO,IAAI,IAAI,OAAO,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,EAAE,CAAC,EAAS,EAAE,MAAe;IAC3C,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AACxC,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,EAAS,EAAE,IAAY,EAAE,OAAe,EAAE,IAAc;IAC3E,OAAO;QACL,OAAO,EAAE,KAAK;QACd,EAAE;QACF,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE;KAClE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"protocol.js","sourceRoot":"","sources":["../src/protocol.ts"],"names":[],"mappings":"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"}
package/dist/render.d.ts CHANGED
@@ -37,8 +37,9 @@
37
37
  * `server.ts`, not here: this module never sees a mint, only a redeemed run.
38
38
  */
39
39
  import { type ReliabilityClass, type ReportCategory } from "@descryy/ir";
40
- import type { ResultState, ToolClass } from "@descryy/ir";
40
+ import type { ResultState, SignalTypeCount, ToolClass } from "@descryy/ir";
41
41
  import type { QueryResult } from "@descryy/core";
42
+ import type { DisclosureLedger } from "./disclosure-ledger.ts";
42
43
  export type { ResultState } from "@descryy/ir";
43
44
  /**
44
45
  * MK-5 — which of the sixteen tools states a conclusion about the user's code
@@ -85,8 +86,38 @@ export interface TruncationDetail {
85
86
  /** A cursor to fetch the rest. `null` until pagination exists to redeem one. */
86
87
  readonly more: string | null;
87
88
  }
89
+ /**
90
+ * What a tool that actually watched a running application declares about what
91
+ * it saw — G4's `E`, and by its presence G3's precondition.
92
+ *
93
+ * **Presence is the claim, not the count.** A tool constructs this only on a
94
+ * path where an execution really ran and evidence really came back; omitting
95
+ * it is how every other tool says "nothing was witnessed here", which is the
96
+ * safe default and the one twenty-eight of the thirty tools take. The two
97
+ * that declare it are `observe_runtime` and `observe_tests` — the two that
98
+ * run something.
99
+ *
100
+ * `E` is a count of *channels*, not of records: six console messages are one
101
+ * signal type, a console message plus a network response are two
102
+ * (`@descryy/ir`'s {@link RUNTIME_SIGNAL_TYPES}). Compute it with that
103
+ * package's `independentSignalTypes` rather than counting here — the clamp to
104
+ * the six declared channels is its job, and a second implementation of it is a
105
+ * second place for the vocabulary to drift.
106
+ *
107
+ * There is deliberately no `M` field — see `deriveEnvelopeCategory`.
108
+ */
109
+ export interface WitnessedEvidence {
110
+ readonly independentSignalTypes: SignalTypeCount;
111
+ }
88
112
  export interface ToolAnswer<T> {
89
113
  readonly result: QueryResult<T>;
114
+ /**
115
+ * Present only on a path that observed a real running application. Absent
116
+ * everywhere else, which is what makes `unconfirmed` the default for a
117
+ * graph-only answer rather than something each tool must remember to ask
118
+ * for. See {@link WitnessedEvidence} and `AnswerEnvelope.reportCategory`.
119
+ */
120
+ readonly runtimeEvidence?: WitnessedEvidence;
90
121
  /**
91
122
  * One of the five result states (§1). Omitted means `"ok"` — the common
92
123
  * case, and the one that needs no tool-author ceremony.
@@ -127,6 +158,55 @@ export interface ToolAnswer<T> {
127
158
  readonly exemplar: string;
128
159
  readonly handle: string;
129
160
  };
161
+ /**
162
+ * How this tool shrinks its own reply when the rendered result would exceed
163
+ * `MAX_REPLY_BYTES`. Called with the bytes available for `data` alone, every
164
+ * other cost already subtracted; called again with a corrected figure if the
165
+ * first attempt still comes in over.
166
+ *
167
+ * Optional, and absent means today's behaviour — the reply is rendered at
168
+ * whatever size it comes to. A tool whose payload is already bounded (a node
169
+ * `limit`, a single verdict) needs no hook; a tool whose reply grows with the
170
+ * user's repository does, and `get_git_diff` is the one that proved it.
171
+ */
172
+ readonly fitToBudget?: (budgetBytes: number) => ReplyFit<T>;
173
+ }
174
+ /**
175
+ * The ceiling on one rendered tool result, serialized — `content` frame and
176
+ * `structuredContent` envelope together, which is what a host actually
177
+ * receives and counts.
178
+ *
179
+ * A starting value, not a measurement, in this repo's usual sense: the one
180
+ * hard number behind it is a real failure, `get_git_diff` on an ordinary
181
+ * 48-file branch diff returning 84,516 characters and being rejected outright
182
+ * by the host before the caller saw any of it. 60,000 sits well under the
183
+ * smallest size observed to fail, with room for the narrated frame that
184
+ * repeats the disclosures alongside the envelope.
185
+ *
186
+ * Shared rather than per-tool on purpose: `get_git_diff` is the tool that hit
187
+ * this, twice, but nothing about the failure was specific to diffs. Any tool
188
+ * adopts the ceiling by implementing `ToolAnswer.fitToBudget`.
189
+ */
190
+ export declare const MAX_REPLY_BYTES = 60000;
191
+ /**
192
+ * A tool's own answer to "make this fit in `budgetBytes`".
193
+ *
194
+ * Only the tool can shrink its payload honestly — which field is droppable,
195
+ * what the caller must be told about the drop, and what re-request would
196
+ * recover it are all facts about that tool. So the ceiling is enforced here
197
+ * and the shrinking is delegated, rather than this module truncating a shape
198
+ * it does not understand.
199
+ */
200
+ export interface ReplyFit<T> {
201
+ readonly data: T;
202
+ /**
203
+ * Disclosures naming exactly what the budget withheld — appended to the
204
+ * tool's own notes. Must be non-empty whenever anything was withheld or
205
+ * dropped: a reply shrunk in silence is the failure rule 7 exists to stop.
206
+ */
207
+ readonly notes: readonly string[];
208
+ /** Set when items left the reply entirely, not merely lost their payload. */
209
+ readonly truncatedDetail?: TruncationDetail;
130
210
  }
131
211
  export interface McpContent {
132
212
  readonly type: "text";
@@ -185,15 +265,31 @@ export interface AnswerEnvelope<T = unknown> {
185
265
  * MK-8/MK-11 — §19's five categories, settled for this surface: a
186
266
  * `conclusion`-tier tool states its verdict in `headline`'s own plain words
187
267
  * rather than through this apparatus (it is a fact, not a hypothesis), so
188
- * this is `null` there. An `evidence`-tier tool never carries runtime
189
- * evidence in this surface — descry-runtime's loop does not run inside an
190
- * MCP call — so G3 always short-circuits: `refused` maps to the direct
191
- * equivalent, `not analysable` ("could not look" vs. "cannot establish
192
- * this here" are the same statement); `ok`/`empty` map to `unconfirmed`,
193
- * since a graph fact with no runtime corroboration is never `confirmed` by
194
- * construction; `failed`/`timed_out` carry no claim at all, so `null`.
195
- * `confirmed` stays reserved for the app's full pipeline and is therefore
196
- * unreachable from here — the honest outcome MK-11 ruled on, not a gap.
268
+ * this is `null` there. For an `evidence`-tier tool: `refused` maps to the
269
+ * direct equivalent, `not analysable` ("could not look" vs. "cannot
270
+ * establish this here" are the same statement); `failed`/`timed_out` carry
271
+ * no claim at all, so `null`; `ok`/`empty` go through G3/G4.
272
+ *
273
+ * **A graph-only answer short-circuits at G3 and is `unconfirmed`** — a
274
+ * structural fact with no runtime corroboration is never `confirmed` by
275
+ * construction, whatever its resolution.
276
+ *
277
+ * **An answer that watched a running application does not.** MK-8 was
278
+ * written when nothing in this surface could witness anything, and its
279
+ * "descry-runtime's loop does not run inside an MCP call" was true then;
280
+ * `observe_runtime` composes descry-runtime, boots or attaches to a real
281
+ * application and writes R4 edges, so it is now false for exactly the tools
282
+ * that do. Such a tool declares {@link ToolAnswer.runtimeEvidence} and G4
283
+ * runs on what it actually saw. Reporting a witnessed result more weakly
284
+ * than the evidence under it inverts rule 2's whole purpose, which is why
285
+ * this is a defect rather than conservatism.
286
+ *
287
+ * `confirmed` stays unreachable from here regardless — DEC-334 reserves it
288
+ * for a result that passed the full governance pipeline, "on every surface,
289
+ * meaning the same thing everywhere", and that pipeline does not run in an
290
+ * MCP call (`provenance.governancePipeline` says so on every reply). So
291
+ * `strongly supported` is this surface's ceiling, and it is reached by
292
+ * evidence rather than granted.
197
293
  */
198
294
  readonly reportCategory: ReportCategory | null;
199
295
  /** MK-6. Constant for this server — see `Provenance`'s own doc. */
@@ -209,6 +305,21 @@ export interface RenderOptions {
209
305
  readonly toolTier: ToolTier;
210
306
  readonly elapsedMs: number;
211
307
  readonly limitMs: number;
308
+ /**
309
+ * This connection's record of which standing disclosures it has already been
310
+ * given in full. Optional: a caller with no session to dedupe within (every
311
+ * direct `renderAnswer` in a test, every non-server consumer) gets the full
312
+ * sentence every time, which is the safe default — a short reference to a
313
+ * paragraph nobody was shown is worse than the repetition.
314
+ */
315
+ readonly disclosureLedger?: DisclosureLedger;
316
+ /**
317
+ * Overrides `MAX_REPLY_BYTES`. Exists so a test can prove the fitting
318
+ * behaviour against a small, deterministic ceiling rather than by generating
319
+ * 60KB of real data — the ceiling's *value* is a starting number, but the
320
+ * mechanism reacting to it must be checkable exactly.
321
+ */
322
+ readonly maxReplyBytes?: number;
212
323
  }
213
324
  /**
214
325
  * A refusal's reason must be the specific, verbatim thing that blocked it —
@@ -1 +1 @@
1
- {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../src/render.ts"],"names":[],"mappings":"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"}