@uptimizr/collector-server 2.0.1 → 2.2.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 (139) hide show
  1. package/AGENTS.md +187 -11
  2. package/README.md +91 -7
  3. package/dist/__tests__/support/registryRequests.d.ts +2 -1
  4. package/dist/__tests__/support/registryRequests.d.ts.map +1 -1
  5. package/dist/__tests__/support/registryRequests.js +17 -1
  6. package/dist/__tests__/support/registryRequests.js.map +1 -1
  7. package/dist/__tests__/support/subscriptionFixtures.d.ts +63 -0
  8. package/dist/__tests__/support/subscriptionFixtures.d.ts.map +1 -0
  9. package/dist/__tests__/support/subscriptionFixtures.js +17 -0
  10. package/dist/__tests__/support/subscriptionFixtures.js.map +1 -0
  11. package/dist/agentReport.d.ts +256 -0
  12. package/dist/agentReport.d.ts.map +1 -0
  13. package/dist/agentReport.js +861 -0
  14. package/dist/agentReport.js.map +1 -0
  15. package/dist/app.d.ts +13 -0
  16. package/dist/app.d.ts.map +1 -1
  17. package/dist/app.js +112 -5
  18. package/dist/app.js.map +1 -1
  19. package/dist/audit.d.ts +5 -1
  20. package/dist/audit.d.ts.map +1 -1
  21. package/dist/audit.js +24 -4
  22. package/dist/audit.js.map +1 -1
  23. package/dist/auth.d.ts +41 -1
  24. package/dist/auth.d.ts.map +1 -1
  25. package/dist/auth.js +47 -0
  26. package/dist/auth.js.map +1 -1
  27. package/dist/cli.js +133 -13
  28. package/dist/cli.js.map +1 -1
  29. package/dist/cliStore.d.ts +31 -2
  30. package/dist/cliStore.d.ts.map +1 -1
  31. package/dist/cliStore.js +34 -0
  32. package/dist/cliStore.js.map +1 -1
  33. package/dist/clickhouseStore.d.ts.map +1 -1
  34. package/dist/clickhouseStore.js +44 -2
  35. package/dist/clickhouseStore.js.map +1 -1
  36. package/dist/config.d.ts +49 -0
  37. package/dist/config.d.ts.map +1 -1
  38. package/dist/config.js +21 -0
  39. package/dist/config.js.map +1 -1
  40. package/dist/connectionLimiter.d.ts +23 -0
  41. package/dist/connectionLimiter.d.ts.map +1 -0
  42. package/dist/connectionLimiter.js +24 -0
  43. package/dist/connectionLimiter.js.map +1 -0
  44. package/dist/duckdbStore.d.ts.map +1 -1
  45. package/dist/duckdbStore.js +44 -1
  46. package/dist/duckdbStore.js.map +1 -1
  47. package/dist/internalDispatch.d.ts +36 -0
  48. package/dist/internalDispatch.d.ts.map +1 -0
  49. package/dist/internalDispatch.js +50 -0
  50. package/dist/internalDispatch.js.map +1 -0
  51. package/dist/memoryStore.d.ts.map +1 -1
  52. package/dist/memoryStore.js +314 -1
  53. package/dist/memoryStore.js.map +1 -1
  54. package/dist/mssqlStore.d.ts.map +1 -1
  55. package/dist/mssqlStore.js +44 -2
  56. package/dist/mssqlStore.js.map +1 -1
  57. package/dist/postgresStore.d.ts.map +1 -1
  58. package/dist/postgresStore.js +44 -2
  59. package/dist/postgresStore.js.map +1 -1
  60. package/dist/projectMetadata.d.ts +82 -0
  61. package/dist/projectMetadata.d.ts.map +1 -0
  62. package/dist/projectMetadata.js +50 -0
  63. package/dist/projectMetadata.js.map +1 -0
  64. package/dist/routes/context.d.ts +135 -0
  65. package/dist/routes/context.d.ts.map +1 -0
  66. package/dist/routes/context.js +306 -0
  67. package/dist/routes/context.js.map +1 -0
  68. package/dist/routes/insights.d.ts +36 -0
  69. package/dist/routes/insights.d.ts.map +1 -0
  70. package/dist/routes/insights.js +810 -0
  71. package/dist/routes/insights.js.map +1 -0
  72. package/dist/routes/live.d.ts +8 -0
  73. package/dist/routes/live.d.ts.map +1 -1
  74. package/dist/routes/live.js +8 -7
  75. package/dist/routes/live.js.map +1 -1
  76. package/dist/routes/mcp.d.ts +36 -0
  77. package/dist/routes/mcp.d.ts.map +1 -0
  78. package/dist/routes/mcp.js +262 -0
  79. package/dist/routes/mcp.js.map +1 -0
  80. package/dist/routes/meta.d.ts +16 -2
  81. package/dist/routes/meta.d.ts.map +1 -1
  82. package/dist/routes/meta.js +699 -10
  83. package/dist/routes/meta.js.map +1 -1
  84. package/dist/routes/metadata.d.ts +31 -0
  85. package/dist/routes/metadata.d.ts.map +1 -0
  86. package/dist/routes/metadata.js +163 -0
  87. package/dist/routes/metadata.js.map +1 -0
  88. package/dist/routes/narrative.d.ts +36 -0
  89. package/dist/routes/narrative.d.ts.map +1 -0
  90. package/dist/routes/narrative.js +95 -0
  91. package/dist/routes/narrative.js.map +1 -0
  92. package/dist/routes/panels.d.ts +44 -0
  93. package/dist/routes/panels.d.ts.map +1 -0
  94. package/dist/routes/panels.js +108 -0
  95. package/dist/routes/panels.js.map +1 -0
  96. package/dist/routes/query-dsl.d.ts +50 -0
  97. package/dist/routes/query-dsl.d.ts.map +1 -0
  98. package/dist/routes/query-dsl.js +359 -0
  99. package/dist/routes/query-dsl.js.map +1 -0
  100. package/dist/routes/query.d.ts +36 -0
  101. package/dist/routes/query.d.ts.map +1 -1
  102. package/dist/routes/query.js +101 -13
  103. package/dist/routes/query.js.map +1 -1
  104. package/dist/routes/subscriptions.d.ts +52 -0
  105. package/dist/routes/subscriptions.d.ts.map +1 -0
  106. package/dist/routes/subscriptions.js +290 -0
  107. package/dist/routes/subscriptions.js.map +1 -0
  108. package/dist/store.d.ts +113 -2
  109. package/dist/store.d.ts.map +1 -1
  110. package/dist/subscriptions/cli.d.ts +36 -0
  111. package/dist/subscriptions/cli.d.ts.map +1 -0
  112. package/dist/subscriptions/cli.js +143 -0
  113. package/dist/subscriptions/cli.js.map +1 -0
  114. package/dist/subscriptions/delivery.d.ts +101 -0
  115. package/dist/subscriptions/delivery.d.ts.map +1 -0
  116. package/dist/subscriptions/delivery.js +165 -0
  117. package/dist/subscriptions/delivery.js.map +1 -0
  118. package/dist/subscriptions/evaluate.d.ts +119 -0
  119. package/dist/subscriptions/evaluate.d.ts.map +1 -0
  120. package/dist/subscriptions/evaluate.js +326 -0
  121. package/dist/subscriptions/evaluate.js.map +1 -0
  122. package/dist/subscriptions/scheduler.d.ts +97 -0
  123. package/dist/subscriptions/scheduler.d.ts.map +1 -0
  124. package/dist/subscriptions/scheduler.js +332 -0
  125. package/dist/subscriptions/scheduler.js.map +1 -0
  126. package/dist/subscriptions/stream.d.ts +40 -0
  127. package/dist/subscriptions/stream.d.ts.map +1 -0
  128. package/dist/subscriptions/stream.js +38 -0
  129. package/dist/subscriptions/stream.js.map +1 -0
  130. package/dist/version.d.ts +3 -0
  131. package/dist/version.d.ts.map +1 -0
  132. package/dist/version.js +25 -0
  133. package/dist/version.js.map +1 -0
  134. package/dist/webhookSignature.d.ts +64 -0
  135. package/dist/webhookSignature.d.ts.map +1 -0
  136. package/dist/webhookSignature.js +91 -0
  137. package/dist/webhookSignature.js.map +1 -0
  138. package/llms.txt +39 -2
  139. package/package.json +17 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"insights.js","sourceRoot":"","sources":["../../src/routes/insights.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,18 @@ import type { FastifyPluginAsync } from "fastify";
2
2
  import type { CollectorConfig } from "../config.js";
3
3
  import type { CollectorStore } from "../store.js";
4
4
  import type { LiveBus } from "../liveBus.js";
5
+ import { type ConnectionLimiter } from "../connectionLimiter.js";
5
6
  interface Options {
6
7
  store: CollectorStore;
7
8
  config: CollectorConfig;
8
9
  liveBus: LiveBus;
10
+ /**
11
+ * The collector-wide SSE connection budget (ADR §6). Shared with the
12
+ * conditional-subscription stream (#311), which is the same kind of
13
+ * held-open socket — one counter, so `LIVE_MAX_CONNECTIONS` means what it
14
+ * says. Omitted in tests that build this plugin alone.
15
+ */
16
+ connections?: ConnectionLimiter;
9
17
  }
10
18
  /**
11
19
  * Live SSE endpoints (ADR 0032 §3): presence (aggregate, always on), the
@@ -1 +1 @@
1
- {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/routes/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAgC,MAAM,SAAS,CAAC;AAGhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAI7C,UAAU,OAAO;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AA6ED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,kBAAkB,CAAC,OAAO,CA6HlD,CAAC"}
1
+ {"version":3,"file":"live.d.ts","sourceRoot":"","sources":["../../src/routes/live.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAgC,MAAM,SAAS,CAAC;AAGhF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAG7C,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE1F,UAAU,OAAO;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,iBAAiB,CAAC;CACjC;AA6ED;;;;;GAKG;AACH,eAAO,MAAM,UAAU,EAAE,kBAAkB,CAAC,OAAO,CA6HlD,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import { z } from "zod";
2
2
  import { mintLiveToken, verifyLiveToken } from "../liveToken.js";
3
3
  import { requireCapability } from "../auth.js";
4
+ import { createConnectionLimiter } from "../connectionLimiter.js";
4
5
  const HEARTBEAT_MS = 15_000;
5
6
  const tokenQuery = z.object({ token: z.string().min(1).optional() });
6
7
  const streamQuery = tokenQuery.extend({
@@ -72,16 +73,16 @@ function openSse(request, reply, config) {
72
73
  * live-follow tail (gated by raw-session retention, like replay). All fan out
73
74
  * from the in-process bus and are bounded (ADR §6).
74
75
  */
75
- export const liveRoutes = async (app, { store, config, liveBus }) => {
76
+ export const liveRoutes = async (app, options) => {
77
+ const { store, config, liveBus } = options;
76
78
  const r = app.withTypeProvider();
77
- let connections = 0;
79
+ const connections = options.connections ?? createConnectionLimiter(config.liveMaxConnections);
78
80
  /** Reserve a live connection slot, or send 503 when at capacity (ADR §6). */
79
81
  function acquireSlot(reply) {
80
- if (connections >= config.liveMaxConnections) {
82
+ if (!connections.acquire()) {
81
83
  void reply.code(503).send({ error: "live connection limit reached" });
82
84
  return false;
83
85
  }
84
- connections += 1;
85
86
  return true;
86
87
  }
87
88
  // Server-to-server: exchange an API key for a short-lived live token (ADR §7).
@@ -110,7 +111,7 @@ export const liveRoutes = async (app, { store, config, liveBus }) => {
110
111
  const timer = setInterval(push, config.livePresenceIntervalMs);
111
112
  req.raw.on("close", () => {
112
113
  clearInterval(timer);
113
- connections -= 1;
114
+ connections.release();
114
115
  });
115
116
  });
116
117
  // Project firehose: every arriving event (optionally filtered by type). Drives
@@ -140,7 +141,7 @@ export const liveRoutes = async (app, { store, config, liveBus }) => {
140
141
  req.raw.on("close", () => {
141
142
  clearInterval(heartbeat);
142
143
  sub.close();
143
- connections -= 1;
144
+ connections.release();
144
145
  });
145
146
  });
146
147
  // Per-session live-follow tail for live replay. Raw per-session data, so it
@@ -177,7 +178,7 @@ export const liveRoutes = async (app, { store, config, liveBus }) => {
177
178
  req.raw.on("close", () => {
178
179
  clearInterval(heartbeat);
179
180
  sub.close();
180
- connections -= 1;
181
+ connections.release();
181
182
  });
182
183
  });
183
184
  };
