stitchkit 0.74.1 → 0.75.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/agent-runtime/sqlite-purge.d.ts +3 -3
- package/dist/agent-runtime/sqlite-purge.d.ts.map +1 -1
- package/dist/agent-runtime/sqlite.d.ts +5 -17
- package/dist/agent-runtime/sqlite.d.ts.map +1 -1
- package/dist/agent-runtime-coding-tools.js +2 -1
- package/dist/agent-runtime-harness.js +5 -4
- package/dist/agent-runtime-sqlite-bun.d.ts +1 -1
- package/dist/agent-runtime-sqlite-bun.d.ts.map +1 -1
- package/dist/agent-runtime-sqlite-node.d.ts +1 -1
- package/dist/agent-runtime-sqlite-node.d.ts.map +1 -1
- package/dist/agent-runtime.js +8 -7
- package/dist/application/keyspace-sqlite.d.ts +31 -0
- package/dist/application/keyspace-sqlite.d.ts.map +1 -0
- package/dist/application/keyspace.d.ts +142 -0
- package/dist/application/keyspace.d.ts.map +1 -0
- package/dist/application/watch-hub.d.ts +113 -0
- package/dist/application/watch-hub.d.ts.map +1 -0
- package/dist/application.d.ts +4 -0
- package/dist/application.d.ts.map +1 -1
- package/dist/application.js +455 -0
- package/dist/cli.js +7 -6
- package/dist/contract/index.js +2 -1
- package/dist/{index-aczggrty.js → index-28jsdwt1.js} +1 -1
- package/dist/index-35z5h2ty.js +594 -0
- package/dist/{index-f6n5n7nz.js → index-4kp4fxvp.js} +4 -18
- package/dist/{index-118v0z41.js → index-52400rdd.js} +8 -3
- package/dist/{index-da1aqnhb.js → index-65kathdm.js} +6 -4
- package/dist/{index-jqtsc9mj.js → index-6wr9f6qm.js} +2 -2
- package/dist/{index-7qy2ex0m.js → index-885chjxq.js} +1 -1
- package/dist/{index-k2zczx1g.js → index-9c5dbr5q.js} +1 -1
- package/dist/{index-s2rchahr.js → index-9my2n66s.js} +4 -4
- package/dist/{index-nemjkxjp.js → index-e0a57ymn.js} +1 -1
- package/dist/{index-vbf2p6me.js → index-endzd8sj.js} +1 -1
- package/dist/{index-vj3vvpaa.js → index-hsz2mmk0.js} +1 -17
- package/dist/{index-s4c8wy8m.js → index-k68e5jz0.js} +2 -2
- package/dist/index-rxfy4cq7.js +17 -0
- package/dist/{index-58jzmnn4.js → index-v5dm4bwq.js} +1 -1
- package/dist/{index-m668wzyc.js → index-v7xjfy10.js} +1 -1
- package/dist/index-vdvmcy7r.js +22 -0
- package/dist/{index-ezmn6ac6.js → index-xgahrwdf.js} +3 -3
- package/dist/index.js +26 -611
- package/dist/internal/sqlite.d.ts +27 -0
- package/dist/internal/sqlite.d.ts.map +1 -0
- package/dist/internal/stable-digest.d.ts +24 -0
- package/dist/internal/stable-digest.d.ts.map +1 -0
- package/dist/live/events.d.ts +155 -0
- package/dist/live/events.d.ts.map +1 -0
- package/dist/live/watch-client.d.ts +66 -0
- package/dist/live/watch-client.d.ts.map +1 -0
- package/dist/live/watch-contract.d.ts +157 -0
- package/dist/live/watch-contract.d.ts.map +1 -0
- package/dist/live.d.ts +18 -0
- package/dist/live.d.ts.map +1 -0
- package/dist/live.js +284 -0
- package/dist/node.js +5 -4
- package/dist/observability/index.js +4 -3
- package/dist/primitives.js +2 -1
- package/dist/remote.js +3 -2
- package/dist/server/create.d.ts.map +1 -1
- package/dist/server/event-bus.d.ts +49 -1
- package/dist/server/event-bus.d.ts.map +1 -1
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +224 -12
- package/dist/server/middleware/trust-fence.d.ts +116 -0
- package/dist/server/middleware/trust-fence.d.ts.map +1 -0
- package/dist/server/types.d.ts +16 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/testing.js +3 -2
- package/dist/tool-invoker.js +6 -5
- package/dist/tools/mcp-round.d.ts.map +1 -1
- package/dist/tools.js +15 -30
- package/llms-full.txt +412 -4
- package/llms.txt +1 -0
- package/package.json +6 -2
package/dist/server/index.js
CHANGED
|
@@ -13,7 +13,7 @@ import {
|
|
|
13
13
|
sseRoute,
|
|
14
14
|
streamingRoute,
|
|
15
15
|
webSocketLane
|
|
16
|
-
} from "../index-
|
|
16
|
+
} from "../index-52400rdd.js";
|
|
17
17
|
import {
|
|
18
18
|
composeAuthHooks,
|
|
19
19
|
createAuthHook,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
signJwt,
|
|
27
27
|
verifyJwt,
|
|
28
28
|
verifyPkce
|
|
29
|
-
} from "../index-
|
|
29
|
+
} from "../index-65kathdm.js";
|
|
30
30
|
import {
|
|
31
31
|
DEFAULT_CORS_ALLOW_HEADERS,
|
|
32
32
|
DEFAULT_CORS_EXPOSE_HEADERS,
|
|
@@ -40,7 +40,7 @@ import {
|
|
|
40
40
|
defineMultipartStream,
|
|
41
41
|
implement,
|
|
42
42
|
implementRegistry
|
|
43
|
-
} from "../index-
|
|
43
|
+
} from "../index-endzd8sj.js";
|
|
44
44
|
import {
|
|
45
45
|
extractIp,
|
|
46
46
|
generateTraceId,
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
isPublicIp,
|
|
50
50
|
resolveSocketIp,
|
|
51
51
|
resolveTraceId
|
|
52
|
-
} from "../index-
|
|
52
|
+
} from "../index-e0a57ymn.js";
|
|
53
53
|
import {
|
|
54
54
|
isWithinDir,
|
|
55
55
|
realPathWithinDir
|
|
@@ -81,7 +81,8 @@ import {
|
|
|
81
81
|
DEFAULT_CONTRACT_STREAM_FRAME_BYTES,
|
|
82
82
|
joinRoutePath,
|
|
83
83
|
parseTrailingWildcard
|
|
84
|
-
} from "../index-
|
|
84
|
+
} from "../index-hsz2mmk0.js";
|
|
85
|
+
import"../index-rxfy4cq7.js";
|
|
85
86
|
import {
|
|
86
87
|
AppError,
|
|
87
88
|
STITCH_ERROR_STATUS,
|
|
@@ -406,8 +407,34 @@ function createErrorHook(config) {
|
|
|
406
407
|
};
|
|
407
408
|
}
|
|
408
409
|
// src/server/event-bus.ts
|
|
410
|
+
function isDecision(value) {
|
|
411
|
+
if (typeof value !== "object" || value === null)
|
|
412
|
+
return false;
|
|
413
|
+
const outcome = Reflect.get(value, "outcome");
|
|
414
|
+
if (outcome === "allow" || outcome === "defer")
|
|
415
|
+
return true;
|
|
416
|
+
return outcome === "deny" && typeof Reflect.get(value, "reason") === "string";
|
|
417
|
+
}
|
|
418
|
+
async function withDeadline(value, timeoutMs) {
|
|
419
|
+
if (!(value instanceof Promise))
|
|
420
|
+
return { settled: true, value };
|
|
421
|
+
let timer;
|
|
422
|
+
const expiry = new Promise((resolve) => {
|
|
423
|
+
timer = setTimeout(() => resolve({ settled: false }), timeoutMs);
|
|
424
|
+
});
|
|
425
|
+
try {
|
|
426
|
+
return await Promise.race([
|
|
427
|
+
value.then((settledValue) => ({ settled: true, value: settledValue })),
|
|
428
|
+
expiry
|
|
429
|
+
]);
|
|
430
|
+
} finally {
|
|
431
|
+
if (timer !== undefined)
|
|
432
|
+
clearTimeout(timer);
|
|
433
|
+
}
|
|
434
|
+
}
|
|
409
435
|
function createEventBus(options = {}) {
|
|
410
436
|
const subscriptions = new Map;
|
|
437
|
+
const declared = options.topics;
|
|
411
438
|
function add(event, fn, once) {
|
|
412
439
|
let set = subscriptions.get(event);
|
|
413
440
|
if (!set) {
|
|
@@ -420,24 +447,107 @@ function createEventBus(options = {}) {
|
|
|
420
447
|
set.delete(sub);
|
|
421
448
|
};
|
|
422
449
|
}
|
|
450
|
+
function declarationFor(event, verb) {
|
|
451
|
+
if (declared === undefined) {
|
|
452
|
+
if (verb === "emit")
|
|
453
|
+
return;
|
|
454
|
+
throw new Error(`[stitchkit] event bus: ${verb}("${event}") needs declared topics — pass \`topics\` from defineEvents. Its delivery deadline and undecided outcome come from the declaration, and neither has a default.`);
|
|
455
|
+
}
|
|
456
|
+
const topic = Reflect.get(declared, event);
|
|
457
|
+
if (topic === undefined) {
|
|
458
|
+
throw new Error(`[stitchkit] event bus: "${event}" is not a declared topic. Declared: ${Object.keys(declared).join(", ") || "(none)"}.`);
|
|
459
|
+
}
|
|
460
|
+
const expected = { emit: "emit", serial: "emitSerial", decision: "decide" };
|
|
461
|
+
if (expected[topic.mode] !== verb) {
|
|
462
|
+
throw new Error(`[stitchkit] event bus: "${event}" is declared with mode '${topic.mode}', so it is delivered with ${expected[topic.mode]}(), not ${verb}().`);
|
|
463
|
+
}
|
|
464
|
+
return topic;
|
|
465
|
+
}
|
|
466
|
+
function planned(event) {
|
|
467
|
+
const set = subscriptions.get(event) ?? new Set;
|
|
468
|
+
return { set, subs: [...set] };
|
|
469
|
+
}
|
|
470
|
+
function report(error, event) {
|
|
471
|
+
options.onListenerError?.(error, event);
|
|
472
|
+
}
|
|
423
473
|
return {
|
|
424
474
|
emit(event, data) {
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
475
|
+
declarationFor(event, "emit");
|
|
476
|
+
const { set, subs } = planned(event);
|
|
477
|
+
for (const sub of subs) {
|
|
478
|
+
if (!set.has(sub))
|
|
479
|
+
continue;
|
|
429
480
|
if (sub.once)
|
|
430
481
|
set.delete(sub);
|
|
431
482
|
try {
|
|
432
483
|
const result = sub.fn(data);
|
|
433
|
-
if (result instanceof Promise)
|
|
434
|
-
result.catch((err) =>
|
|
484
|
+
if (result instanceof Promise)
|
|
485
|
+
result.catch((err) => report(err, event));
|
|
486
|
+
} catch (err) {
|
|
487
|
+
report(err, event);
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
},
|
|
491
|
+
async emitSerial(event, data) {
|
|
492
|
+
const topic = declarationFor(event, "emitSerial");
|
|
493
|
+
const timeoutMs = topic?.listenerTimeoutMs ?? 0;
|
|
494
|
+
const { set, subs } = planned(event);
|
|
495
|
+
for (const sub of subs) {
|
|
496
|
+
if (!set.has(sub))
|
|
497
|
+
continue;
|
|
498
|
+
if (sub.once)
|
|
499
|
+
set.delete(sub);
|
|
500
|
+
try {
|
|
501
|
+
const outcome = await withDeadline(sub.fn(data), timeoutMs);
|
|
502
|
+
if (!outcome.settled) {
|
|
503
|
+
report(new Error(`listener did not settle within ${timeoutMs}ms`), event);
|
|
435
504
|
}
|
|
436
505
|
} catch (err) {
|
|
437
|
-
|
|
506
|
+
report(err, event);
|
|
438
507
|
}
|
|
439
508
|
}
|
|
440
509
|
},
|
|
510
|
+
async decide(event, data) {
|
|
511
|
+
const topic = declarationFor(event, "decide");
|
|
512
|
+
const timeoutMs = topic?.listenerTimeoutMs ?? 0;
|
|
513
|
+
const undecided = topic?.whenAllDefer ?? "deny";
|
|
514
|
+
const { set, subs } = planned(event);
|
|
515
|
+
let allowed = false;
|
|
516
|
+
for (const sub of subs) {
|
|
517
|
+
if (!set.has(sub))
|
|
518
|
+
continue;
|
|
519
|
+
if (sub.once)
|
|
520
|
+
set.delete(sub);
|
|
521
|
+
let vote;
|
|
522
|
+
try {
|
|
523
|
+
const outcome = await withDeadline(sub.fn(data), timeoutMs);
|
|
524
|
+
if (!outcome.settled) {
|
|
525
|
+
vote = { outcome: "deny", reason: `listener did not vote within ${timeoutMs}ms` };
|
|
526
|
+
} else if (isDecision(outcome.value)) {
|
|
527
|
+
vote = outcome.value;
|
|
528
|
+
} else {
|
|
529
|
+
vote = {
|
|
530
|
+
outcome: "deny",
|
|
531
|
+
reason: 'listener returned no decision — a decision listener returns { outcome: "allow" | "deny" | "defer" }'
|
|
532
|
+
};
|
|
533
|
+
}
|
|
534
|
+
} catch (err) {
|
|
535
|
+
vote = {
|
|
536
|
+
outcome: "deny",
|
|
537
|
+
reason: err instanceof Error ? `listener threw: ${err.message}` : "listener threw"
|
|
538
|
+
};
|
|
539
|
+
}
|
|
540
|
+
if (vote.outcome === "deny") {
|
|
541
|
+
report(new Error(vote.reason), event);
|
|
542
|
+
return vote;
|
|
543
|
+
}
|
|
544
|
+
if (vote.outcome === "allow")
|
|
545
|
+
allowed = true;
|
|
546
|
+
}
|
|
547
|
+
if (allowed)
|
|
548
|
+
return { outcome: "allow" };
|
|
549
|
+
return undecided === "allow" ? { outcome: "allow" } : { outcome: "deny", reason: "no listener claimed this event" };
|
|
550
|
+
},
|
|
441
551
|
on(event, handler) {
|
|
442
552
|
return add(event, handler, false);
|
|
443
553
|
},
|
|
@@ -716,6 +826,106 @@ function composeLifecycleHooks(...hooks) {
|
|
|
716
826
|
}
|
|
717
827
|
};
|
|
718
828
|
}
|
|
829
|
+
// src/server/middleware/trust-fence.ts
|
|
830
|
+
var DEFAULT_PORTS = new Set(["80", "443"]);
|
|
831
|
+
function readAuthority(value) {
|
|
832
|
+
if (value.includes("*"))
|
|
833
|
+
return;
|
|
834
|
+
const match = /^(\[[^\]]+\]|[^:[\]]+)(?::(\d{1,5}))?$/.exec(value.trim());
|
|
835
|
+
if (!match?.[1])
|
|
836
|
+
return;
|
|
837
|
+
const port = match[2] ?? null;
|
|
838
|
+
if (port !== null) {
|
|
839
|
+
const numeric = Number(port);
|
|
840
|
+
if (numeric < 1 || numeric > 65535)
|
|
841
|
+
return;
|
|
842
|
+
}
|
|
843
|
+
let url;
|
|
844
|
+
try {
|
|
845
|
+
url = new URL(`http://${match[1]}`);
|
|
846
|
+
} catch {
|
|
847
|
+
return;
|
|
848
|
+
}
|
|
849
|
+
if (url.pathname !== "/" || url.search !== "" || url.username !== "" || url.hostname === "") {
|
|
850
|
+
return;
|
|
851
|
+
}
|
|
852
|
+
return { hostname: url.hostname, port };
|
|
853
|
+
}
|
|
854
|
+
function comparablePort(port) {
|
|
855
|
+
return port === null || DEFAULT_PORTS.has(port) ? null : port;
|
|
856
|
+
}
|
|
857
|
+
function isLoopbackAddress(address) {
|
|
858
|
+
if (address === "")
|
|
859
|
+
return false;
|
|
860
|
+
const bare = address.replace(/^\[|\]$/g, "").replace(/^::ffff:/i, "");
|
|
861
|
+
if (bare === "::1")
|
|
862
|
+
return true;
|
|
863
|
+
const octets = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(bare);
|
|
864
|
+
return octets?.[1] === "127";
|
|
865
|
+
}
|
|
866
|
+
function createTrustFence(config) {
|
|
867
|
+
if (config.trustedHosts.length === 0) {
|
|
868
|
+
throw new Error("[stitchkit] trust fence: `trustedHosts` cannot be empty — a fence that trusts nothing refuses every request, which is never what a running server wants. List the authorities this server answers on.");
|
|
869
|
+
}
|
|
870
|
+
const trusted = [];
|
|
871
|
+
for (const entry of config.trustedHosts) {
|
|
872
|
+
const authority = readAuthority(entry);
|
|
873
|
+
if (!authority) {
|
|
874
|
+
throw new Error(`[stitchkit] trust fence: "${entry}" is not an authority. An entry is \`host\` or \`host:port\` — no scheme, no path, no credentials, no wildcard. An entry that cannot be read back as a canonical authority is refused here rather than quietly matching nothing.`);
|
|
875
|
+
}
|
|
876
|
+
trusted.push(authority);
|
|
877
|
+
}
|
|
878
|
+
function refuse(refusal) {
|
|
879
|
+
config.onRefused?.(refusal);
|
|
880
|
+
config.logger?.warn?.("[stitchkit] trust fence refused a request", {
|
|
881
|
+
reason: refusal.reason,
|
|
882
|
+
lane: refusal.lane,
|
|
883
|
+
host: refusal.host,
|
|
884
|
+
origin: refusal.origin
|
|
885
|
+
});
|
|
886
|
+
return refusal;
|
|
887
|
+
}
|
|
888
|
+
function check(request, lane) {
|
|
889
|
+
const host = request.headers.get("host");
|
|
890
|
+
const origin = request.headers.get("origin");
|
|
891
|
+
const site = request.headers.get("sec-fetch-site");
|
|
892
|
+
if (host === null) {
|
|
893
|
+
return refuse({ reason: "missing-host", lane, host, origin, site });
|
|
894
|
+
}
|
|
895
|
+
const requested = readAuthority(host);
|
|
896
|
+
if (!requested) {
|
|
897
|
+
return refuse({ reason: "untrusted-host", lane, host, origin, site });
|
|
898
|
+
}
|
|
899
|
+
const matched = trusted.some((entry) => entry.hostname === requested.hostname && (entry.port === null || entry.port === requested.port));
|
|
900
|
+
if (!matched) {
|
|
901
|
+
return refuse({ reason: "untrusted-host", lane, host, origin, site });
|
|
902
|
+
}
|
|
903
|
+
if (site === "cross-site") {
|
|
904
|
+
return refuse({ reason: "cross-site", lane, host, origin, site });
|
|
905
|
+
}
|
|
906
|
+
if (origin !== null && origin !== "null") {
|
|
907
|
+
let originAuthority;
|
|
908
|
+
try {
|
|
909
|
+
const parsed = new URL(origin);
|
|
910
|
+
originAuthority = { hostname: parsed.hostname, port: parsed.port || null };
|
|
911
|
+
} catch {
|
|
912
|
+
originAuthority = undefined;
|
|
913
|
+
}
|
|
914
|
+
const agrees = originAuthority !== undefined && originAuthority.hostname === requested.hostname && comparablePort(originAuthority.port) === comparablePort(requested.port);
|
|
915
|
+
if (!agrees) {
|
|
916
|
+
return refuse({ reason: "origin-mismatch", lane, host, origin, site });
|
|
917
|
+
}
|
|
918
|
+
}
|
|
919
|
+
return;
|
|
920
|
+
}
|
|
921
|
+
return {
|
|
922
|
+
hooks: {
|
|
923
|
+
onRequest: (request) => check(request, "http") === undefined ? undefined : new Response(null, { status: 403 })
|
|
924
|
+
},
|
|
925
|
+
allowRequest: (request) => check(request, "socket") === undefined,
|
|
926
|
+
check
|
|
927
|
+
};
|
|
928
|
+
}
|
|
719
929
|
// src/server/openapi.ts
|
|
720
930
|
var ERROR_ENVELOPE_SCHEMA = {
|
|
721
931
|
type: "object",
|
|
@@ -1022,6 +1232,7 @@ export {
|
|
|
1022
1232
|
isWithinDir,
|
|
1023
1233
|
isStitchErrorCode,
|
|
1024
1234
|
isPublicIp,
|
|
1235
|
+
isLoopbackAddress,
|
|
1025
1236
|
implementRegistry,
|
|
1026
1237
|
implement,
|
|
1027
1238
|
getClientInfo,
|
|
@@ -1037,6 +1248,7 @@ export {
|
|
|
1037
1248
|
defineMultipartStream,
|
|
1038
1249
|
defineCookie,
|
|
1039
1250
|
createUnixClientTransport,
|
|
1251
|
+
createTrustFence,
|
|
1040
1252
|
createSocketIOServer,
|
|
1041
1253
|
createServer,
|
|
1042
1254
|
createScopedImplementRegistry,
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A trust fence by authority, not by port.
|
|
3
|
+
*
|
|
4
|
+
* A server bound to a private network is reachable by anything that can resolve
|
|
5
|
+
* a name to its address — which is what makes DNS rebinding work: a page served
|
|
6
|
+
* from an attacker's origin re-resolves that name to `127.0.0.1` and then talks
|
|
7
|
+
* to the local server *same-origin*, so CORS never enters the picture and no
|
|
8
|
+
* preflight is ever sent. The only thing that separates that request from a
|
|
9
|
+
* legitimate one is the authority it addressed, and the only way to use it is to
|
|
10
|
+
* compare it against a list of authorities that were expected.
|
|
11
|
+
*
|
|
12
|
+
* This is not CORS and does not replace it. CORS tells a browser what a *page*
|
|
13
|
+
* may read across origins; the fence tells the server which authority it agreed
|
|
14
|
+
* to answer on. A server can want both, and a server that only sets CORS is
|
|
15
|
+
* unfenced against the attack above.
|
|
16
|
+
*
|
|
17
|
+
* ## What it fences, and what it does not
|
|
18
|
+
*
|
|
19
|
+
* Two lanes, because the framework has two and they do not share an entry:
|
|
20
|
+
*
|
|
21
|
+
* - **HTTP** — `hooks.onRequest`, which runs before routing, so a refusal costs
|
|
22
|
+
* no dispatch, no handler and no auth rule.
|
|
23
|
+
* - **Socket.IO** — `allowRequest`, the engine's own admission policy. This is
|
|
24
|
+
* not a nicety: `/socket.io/*` never reaches `hooks.onRequest` on either
|
|
25
|
+
* runtime. On Bun the fetch handler answers it before the contract handler
|
|
26
|
+
* exists; on Node `socket.attach` gives the upgrade to Socket.IO directly. A
|
|
27
|
+
* fence installed only in `hooks` leaves every socket lane open, which is the
|
|
28
|
+
* half a live application actually pushes data over.
|
|
29
|
+
*
|
|
30
|
+
* Two things it deliberately does not do:
|
|
31
|
+
*
|
|
32
|
+
* - **It does not gate operations.** "Only from this machine" is a property of
|
|
33
|
+
* an operation, and operations are known after routing, not before it. Express
|
|
34
|
+
* it as an auth rule over `ctx.ipAddress` — {@link isLoopbackAddress} is here
|
|
35
|
+
* for exactly that — so it composes with every other rule and commits in the
|
|
36
|
+
* same transaction instead of becoming a second, invisible authorization
|
|
37
|
+
* registry.
|
|
38
|
+
* - **It does not re-check an open connection.** Both lanes check at admission.
|
|
39
|
+
* A WebSocket that passed stays open on its own terms.
|
|
40
|
+
*
|
|
41
|
+
* One more asymmetry worth knowing: with `cors` configured, an `OPTIONS`
|
|
42
|
+
* preflight is answered before `onRequest`, so the fence does not see it. That
|
|
43
|
+
* preflight carries no operation and no body, and the attack this fence is for
|
|
44
|
+
* never sends one — but a reader should know the fence's HTTP lane starts at the
|
|
45
|
+
* request, not at its preflight.
|
|
46
|
+
*
|
|
47
|
+
* → ADR 0151.
|
|
48
|
+
*/
|
|
49
|
+
import type { StitchLogger } from '../../logger.js';
|
|
50
|
+
import type { SocketIORequestPolicy } from '../socket-io-config.js';
|
|
51
|
+
import type { LifecycleHooks } from '../types.js';
|
|
52
|
+
/** Which admission point refused. */
|
|
53
|
+
export type TrustLane = 'http' | 'socket';
|
|
54
|
+
export type TrustRefusalReason =
|
|
55
|
+
/** No `Host` header at all — nothing to compare, so nothing to trust. */
|
|
56
|
+
'missing-host'
|
|
57
|
+
/** A `Host` that is not in the list, or is not a readable authority. */
|
|
58
|
+
| 'untrusted-host'
|
|
59
|
+
/** An `Origin` that disagrees with the `Host` it was sent to. */
|
|
60
|
+
| 'origin-mismatch'
|
|
61
|
+
/** The browser said this request came from another site. */
|
|
62
|
+
| 'cross-site';
|
|
63
|
+
export interface TrustRefusal {
|
|
64
|
+
readonly reason: TrustRefusalReason;
|
|
65
|
+
readonly lane: TrustLane;
|
|
66
|
+
/** Exactly what arrived, for the log — `null` when the header was absent. */
|
|
67
|
+
readonly host: string | null;
|
|
68
|
+
readonly origin: string | null;
|
|
69
|
+
readonly site: string | null;
|
|
70
|
+
}
|
|
71
|
+
export interface TrustFenceConfig {
|
|
72
|
+
/**
|
|
73
|
+
* The authorities this server answers on: `host` or `host:port`.
|
|
74
|
+
*
|
|
75
|
+
* An entry without a port trusts that host on **any** port; with a port, only
|
|
76
|
+
* that one. Compared after WHATWG normalisation on both sides, so
|
|
77
|
+
* `LOCALHOST`, `localhost` and an IDN and its punycode are one entry — and
|
|
78
|
+
* comparison is exact, never a prefix or a pattern. A port alone is not an
|
|
79
|
+
* authority: matching by port is what leaves a server open to every host that
|
|
80
|
+
* resolves to it, which is the arrangement this exists to replace.
|
|
81
|
+
*
|
|
82
|
+
* There is no implicit loopback entry. Trusting `localhost` because it looks
|
|
83
|
+
* harmless would be the fence widening itself for a case nobody wrote down;
|
|
84
|
+
* list it when you want it.
|
|
85
|
+
*/
|
|
86
|
+
readonly trustedHosts: readonly string[];
|
|
87
|
+
/** Called on every refusal, before the 403 is written. */
|
|
88
|
+
readonly onRefused?: (refusal: TrustRefusal) => void;
|
|
89
|
+
/** Refusals are logged at `warn` when a logger is supplied. */
|
|
90
|
+
readonly logger?: StitchLogger;
|
|
91
|
+
}
|
|
92
|
+
export interface TrustFence {
|
|
93
|
+
/**
|
|
94
|
+
* Compose into the server's hooks — `composeLifecycleHooks(fence.hooks, …)`.
|
|
95
|
+
*
|
|
96
|
+
* Order matters and the fence has to be first: `composeLifecycleHooks` stops
|
|
97
|
+
* at the first hook that answers, so a fence placed after a hook that returns
|
|
98
|
+
* a `Response` never runs for those requests.
|
|
99
|
+
*/
|
|
100
|
+
readonly hooks: Pick<LifecycleHooks, 'onRequest'>;
|
|
101
|
+
/** Pass as `socket.allowRequest` — the Socket.IO lane's only admission point. */
|
|
102
|
+
readonly allowRequest: SocketIORequestPolicy;
|
|
103
|
+
/** The decision itself: the refusal, or `undefined` when the request is trusted. */
|
|
104
|
+
check(request: Request, lane: TrustLane): TrustRefusal | undefined;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Whether an address is this machine talking to itself.
|
|
108
|
+
*
|
|
109
|
+
* For the auth rule that a privileged operation belongs to — `scope`-gated over
|
|
110
|
+
* `ctx.ipAddress` — not for the fence, which compares authorities. An empty
|
|
111
|
+
* string is what `extractIp` returns when the runtime could not tell it, and
|
|
112
|
+
* "not known" is answered `false` here: an unknown peer is not a local one.
|
|
113
|
+
*/
|
|
114
|
+
export declare function isLoopbackAddress(address: string): boolean;
|
|
115
|
+
export declare function createTrustFence(config: TrustFenceConfig): TrustFence;
|
|
116
|
+
//# sourceMappingURL=trust-fence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-fence.d.ts","sourceRoot":"","sources":["../../../src/server/middleware/trust-fence.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+CG;AACH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAE/C,qCAAqC;AACrC,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,kBAAkB;AAC5B,yEAAyE;AACvE,cAAc;AAChB,wEAAwE;GACtE,gBAAgB;AAClB,iEAAiE;GAC/D,iBAAiB;AACnB,4DAA4D;GAC1D,YAAY,CAAC;AAEjB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IACzB,6EAA6E;IAC7E,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;OAaG;IACH,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,0DAA0D;IAC1D,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IACrD,+DAA+D;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,YAAY,CAAC;CAChC;AAED,MAAM,WAAW,UAAU;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAClD,iFAAiF;IACjF,QAAQ,CAAC,YAAY,EAAE,qBAAqB,CAAC;IAC7C,oFAAoF;IACpF,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;CACpE;AAyDD;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAM1D;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA2FrE"}
|
package/dist/server/types.d.ts
CHANGED
|
@@ -231,10 +231,25 @@ export interface LifecycleHooks {
|
|
|
231
231
|
*/
|
|
232
232
|
onError?: (ctx: RuntimeContext, error: unknown, endpoint?: MethodDef) => Response | undefined | Promise<Response | undefined>;
|
|
233
233
|
}
|
|
234
|
+
/**
|
|
235
|
+
* The hooks a route group may declare.
|
|
236
|
+
*
|
|
237
|
+
* `onRequest` is deliberately absent. It runs **before routing** — that is what
|
|
238
|
+
* makes it the place to refuse a request without dispatching it — and a group is
|
|
239
|
+
* not known until routing has chosen one, so a per-group `onRequest` could only
|
|
240
|
+
* be honoured by matching the group prefix a second time, in a second router,
|
|
241
|
+
* ahead of the real one. It was declarable here for a long time and dispatched
|
|
242
|
+
* nowhere: it typechecked, it ran, and it fenced nothing. Refusing it in the type
|
|
243
|
+
* is the honest repair — an option that cannot be honoured must not be
|
|
244
|
+
* expressible. Refuse a request before dispatch with the server-level
|
|
245
|
+
* `hooks.onRequest`; gate a group with `authorize`, which runs once the
|
|
246
|
+
* endpoint is known.
|
|
247
|
+
*/
|
|
248
|
+
export type RouteGroupHooks = Omit<LifecycleHooks, 'onRequest'>;
|
|
234
249
|
export interface RouteGroup {
|
|
235
250
|
pathPrefix?: string;
|
|
236
251
|
services: ServiceDef[];
|
|
237
|
-
hooks?:
|
|
252
|
+
hooks?: RouteGroupHooks;
|
|
238
253
|
}
|
|
239
254
|
/**
|
|
240
255
|
* A non-contract HTTP route — for things that cannot be a clean JSON
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/server/types.ts"],"names":[],"mappings":"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"}
|
package/dist/testing.js
CHANGED
|
@@ -24,12 +24,13 @@ import {
|
|
|
24
24
|
import {
|
|
25
25
|
createClient,
|
|
26
26
|
createClients
|
|
27
|
-
} from "./index-
|
|
27
|
+
} from "./index-v5dm4bwq.js";
|
|
28
28
|
import"./index-1rxswfbv.js";
|
|
29
29
|
import"./index-nt1mp8km.js";
|
|
30
30
|
import {
|
|
31
31
|
joinRoutePath
|
|
32
|
-
} from "./index-
|
|
32
|
+
} from "./index-hsz2mmk0.js";
|
|
33
|
+
import"./index-rxfy4cq7.js";
|
|
33
34
|
import"./index-0w9abg87.js";
|
|
34
35
|
import {
|
|
35
36
|
isRecord
|
package/dist/tool-invoker.js
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
2
|
createToolInvoker
|
|
3
|
-
} from "./index-
|
|
4
|
-
import"./index-
|
|
5
|
-
import"./index-
|
|
6
|
-
import"./index-
|
|
3
|
+
} from "./index-6wr9f6qm.js";
|
|
4
|
+
import"./index-885chjxq.js";
|
|
5
|
+
import"./index-k68e5jz0.js";
|
|
6
|
+
import"./index-e0a57ymn.js";
|
|
7
7
|
import"./index-22by16v6.js";
|
|
8
8
|
import"./index-cby4ar3v.js";
|
|
9
9
|
import"./index-nt1mp8km.js";
|
|
10
|
-
import"./index-
|
|
10
|
+
import"./index-hsz2mmk0.js";
|
|
11
|
+
import"./index-rxfy4cq7.js";
|
|
11
12
|
import"./index-0w9abg87.js";
|
|
12
13
|
import"./index-qyrqwr4c.js";
|
|
13
14
|
import"./index-6k1937bx.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-round.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-round.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAIxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"mcp-round.d.ts","sourceRoot":"","sources":["../../src/tools/mcp-round.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,mBAAmB,EAIxB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EACnB,MAAM,8BAA8B,CAAC;AACtC,OAAO,EAEL,KAAK,iBAAiB,EAGvB,MAAM,aAAa,CAAC;AAGrB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAE7C,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,uEAAuE;AACvE,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,sBAAsB,CAAC;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,iBAAiB,CAAC,aAAa,CAAC,CAAC;IACxC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,KAAK,UAAU,GAAG,CAChB,IAAI,EAAE,aAAa,EACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC9B,OAAO,CAAC,UAAU,CAAC,CAAC;AAEzB,MAAM,MAAM,kBAAkB,GAC1B;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GACvD;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,cAAc,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAwHzE,qFAAqF;AACrF,wBAAsB,eAAe,CAAC,OAAO,EAAE;IAC7C,IAAI,EAAE,aAAa,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,OAAO,EAAE,aAAa,CAAC;IACvB,MAAM,CAAC,EAAE,iBAAiB,CAAC;IAC3B,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,OAAO,EAAE,UAAU,CAAC;IACpB,aAAa,EAAE,CAAC,MAAM,EAAE,UAAU,KAAK,cAAc,CAAC;CACvD,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAmK9B"}
|
package/dist/tools.js
CHANGED
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import {
|
|
2
2
|
redact
|
|
3
|
-
} from "./index-
|
|
3
|
+
} from "./index-28jsdwt1.js";
|
|
4
4
|
import {
|
|
5
5
|
buildToolManifest,
|
|
6
6
|
mountAgent
|
|
7
|
-
} from "./index-
|
|
7
|
+
} from "./index-xgahrwdf.js";
|
|
8
8
|
import"./index-3xnq72rz.js";
|
|
9
|
+
import {
|
|
10
|
+
argumentsDigest
|
|
11
|
+
} from "./index-vdvmcy7r.js";
|
|
9
12
|
import {
|
|
10
13
|
signJwt,
|
|
11
14
|
verifyPkce
|
|
12
|
-
} from "./index-
|
|
15
|
+
} from "./index-65kathdm.js";
|
|
13
16
|
import {
|
|
14
17
|
DEFAULT_CORS_ALLOW_HEADERS,
|
|
15
18
|
DEFAULT_PROCESS_SIGNALS,
|
|
@@ -17,10 +20,10 @@ import {
|
|
|
17
20
|
defaultSignalSource,
|
|
18
21
|
guardSignalCallback,
|
|
19
22
|
reportSignalError
|
|
20
|
-
} from "./index-
|
|
23
|
+
} from "./index-endzd8sj.js";
|
|
21
24
|
import {
|
|
22
25
|
createToolInvoker
|
|
23
|
-
} from "./index-
|
|
26
|
+
} from "./index-6wr9f6qm.js";
|
|
24
27
|
import {
|
|
25
28
|
WaitTimeoutError,
|
|
26
29
|
createCli,
|
|
@@ -29,10 +32,10 @@ import {
|
|
|
29
32
|
fetchPinnedDocument,
|
|
30
33
|
readCapped,
|
|
31
34
|
runWaitOperation
|
|
32
|
-
} from "./index-
|
|
35
|
+
} from "./index-9my2n66s.js";
|
|
33
36
|
import {
|
|
34
37
|
collectToolSurface
|
|
35
|
-
} from "./index-
|
|
38
|
+
} from "./index-9c5dbr5q.js";
|
|
36
39
|
import {
|
|
37
40
|
createRuntimeToolFactory,
|
|
38
41
|
defineRuntimeTool
|
|
@@ -41,19 +44,19 @@ import {
|
|
|
41
44
|
collectTools,
|
|
42
45
|
createToolRunner,
|
|
43
46
|
formatToolError
|
|
44
|
-
} from "./index-
|
|
47
|
+
} from "./index-885chjxq.js";
|
|
45
48
|
import {
|
|
46
49
|
ToolExecutionControlError,
|
|
47
50
|
coerceJsonArgs,
|
|
48
51
|
executeToolMethod,
|
|
49
52
|
isToolExecutionControlError,
|
|
50
53
|
toolResultFromError
|
|
51
|
-
} from "./index-
|
|
54
|
+
} from "./index-k68e5jz0.js";
|
|
52
55
|
import {
|
|
53
56
|
getRequestContext,
|
|
54
57
|
getTraceId,
|
|
55
58
|
runWithRequestContext
|
|
56
|
-
} from "./index-
|
|
59
|
+
} from "./index-e0a57ymn.js";
|
|
57
60
|
import {
|
|
58
61
|
ManagedFileError
|
|
59
62
|
} from "./index-bfcpjw20.js";
|
|
@@ -76,7 +79,8 @@ import {
|
|
|
76
79
|
} from "./index-nt1mp8km.js";
|
|
77
80
|
import {
|
|
78
81
|
defineContract
|
|
79
|
-
} from "./index-
|
|
82
|
+
} from "./index-hsz2mmk0.js";
|
|
83
|
+
import"./index-rxfy4cq7.js";
|
|
80
84
|
import {
|
|
81
85
|
AppError,
|
|
82
86
|
STITCH_ERROR_STATUS
|
|
@@ -1085,25 +1089,6 @@ function transportContext(context, toolName, outcome, round) {
|
|
|
1085
1089
|
}
|
|
1086
1090
|
};
|
|
1087
1091
|
}
|
|
1088
|
-
function stableValue(value) {
|
|
1089
|
-
if (Array.isArray(value))
|
|
1090
|
-
return value.map(stableValue);
|
|
1091
|
-
if (value === null || typeof value !== "object")
|
|
1092
|
-
return value;
|
|
1093
|
-
const result = {};
|
|
1094
|
-
for (const key of Object.keys(value).sort()) {
|
|
1095
|
-
result[key] = stableValue(Reflect.get(value, key));
|
|
1096
|
-
}
|
|
1097
|
-
return result;
|
|
1098
|
-
}
|
|
1099
|
-
async function argumentsDigest(args) {
|
|
1100
|
-
const bytes = new TextEncoder().encode(JSON.stringify(stableValue(args)));
|
|
1101
|
-
const digest = new Uint8Array(await crypto.subtle.digest("SHA-256", bytes));
|
|
1102
|
-
let binary = "";
|
|
1103
|
-
for (const byte of digest)
|
|
1104
|
-
binary += String.fromCodePoint(byte);
|
|
1105
|
-
return btoa(binary).replaceAll("+", "-").replaceAll("/", "_").replace(/=+$/, "");
|
|
1106
|
-
}
|
|
1107
1092
|
function operationIdentity(tool) {
|
|
1108
1093
|
return {
|
|
1109
1094
|
toolName: tool.name,
|