stitchkit 0.74.0 → 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.
Files changed (77) hide show
  1. package/dist/agent-runtime/sqlite-purge.d.ts +3 -3
  2. package/dist/agent-runtime/sqlite-purge.d.ts.map +1 -1
  3. package/dist/agent-runtime/sqlite.d.ts +5 -17
  4. package/dist/agent-runtime/sqlite.d.ts.map +1 -1
  5. package/dist/agent-runtime-coding-tools.js +2 -1
  6. package/dist/agent-runtime-harness.js +5 -4
  7. package/dist/agent-runtime-sqlite-bun.d.ts +1 -1
  8. package/dist/agent-runtime-sqlite-bun.d.ts.map +1 -1
  9. package/dist/agent-runtime-sqlite-node.d.ts +1 -1
  10. package/dist/agent-runtime-sqlite-node.d.ts.map +1 -1
  11. package/dist/agent-runtime.js +8 -7
  12. package/dist/application/diagnostic-journal-lock.d.ts +14 -0
  13. package/dist/application/diagnostic-journal-lock.d.ts.map +1 -1
  14. package/dist/application/keyspace-sqlite.d.ts +31 -0
  15. package/dist/application/keyspace-sqlite.d.ts.map +1 -0
  16. package/dist/application/keyspace.d.ts +142 -0
  17. package/dist/application/keyspace.d.ts.map +1 -0
  18. package/dist/application/watch-hub.d.ts +113 -0
  19. package/dist/application/watch-hub.d.ts.map +1 -0
  20. package/dist/application.d.ts +4 -0
  21. package/dist/application.d.ts.map +1 -1
  22. package/dist/application.js +475 -3
  23. package/dist/cli.js +7 -6
  24. package/dist/contract/index.js +2 -1
  25. package/dist/{index-aczggrty.js → index-28jsdwt1.js} +1 -1
  26. package/dist/index-35z5h2ty.js +594 -0
  27. package/dist/{index-f6n5n7nz.js → index-4kp4fxvp.js} +4 -18
  28. package/dist/{index-118v0z41.js → index-52400rdd.js} +8 -3
  29. package/dist/{index-da1aqnhb.js → index-65kathdm.js} +6 -4
  30. package/dist/{index-jqtsc9mj.js → index-6wr9f6qm.js} +2 -2
  31. package/dist/{index-7qy2ex0m.js → index-885chjxq.js} +1 -1
  32. package/dist/{index-k2zczx1g.js → index-9c5dbr5q.js} +1 -1
  33. package/dist/{index-s2rchahr.js → index-9my2n66s.js} +4 -4
  34. package/dist/{index-nemjkxjp.js → index-e0a57ymn.js} +1 -1
  35. package/dist/{index-vbf2p6me.js → index-endzd8sj.js} +1 -1
  36. package/dist/{index-vj3vvpaa.js → index-hsz2mmk0.js} +1 -17
  37. package/dist/{index-s4c8wy8m.js → index-k68e5jz0.js} +2 -2
  38. package/dist/index-rxfy4cq7.js +17 -0
  39. package/dist/{index-58jzmnn4.js → index-v5dm4bwq.js} +1 -1
  40. package/dist/{index-m668wzyc.js → index-v7xjfy10.js} +1 -1
  41. package/dist/index-vdvmcy7r.js +22 -0
  42. package/dist/{index-ezmn6ac6.js → index-xgahrwdf.js} +3 -3
  43. package/dist/index.js +26 -611
  44. package/dist/internal/sqlite.d.ts +27 -0
  45. package/dist/internal/sqlite.d.ts.map +1 -0
  46. package/dist/internal/stable-digest.d.ts +24 -0
  47. package/dist/internal/stable-digest.d.ts.map +1 -0
  48. package/dist/live/events.d.ts +155 -0
  49. package/dist/live/events.d.ts.map +1 -0
  50. package/dist/live/watch-client.d.ts +66 -0
  51. package/dist/live/watch-client.d.ts.map +1 -0
  52. package/dist/live/watch-contract.d.ts +157 -0
  53. package/dist/live/watch-contract.d.ts.map +1 -0
  54. package/dist/live.d.ts +18 -0
  55. package/dist/live.d.ts.map +1 -0
  56. package/dist/live.js +284 -0
  57. package/dist/node.js +5 -4
  58. package/dist/observability/index.js +4 -3
  59. package/dist/primitives.js +2 -1
  60. package/dist/remote.js +3 -2
  61. package/dist/server/create.d.ts.map +1 -1
  62. package/dist/server/event-bus.d.ts +49 -1
  63. package/dist/server/event-bus.d.ts.map +1 -1
  64. package/dist/server/index.d.ts +2 -1
  65. package/dist/server/index.d.ts.map +1 -1
  66. package/dist/server/index.js +224 -12
  67. package/dist/server/middleware/trust-fence.d.ts +116 -0
  68. package/dist/server/middleware/trust-fence.d.ts.map +1 -0
  69. package/dist/server/types.d.ts +16 -1
  70. package/dist/server/types.d.ts.map +1 -1
  71. package/dist/testing.js +3 -2
  72. package/dist/tool-invoker.js +6 -5
  73. package/dist/tools/mcp-round.d.ts.map +1 -1
  74. package/dist/tools.js +15 -30
  75. package/llms-full.txt +417 -7
  76. package/llms.txt +1 -0
  77. package/package.json +6 -2
