@substrat-run/vertical-host 0.156.0 → 0.159.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/README.md +8 -0
- package/dist/api-docs.d.ts +5 -0
- package/dist/api-docs.d.ts.map +1 -0
- package/dist/api-docs.js +51 -0
- package/dist/api-docs.js.map +1 -0
- package/dist/docs-renderer.generated.d.ts +2 -0
- package/dist/docs-renderer.generated.d.ts.map +1 -0
- package/dist/docs-renderer.generated.js +4 -0
- package/dist/docs-renderer.generated.js.map +1 -0
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +5 -1
- package/dist/errors.js.map +1 -1
- package/dist/invocation-log.d.ts +58 -1
- package/dist/invocation-log.d.ts.map +1 -1
- package/dist/invocation-log.js +24 -0
- package/dist/invocation-log.js.map +1 -1
- package/dist/mcp.d.ts +4 -76
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +137 -30
- package/dist/mcp.js.map +1 -1
- package/dist/operations-routes.d.ts +2 -25
- package/dist/operations-routes.d.ts.map +1 -1
- package/dist/operations-routes.js +28 -0
- package/dist/operations-routes.js.map +1 -1
- package/package.json +12 -9
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docs-renderer.generated.js","sourceRoot":"","sources":["../src/docs-renderer.generated.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,6DAA6D;AAC7D,MAAM,CAAC,MAAM,aAAa,GAAW,o8+3IAAo8+3I,CAAC"}
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,OAAO,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE9C;AAkBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAItE;AA0DD,mGAAmG;AACnG,wBAAgB,aAAa,IAAI,SAAS,MAAM,EAAE,CAEjD;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAmB9E;AAkBD,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAM7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAUnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CAMlE;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAEpC,OAAO,EASL,KAAK,SAAS,EACd,KAAK,OAAO,EACb,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,6EAA6E;AAC7E,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,wEAAwE;AACxE,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE9C;AAkBD,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAItE;AA0DD,mGAAmG;AACnG,wBAAgB,aAAa,IAAI,SAAS,MAAM,EAAE,CAEjD;AAoBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB,GAAG,SAAS,CAmB9E;AAkBD,uFAAuF;AACvF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,MAAM,EAAE,oBAAoB,CAAC;IACtC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,yEAAyE;IACzE,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAkBD;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,iBAAiB,CAM7E;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE,mBAAmB,EAC5B,GAAG,EAAE,OAAO,EACZ,QAAQ,CAAC,EAAE,MAAM,GAChB,iBAAiB,CAUnB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,GAAG,QAAQ,CAMlE;AAkBD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,OAAO,GAAG,OAAO,CAGtE;AAED;;;;;;;GAOG;AACH,wBAAgB,MAAM,CACpB,CAAC,EAAE,OAAO,EACV,IAAI,EAAE,SAAS,EACf,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAC7C,QAAQ,CAOV;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAC1B,CAAC,EAAE,OAAO,EACV,MAAM,EAAE,oBAAoB,EAC5B,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,GAC7C,QAAQ,CAEV"}
|
package/dist/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { HTTPException } from 'hono/http-exception';
|
|
2
2
|
import { errorCodeOf, isScopeGateRefusal, NO_APPLICATION_DETAIL, PROBLEM_CATALOG, PROBLEM_CONTENT_TYPE, problemForStatus, substratError, toProblem, } from '@substrat-run/contracts';
|
|
3
|
-
import { requestIdOf } from './invocation-log.js';
|
|
3
|
+
import { requestIdOf, INVOCATION_RECORD_KEY, invocationStampOf } from './invocation-log.js';
|
|
4
4
|
/** The message a thrown value carries, whatever kind of value it is. */
|
|
5
5
|
export function messageOf(err) {
|
|
6
6
|
return err instanceof Error ? err.message : String(err);
|
|
@@ -232,6 +232,10 @@ export function problemResponse(c, err) {
|
|
|
232
232
|
}
|
|
233
233
|
/** A problem document on the wire: the media type, the request id member, any extra headers. */
|
|
234
234
|
function serveProblem(c, status, body, headers = {}) {
|
|
235
|
+
const record = c.get?.(INVOCATION_RECORD_KEY)
|
|
236
|
+
?? invocationStampOf(c.req.raw)?.record;
|
|
237
|
+
if (record && body.code)
|
|
238
|
+
record.problemCode = body.code;
|
|
235
239
|
return c.body(JSON.stringify(withRequestIdMember(body, c)), status, {
|
|
236
240
|
...headers,
|
|
237
241
|
'content-type': PROBLEM_CONTENT_TYPE,
|
package/dist/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACL,WAAW,EACX,kBAAkB,EAClB,qBAAqB,EACrB,eAAe,EACf,oBAAoB,EACpB,gBAAgB,EAChB,aAAa,EACb,SAAS,GAGV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/invocation-log.d.ts
CHANGED
|
@@ -1,3 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* One structured log line per invocation, carrying the two dimensions Cloudflare
|
|
3
|
+
* structurally cannot record: which TENANT and which SCOPE a request belonged to
|
|
4
|
+
* (`docs/architecture/observability.md` §4.2/§4.3).
|
|
5
|
+
*
|
|
6
|
+
* ## Why this exists at all
|
|
7
|
+
*
|
|
8
|
+
* Observability is keyed on the deployed unit — a worker script — and one vertical's
|
|
9
|
+
* script serves every tenant that installed it. That makes script-grain data safe for
|
|
10
|
+
* staff and for the vertical's builder, and unsafe for an installer: their own numbers
|
|
11
|
+
* are inseparable from everyone else's (§3). The router already stamps `tenantId` on the
|
|
12
|
+
* datapoints and log lines IT emits, which is why tenant-keyed *metrics* need no code in
|
|
13
|
+
* this package. Logs are the other half, and the router cannot supply it: a trace does
|
|
14
|
+
* not cross the dispatch hop. Verified against production — a router line's `traceId`
|
|
15
|
+
* reaches `substrat-control-plane` (a service binding) but never the dispatched vertical,
|
|
16
|
+
* and every vertical event is a trace of exactly one event. There is nothing to join on,
|
|
17
|
+
* so the line has to be emitted on this side.
|
|
18
|
+
*
|
|
19
|
+
* ## What it makes possible that nothing else does
|
|
20
|
+
*
|
|
21
|
+
* A vertical's successful request emits NO log event whatsoever — the host logs only on a
|
|
22
|
+
* platform fault, and the scope host logs nothing at all. So before this middleware, a
|
|
23
|
+
* vertical's entire log presence was its crashes. The stamped line is therefore not only
|
|
24
|
+
* the correlation key; it is the thing that makes a tenant-facing log view have any rows.
|
|
25
|
+
*
|
|
26
|
+
* ## The correlation contract
|
|
27
|
+
*
|
|
28
|
+
* Every log line emitted during one invocation shares `$metadata.requestId`, so a reader
|
|
29
|
+
* resolves a tenant's lines in two phases: filter on `tenantId` to find the invocations,
|
|
30
|
+
* then fetch every line sharing their request ids. That is what attributes a vertical's
|
|
31
|
+
* OWN `console.log` output — which carries no tenant of its own — to the tenant whose
|
|
32
|
+
* request produced it.
|
|
33
|
+
*
|
|
34
|
+
* The inverse of that contract is a rule, not an optimisation: a line with no `tenantId`
|
|
35
|
+
* is never shown to a tenant (§4.3). An un-routed local invocation has no asserted
|
|
36
|
+
* headers and therefore emits no line — there is no tenant it could be attributed to, and
|
|
37
|
+
* inventing one is the only way this could ever leak.
|
|
38
|
+
*
|
|
39
|
+
* ## The tenant is a VERIFIED assertion, never a header
|
|
40
|
+
*
|
|
41
|
+
* Which is why the line is written from `readRoutedNode`'s answer and not from
|
|
42
|
+
* `headers.get('x-substrat-tenant')`. The two look interchangeable — behind the router
|
|
43
|
+
* they are — and they are not, for exactly the reason #966 made `readRoutedNode` itself
|
|
44
|
+
* fail closed: K-26's boundary is that a vertical's script has no public route, and that
|
|
45
|
+
* is a DEPLOYMENT fact, with `workers.dev` on by default. Reading the header directly
|
|
46
|
+
* meant anyone who could reach the script could name any tenant they liked and have the
|
|
47
|
+
* line filed under it — a request the vertical then refuses with a 400, since `nodeFor`
|
|
48
|
+
* does verify, while this middleware's `finally` had already written the forged line.
|
|
49
|
+
*
|
|
50
|
+
* That is not a cosmetic wrong row. The read path uses the stamped line as PROOF that an
|
|
51
|
+
* invocation was a given tenant's, and admits that invocation's other log lines — which
|
|
52
|
+
* carry no tenant of their own — into that tenant's view on the strength of it. A forged
|
|
53
|
+
* stamp is therefore a way to put chosen text on somebody else's dashboard. So the same
|
|
54
|
+
* verification the vertical does for its own routing happens here, with the same secret
|
|
55
|
+
* and the same dev opt-out, and a failed one writes nothing at all.
|
|
56
|
+
*/
|
|
57
|
+
import { type AuthRecording } from '@substrat-run/contracts/auth-diagnostics';
|
|
1
58
|
import type { EmittedReport, ScopeStoreStubOptions } from '@substrat-run/kernel';
|
|
2
59
|
import { STORE_CALL_LOG_CAP, type OutputFieldsReport, type StoreCallTally } from '@substrat-run/kernel/invocation-line';
|
|
3
60
|
import { type OutboundRecording } from './outbound-calls.js';
|
|
@@ -22,7 +79,7 @@ export declare const INVOCATION_RECORD_KEY = "substratInvocationRecord";
|
|
|
22
79
|
* Every field is optional, and an unfilled one is written as `null`: a custom route that
|
|
23
80
|
* never reaches an operation is still logged, it just has nothing to say about these.
|
|
24
81
|
*/
|
|
25
|
-
export interface InvocationRecord extends StoreCallTally, OutboundRecording {
|
|
82
|
+
export interface InvocationRecord extends StoreCallTally, OutboundRecording, AuthRecording {
|
|
26
83
|
/** The operation name `mountOperations` dispatched to. */
|
|
27
84
|
operation?: string;
|
|
28
85
|
/** The `errorCode` a failed call was classified with, when the kernel's vocabulary names it. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation-log.d.ts","sourceRoot":"","sources":["../src/invocation-log.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"invocation-log.d.ts","sourceRoot":"","sources":["../src/invocation-log.ts"],"names":[],"mappings":"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"}
|
package/dist/invocation-log.js
CHANGED
|
@@ -54,6 +54,7 @@
|
|
|
54
54
|
* verification the vertical does for its own routing happens here, with the same secret
|
|
55
55
|
* and the same dev opt-out, and a failed one writes nothing at all.
|
|
56
56
|
*/
|
|
57
|
+
import { AUTH_DIAGNOSTICS_KEY, tallyAuthCheck } from '@substrat-run/contracts/auth-diagnostics';
|
|
57
58
|
// The subpath, not the root: this module is bundled into every vertical's upload (the
|
|
58
59
|
// platform entry, #1893), and the root carries every schema in the vocabulary.
|
|
59
60
|
// The same holds for the kernel, whose two zero-import subpaths this reaches it through.
|
|
@@ -146,6 +147,21 @@ function runRecording(stamp, started, provided, fn) {
|
|
|
146
147
|
const slot = storeCallSlot(provided);
|
|
147
148
|
if (!slot)
|
|
148
149
|
return fn();
|
|
150
|
+
// Resolve the current record at each check: providers may be cached and requests overlap.
|
|
151
|
+
// Read the shared slot rather than closing over this invocation or this package copy.
|
|
152
|
+
try {
|
|
153
|
+
const authSink = {
|
|
154
|
+
record(check) {
|
|
155
|
+
const record = currentRecording();
|
|
156
|
+
if (record)
|
|
157
|
+
tallyAuthCheck(record, check);
|
|
158
|
+
},
|
|
159
|
+
};
|
|
160
|
+
globalThis[AUTH_DIAGNOSTICS_KEY] = authSink;
|
|
161
|
+
}
|
|
162
|
+
catch {
|
|
163
|
+
// An unavailable diagnostic slot must not prevent the request from running.
|
|
164
|
+
}
|
|
149
165
|
markRequestStart(stamp.record, started);
|
|
150
166
|
installOutboundRecorder(currentRecording);
|
|
151
167
|
return slot.run(stamp.record, fn, stamp.invocationId);
|
|
@@ -406,6 +422,12 @@ function traceRequest(stamp, done) {
|
|
|
406
422
|
...(call.reason ? { reason: call.reason } : {}),
|
|
407
423
|
});
|
|
408
424
|
}
|
|
425
|
+
// Summary observations emitted at completion, not timed authentication spans.
|
|
426
|
+
for (const check of record.authChecks ?? []) {
|
|
427
|
+
sink.step(invocationId, { type: 'log', atMs: durationMs, level: check.outcome === 'refused' || check.outcome === 'error' ? 'warn' : 'info', message: `auth ${check.stage}: ${check.outcome} (${check.reason})` });
|
|
428
|
+
}
|
|
429
|
+
if (record.authChecksDropped)
|
|
430
|
+
sink.head(invocationId, { stepsDropped: record.authChecksDropped });
|
|
409
431
|
sink.end(invocationId);
|
|
410
432
|
forgetTraceStart(invocationId);
|
|
411
433
|
}
|
|
@@ -441,6 +463,8 @@ function writeLineOrThrow(stamp, done, options) {
|
|
|
441
463
|
...(record.storeCallsDropped ? { storeCallsDropped: record.storeCallsDropped } : {}),
|
|
442
464
|
...(record.outboundCalls && record.outboundCalls.length > 0 ? { outboundCalls: record.outboundCalls } : {}),
|
|
443
465
|
...(record.outboundCallsDropped ? { outboundCallsDropped: record.outboundCallsDropped } : {}),
|
|
466
|
+
...(record.authChecks?.length ? { authChecks: record.authChecks } : {}),
|
|
467
|
+
...(record.authChecksDropped ? { authChecksDropped: record.authChecksDropped } : {}),
|
|
444
468
|
});
|
|
445
469
|
console.log(JSON.stringify(line));
|
|
446
470
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation-log.js","sourceRoot":"","sources":["../src/invocation-log.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"invocation-log.js","sourceRoot":"","sources":["../src/invocation-log.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts
CHANGED
|
@@ -1,75 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The MCP surface, derived from the SAME declarations as the route table.
|
|
3
|
-
*
|
|
4
|
-
* A vertical already says everything a tool needs: `summary` is a sentence, `input`
|
|
5
|
-
* is a real Zod object, `permission` is the key the operation checks, and `http` is
|
|
6
|
-
* the statement that this operation faces the network at all. So this is a THIRD
|
|
7
|
-
* rendering of one catalog — REST, OpenAPI, MCP — and not a second description of
|
|
8
|
-
* anything. There is nothing to declare and nothing to keep in sync: a vertical that
|
|
9
|
-
* mounts its operations has an MCP endpoint, zero rows of setup (#112).
|
|
10
|
-
*
|
|
11
|
-
* ## `http` is the declaration
|
|
12
|
-
*
|
|
13
|
-
* An operation with `http` becomes a tool; one without does not. That is the exact
|
|
14
|
-
* boundary `mountOperations` already draws — a composed engine's in-scope operations
|
|
15
|
-
* carry no `http`, because the engine is entity-agnostic and does not own a URL shape,
|
|
16
|
-
* so the vertical decides theirs. An `mcp:` block in the model would restate a fact
|
|
17
|
-
* `http` already carries, and would drift the first time a route was renamed.
|
|
18
|
-
*
|
|
19
|
-
* ## Exposure is not authorization
|
|
20
|
-
*
|
|
21
|
-
* Every tool maps to a route that already exists, behind the same bearer verification
|
|
22
|
-
* and the same `assertAllowed(await ctx.check(…))` inside the operation. Anything an
|
|
23
|
-
* agent can do here it could already do with `curl` and the same token, which is why
|
|
24
|
-
* this can default ON without being a permission decision made by omission. It is a
|
|
25
|
-
* rendering, not a new door.
|
|
26
|
-
*
|
|
27
|
-
* The corollary is the split this file draws between two kinds of failure:
|
|
28
|
-
* **authentication** is transport-level (no principal ⇒ HTTP 401, which is what makes
|
|
29
|
-
* a client start its OAuth flow), while **authorization** is in-band (`isError: true`
|
|
30
|
-
* on the tool result, so the agent reads "you may not do that" and picks something
|
|
31
|
-
* else instead of the whole session failing).
|
|
32
|
-
*
|
|
33
|
-
* ## What this does NOT solve
|
|
34
|
-
*
|
|
35
|
-
* Tool COUNT. ticket0 routes 59 operations, and its `desk-admin` role holds 16 of its
|
|
36
|
-
* 19 permission keys — so filtering a tool list by what the caller may do would remove
|
|
37
|
-
* almost nothing for the one persona most likely to hold an MCP client. Curation is
|
|
38
|
-
* `mcp: false` today (declaration-time, "never a tool for anyone" — the recording and
|
|
39
|
-
* service operations), and per-consumer app scoping later (#111), which is where a
|
|
40
|
-
* COHERENT subset actually belongs: which tools a consumer needs is a fact about the
|
|
41
|
-
* consumer, not about the operation or the caller.
|
|
42
|
-
*
|
|
43
|
-
* A permission filter is still worth having as a least-privilege floor — dramatic for
|
|
44
|
-
* a narrow principal, marginal for an admin — but it needs a way to read a principal's
|
|
45
|
-
* keys that `ScopeStub` does not have. The shape it would take already exists for
|
|
46
|
-
* connectors (`grants(): Promise<PermissionKey[]>`, scope-host.ts). Left out here
|
|
47
|
-
* deliberately: `tools/list` filtering is invisible to the protocol, so adding it
|
|
48
|
-
* later breaks no client.
|
|
49
|
-
*
|
|
50
|
-
* ## Delegated calls (#1824)
|
|
51
|
-
*
|
|
52
|
-
* Another app may call this endpoint FOR a user, with a token the team auth-server minted by
|
|
53
|
-
* RFC 8693 exchange: the user as `sub`, the app acting as `act`, and a `scope` of this
|
|
54
|
-
* vertical's permission keys. That scope is a CEILING, not a grant: a call is allowed only
|
|
55
|
-
* when the tool's leading permission key is inside it, and then the operation's own
|
|
56
|
-
* `ctx.check` still asks whether the user holds it. So a delegated call does at most what
|
|
57
|
-
* the user may AND what was delegated.
|
|
58
|
-
*
|
|
59
|
-
* The bearer verifier (`@substrat-run/vertical-auth`) decides whether a delegated token is
|
|
60
|
-
* admitted at all, and only through this mount's CHANNEL: `mcpChannelOf(c)` names the resource
|
|
61
|
-
* this endpoint answers as, for the span of its own `resolveStub` call and nowhere else, and
|
|
62
|
-
* the verifier admits a delegated token only when handed it. The subject it resolves reports
|
|
63
|
-
* the delegation, the vertical's `resolveStub` hands that back with `setMcpDelegation`, and
|
|
64
|
-
* every `tools/call` is held to it before the operation is invoked. Two things fail closed:
|
|
65
|
-
*
|
|
66
|
-
* - A tool with no single leading key (`narrows`, or no permission declared) is out of
|
|
67
|
-
* every delegated scope, since no key says what it reaches.
|
|
68
|
-
* - A bearer that carries `act` with no delegation handed over has every call refused.
|
|
69
|
-
* That is a host that admitted the token without wiring the ceiling, or a verifier too
|
|
70
|
-
* old to know `act` and taking it for the user. Read without the signature, like the
|
|
71
|
-
* audience check below, which is safe for the same reason: it can only refuse.
|
|
72
|
-
*/
|
|
73
1
|
import type { Context, Hono } from 'hono';
|
|
74
2
|
import { type ScopeStub } from '@substrat-run/kernel';
|
|
75
3
|
import { type OutputWalk } from './field-coverage.js';
|
|
@@ -143,10 +71,10 @@ export declare function mcpToolsOf(operations: Readonly<Record<string, object>>)
|
|
|
143
71
|
* `WWW-Authenticate` challenge, fetches the document it names, learns which
|
|
144
72
|
* authorization server issues for this resource, and runs its own flow.
|
|
145
73
|
*
|
|
146
|
-
*
|
|
147
|
-
* a vertical's issuer is its auth composition, and on a hosted install the issuer is
|
|
74
|
+
* A vertical's auth composition knows its issuer. On a hosted install the issuer is
|
|
148
75
|
* per-scope configuration rather than a constant — one script serving many issuers.
|
|
149
|
-
*
|
|
76
|
+
* The default reads the issuer through the local vertical-auth route. Explicit options
|
|
77
|
+
* override that composition for hosts with a different authentication implementation.
|
|
150
78
|
* `authorizationServersOf` in `@substrat-run/vertical-auth` builds it from an
|
|
151
79
|
* instance's resolved configuration.
|
|
152
80
|
*
|
|
@@ -179,7 +107,7 @@ export interface ProtectedResourceOptions {
|
|
|
179
107
|
export interface MountMcpOptions {
|
|
180
108
|
/** Where to mount. Defaults to `${basePath}/mcp` — i.e. `/api/mcp` on the fleet's convention. */
|
|
181
109
|
readonly path?: string;
|
|
182
|
-
/**
|
|
110
|
+
/** RFC 9728 metadata. Defaults to discovery through the local vertical-auth route. */
|
|
183
111
|
readonly protectedResource?: ProtectedResourceOptions;
|
|
184
112
|
/**
|
|
185
113
|
* What the handshake reports. The name defaults to the module prefix the operations
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.js
CHANGED
|
@@ -1,5 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The MCP surface, derived from the SAME declarations as the route table.
|
|
3
|
+
*
|
|
4
|
+
* A vertical already says everything a tool needs: `summary` is a sentence, `input`
|
|
5
|
+
* is a real Zod object, `permission` is the key the operation checks, and `http` is
|
|
6
|
+
* the statement that this operation faces the network at all. So this is a THIRD
|
|
7
|
+
* rendering of one catalog — REST, OpenAPI, MCP — and not a second description of
|
|
8
|
+
* anything. There is nothing to declare and nothing to keep in sync: a vertical that
|
|
9
|
+
* mounts its operations has an MCP endpoint, zero rows of setup (#112).
|
|
10
|
+
*
|
|
11
|
+
* ## `http` is the declaration
|
|
12
|
+
*
|
|
13
|
+
* An operation with `http` becomes a tool; one without does not. That is the exact
|
|
14
|
+
* boundary `mountOperations` already draws — a composed engine's in-scope operations
|
|
15
|
+
* carry no `http`, because the engine is entity-agnostic and does not own a URL shape,
|
|
16
|
+
* so the vertical decides theirs. An `mcp:` block in the model would restate a fact
|
|
17
|
+
* `http` already carries, and would drift the first time a route was renamed.
|
|
18
|
+
*
|
|
19
|
+
* ## Exposure is not authorization
|
|
20
|
+
*
|
|
21
|
+
* Every tool maps to a route that already exists, behind the same bearer verification
|
|
22
|
+
* and the same `assertAllowed(await ctx.check(…))` inside the operation. Anything an
|
|
23
|
+
* agent can do here it could already do with `curl` and the same token, which is why
|
|
24
|
+
* this can default ON without being a permission decision made by omission. It is a
|
|
25
|
+
* rendering, not a new door.
|
|
26
|
+
*
|
|
27
|
+
* The corollary is the split this file draws between two kinds of failure:
|
|
28
|
+
* **authentication** is transport-level (no principal ⇒ HTTP 401, which is what makes
|
|
29
|
+
* a client start its OAuth flow), while **authorization** is in-band (`isError: true`
|
|
30
|
+
* on the tool result, so the agent reads "you may not do that" and picks something
|
|
31
|
+
* else instead of the whole session failing).
|
|
32
|
+
*
|
|
33
|
+
* ## What this does NOT solve
|
|
34
|
+
*
|
|
35
|
+
* Tool COUNT. ticket0 routes 59 operations, and its `desk-admin` role holds 16 of its
|
|
36
|
+
* 19 permission keys — so filtering a tool list by what the caller may do would remove
|
|
37
|
+
* almost nothing for the one persona most likely to hold an MCP client. Curation is
|
|
38
|
+
* `mcp: false` today (declaration-time, "never a tool for anyone" — the recording and
|
|
39
|
+
* service operations), and per-consumer app scoping later (#111), which is where a
|
|
40
|
+
* COHERENT subset actually belongs: which tools a consumer needs is a fact about the
|
|
41
|
+
* consumer, not about the operation or the caller.
|
|
42
|
+
*
|
|
43
|
+
* A permission filter is still worth having as a least-privilege floor — dramatic for
|
|
44
|
+
* a narrow principal, marginal for an admin — but it needs a way to read a principal's
|
|
45
|
+
* keys that `ScopeStub` does not have. The shape it would take already exists for
|
|
46
|
+
* connectors (`grants(): Promise<PermissionKey[]>`, scope-host.ts). Left out here
|
|
47
|
+
* deliberately: `tools/list` filtering is invisible to the protocol, so adding it
|
|
48
|
+
* later breaks no client.
|
|
49
|
+
*
|
|
50
|
+
* ## Delegated calls (#1824)
|
|
51
|
+
*
|
|
52
|
+
* Another app may call this endpoint FOR a user, with a token the team auth-server minted by
|
|
53
|
+
* RFC 8693 exchange: the user as `sub`, the app acting as `act`, and a `scope` of this
|
|
54
|
+
* vertical's permission keys. That scope is a CEILING, not a grant: a call is allowed only
|
|
55
|
+
* when the tool's leading permission key is inside it, and then the operation's own
|
|
56
|
+
* `ctx.check` still asks whether the user holds it. So a delegated call does at most what
|
|
57
|
+
* the user may AND what was delegated.
|
|
58
|
+
*
|
|
59
|
+
* The bearer verifier (`@substrat-run/vertical-auth`) decides whether a delegated token is
|
|
60
|
+
* admitted at all, and only through this mount's CHANNEL: `mcpChannelOf(c)` names the resource
|
|
61
|
+
* this endpoint answers as, for the span of its own `resolveStub` call and nowhere else, and
|
|
62
|
+
* the verifier admits a delegated token only when handed it. The subject it resolves reports
|
|
63
|
+
* the delegation, the vertical's `resolveStub` hands that back with `setMcpDelegation`, and
|
|
64
|
+
* every `tools/call` is held to it before the operation is invoked. Two things fail closed:
|
|
65
|
+
*
|
|
66
|
+
* - A tool with no single leading key (`narrows`, or no permission declared) is out of
|
|
67
|
+
* every delegated scope, since no key says what it reaches.
|
|
68
|
+
* - A bearer that carries `act` with no delegation handed over has every call refused.
|
|
69
|
+
* That is a host that admitted the token without wiring the ceiling, or a verifier too
|
|
70
|
+
* old to know `act` and taking it for the user. Read without the signature, like the
|
|
71
|
+
* audience check below, which is safe for the same reason: it can only refuse.
|
|
72
|
+
*/
|
|
73
|
+
import { recordAuthCheck } from '@substrat-run/contracts/auth-diagnostics';
|
|
1
74
|
import { HTTPException } from 'hono/http-exception';
|
|
2
|
-
import { z, listPageQuery, LIST_PAGE_DEFAULT, LIST_PAGE_MAX, LIST_SORT_PARAM, mcpEndpointPath, mcpResourceOf, errorCodeOf, } from '@substrat-run/contracts';
|
|
75
|
+
import { z, listPageQuery, LIST_PAGE_DEFAULT, LIST_PAGE_MAX, LIST_SORT_PARAM, MCP_AUTHORIZATION_SERVERS_PATH, mcpEndpointPath, mcpResourceOf, errorCodeOf, } from '@substrat-run/contracts';
|
|
3
76
|
import { externalInput, externalResult } from './wire.js';
|
|
4
77
|
import { PermissionDenied } from '@substrat-run/kernel';
|
|
5
78
|
import { fieldCoverageArmed, INVOCATION_RECORD_KEY, invocationStampOf, requestIdOf } from './invocation-log.js';
|
|
@@ -579,7 +652,31 @@ app, operations, resolveStub, options = {}) {
|
|
|
579
652
|
return isNotification ? null : rpcError(id, -32601, `Method not found: ${msg.method ?? '(none)'}`);
|
|
580
653
|
}
|
|
581
654
|
};
|
|
582
|
-
const pr = options.protectedResource
|
|
655
|
+
const pr = options.protectedResource ?? {
|
|
656
|
+
// Dispatch inside this app, never over the network. The ordinary auth route resolves
|
|
657
|
+
// the issuer from the same per-instance wiring as login. Preserve router assertions
|
|
658
|
+
// and env, but send no user's bearer/cookie to a configuration-only request.
|
|
659
|
+
authorizationServers: async (c) => {
|
|
660
|
+
const url = new URL(MCP_AUTHORIZATION_SERVERS_PATH, c.req.url);
|
|
661
|
+
const headers = new Headers(c.req.raw.headers);
|
|
662
|
+
headers.delete('authorization');
|
|
663
|
+
headers.delete('cookie');
|
|
664
|
+
headers.delete('content-type');
|
|
665
|
+
headers.delete('content-length');
|
|
666
|
+
// A node test has no execution context; workerd middleware may need waitUntil.
|
|
667
|
+
let executionCtx;
|
|
668
|
+
try {
|
|
669
|
+
executionCtx = c.executionCtx;
|
|
670
|
+
}
|
|
671
|
+
catch { /* node/self-hosted app.request */ }
|
|
672
|
+
const response = await app.fetch(new Request(url, { headers, signal: c.req.raw.signal }), c.env, executionCtx);
|
|
673
|
+
if (response.status !== 200 || !response.headers.get('content-type')?.includes('application/json'))
|
|
674
|
+
return [];
|
|
675
|
+
const document = await response.json().catch(() => null);
|
|
676
|
+
const servers = document?.authorization_servers;
|
|
677
|
+
return Array.isArray(servers) && servers.every((s) => typeof s === 'string') ? servers : [];
|
|
678
|
+
},
|
|
679
|
+
};
|
|
583
680
|
/**
|
|
584
681
|
* This endpoint's resource identifier, as a client reached it. It is ONE computation for
|
|
585
682
|
* the three places that need it: the document below publishes it, a client requests a
|
|
@@ -587,41 +684,38 @@ app, operations, resolveStub, options = {}) {
|
|
|
587
684
|
* computed per request because a vertical answering on several hostnames is a different
|
|
588
685
|
* resource on each.
|
|
589
686
|
*/
|
|
590
|
-
const resourceFor = (c) => pr
|
|
687
|
+
const resourceFor = (c) => pr.resource ?? mcpResourceOf(new URL(c.req.url).origin, path);
|
|
591
688
|
/**
|
|
592
689
|
* The `WWW-Authenticate` challenge a 401 from this endpoint carries.
|
|
593
690
|
*
|
|
594
|
-
*
|
|
595
|
-
* the scheme, and silence tells it nothing. `resource_metadata` is added only when we
|
|
596
|
-
* actually serve the document, because a challenge pointing at a 404 is worse than a
|
|
597
|
-
* challenge pointing nowhere.
|
|
691
|
+
* Every default mount serves metadata, including one whose auth is not configured yet.
|
|
598
692
|
*/
|
|
599
693
|
const challengeFor = (c, ...params) => {
|
|
600
|
-
|
|
601
|
-
return all.length > 0 ? `Bearer ${all.join(', ')}` : 'Bearer';
|
|
694
|
+
return `Bearer ${[`resource_metadata="${new URL(c.req.url).origin}${wellKnown}"`, ...params].join(', ')}`;
|
|
602
695
|
};
|
|
603
|
-
|
|
604
|
-
const
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
}
|
|
696
|
+
const document = async (c) => {
|
|
697
|
+
const servers = typeof pr.authorizationServers === 'function'
|
|
698
|
+
? await pr.authorizationServers(c)
|
|
699
|
+
: pr.authorizationServers;
|
|
700
|
+
c.header('Cache-Control', 'no-store');
|
|
701
|
+
return c.json({
|
|
702
|
+
resource: resourceFor(c),
|
|
703
|
+
// Omitted rather than empty when nothing is configured: a client reads an empty
|
|
704
|
+
// list as "this resource has no issuer", which is a different claim from "this
|
|
705
|
+
// install has not been configured yet" and sends it down a wrong path.
|
|
706
|
+
...(servers.length > 0 ? { authorization_servers: [...servers] } : {}),
|
|
707
|
+
bearer_methods_supported: ['header'],
|
|
708
|
+
...(pr.scopesSupported ? { scopes_supported: [...pr.scopesSupported] } : {}),
|
|
709
|
+
});
|
|
710
|
+
};
|
|
711
|
+
// RFC 9728 inserts the resource's path into the well-known URL, so a host serving
|
|
712
|
+
// several protected resources describes each one separately. The root form is
|
|
713
|
+
// served too, because clients that predate the path-insertion rule ask for it.
|
|
714
|
+
app.get(wellKnown, document);
|
|
715
|
+
app.get('/.well-known/oauth-protected-resource', document);
|
|
624
716
|
app.post(path, async (c) => {
|
|
717
|
+
const record = c.get?.(INVOCATION_RECORD_KEY)
|
|
718
|
+
?? invocationStampOf(c.req.raw)?.record;
|
|
625
719
|
let body;
|
|
626
720
|
try {
|
|
627
721
|
body = await c.req.json();
|
|
@@ -666,6 +760,9 @@ app, operations, resolveStub, options = {}) {
|
|
|
666
760
|
*/
|
|
667
761
|
const refusal = audienceRefusal(c.req.header('authorization'), resourceFor(c));
|
|
668
762
|
if (refusal) {
|
|
763
|
+
recordAuthCheck({ stage: 'mcp-audience', outcome: 'refused', reason: 'resource-mismatch' });
|
|
764
|
+
if (record)
|
|
765
|
+
record.problemCode = 'unauthenticated';
|
|
669
766
|
const res = problemResponse(c, new HTTPException(401, { message: refusal }));
|
|
670
767
|
const challenged = new Response(res.body, res);
|
|
671
768
|
challenged.headers.set('WWW-Authenticate', challengeFor(c, 'error="invalid_token"', `error_description="${refusal}"`));
|
|
@@ -691,6 +788,16 @@ app, operations, resolveStub, options = {}) {
|
|
|
691
788
|
let stub;
|
|
692
789
|
try {
|
|
693
790
|
stub = await resolveStub(c);
|
|
791
|
+
recordAuthCheck({ stage: 'mcp-caller', outcome: 'accepted', reason: 'caller-resolved' });
|
|
792
|
+
}
|
|
793
|
+
catch (error) {
|
|
794
|
+
const status = statusOf(error);
|
|
795
|
+
const refused = status === 401 || status === 403;
|
|
796
|
+
recordAuthCheck({ stage: 'mcp-caller', outcome: refused ? 'refused' : 'error', reason: refused ? 'caller-refused' : 'caller-error' });
|
|
797
|
+
const code = errorCodeOf(error) ?? (status === 401 ? 'unauthenticated' : status === 403 ? 'forbidden' : undefined);
|
|
798
|
+
if (record && code)
|
|
799
|
+
record.problemCode = code;
|
|
800
|
+
throw error;
|
|
694
801
|
}
|
|
695
802
|
finally {
|
|
696
803
|
set(MCP_CHANNEL_KEY, undefined);
|