@@ -1 +1 @@
1
- {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/routes/live.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"live.js","sourceRoot":"","sources":["../../src/routes/live.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,36 @@
1
+ import type { FastifyPluginAsync } from "fastify";
2
+ import type { CollectorConfig } from "../config.js";
3
+ import type { CollectorStore } from "../store.js";
4
+ interface Options {
5
+ store: CollectorStore;
6
+ config: CollectorConfig;
7
+ /** Per-process token marking the collector's in-process reads (see `internalDispatch.ts`). */
8
+ internalDispatchToken: string;
9
+ }
10
+ /**
11
+ * Collector-hosted MCP over Streamable HTTP (ADR 0051 §7, design sketch §G.1),
12
+ * resolving the transport ADR 0050 §7 deferred pending auth.
13
+ *
14
+ * `POST /mcp` carries JSON-RPC, `GET /mcp` opens the server→client SSE stream,
15
+ * and `DELETE /mcp` ends a session — the three verbs of the Streamable HTTP
16
+ * specification, all on one route so the SDK transport can dispatch them.
17
+ *
18
+ * What this route adds around the transport:
19
+ *
20
+ * - **Auth on every request**, not just on `initialize`: `x-api-key` (or the
21
+ * `Authorization: Bearer` alias normalised in `auth.ts`) must resolve to a key
22
+ * holding `query`. Missing/unknown key → `401`, wrong capability → `403`. A
23
+ * session may only be driven by the key that opened it, so a leaked session id
24
+ * is worth nothing on its own.
25
+ * - **One `McpServer` per session**, built by `@uptimizr/mcp`'s shared factory
26
+ * with that key's capability set, so the hosted surface is the same catalog
27
+ * the stdio package serves and write tools stay gated on the key.
28
+ * - **Bounded sessions**: a global cap (`COLLECTOR_MCP_MAX_SESSIONS` → `503`)
29
+ * and an idle TTL, the `/mcp` counterpart of the live-SSE connection cap.
30
+ *
31
+ * The plugin is only registered when `COLLECTOR_MCP_HTTP` is on; otherwise
32
+ * `/mcp` does not exist.
33
+ */
34
+ export declare const mcpRoutes: FastifyPluginAsync<Options>;
35
+ export {};
36
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../src/routes/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAmB,kBAAkB,EAAgC,MAAM,SAAS,CAAC;AAMjG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAIlD,UAAU,OAAO;IACf,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,eAAe,CAAC;IACxB,8FAA8F;IAC9F,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AA4FD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,EAAE,kBAAkB,CAAC,OAAO,CA6KjD,CAAC"}
@@ -0,0 +1,262 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
3
+ import { isInitializeRequest } from "@modelcontextprotocol/sdk/types.js";
4
+ import { CollectorError, createMcpServer } from "@uptimizr/mcp";
5
+ import { MCP_ROUTE_URL, requireCapability } from "../auth.js";
6
+ import { INTERNAL_DISPATCH_HEADER } from "../internalDispatch.js";
7
+ /** How often idle sessions are swept. Cheap; the TTL does the real work. */
8
+ const SWEEP_INTERVAL_MS = 60_000;
9
+ /** Only the collector's own read API may be reached by an in-process tool call. */
10
+ const API_PREFIX = "/api/v1/";
11
+ /** Placeholder origin used to normalise a tool's relative path. Never dialled. */
12
+ const NORMALIZE_BASE = "http://collector.invalid";
13
+ /** A JSON-RPC error body, so a refusal is still something an MCP client parses. */
14
+ function jsonRpcError(code, message) {
15
+ return { jsonrpc: "2.0", error: { code, message }, id: null };
16
+ }
17
+ /** Read a header that must be a single string value. */
18
+ function headerValue(value) {
19
+ return typeof value === "string" && value.length > 0 ? value : undefined;
20
+ }
21
+ /**
22
+ * Build the **in-process** collector client a session's tools read through.
23
+ *
24
+ * It re-enters this same Fastify app with `app.inject()` instead of opening a
25
+ * loopback socket: no port, no self-URL configuration, no TLS hop, and nothing
26
+ * a request can influence is ever turned into a network destination. The
27
+ * injected request runs the complete request lifecycle — key resolution,
28
+ * capability check, project scoping, Zod validation, the result-envelope hook
29
+ * and the audit hook — so a tool call and the equivalent `curl` are answered by
30
+ * the same code and recorded in the same log.
31
+ *
32
+ * The tool catalog builds paths from the metric registry and URL-encodes every
33
+ * path parameter, but this is the boundary where an agent-supplied value becomes
34
+ * a request, so the assembled path is normalised and required to stay inside the
35
+ * collector's own read API.
36
+ */
37
+ function createInProcessClient(app, keyRef, internalDispatchToken) {
38
+ return {
39
+ async get(path, params = {}) {
40
+ const url = new URL(path, NORMALIZE_BASE);
41
+ for (const [key, value] of Object.entries(params)) {
42
+ if (value != null)
43
+ url.searchParams.set(key, String(value));
44
+ }
45
+ if (!url.pathname.startsWith(API_PREFIX)) {
46
+ throw new CollectorError(`refusing to dispatch outside ${API_PREFIX}`, 400);
47
+ }
48
+ const response = await app.inject({
49
+ method: "GET",
50
+ url: `${url.pathname}${url.search}`,
51
+ headers: {
52
+ "x-api-key": keyRef.current,
53
+ [INTERNAL_DISPATCH_HEADER]: internalDispatchToken,
54
+ accept: "application/json",
55
+ },
56
+ });
57
+ if (response.statusCode < 200 || response.statusCode >= 300) {
58
+ throw new CollectorError(response.body || `HTTP ${response.statusCode}`, response.statusCode);
59
+ }
60
+ return response.json();
61
+ },
62
+ };
63
+ }
64
+ /**
65
+ * Collector-hosted MCP over Streamable HTTP (ADR 0051 §7, design sketch §G.1),
66
+ * resolving the transport ADR 0050 §7 deferred pending auth.
67
+ *
68
+ * `POST /mcp` carries JSON-RPC, `GET /mcp` opens the server→client SSE stream,
69
+ * and `DELETE /mcp` ends a session — the three verbs of the Streamable HTTP
70
+ * specification, all on one route so the SDK transport can dispatch them.
71
+ *
72
+ * What this route adds around the transport:
73
+ *
74
+ * - **Auth on every request**, not just on `initialize`: `x-api-key` (or the
75
+ * `Authorization: Bearer` alias normalised in `auth.ts`) must resolve to a key
76
+ * holding `query`. Missing/unknown key → `401`, wrong capability → `403`. A
77
+ * session may only be driven by the key that opened it, so a leaked session id
78
+ * is worth nothing on its own.
79
+ * - **One `McpServer` per session**, built by `@uptimizr/mcp`'s shared factory
80
+ * with that key's capability set, so the hosted surface is the same catalog
81
+ * the stdio package serves and write tools stay gated on the key.
82
+ * - **Bounded sessions**: a global cap (`COLLECTOR_MCP_MAX_SESSIONS` → `503`)
83
+ * and an idle TTL, the `/mcp` counterpart of the live-SSE connection cap.
84
+ *
85
+ * The plugin is only registered when `COLLECTOR_MCP_HTTP` is on; otherwise
86
+ * `/mcp` does not exist.
87
+ */
88
+ export const mcpRoutes = async (app, { store, config, internalDispatchToken }) => {
89
+ const sessions = new Map();
90
+ /**
91
+ * Sessions whose `initialize` is in flight and has not yet claimed an id.
92
+ * They count against the cap, so two concurrent `initialize` requests cannot
93
+ * both pass a check the other has not yet been counted by.
94
+ */
95
+ const opening = new Set();
96
+ /** Close a session's transport and server, and drop it from the map. */
97
+ async function closeSession(id, session) {
98
+ if (id != null)
99
+ sessions.delete(id);
100
+ try {
101
+ await session.transport.close();
102
+ await session.server.close();
103
+ }
104
+ catch (err) {
105
+ app.log.warn({ err }, "failed to close mcp session");
106
+ }
107
+ }
108
+ const sweep = setInterval(() => {
109
+ const cutoff = Date.now() - config.mcpSessionTtlMs;
110
+ for (const [id, session] of sessions) {
111
+ if (session.lastSeenMs <= cutoff)
112
+ void closeSession(id, session);
113
+ }
114
+ }, SWEEP_INTERVAL_MS);
115
+ sweep.unref?.();
116
+ app.addHook("onClose", async () => {
117
+ clearInterval(sweep);
118
+ const open = [...sessions.entries()];
119
+ sessions.clear();
120
+ await Promise.all(open.map(([id, session]) => closeSession(id, session)));
121
+ });
122
+ /**
123
+ * Create a session for `resolved`. Registration in the map happens in
124
+ * `onsessioninitialized`, which the transport fires while it is still handling
125
+ * the `initialize` POST — before its response (an SSE stream that stays open)
126
+ * completes, so the session is addressable by the time the client sees its id.
127
+ */
128
+ function createSession(resolved, key) {
129
+ const keyRef = { current: key };
130
+ // The transport's callbacks need the session the transport is part of, so
131
+ // they close over a holder the session is dropped into a few lines below —
132
+ // always before any callback can fire, which only happens once the request
133
+ // handler calls `handleRequest`.
134
+ const holder = {};
135
+ const transport = new StreamableHTTPServerTransport({
136
+ sessionIdGenerator: () => randomUUID(),
137
+ onsessioninitialized: (id) => {
138
+ if (holder.session == null)
139
+ return;
140
+ // Promote from "opening" to a real session the moment the id exists.
141
+ // This fires while the transport is still writing the `initialize`
142
+ // response, which for an SSE answer outlives the handler — so the slot
143
+ // must be moved here rather than after `handleRequest` resolves.
144
+ opening.delete(holder.session);
145
+ sessions.set(id, holder.session);
146
+ },
147
+ onsessionclosed: (id) => {
148
+ sessions.delete(id);
149
+ },
150
+ });
151
+ const server = createMcpServer(createInProcessClient(app, keyRef, internalDispatchToken), {
152
+ capabilities: resolved.capabilities,
153
+ });
154
+ // Note: `transport.onclose` is deliberately not used here — `server.connect()`
155
+ // claims it for the protocol's own teardown. The map is kept honest by
156
+ // `onsessionclosed` (a client's DELETE) and by `closeSession` on the idle
157
+ // sweep, the orphan path and shutdown, which are the only other ways a
158
+ // session ends.
159
+ const session = {
160
+ transport,
161
+ server,
162
+ keyId: resolved.keyId,
163
+ keyRef,
164
+ lastSeenMs: Date.now(),
165
+ };
166
+ holder.session = session;
167
+ return session;
168
+ }
169
+ /**
170
+ * Mirror the CORS decision onto the raw socket. The transport writes its
171
+ * response with `writeHead`, bypassing Fastify's send path (exactly like the
172
+ * live SSE routes), so headers set by the CORS plugin would never be flushed.
173
+ * `Mcp-Session-Id` has to be *exposed* as well, or a browser-based MCP client
174
+ * cannot read the session id it must echo back.
175
+ */
176
+ function applyCorsHeaders(request, reply) {
177
+ const origin = request.headers.origin;
178
+ if (typeof origin !== "string" || !config.corsOrigins.includes(origin))
179
+ return;
180
+ reply.raw.setHeader("access-control-allow-origin", origin);
181
+ reply.raw.setHeader("access-control-expose-headers", "Mcp-Session-Id");
182
+ reply.raw.setHeader("vary", "Origin");
183
+ }
184
+ app.route({
185
+ method: ["POST", "GET", "DELETE"],
186
+ url: MCP_ROUTE_URL,
187
+ handler: async (request, reply) => {
188
+ // Re-authenticate on every request: Streamable HTTP is stateless on the
189
+ // wire, so a session id alone must never be a credential.
190
+ const key = headerValue(request.headers["x-api-key"]);
191
+ if (key == null) {
192
+ await reply.code(401).send(jsonRpcError(-32001, "missing api key"));
193
+ return;
194
+ }
195
+ const resolved = await requireCapability(request, reply, store, "query");
196
+ if (!resolved)
197
+ return;
198
+ const sessionId = headerValue(request.headers["mcp-session-id"]);
199
+ let session = sessionId != null ? sessions.get(sessionId) : undefined;
200
+ if (sessionId != null && session == null) {
201
+ await reply.code(404).send(jsonRpcError(-32001, "Session not found"));
202
+ return;
203
+ }
204
+ if (session != null) {
205
+ if (session.keyId !== resolved.keyId) {
206
+ await reply.code(403).send(jsonRpcError(-32001, "session belongs to a different key"));
207
+ return;
208
+ }
209
+ session.keyRef.current = key;
210
+ session.lastSeenMs = Date.now();
211
+ }
212
+ else {
213
+ // No session id: only an `initialize` POST may open one. Everything else
214
+ // gets the transport's own "session id required" answer, stated here
215
+ // because there is no transport to ask yet.
216
+ if (request.method !== "POST" || !isInitializeRequest(request.body)) {
217
+ await reply
218
+ .code(400)
219
+ .send(jsonRpcError(-32000, "Bad Request: Mcp-Session-Id header is required"));
220
+ return;
221
+ }
222
+ if (sessions.size + opening.size >= config.mcpMaxSessions) {
223
+ await reply.code(503).send(jsonRpcError(-32000, "mcp session limit reached"));
224
+ return;
225
+ }
226
+ session = createSession(resolved, key);
227
+ opening.add(session);
228
+ try {
229
+ await session.server.connect(session.transport);
230
+ }
231
+ catch (err) {
232
+ opening.delete(session);
233
+ await closeSession(undefined, session);
234
+ request.log.error({ err }, "failed to start mcp session");
235
+ await reply.code(500).send(jsonRpcError(-32603, "failed to start mcp session"));
236
+ return;
237
+ }
238
+ }
239
+ const opened = session;
240
+ applyCorsHeaders(request, reply);
241
+ // The transport owns the response from here: it writes the status, the
242
+ // headers and (for an SSE answer) a stream that outlives this handler.
243
+ reply.hijack();
244
+ try {
245
+ await opened.transport.handleRequest(request.raw, reply.raw, request.body);
246
+ }
247
+ catch (err) {
248
+ request.log.error({ err }, "mcp request failed");
249
+ if (!reply.raw.headersSent)
250
+ reply.raw.writeHead(500).end();
251
+ }
252
+ finally {
253
+ // A POST that looked like `initialize` but was refused by the transport
254
+ // never reached `onsessioninitialized`, so it is still "opening" and has
255
+ // no session id — drop the orphan rather than leak its slot.
256
+ if (opening.delete(opened))
257
+ await closeSession(undefined, opened);
258
+ }
259
+ },
260
+ });
261
+ };
262
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/routes/mcp.ts"],"names":[],"mappings":"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"}
@@ -22,10 +22,24 @@
22
22
  * in `app.ts`).
23
23
  *
24
24
  * Routes that are not registry metrics are described only when they are trivial
25
- * and honest to describe (`/health`, this route, and the scene-representation
26
- * listing). Ingestion (`POST /api/v1/collect`), the scene-proxy write
25
+ * and honest to describe (`/health`, this route, the scene-representation
26
+ * listing, and the `metadata` group of #310 — annotations, glossary, saved
27
+ * analyses — whose bodies are converted from the Zod contracts that validate
28
+ * them). Ingestion (`POST /api/v1/collect`), the scene-proxy write
27
29
  * (`PUT …/representation`), the retention-gated raw event stream and the live
28
30
  * SSE surface are deliberately omitted rather than half-described.
31
+ * listing, and the conditional-subscription resource). Ingestion
32
+ * (`POST /api/v1/collect`), the scene-proxy write (`PUT …/representation`), the
33
+ * retention-gated raw event stream and every SSE surface — the live endpoints
34
+ * and `GET /api/v1/subscriptions/stream` alike — are deliberately omitted rather
35
+ * than half-described: a hijacked `text/event-stream` response is not an
36
+ * operation with a JSON body, and pretending otherwise misleads a generated
37
+ * client.
38
+ *
39
+ * Conditional subscriptions (#311) are the one **write** surface described here.
40
+ * They earn it: they are a CRUD resource rather than a query, and the only place
41
+ * a caller needs a written contract for a request *body* — a closed Zod union
42
+ * that cannot be inferred from a querystring.
29
43
  */
30
44
  import type { FastifyInstance, FastifyPluginAsync } from "fastify";
31
45
  import { z } from "zod";
@@ -1 +1 @@
1
- {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/routes/meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC3C;AA4DD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,EAAE,CAiB5E;AAuRD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,GAAE,SAAS,gBAAgB,EAAO,GAC7C,eAAe,CAoDjB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,kBAAkB,CAAC,iBAAiB,CAS5D,CAAC"}
1
+ {"version":3,"file":"meta.d.ts","sourceRoot":"","sources":["../../src/routes/meta.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAC;AACnE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoCxB,wEAAwE;AACxE,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEtD,yEAAyE;AACzE,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;IAC1B,MAAM,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC;CACtB;AAED,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,YAAY,EAAE,SAAS,gBAAgB,EAAE,CAAC;CAC3C;AA4DD;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,EAAE,CAiB5E;AAy7BD;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,YAAY,GAAE,SAAS,gBAAgB,EAAO,GAC7C,eAAe,CA4EjB;AAED;;;GAGG;AACH,eAAO,MAAM,UAAU,EAAE,kBAAkB,CAAC,iBAAiB,CAS5D,CAAC"}