@@ -13,7 +13,7 @@ import {
13
13
  sseRoute,
14
14
  streamingRoute,
15
15
  webSocketLane
16
- } from "../index-118v0z41.js";
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-da1aqnhb.js";
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-vbf2p6me.js";
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-nemjkxjp.js";
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-vj3vvpaa.js";
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
- const set = subscriptions.get(event);
426
- if (!set)
427
- return;
428
- for (const sub of [...set]) {
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) => options.onListenerError?.(err, event));
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
- options.onListenerError?.(err, event);
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"}
@@ -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?: LifecycleHooks;
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":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,KAAK,CAAC;AACnC,OAAO,KAAK,EACV,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,UAAU,EACV,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,cAAc,EACd,SAAS,EACV,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC;AACtE,KAAK,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AACjF,KAAK,UAAU,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;AAC/E,KAAK,WAAW,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;AAC7E,KAAK,aAAa,CAAC,CAAC,IAClB,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS;IACrB,aAAa,EAAE,MAAM,CAAC,SAAS,SAAS;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CAC5E,GACG;IACE,QAAQ,CAAC,EAAE;SACR,OAAO,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,CAAC,GAChF,CAAC,GACD,KAAK;KACV,CAAC;CACH,GACD,OAAO,CAAC;AAEd;;;;;;GAMG;AACH,KAAK,aAAa,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GACnD,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,GAC5B,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS;IAAE,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAA;CAAE,GAClD,aAAa,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAC5C,IAAI,CAAC,CAAC,EAAE,QAAQ,CAAC,SAAS,OAAO,GAC/B,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,GACxC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAE7B;;;;;;GAMG;AACH,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SACvB;IAAE,WAAW,EAAE,IAAI,CAAA;CAAE,GACrB;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,GACpC;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,GAChB,OAAO,CAAC;AACZ,KAAK,oBAAoB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,MAAM,EAAE,wBAAwB,CAAA;CAAE,GACzE;IAAE,MAAM,EAAE,WAAW,CAAA;CAAE,GACvB,OAAO,CAAC;AACZ,KAAK,eAAe,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,GACjD;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC,OAAO,CAAC;AACZ,KAAK,wBAAwB,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,YAAY,EAAE,oBAAoB,CAAA;CAAE,GAC/E;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,gBAAgB,CAAA;CAAE,GAC5C,OAAO,CAAC;AAEZ,MAAM,MAAM,sBAAsB,CAChC,CAAC,SAAS,WAAW,EACrB,IAAI,SAAS,cAAc,GAAG,cAAc,IAC1C,IAAI,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC,CAAC,CAAC,CAAA;CAAE,GAAG,eAAe,CAAC,CAAC,CAAC,GAC9E,oBAAoB,CAAC,CAAC,CAAC,GACvB,eAAe,CAAC,CAAC,CAAC,GAClB,wBAAwB,CAAC,CAAC,CAAC,GAC3B,aAAa,CAAC,CAAC,CAAC,GAChB,CAAC,CAAC,SAAS;IAAE,SAAS,EAAE,MAAM,CAAC,SAAS,mBAAmB,CAAA;CAAE,GACzD,CAAC,SAAS;IAAE,QAAQ,EAAE,QAAQ,CAAA;CAAE,GAC9B,OAAO,GACP;IAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAA;CAAE,GACtC,OAAO,CAAC,CAAC;AAEf,MAAM,MAAM,QAAQ,CAClB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,IAAI,SAAS,cAAc,GAAG,cAAc,IAC1C;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,SAAS,EAAE;YAAE,QAAQ,EAAE,QAAQ,CAAA;SAAE,CAAA;KAAE,GAC9D,gCAAgC,GAChC,CAAC,GAAG,EAAE,sBAAsB,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;CACrE,CAAC;AAEF;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,cAAc,CACxB,CAAC,SAAS,WAAW,EACrB,cAAc,SAAS,MAAM,IAC3B,OAAO,SAAS,MAAM,CAAC,GACvB,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,SAAS,SAAS,CAAC,CAAC,OAAO,CAAC,GAAG,cAAc,GAAG,KAAK,CAAC,GACrF,cAAc,CAAC;AAEnB,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;AAEnD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,CACxB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EACrC,cAAc,SAAS,MAAM,EAC7B,OAAO,SAAS,aAAa,IAC3B;KACD,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;QAAE,SAAS,EAAE;YAAE,QAAQ,EAAE,QAAQ,CAAA;SAAE,CAAA;KAAE,GAC9D,gCAAgC,GAChC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,SAAS,MAAM,OAAO,GACxD,CACE,GAAG,EAAE,sBAAsB,CACzB,CAAC,CAAC,CAAC,CAAC,EACJ,cAAc,GAAG,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,MAAM,OAAO,CAAC,CAC/E,KACE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GACxB,8BAA8B,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,cAAc,CAAC,GAChE,MAAM,4CAA4C;CAC3D,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB,CAAC,CAAC;IACxC,KAAK,EAAE,CAAC,CAAC;IACT,OAAO,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC;AAED,MAAM,MAAM,iBAAiB,CAAC,CAAC,GAAG,OAAO,IAAI,CAAC,OAAO,EAAE;IACrD,QAAQ,EAAE,qBAAqB,CAAC;IAChC,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,WAAW,CAAC;CACrB,KAAK,uBAAuB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC;AAEvE,0EAA0E;AAC1E,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,IAAI,EAAE,4BAA4B,CAAC;IAC5C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;CACvE;AAED;;;;GAIG;AACH,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;IACpB;;;;OAIG;IACH,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yEAAyE;IACzE,EAAE,CAAC,EAAE,cAAc,CAAC;IACpB,yEAAyE;IACzE,WAAW,CAAC,EAAE,uBAAuB,CAAC;IACtC,uEAAuE;IACvE,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,MAAM,WAAW,SAAS,CAAC,OAAO,GAAG,OAAO,EAAE,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,CAC/E,SAAQ,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,SAAS,SAAS,EAAE,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,WAAW,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9B,YAAY,CAAC,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC,MAAM,CAAC,EAAE,wBAAwB,CAAC;IAClC,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IACvD,mEAAmE;IACnE,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,WAAW,CAAC,EAAE,IAAI,CAAC;IACnB,wEAAwE;IACxE,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,gFAAgF;IAChF,YAAY,CAAC,EAAE,oBAAoB,CAAC;IACpC,gFAAgF;IAChF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;CAC9D;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAqB,SAAQ,cAAc;IAC1D,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,CAAC,EAAE,KAAK,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;CAC/D;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,SAAS,GAAG,QAAQ,GAAG,OAAO,CAAC,SAAS,GAAG,QAAQ,CAAC,CAAC;IACnF,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,oBAAoB,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrF,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,cAAc,EAAE,QAAQ,EAAE,SAAS,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAClF,WAAW,CAAC,EAAE,CACZ,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,SAAS,KAChB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChC;;;;;OAKG;IACH,OAAO,CAAC,EAAE,CACR,GAAG,EAAE,cAAc,EACnB,KAAK,EAAE,OAAO,EACd,QAAQ,CAAC,EAAE,SAAS,KACjB,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC,CAAC;CAC3D;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;AAEhE,MAAM,WAAW,UAAU;IACzB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED;;;;;;;;GAQG;AACH,0EAA0E;AAC1E,MAAM,WAAW,eAAe,CAAC,OAAO,GAAG,OAAO;IAChD;;;OAGG;IACH,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,QAAQ,CAAC,OAAO,GAAG,OAAO;IACzC,MAAM,EAAE,UAAU,GAAG,KAAK,CAAC;IAC3B;;;OAGG;IACH,IAAI,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,OAAO,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,eAAe,CAAC,OAAO,CAAC,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxF;AAED,YAAY,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAE9C,6EAA6E;AAC7E,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,4DAA4D;IAC5D,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB;;;;;;;;;;;;;;;;;;;;;OAqBG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB;;;;;;;;;OASG;IACH,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,KAAK,OAAO,CAAC;IAC3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,MAAM,CAAC,EAAE,CACP,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,UAAU,KAChB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;CAC1C;AAED;;;;GAIG;AACH,MAAM,MAAM,YAAY,CAAC,OAAO,GAAG,OAAO,IAAI,CAC5C,GAAG,EAAE,OAAO,EACZ,MAAM,CAAC,EAAE,OAAO,KACb,OAAO,CAAC,QAAQ,CAAC,CAAC;AAEvB;;;GAGG;AACH,MAAM,WAAW,aAAa,CAAC,OAAO,GAAG,OAAO;IAC9C,QAAQ,CAAC,EAAE,UAAU,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,UAAU,EAAE,CAAC;IACtB;;;;;;;;;OASG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,SAAS,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;IAChC;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,KAAK,CAAC,EAAE,cAAc,CAAC;IACvB,OAAO,CAAC,EAAE,OAAO,GAAG,aAAa,CAAC;IAClC,+EAA+E;IAC/E,aAAa,CAAC,EAAE,mBAAmB,CAAC;IACpC;;;;;;;;;;;OAWG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,CAAC,GAAG,EAAE,OAAO,KAAK,MAAM,GAAG,SAAS,CAAC;IAC/C;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,gBAAgB,CAAC,OAAO,GAAG,OAAO;IACjD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,CAAC,OAAO,CAAC,KAAK,YAAY,CAAC,OAAO,CAAC,CAAC;CACrE"}
package/dist/testing.js CHANGED
@@ -24,12 +24,13 @@ import {
24
24
  import {
25
25
  createClient,
26
26
  createClients
27
- } from "./index-58jzmnn4.js";
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-vj3vvpaa.js";
32
+ } from "./index-hsz2mmk0.js";
33
+ import"./index-rxfy4cq7.js";
33
34
  import"./index-0w9abg87.js";
