@descryy/mcp 0.1.2 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/bin/descry-mcp.js +30 -2
- package/dist/bin/descry-mcp.js.map +1 -1
- package/dist/browser/driver.d.ts +236 -0
- package/dist/browser/driver.d.ts.map +1 -0
- package/dist/browser/driver.js +70 -0
- package/dist/browser/driver.js.map +1 -0
- package/dist/browser/evidence.d.ts +47 -0
- package/dist/browser/evidence.d.ts.map +1 -0
- package/dist/browser/evidence.js +55 -0
- package/dist/browser/evidence.js.map +1 -0
- package/dist/browser/fake-driver.d.ts +58 -0
- package/dist/browser/fake-driver.d.ts.map +1 -0
- package/dist/browser/fake-driver.js +161 -0
- package/dist/browser/fake-driver.js.map +1 -0
- package/dist/browser/graph-write.d.ts +86 -0
- package/dist/browser/graph-write.d.ts.map +1 -0
- package/dist/browser/graph-write.js +135 -0
- package/dist/browser/graph-write.js.map +1 -0
- package/dist/browser/playwright-driver.d.ts +65 -0
- package/dist/browser/playwright-driver.d.ts.map +1 -0
- package/dist/browser/playwright-driver.js +359 -0
- package/dist/browser/playwright-driver.js.map +1 -0
- package/dist/browser/provider.d.ts +49 -0
- package/dist/browser/provider.d.ts.map +1 -0
- package/dist/browser/provider.js +28 -0
- package/dist/browser/provider.js.map +1 -0
- package/dist/browser/registry.d.ts +182 -0
- package/dist/browser/registry.d.ts.map +1 -0
- package/dist/browser/registry.js +215 -0
- package/dist/browser/registry.js.map +1 -0
- package/dist/browser/scenario-resolve.d.ts +62 -0
- package/dist/browser/scenario-resolve.d.ts.map +1 -0
- package/dist/browser/scenario-resolve.js +127 -0
- package/dist/browser/scenario-resolve.js.map +1 -0
- package/dist/browser/scenario-runner.d.ts +113 -0
- package/dist/browser/scenario-runner.d.ts.map +1 -0
- package/dist/browser/scenario-runner.js +315 -0
- package/dist/browser/scenario-runner.js.map +1 -0
- package/dist/browser/stack-parser.d.ts +43 -0
- package/dist/browser/stack-parser.d.ts.map +1 -0
- package/dist/browser/stack-parser.js +112 -0
- package/dist/browser/stack-parser.js.map +1 -0
- package/dist/browser/tool-support.d.ts +113 -0
- package/dist/browser/tool-support.d.ts.map +1 -0
- package/dist/browser/tool-support.js +181 -0
- package/dist/browser/tool-support.js.map +1 -0
- package/dist/disclosure-ledger.d.ts +38 -0
- package/dist/disclosure-ledger.d.ts.map +1 -0
- package/dist/disclosure-ledger.js +40 -0
- package/dist/disclosure-ledger.js.map +1 -0
- package/dist/index.d.ts +12 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol.d.ts +12 -3
- package/dist/protocol.d.ts.map +1 -1
- package/dist/protocol.js +12 -3
- package/dist/protocol.js.map +1 -1
- package/dist/render.d.ts +121 -10
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +96 -15
- package/dist/render.js.map +1 -1
- package/dist/runtime-registry.d.ts +63 -0
- package/dist/runtime-registry.d.ts.map +1 -0
- package/dist/runtime-registry.js +131 -0
- package/dist/runtime-registry.js.map +1 -0
- package/dist/scenarios/index.d.ts +4 -0
- package/dist/scenarios/index.d.ts.map +1 -0
- package/dist/scenarios/index.js +4 -0
- package/dist/scenarios/index.js.map +1 -0
- package/dist/scenarios/parse.d.ts +32 -0
- package/dist/scenarios/parse.d.ts.map +1 -0
- package/dist/scenarios/parse.js +199 -0
- package/dist/scenarios/parse.js.map +1 -0
- package/dist/scenarios/scenario.d.ts +115 -0
- package/dist/scenarios/scenario.d.ts.map +1 -0
- package/dist/scenarios/scenario.js +41 -0
- package/dist/scenarios/scenario.js.map +1 -0
- package/dist/scenarios/storage.d.ts +51 -0
- package/dist/scenarios/storage.d.ts.map +1 -0
- package/dist/scenarios/storage.js +93 -0
- package/dist/scenarios/storage.js.map +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +11 -3
- package/dist/server.js.map +1 -1
- package/dist/session.d.ts +142 -2
- package/dist/session.d.ts.map +1 -1
- package/dist/session.js +266 -4
- package/dist/session.js.map +1 -1
- package/dist/tools/analyze.d.ts +41 -1
- package/dist/tools/analyze.d.ts.map +1 -1
- package/dist/tools/analyze.js +111 -9
- package/dist/tools/analyze.js.map +1 -1
- package/dist/tools/browser-click.d.ts +36 -0
- package/dist/tools/browser-click.d.ts.map +1 -0
- package/dist/tools/browser-click.js +117 -0
- package/dist/tools/browser-click.js.map +1 -0
- package/dist/tools/browser-close-session.d.ts +24 -0
- package/dist/tools/browser-close-session.d.ts.map +1 -0
- package/dist/tools/browser-close-session.js +63 -0
- package/dist/tools/browser-close-session.js.map +1 -0
- package/dist/tools/browser-fill.d.ts +49 -0
- package/dist/tools/browser-fill.d.ts.map +1 -0
- package/dist/tools/browser-fill.js +138 -0
- package/dist/tools/browser-fill.js.map +1 -0
- package/dist/tools/browser-navigate.d.ts +32 -0
- package/dist/tools/browser-navigate.d.ts.map +1 -0
- package/dist/tools/browser-navigate.js +103 -0
- package/dist/tools/browser-navigate.js.map +1 -0
- package/dist/tools/browser-run-scenario.d.ts +54 -0
- package/dist/tools/browser-run-scenario.d.ts.map +1 -0
- package/dist/tools/browser-run-scenario.js +228 -0
- package/dist/tools/browser-run-scenario.js.map +1 -0
- package/dist/tools/browser-save-scenario.d.ts +44 -0
- package/dist/tools/browser-save-scenario.d.ts.map +1 -0
- package/dist/tools/browser-save-scenario.js +298 -0
- package/dist/tools/browser-save-scenario.js.map +1 -0
- package/dist/tools/browser-snapshot.d.ts +60 -0
- package/dist/tools/browser-snapshot.d.ts.map +1 -0
- package/dist/tools/browser-snapshot.js +139 -0
- package/dist/tools/browser-snapshot.js.map +1 -0
- package/dist/tools/browser-start-session.d.ts +43 -0
- package/dist/tools/browser-start-session.d.ts.map +1 -0
- package/dist/tools/browser-start-session.js +272 -0
- package/dist/tools/browser-start-session.js.map +1 -0
- package/dist/tools/browser-type.d.ts +48 -0
- package/dist/tools/browser-type.d.ts.map +1 -0
- package/dist/tools/browser-type.js +136 -0
- package/dist/tools/browser-type.js.map +1 -0
- package/dist/tools/contracts.d.ts +15 -0
- package/dist/tools/contracts.d.ts.map +1 -1
- package/dist/tools/contracts.js +14 -3
- package/dist/tools/contracts.js.map +1 -1
- package/dist/tools/cross-pr.d.ts.map +1 -1
- package/dist/tools/cross-pr.js +1 -0
- package/dist/tools/cross-pr.js.map +1 -1
- package/dist/tools/git-diff.d.ts.map +1 -1
- package/dist/tools/git-diff.js +104 -4
- package/dist/tools/git-diff.js.map +1 -1
- package/dist/tools/git-history.d.ts.map +1 -1
- package/dist/tools/git-history.js +1 -0
- package/dist/tools/git-history.js.map +1 -1
- package/dist/tools/history.js +1 -1
- package/dist/tools/history.js.map +1 -1
- package/dist/tools/impact.d.ts +9 -0
- package/dist/tools/impact.d.ts.map +1 -1
- package/dist/tools/impact.js +4 -4
- package/dist/tools/impact.js.map +1 -1
- package/dist/tools/index.d.ts +12 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +31 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/kit.d.ts +11 -1
- package/dist/tools/kit.d.ts.map +1 -1
- package/dist/tools/kit.js +3 -0
- package/dist/tools/kit.js.map +1 -1
- package/dist/tools/link-workspace.d.ts.map +1 -1
- package/dist/tools/link-workspace.js +13 -1
- package/dist/tools/link-workspace.js.map +1 -1
- package/dist/tools/mark-incident.d.ts +69 -0
- package/dist/tools/mark-incident.d.ts.map +1 -0
- package/dist/tools/mark-incident.js +212 -0
- package/dist/tools/mark-incident.js.map +1 -0
- package/dist/tools/observe-runtime.d.ts +292 -0
- package/dist/tools/observe-runtime.d.ts.map +1 -0
- package/dist/tools/observe-runtime.js +1192 -0
- package/dist/tools/observe-runtime.js.map +1 -0
- package/dist/tools/observe-tests.d.ts +125 -0
- package/dist/tools/observe-tests.d.ts.map +1 -0
- package/dist/tools/observe-tests.js +313 -0
- package/dist/tools/observe-tests.js.map +1 -0
- package/dist/tools/pr-analysis.d.ts +71 -13
- package/dist/tools/pr-analysis.d.ts.map +1 -1
- package/dist/tools/pr-analysis.js +55 -12
- package/dist/tools/pr-analysis.js.map +1 -1
- package/dist/tools/pre-push.d.ts +77 -0
- package/dist/tools/pre-push.d.ts.map +1 -0
- package/dist/tools/pre-push.js +250 -0
- package/dist/tools/pre-push.js.map +1 -0
- package/dist/tools/propagation.d.ts.map +1 -1
- package/dist/tools/propagation.js +1 -0
- package/dist/tools/propagation.js.map +1 -1
- package/dist/tools/questions.d.ts.map +1 -1
- package/dist/tools/questions.js +101 -14
- package/dist/tools/questions.js.map +1 -1
- package/dist/tools/refusal-fetch.d.ts.map +1 -1
- package/dist/tools/refusal-fetch.js +1 -0
- package/dist/tools/refusal-fetch.js.map +1 -1
- package/dist/tools/runtime-incident.d.ts +92 -0
- package/dist/tools/runtime-incident.d.ts.map +1 -0
- package/dist/tools/runtime-incident.js +144 -0
- package/dist/tools/runtime-incident.js.map +1 -0
- package/dist/tools/scope.d.ts.map +1 -1
- package/dist/tools/scope.js +1 -0
- package/dist/tools/scope.js.map +1 -1
- package/dist/tools/similar-incidents.d.ts +13 -0
- package/dist/tools/similar-incidents.d.ts.map +1 -1
- package/dist/tools/similar-incidents.js +22 -8
- package/dist/tools/similar-incidents.js.map +1 -1
- package/dist/tools/verification-status.d.ts +22 -0
- package/dist/tools/verification-status.d.ts.map +1 -1
- package/dist/tools/verification-status.js +52 -5
- package/dist/tools/verification-status.js.map +1 -1
- package/dist/tools/verify-claim.d.ts.map +1 -1
- package/dist/tools/verify-claim.js +5 -0
- package/dist/tools/verify-claim.js.map +1 -1
- package/package.json +16 -4
package/dist/tools/questions.js
CHANGED
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
*/
|
|
39
39
|
import { applyConfirmedFacts, counts, groupRefusalsIntoQuestions } from "@descryy/core";
|
|
40
40
|
import { writeConfirmedFact } from "../session.js";
|
|
41
|
-
import { answer, optionalString, requiredString, ToolInputError } from "./kit.js";
|
|
41
|
+
import { answer, optionalEnum, optionalString, requiredString, ToolInputError, } from "./kit.js";
|
|
42
42
|
const SCHEMA = {
|
|
43
43
|
type: "object",
|
|
44
44
|
properties: {
|
|
@@ -62,13 +62,69 @@ const SCHEMA = {
|
|
|
62
62
|
type: "string",
|
|
63
63
|
description: "Free text — who or what is asserting this. Defaults to \"user\".",
|
|
64
64
|
},
|
|
65
|
+
scope: {
|
|
66
|
+
type: "string",
|
|
67
|
+
enum: ["repo", "workspace"],
|
|
68
|
+
description: "How far this answer reaches. \"repo\" (the default) answers rows in this repository " +
|
|
69
|
+
"only. \"workspace\" also answers rows in every repository linked into the same " +
|
|
70
|
+
"workspace by \"link_workspace\", and requires one to be configured. Choose " +
|
|
71
|
+
"\"workspace\" only when the value is genuinely the same everywhere in the workspace " +
|
|
72
|
+
"— two services can each read an environment variable of the same name and mean " +
|
|
73
|
+
"different things by it, and this tool has no way to tell.",
|
|
74
|
+
},
|
|
65
75
|
},
|
|
66
76
|
required: ["blockedBy", "value"],
|
|
67
77
|
additionalProperties: false,
|
|
68
78
|
},
|
|
79
|
+
// Declared here, not only in the prose. This tool's own description tells
|
|
80
|
+
// a caller to send `confirmToken` on the second call, and for a while the
|
|
81
|
+
// schema beside it said no such property existed — with
|
|
82
|
+
// `additionalProperties: false`, a client validating against the schema it
|
|
83
|
+
// was handed would reject the exact call the description asked for. A
|
|
84
|
+
// parameter a tool documents and a parameter a tool declares have to be
|
|
85
|
+
// the same set; `tool-schema-prose.test.ts` now holds the whole registry
|
|
86
|
+
// to that.
|
|
87
|
+
confirmToken: {
|
|
88
|
+
type: "string",
|
|
89
|
+
description: "The token returned by a previous call that carried \"answer\". Recording a confirmed value " +
|
|
90
|
+
"takes two calls: the first returns a token and writes nothing, the second redeems it. A " +
|
|
91
|
+
"token is single-use, expires, and is only valid for this tool. Omit it on a pure read of " +
|
|
92
|
+
"the open-question queue — that path performs nothing and needs no handshake.",
|
|
93
|
+
},
|
|
69
94
|
},
|
|
70
95
|
additionalProperties: false,
|
|
71
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
|
+
}
|
|
72
128
|
async function run(args, ctx) {
|
|
73
129
|
const { session } = ctx;
|
|
74
130
|
const notes = [];
|
|
@@ -79,11 +135,7 @@ async function run(args, ctx) {
|
|
|
79
135
|
if (typeof answerArg !== "object" || answerArg === null) {
|
|
80
136
|
throw new ToolInputError('"answer" must be an object');
|
|
81
137
|
}
|
|
82
|
-
const
|
|
83
|
-
const blockedBy = requiredString(a, "blockedBy");
|
|
84
|
-
const value = requiredString(a, "value");
|
|
85
|
-
const environment = optionalString(a, "environment");
|
|
86
|
-
const confirmedBy = optionalString(a, "confirmedBy") ?? "user";
|
|
138
|
+
const { blockedBy, value, environment, confirmedBy, scope } = readAnswer(answerArg, session);
|
|
87
139
|
// "Against what" (see ConfirmedFact.confirmedAtCommit) — the repo's own
|
|
88
140
|
// commit at the moment this answer is given, so a later mint can tell
|
|
89
141
|
// whether the code has moved since a human said this value was correct.
|
|
@@ -103,6 +155,13 @@ async function run(args, ctx) {
|
|
|
103
155
|
confirmedBy,
|
|
104
156
|
confirmedAt: new Date().toISOString(),
|
|
105
157
|
...(confirmedAtCommit === undefined ? {} : { confirmedAtCommit }),
|
|
158
|
+
scope,
|
|
159
|
+
// The id is stamped on the fact rather than looked up when it is read:
|
|
160
|
+
// a fact must not start reaching further because the repository it lives
|
|
161
|
+
// in was later re-linked into a different workspace.
|
|
162
|
+
...(scope === "workspace" && session.config.workspace !== undefined
|
|
163
|
+
? { workspace: session.config.workspace }
|
|
164
|
+
: {}),
|
|
106
165
|
};
|
|
107
166
|
ctx.progress(`Recording an answer for ${blockedBy}${environment === undefined ? "" : ` (${environment})`}`);
|
|
108
167
|
const written = await writeConfirmedFact(session.repoPath, recorded);
|
|
@@ -118,7 +177,11 @@ async function run(args, ctx) {
|
|
|
118
177
|
const provider = session.provider();
|
|
119
178
|
const { refs, truncated } = provider.unresolvedRefs();
|
|
120
179
|
const total = counts(session.store().driver).unresolvedRefs;
|
|
121
|
-
|
|
180
|
+
// Facts recorded here, plus the workspace-scoped ones recorded in the
|
|
181
|
+
// siblings `link_workspace` declared. `applyConfirmedFacts` decides which of
|
|
182
|
+
// those actually reach this repository — this call supplies the candidates,
|
|
183
|
+
// it does not pre-approve them.
|
|
184
|
+
const { answered, stillOpen } = applyConfirmedFacts(refs, [...facts, ...(session.config.linkedFacts ?? [])], session.config.repo, session.config.workspace);
|
|
122
185
|
const grouped = groupRefusalsIntoQuestions(session.config.repo, stillOpen);
|
|
123
186
|
if (truncated) {
|
|
124
187
|
notes.push("The classified-refusal read was capped and some rows were not examined — this list may be " +
|
|
@@ -132,6 +195,17 @@ async function run(args, ctx) {
|
|
|
132
195
|
if (answered.length > 0) {
|
|
133
196
|
notes.push(`${answered.length} previously-open row(s) are already answered by a stored confirmed fact and ` +
|
|
134
197
|
"are not listed as questions.");
|
|
198
|
+
// Named, never folded in. "Somebody answered this here" and "somebody
|
|
199
|
+
// answered this in another repository and declared it workspace-wide" are
|
|
200
|
+
// different facts about what this developer actually knows, and only the
|
|
201
|
+
// second one carries the risk the scope field exists to make deliberate.
|
|
202
|
+
const elsewhere = answered.filter((a) => a.fromAnotherRepo);
|
|
203
|
+
if (elsewhere.length > 0) {
|
|
204
|
+
const repos = [...new Set(elsewhere.flatMap((a) => a.facts.map((f) => f.repo)))].sort();
|
|
205
|
+
notes.push(`${elsewhere.length} of those are answered only by workspace-scoped fact(s) recorded in ` +
|
|
206
|
+
`${repos.join(", ")}, not in ${session.config.repo}. They apply here because whoever ` +
|
|
207
|
+
`recorded them declared scope "workspace", not because this tool matched on the name.`);
|
|
208
|
+
}
|
|
135
209
|
}
|
|
136
210
|
for (const [cls, count] of Object.entries(grouped.dropped)) {
|
|
137
211
|
if (cls === "value-unknown")
|
|
@@ -159,6 +233,7 @@ async function run(args, ctx) {
|
|
|
159
233
|
commitSha: provider.baseStamp().commitSha,
|
|
160
234
|
graphBuiltAt: provider.baseStamp().graphBuiltAt,
|
|
161
235
|
irSchemaVersion: provider.baseStamp().irSchemaVersion,
|
|
236
|
+
commitSpread: provider.baseStamp().commitSpread,
|
|
162
237
|
// Empty only for a pure read that found nothing open — the classified
|
|
163
238
|
// population is real (`classifiedRows`). Recording an answer that happens
|
|
164
239
|
// to empty the queue is a successful write, not an empty search.
|
|
@@ -182,16 +257,25 @@ async function run(args, ctx) {
|
|
|
182
257
|
* `ConfirmedFact` describes itself, so `resolveActionDispatch` mints a token
|
|
183
258
|
* for that call alone.
|
|
184
259
|
*/
|
|
185
|
-
function describeAction(args) {
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
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)
|
|
191
268
|
return undefined;
|
|
269
|
+
const { blockedBy, value, environment, scope } = readAnswer(answerArg, ctx.session);
|
|
192
270
|
return (`record a ConfirmedFact: "${blockedBy}" = "${value}"` +
|
|
193
271
|
(typeof environment === "string" ? ` (environment: ${environment})` : "") +
|
|
194
|
-
|
|
272
|
+
// The reach is part of what is being approved. A workspace-scoped answer
|
|
273
|
+
// affects repositories the approver is not currently looking at, and §7's
|
|
274
|
+
// handshake exists so nothing is performed that was not described.
|
|
275
|
+
(scope === "workspace"
|
|
276
|
+
? " — reaching EVERY repository in this workspace, not just this one,"
|
|
277
|
+
: " — in this repository only,") +
|
|
278
|
+
" capped at reliability class B (DEC-223) once used.");
|
|
195
279
|
}
|
|
196
280
|
export const questionsTool = {
|
|
197
281
|
name: "questions",
|
|
@@ -204,6 +288,9 @@ export const questionsTool = {
|
|
|
204
288
|
"sentence answers those). Pass \"answer\" to record a confirmed value for one question, keyed " +
|
|
205
289
|
"on its exact \"blockedBy\" string within this repository; the answer is capped at reliability " +
|
|
206
290
|
"class B when later used, regardless of anything else about the edge it resolves (DEC-223). " +
|
|
291
|
+
"An answer reaches this repository alone unless it is recorded with scope \"workspace\", which " +
|
|
292
|
+
"extends it to every repository linked into the same workspace; a row answered that way is " +
|
|
293
|
+
"always reported as having been answered elsewhere. " +
|
|
207
294
|
"Recording an answer takes a two-call confirmation: the first call with \"answer\" performs " +
|
|
208
295
|
"nothing and returns a token; call again with \"confirmToken\" to actually record it.",
|
|
209
296
|
inputSchema: SCHEMA,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/tools/questions.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAIxF,OAAO,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"questions.js","sourceRoot":"","sources":["../../src/tools/questions.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal-fetch.d.ts","sourceRoot":"","sources":["../../src/tools/refusal-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAqBlB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,qGAAqG;IACrG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACnD,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"refusal-fetch.d.ts","sourceRoot":"","sources":["../../src/tools/refusal-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAIH,OAAO,EAKL,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAqBlB,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,qGAAqG;IACrG,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,uGAAuG;IACvG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,6FAA6F;IAC7F,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,CAAC;IACnD,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,yDAAyD;IACzD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,MAAM,gBAAgB,GAAG,uBAAuB,GAAG,oBAAoB,CAAC;AAkF9E,eAAO,MAAM,gBAAgB,EAAE,cAe9B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"refusal-fetch.js","sourceRoot":"","sources":["../../src/tools/refusal-fetch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"refusal-fetch.js","sourceRoot":"","sources":["../../src/tools/refusal-fetch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AAEH,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EACL,MAAM,EACN,eAAe,EACf,cAAc,GAGf,MAAM,UAAU,CAAC;AAGlB,MAAM,MAAM,GAAG;IACb,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACV,MAAM,EAAE;YACN,IAAI,EAAE,QAAQ;YACd,WAAW,EACT,2FAA2F;gBAC3F,6EAA6E;SAChF;QACD,QAAQ,EAAE;YACR,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,mJAAmJ;SACjK;KACF;IACD,oBAAoB,EAAE,KAAK;CACnB,CAAC;AAiCX,SAAS,KAAK,CAAC,GAQd;IACC,OAAO;QACL,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,IAAI,EAAE,GAAG,CAAC,IAAI;QACd,UAAU,EAAE,GAAG,CAAC,UAAU;QAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;KACnB,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,GAAG,CAAC,IAA6B,EAAE,GAAgB;IAChE,MAAM,MAAM,GAAG,cAAc,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,eAAe,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC;IAEtD,MAAM,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,SAAS,EAAE,CAAC;IAChD,GAAG,CAAC,QAAQ,CAAC,yCAAyC,CAAC,CAAC;IACxD,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,cAAc,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9E,MAAM,YAAY,GAAG;QACnB,eAAe,EAAE,CAAU,EAAE,8FAA8F;QAC3H,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,SAAS,EAAE,IAAI;KAChB,CAAC;IAEF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,GAAG,CAAC,QAAQ,CAAC,eAAe,IAAI,CAAC,MAAM,0BAA0B,CAAC,CAAC;QACnE,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QAClD,OAAO,MAAM,CAAC;YACZ,GAAG,YAAY;YACf,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI;YAC3C,QAAQ,EACN,OAAO,CAAC,KAAK,KAAK,CAAC;gBACjB,CAAC,CAAC,oFAAoF;gBACtF,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,iDAAiD,OAAO,CAAC,QAAQ,mCAAmC,OAAO,CAAC,MAAM,+BAA+B;YACvK,KAAK,EACH,OAAO,CAAC,KAAK,KAAK,CAAC;gBACjB,CAAC,CAAC,CAAC,wGAAwG,CAAC;gBAC5G,CAAC,CAAC,EAAE;YACR,IAAI,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE;SACpG,CAAC,CAAC;IACL,CAAC;IAED,GAAG,CAAC,QAAQ,CAAC,oCAAoC,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;IAC5C,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,MAAM,CAAC;YACZ,GAAG,YAAY;YACf,KAAK,EAAE,SAAS;YAChB,QAAQ,EAAE,kDAAkD;YAC5D,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE;SAC9D,CAAC,CAAC;IACL,CAAC;IAED,OAAO,MAAM,CAAC;QACZ,GAAG,YAAY;QACf,QAAQ,EAAE,WAAW,IAAI,CAAC,KAAK,CAAC,MAAM,gCAAgC,IAAI,CAAC,KAAK,SAAS;QACzF,KAAK,EAAE,EAAE;QACT,IAAI,EAAE;YACJ,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC;YAC5B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B;KACF,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAmB;IAC9C,IAAI,EAAE,eAAe;IACrB,KAAK,EAAE,MAAM;IACb,IAAI,EAAE,UAAU;IAChB,OAAO,EAAE,OAAO;IAChB,KAAK,EAAE,4CAA4C;IACnD,WAAW,EACT,8FAA8F;QAC9F,iGAAiG;QACjG,+FAA+F;QAC/F,8FAA8F;QAC9F,4FAA4F;QAC5F,kCAAkC;IACpC,WAAW,EAAE,MAA4C;IACzD,GAAG;CACJ,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A service that died during an observed run, recorded as an incident.
|
|
3
|
+
*
|
|
4
|
+
* The fifth and last incident mechanism — and the only one whose evidence is a
|
|
5
|
+
* machine's rather than a person's. `observe_runtime` already spawns real
|
|
6
|
+
* processes and watches them; a process that exits non-zero or takes a fatal
|
|
7
|
+
* signal really did fail, and that is a fact about the world in the same class
|
|
8
|
+
* as the R4 edges that tool already writes.
|
|
9
|
+
*
|
|
10
|
+
* ## An exception is not an incident, and this is where that bites hardest
|
|
11
|
+
*
|
|
12
|
+
* The obvious design — every `EXCEPTION` becomes an incident — is wrong and
|
|
13
|
+
* would be the worst instance of the pollution the whole incident ruling is
|
|
14
|
+
* about. A caught, expected error during a run Descry itself provoked is not a
|
|
15
|
+
* production failure, and `INCIDENT` is an EARNED-class claim that biases diff
|
|
16
|
+
* scoping permanently. The conformance fixture prints a real `Error.stack` on a
|
|
17
|
+
* timer precisely to have caught exceptions in the stream, and none of them may
|
|
18
|
+
* mint anything.
|
|
19
|
+
*
|
|
20
|
+
* So the qualifying condition is about the **process**, not the log:
|
|
21
|
+
*
|
|
22
|
+
* - a non-zero exit code, or
|
|
23
|
+
* - a fatal signal Descry did not send.
|
|
24
|
+
*
|
|
25
|
+
* The second half needs care, because Descry's own teardown *is* a signal.
|
|
26
|
+
* `SIGTERM` at the end of an observation window is the orchestrator stopping a
|
|
27
|
+
* healthy service, and reading it as a crash would make every successful run
|
|
28
|
+
* mint an incident. Only the signals a process takes when it dies of its own
|
|
29
|
+
* accord count — see `FATAL_SIGNALS`.
|
|
30
|
+
*
|
|
31
|
+
* ## What the incident is correlated to, and what that claim is
|
|
32
|
+
*
|
|
33
|
+
* Every file named by an `EXCEPTION` source location observed during the run.
|
|
34
|
+
* That is deliberately *not* "the cause": nothing here knows which exception
|
|
35
|
+
* killed the process, and picking the last one would be recency standing in for
|
|
36
|
+
* causality. The honest claim, and the one the record's own summary makes, is
|
|
37
|
+
* **"these files were implicated in a run in which this service died"** — real,
|
|
38
|
+
* checkable, and weaker than a root cause.
|
|
39
|
+
*
|
|
40
|
+
* This is also better than the ruling predicted.
|
|
41
|
+
* `DEC-NEXT-collector-evidence-carries-no-service-name` blocks the *correlator*
|
|
42
|
+
* from resolving symbol evidence, so the decision expected this mechanism to
|
|
43
|
+
* mint an incident with no file edges at all. It does not need the correlator:
|
|
44
|
+
* `Evidence.sourceLocation.file` is an absolute path the adapter already
|
|
45
|
+
* parsed, and turning it into a repo-relative one is a subtraction, not a
|
|
46
|
+
* resolution.
|
|
47
|
+
*
|
|
48
|
+
* ## Durability
|
|
49
|
+
*
|
|
50
|
+
* Written as a `ConfirmedIncident` carrying `observedInRun`, which is what the
|
|
51
|
+
* projecting source reads to stamp `detectedVia: "runtime-observed"`. A run is
|
|
52
|
+
* gone once the process exits, so the record cannot live only in a store that
|
|
53
|
+
* DEC-017 drops on the next schema bump — the same argument that put a
|
|
54
|
+
* developer's testimony in `.descry/config.json`, reached from the other side.
|
|
55
|
+
*
|
|
56
|
+
* See `DEC-NEXT-incident-minting-beyond-explicit-reverts`.
|
|
57
|
+
*/
|
|
58
|
+
import type { ConfirmedIncident } from "@descryy/ir";
|
|
59
|
+
/** One observed service, in the shape `observe_runtime` already reports. */
|
|
60
|
+
export interface ObservedProcessOutcome {
|
|
61
|
+
readonly service: string;
|
|
62
|
+
readonly started: boolean;
|
|
63
|
+
readonly exitCode: number | null;
|
|
64
|
+
readonly signal: string | null;
|
|
65
|
+
}
|
|
66
|
+
/** An exception's own source location, as the runtime adapter parsed it. */
|
|
67
|
+
export interface ObservedExceptionLocation {
|
|
68
|
+
readonly file: string | null;
|
|
69
|
+
}
|
|
70
|
+
export interface RuntimeIncidentInput {
|
|
71
|
+
readonly repo: string;
|
|
72
|
+
readonly repoRoot: string;
|
|
73
|
+
readonly runId: string;
|
|
74
|
+
readonly services: readonly ObservedProcessOutcome[];
|
|
75
|
+
/** Every exception source location seen during the run, in observation order. */
|
|
76
|
+
readonly exceptionLocations: readonly ObservedExceptionLocation[];
|
|
77
|
+
/** The first line of each exception's text, for the message-similarity signal. */
|
|
78
|
+
readonly exceptionTexts: readonly string[];
|
|
79
|
+
readonly now?: () => Date;
|
|
80
|
+
}
|
|
81
|
+
/** Whether this service's exit is a failure rather than Descry stopping it. */
|
|
82
|
+
export declare function died(outcome: ObservedProcessOutcome): boolean;
|
|
83
|
+
/**
|
|
84
|
+
* The incident a run witnessed, or `null` when every service exited cleanly —
|
|
85
|
+
* which is the overwhelmingly common case and is not a finding.
|
|
86
|
+
*
|
|
87
|
+
* One record per run, not one per dead service: a run in which two services
|
|
88
|
+
* died is one failure of one system observed once, and minting two would double
|
|
89
|
+
* its weight in every ranking that counts incidents.
|
|
90
|
+
*/
|
|
91
|
+
export declare function runtimeObservedIncident(input: RuntimeIncidentInput): ConfirmedIncident | null;
|
|
92
|
+
//# sourceMappingURL=runtime-incident.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-incident.d.ts","sourceRoot":"","sources":["../../src/tools/runtime-incident.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AAIH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAmBrD,4EAA4E;AAC5E,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,4EAA4E;AAC5E,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACrD,iFAAiF;IACjF,QAAQ,CAAC,kBAAkB,EAAE,SAAS,yBAAyB,EAAE,CAAC;IAClE,kFAAkF;IAClF,QAAQ,CAAC,cAAc,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3C,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,+EAA+E;AAC/E,wBAAgB,IAAI,CAAC,OAAO,EAAE,sBAAsB,GAAG,OAAO,CAI7D;AAiBD;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,oBAAoB,GAAG,iBAAiB,GAAG,IAAI,CAuC7F"}
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A service that died during an observed run, recorded as an incident.
|
|
3
|
+
*
|
|
4
|
+
* The fifth and last incident mechanism — and the only one whose evidence is a
|
|
5
|
+
* machine's rather than a person's. `observe_runtime` already spawns real
|
|
6
|
+
* processes and watches them; a process that exits non-zero or takes a fatal
|
|
7
|
+
* signal really did fail, and that is a fact about the world in the same class
|
|
8
|
+
* as the R4 edges that tool already writes.
|
|
9
|
+
*
|
|
10
|
+
* ## An exception is not an incident, and this is where that bites hardest
|
|
11
|
+
*
|
|
12
|
+
* The obvious design — every `EXCEPTION` becomes an incident — is wrong and
|
|
13
|
+
* would be the worst instance of the pollution the whole incident ruling is
|
|
14
|
+
* about. A caught, expected error during a run Descry itself provoked is not a
|
|
15
|
+
* production failure, and `INCIDENT` is an EARNED-class claim that biases diff
|
|
16
|
+
* scoping permanently. The conformance fixture prints a real `Error.stack` on a
|
|
17
|
+
* timer precisely to have caught exceptions in the stream, and none of them may
|
|
18
|
+
* mint anything.
|
|
19
|
+
*
|
|
20
|
+
* So the qualifying condition is about the **process**, not the log:
|
|
21
|
+
*
|
|
22
|
+
* - a non-zero exit code, or
|
|
23
|
+
* - a fatal signal Descry did not send.
|
|
24
|
+
*
|
|
25
|
+
* The second half needs care, because Descry's own teardown *is* a signal.
|
|
26
|
+
* `SIGTERM` at the end of an observation window is the orchestrator stopping a
|
|
27
|
+
* healthy service, and reading it as a crash would make every successful run
|
|
28
|
+
* mint an incident. Only the signals a process takes when it dies of its own
|
|
29
|
+
* accord count — see `FATAL_SIGNALS`.
|
|
30
|
+
*
|
|
31
|
+
* ## What the incident is correlated to, and what that claim is
|
|
32
|
+
*
|
|
33
|
+
* Every file named by an `EXCEPTION` source location observed during the run.
|
|
34
|
+
* That is deliberately *not* "the cause": nothing here knows which exception
|
|
35
|
+
* killed the process, and picking the last one would be recency standing in for
|
|
36
|
+
* causality. The honest claim, and the one the record's own summary makes, is
|
|
37
|
+
* **"these files were implicated in a run in which this service died"** — real,
|
|
38
|
+
* checkable, and weaker than a root cause.
|
|
39
|
+
*
|
|
40
|
+
* This is also better than the ruling predicted.
|
|
41
|
+
* `DEC-NEXT-collector-evidence-carries-no-service-name` blocks the *correlator*
|
|
42
|
+
* from resolving symbol evidence, so the decision expected this mechanism to
|
|
43
|
+
* mint an incident with no file edges at all. It does not need the correlator:
|
|
44
|
+
* `Evidence.sourceLocation.file` is an absolute path the adapter already
|
|
45
|
+
* parsed, and turning it into a repo-relative one is a subtraction, not a
|
|
46
|
+
* resolution.
|
|
47
|
+
*
|
|
48
|
+
* ## Durability
|
|
49
|
+
*
|
|
50
|
+
* Written as a `ConfirmedIncident` carrying `observedInRun`, which is what the
|
|
51
|
+
* projecting source reads to stamp `detectedVia: "runtime-observed"`. A run is
|
|
52
|
+
* gone once the process exits, so the record cannot live only in a store that
|
|
53
|
+
* DEC-017 drops on the next schema bump — the same argument that put a
|
|
54
|
+
* developer's testimony in `.descry/config.json`, reached from the other side.
|
|
55
|
+
*
|
|
56
|
+
* See `DEC-NEXT-incident-minting-beyond-explicit-reverts`.
|
|
57
|
+
*/
|
|
58
|
+
import { isAbsolute, relative } from "node:path";
|
|
59
|
+
/**
|
|
60
|
+
* Signals a process takes when it dies of its own accord.
|
|
61
|
+
*
|
|
62
|
+
* `SIGTERM` and `SIGINT` are absent on purpose: those are what an orchestrator
|
|
63
|
+
* sends to stop a healthy service, and Descry's own teardown sends the first
|
|
64
|
+
* one at the end of every observation window. Counting them would make a
|
|
65
|
+
* successful run mint an incident, every time.
|
|
66
|
+
*/
|
|
67
|
+
const FATAL_SIGNALS = new Set([
|
|
68
|
+
"SIGSEGV",
|
|
69
|
+
"SIGABRT",
|
|
70
|
+
"SIGBUS",
|
|
71
|
+
"SIGFPE",
|
|
72
|
+
"SIGILL",
|
|
73
|
+
"SIGKILL",
|
|
74
|
+
]);
|
|
75
|
+
/** Whether this service's exit is a failure rather than Descry stopping it. */
|
|
76
|
+
export function died(outcome) {
|
|
77
|
+
if (!outcome.started)
|
|
78
|
+
return false;
|
|
79
|
+
if (outcome.exitCode !== null && outcome.exitCode !== 0)
|
|
80
|
+
return true;
|
|
81
|
+
return outcome.signal !== null && FATAL_SIGNALS.has(outcome.signal);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Repo-relative, and only when the path really is inside the repository.
|
|
85
|
+
*
|
|
86
|
+
* A stack frame in `node_modules` or in the runtime's own internals names a
|
|
87
|
+
* real file that is not this repository's, and correlating an incident to it
|
|
88
|
+
* would attach the failure to code the developer cannot change.
|
|
89
|
+
*/
|
|
90
|
+
function insideRepo(repoRoot, file) {
|
|
91
|
+
if (!isAbsolute(file))
|
|
92
|
+
return file.includes("node_modules") ? null : file;
|
|
93
|
+
const rel = relative(repoRoot, file);
|
|
94
|
+
if (rel === "" || rel.startsWith("..") || isAbsolute(rel))
|
|
95
|
+
return null;
|
|
96
|
+
if (rel.split("/").includes("node_modules"))
|
|
97
|
+
return null;
|
|
98
|
+
return rel;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The incident a run witnessed, or `null` when every service exited cleanly —
|
|
102
|
+
* which is the overwhelmingly common case and is not a finding.
|
|
103
|
+
*
|
|
104
|
+
* One record per run, not one per dead service: a run in which two services
|
|
105
|
+
* died is one failure of one system observed once, and minting two would double
|
|
106
|
+
* its weight in every ranking that counts incidents.
|
|
107
|
+
*/
|
|
108
|
+
export function runtimeObservedIncident(input) {
|
|
109
|
+
const dead = input.services.filter(died);
|
|
110
|
+
if (dead.length === 0)
|
|
111
|
+
return null;
|
|
112
|
+
const files = [
|
|
113
|
+
...new Set(input.exceptionLocations
|
|
114
|
+
.map((location) => (location.file === null ? null : insideRepo(input.repoRoot, location.file)))
|
|
115
|
+
.filter((path) => path !== null && path !== "")),
|
|
116
|
+
].sort();
|
|
117
|
+
// No file the repository owns means nothing to attach the incident to, and a
|
|
118
|
+
// record naming no file is invisible to every query that looks for one. The
|
|
119
|
+
// death is still reported in the tool's own counts — this returns no record
|
|
120
|
+
// rather than an unfindable one.
|
|
121
|
+
if (files.length === 0)
|
|
122
|
+
return null;
|
|
123
|
+
const names = dead.map((d) => d.service).sort();
|
|
124
|
+
const how = dead
|
|
125
|
+
.map((d) => `${d.service} ${d.exitCode !== null ? `exited ${String(d.exitCode)}` : `took ${String(d.signal)}`}`)
|
|
126
|
+
.join(", ");
|
|
127
|
+
return {
|
|
128
|
+
repo: input.repo,
|
|
129
|
+
// States what was witnessed and nothing more. Not "X is broken" — a run
|
|
130
|
+
// that provoked a crash has established that the crash happened, not what
|
|
131
|
+
// is wrong.
|
|
132
|
+
summary: `observed run: ${how}`,
|
|
133
|
+
files,
|
|
134
|
+
// The message-similarity signal's input, which is what makes a future
|
|
135
|
+
// failure with the same error text match this one at all.
|
|
136
|
+
...(input.exceptionTexts.length === 0
|
|
137
|
+
? {}
|
|
138
|
+
: { errorText: [...new Set(input.exceptionTexts)].slice(0, 5).join(" | ").slice(0, 2_000) }),
|
|
139
|
+
confirmedBy: `observe_runtime (${names.join(", ")})`,
|
|
140
|
+
confirmedAt: (input.now?.() ?? new Date()).toISOString(),
|
|
141
|
+
observedInRun: input.runId,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
//# sourceMappingURL=runtime-incident.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"runtime-incident.js","sourceRoot":"","sources":["../../src/tools/runtime-incident.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,iDAAiD;AACjD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"scope.d.ts","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH,OAAO,EAA8C,KAAK,SAAS,EAAE,MAAM,eAAe,CAAC;AAC3F,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAGlB,iDAAiD;AACjD,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,sEAAsE;IACtE,QAAQ,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC;CACzB;AAED,8EAA8E;AAC9E,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,gEAAgE;IAChE,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,SAAS,cAAc,EAAE,CAAC;CAC5C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC9C,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,EAAE,CAAC;IAC/C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,GAAG,cAAc,CAAC;AA2JrD,eAAO,MAAM,SAAS,EAAE,cAavB,CAAC"}
|
package/dist/tools/scope.js
CHANGED
|
@@ -99,6 +99,7 @@ async function run(args, ctx) {
|
|
|
99
99
|
commitSha: base.commitSha,
|
|
100
100
|
graphBuiltAt: base.graphBuiltAt,
|
|
101
101
|
irSchemaVersion: base.irSchemaVersion,
|
|
102
|
+
commitSpread: base.commitSpread,
|
|
102
103
|
notes: [
|
|
103
104
|
...notes,
|
|
104
105
|
"This is not a result of zero impact. No seed node was found, so the traversal never ran.",
|
package/dist/tools/scope.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scope.js","sourceRoot":"","sources":["../../src/tools/scope.ts"],"names":[],"mappings":"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"}
|
|
@@ -75,6 +75,19 @@ export interface SimilarIncidentReport {
|
|
|
75
75
|
readonly incident: BriefNode;
|
|
76
76
|
/** The `FIX_PATTERN` this incident resolved to, when a `FIXED_BY` edge exists. */
|
|
77
77
|
readonly fix: BriefNode | null;
|
|
78
|
+
/**
|
|
79
|
+
* How this incident came to exist — the `INCIDENT` node's own
|
|
80
|
+
* `attrs.detectedVia`.
|
|
81
|
+
*
|
|
82
|
+
* Reported per match rather than folded away, because the mechanisms are not
|
|
83
|
+
* interchangeable and a ranked list that hides the difference is not
|
|
84
|
+
* reportable. `explicit-revert` and `manual-revert` rest on a revert somebody
|
|
85
|
+
* wrote; `issue-reference` on a developer's `Fixes #123`; `runtime-observed`
|
|
86
|
+
* on a process that really died; `developer-confirmed` on a person saying so,
|
|
87
|
+
* which is testimony and capped at reliability class B by DEC-223 wherever it
|
|
88
|
+
* is used. `null` for an incident minted before this field existed.
|
|
89
|
+
*/
|
|
90
|
+
readonly detectedVia: string | null;
|
|
78
91
|
readonly signals: readonly SimilarIncidentSignalReport[];
|
|
79
92
|
/** Weighted combination of every signal the query attempted, 0..1. */
|
|
80
93
|
readonly score: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"similar-incidents.d.ts","sourceRoot":"","sources":["../../src/tools/similar-incidents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,OAAO,EAAoB,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAiClB,6EAA6E;AAC7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACzD,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACnD,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8FAA8F;IAC9F,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;
|
|
1
|
+
{"version":3,"file":"similar-incidents.d.ts","sourceRoot":"","sources":["../../src/tools/similar-incidents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgEG;AAEH,OAAO,EAAoB,KAAK,yBAAyB,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAOL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,UAAU,CAAC;AAiClB,6EAA6E;AAC7E,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;IAC7B,kFAAkF;IAClF,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B;;;;;;;;;;;OAWG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,QAAQ,CAAC,OAAO,EAAE,SAAS,2BAA2B,EAAE,CAAC;IACzD,sEAAsE;IACtE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,KAAK,EAAE;QACd,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;QACzC,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;KACtC,CAAC;IACF,QAAQ,CAAC,OAAO,EAAE,SAAS,qBAAqB,EAAE,CAAC;IACnD,2DAA2D;IAC3D,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,8FAA8F;IAC9F,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,kFAAkF;IAClF,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;CAC5B;AA6JD,eAAO,MAAM,oBAAoB,EAAE,cAqBlC,CAAC"}
|