34
35
  import {
35
36
  isRecord
@@ -1,13 +1,14 @@
1
1
  import {
2
2
  createToolInvoker
3
- } from "./index-jqtsc9mj.js";
4
- import"./index-7qy2ex0m.js";
5
- import"./index-s4c8wy8m.js";
6
- import"./index-nemjkxjp.js";
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-vj3vvpaa.js";
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;AAErB,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;AA0IzE,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"}
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-aczggrty.js";
3
+ } from "./index-28jsdwt1.js";
4
4
  import {
5
5
  buildToolManifest,
6
6
  mountAgent
7
- } from "./index-ezmn6ac6.js";
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-da1aqnhb.js";
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-vbf2p6me.js";
23
+ } from "./index-endzd8sj.js";
21
24
  import {
22
25
  createToolInvoker
23
- } from "./index-jqtsc9mj.js";
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-s2rchahr.js";
35
+ } from "./index-9my2n66s.js";
33
36
  import {
34
37
  collectToolSurface
35
- } from "./index-k2zczx1g.js";
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-7qy2ex0m.js";
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-s4c8wy8m.js";
54
+ } from "./index-k68e5jz0.js";
52
55
  import {
53
56
  getRequestContext,
54
57
  getTraceId,
55
58
  runWithRequestContext
56
- } from "./index-nemjkxjp.js";
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-vj3vvpaa.js";
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,