@nitrostack/core 1.0.14 → 1.0.16
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/auth/cimd.d.ts +90 -0
- package/dist/auth/cimd.d.ts.map +1 -0
- package/dist/auth/cimd.js +344 -0
- package/dist/auth/cimd.js.map +1 -0
- package/dist/auth/client.d.ts +21 -0
- package/dist/auth/client.d.ts.map +1 -1
- package/dist/auth/client.js +48 -0
- package/dist/auth/client.js.map +1 -1
- package/dist/auth/index.d.ts +2 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +3 -1
- package/dist/auth/index.js.map +1 -1
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/middleware.js +15 -3
- package/dist/auth/middleware.js.map +1 -1
- package/dist/auth/server-metadata.d.ts +5 -0
- package/dist/auth/server-metadata.d.ts.map +1 -1
- package/dist/auth/server-metadata.js +7 -1
- package/dist/auth/server-metadata.js.map +1 -1
- package/dist/auth/token-store.d.ts +12 -1
- package/dist/auth/token-store.d.ts.map +1 -1
- package/dist/auth/token-store.js +23 -1
- package/dist/auth/token-store.js.map +1 -1
- package/dist/auth/token-validation.d.ts +1 -1
- package/dist/auth/token-validation.d.ts.map +1 -1
- package/dist/auth/token-validation.js +20 -6
- package/dist/auth/token-validation.js.map +1 -1
- package/dist/auth/types.d.ts +17 -0
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/core/app-decorator.d.ts +10 -0
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +25 -11
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +5 -0
- package/dist/core/builders.js.map +1 -1
- package/dist/core/errors.d.ts +6 -0
- package/dist/core/errors.d.ts.map +1 -1
- package/dist/core/errors.js +9 -0
- package/dist/core/errors.js.map +1 -1
- package/dist/core/guards/oauth.guard.d.ts +13 -6
- package/dist/core/guards/oauth.guard.d.ts.map +1 -1
- package/dist/core/guards/oauth.guard.js +90 -1
- package/dist/core/guards/oauth.guard.js.map +1 -1
- package/dist/core/index.d.ts +7 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +7 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/oauth-module.d.ts +5 -0
- package/dist/core/oauth-module.d.ts.map +1 -1
- package/dist/core/oauth-module.js +15 -6
- package/dist/core/oauth-module.js.map +1 -1
- package/dist/core/protocol/adapter.d.ts +97 -0
- package/dist/core/protocol/adapter.d.ts.map +1 -0
- package/dist/core/protocol/adapter.js +21 -0
- package/dist/core/protocol/adapter.js.map +1 -0
- package/dist/core/protocol/features/cache-hints.d.ts +64 -0
- package/dist/core/protocol/features/cache-hints.d.ts.map +1 -0
- package/dist/core/protocol/features/cache-hints.js +56 -0
- package/dist/core/protocol/features/cache-hints.js.map +1 -0
- package/dist/core/protocol/features/errors.d.ts +34 -0
- package/dist/core/protocol/features/errors.d.ts.map +1 -0
- package/dist/core/protocol/features/errors.js +48 -0
- package/dist/core/protocol/features/errors.js.map +1 -0
- package/dist/core/protocol/features/extensions.d.ts +39 -0
- package/dist/core/protocol/features/extensions.d.ts.map +1 -0
- package/dist/core/protocol/features/extensions.js +42 -0
- package/dist/core/protocol/features/extensions.js.map +1 -0
- package/dist/core/protocol/features/mrtr.d.ts +75 -0
- package/dist/core/protocol/features/mrtr.d.ts.map +1 -0
- package/dist/core/protocol/features/mrtr.js +66 -0
- package/dist/core/protocol/features/mrtr.js.map +1 -0
- package/dist/core/protocol/features/schema.d.ts +39 -0
- package/dist/core/protocol/features/schema.d.ts.map +1 -0
- package/dist/core/protocol/features/schema.js +96 -0
- package/dist/core/protocol/features/schema.js.map +1 -0
- package/dist/core/protocol/features/trace-context.d.ts +31 -0
- package/dist/core/protocol/features/trace-context.d.ts.map +1 -0
- package/dist/core/protocol/features/trace-context.js +45 -0
- package/dist/core/protocol/features/trace-context.js.map +1 -0
- package/dist/core/protocol/modern-v2.adapter.d.ts +92 -0
- package/dist/core/protocol/modern-v2.adapter.d.ts.map +1 -0
- package/dist/core/protocol/modern-v2.adapter.js +939 -0
- package/dist/core/protocol/modern-v2.adapter.js.map +1 -0
- package/dist/core/protocol/version.d.ts +72 -0
- package/dist/core/protocol/version.d.ts.map +1 -0
- package/dist/core/protocol/version.js +99 -0
- package/dist/core/protocol/version.js.map +1 -0
- package/dist/core/resource.d.ts +15 -0
- package/dist/core/resource.d.ts.map +1 -1
- package/dist/core/resource.js +13 -0
- package/dist/core/resource.js.map +1 -1
- package/dist/core/server.d.ts +50 -6
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +326 -90
- package/dist/core/server.js.map +1 -1
- package/dist/core/task.d.ts +126 -40
- package/dist/core/task.d.ts.map +1 -1
- package/dist/core/task.js +166 -56
- package/dist/core/task.js.map +1 -1
- package/dist/core/tool.d.ts +20 -0
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +16 -2
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transports/streamable-http.d.ts +35 -1
- package/dist/core/transports/streamable-http.d.ts.map +1 -1
- package/dist/core/transports/streamable-http.js +77 -12
- package/dist/core/transports/streamable-http.js.map +1 -1
- package/dist/core/types.d.ts +86 -0
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +5 -2
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SEP-414 W3C Trace Context propagation.
|
|
3
|
+
*
|
|
4
|
+
* On the 2026-07-28 revision, distributed-tracing keys travel in the per-request
|
|
5
|
+
* `_meta` envelope under fixed names: `traceparent`, `tracestate`, `baggage`.
|
|
6
|
+
* NitroStack lifts them into `ExecutionContext.trace` so guards, interceptors,
|
|
7
|
+
* and loggers can correlate a tool call across the host, this server, and any
|
|
8
|
+
* downstream call — without NitroStack introducing its own tracing backend.
|
|
9
|
+
*
|
|
10
|
+
* @module
|
|
11
|
+
*/
|
|
12
|
+
const TRACEPARENT_KEY = 'io.modelcontextprotocol/traceparent';
|
|
13
|
+
const TRACESTATE_KEY = 'io.modelcontextprotocol/tracestate';
|
|
14
|
+
const BAGGAGE_KEY = 'io.modelcontextprotocol/baggage';
|
|
15
|
+
/**
|
|
16
|
+
* Extract a `TraceContext` from an envelope/meta object, or `undefined` when no
|
|
17
|
+
* trace keys are present. Accepts either the lifted `_meta` envelope
|
|
18
|
+
* (`ctx.mcpReq.envelope`) or a raw `_meta` record; both the bare
|
|
19
|
+
* (`traceparent`) and reverse-DNS (`io.modelcontextprotocol/traceparent`)
|
|
20
|
+
* forms are recognized.
|
|
21
|
+
*/
|
|
22
|
+
export function extractTraceContext(source) {
|
|
23
|
+
if (!source || typeof source !== 'object') {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const pick = (bare, prefixed) => {
|
|
27
|
+
const v = source[prefixed] ?? source[bare];
|
|
28
|
+
return typeof v === 'string' && v.length > 0 ? v : undefined;
|
|
29
|
+
};
|
|
30
|
+
const traceparent = pick('traceparent', TRACEPARENT_KEY);
|
|
31
|
+
const tracestate = pick('tracestate', TRACESTATE_KEY);
|
|
32
|
+
const baggage = pick('baggage', BAGGAGE_KEY);
|
|
33
|
+
if (!traceparent && !tracestate && !baggage) {
|
|
34
|
+
return undefined;
|
|
35
|
+
}
|
|
36
|
+
const trace = {};
|
|
37
|
+
if (traceparent)
|
|
38
|
+
trace.traceparent = traceparent;
|
|
39
|
+
if (tracestate)
|
|
40
|
+
trace.tracestate = tracestate;
|
|
41
|
+
if (baggage)
|
|
42
|
+
trace.baggage = baggage;
|
|
43
|
+
return trace;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=trace-context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trace-context.js","sourceRoot":"","sources":["../../../../src/core/protocol/features/trace-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAcH,MAAM,eAAe,GAAG,qCAAqC,CAAC;AAC9D,MAAM,cAAc,GAAG,oCAAoC,CAAC;AAC5D,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAEtD;;;;;;GAMG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAAkD;IAElD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QAC1C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,CAAC,IAAY,EAAE,QAAgB,EAAsB,EAAE;QAClE,MAAM,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC/D,CAAC,CAAC;IAEF,MAAM,WAAW,GAAG,IAAI,CAAC,aAAa,EAAE,eAAe,CAAC,CAAC;IACzD,MAAM,UAAU,GAAG,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;IACtD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAE7C,IAAI,CAAC,WAAW,IAAI,CAAC,UAAU,IAAI,CAAC,OAAO,EAAE,CAAC;QAC5C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,KAAK,GAAiB,EAAE,CAAC;IAC/B,IAAI,WAAW;QAAE,KAAK,CAAC,WAAW,GAAG,WAAW,CAAC;IACjD,IAAI,UAAU;QAAE,KAAK,CAAC,UAAU,GAAG,UAAU,CAAC;IAC9C,IAAI,OAAO;QAAE,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;IACrC,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Modern (2026-07-28) protocol adapter.
|
|
3
|
+
*
|
|
4
|
+
* Binds the NitroStack registry to the official `@modelcontextprotocol/server`
|
|
5
|
+
* v2 engine:
|
|
6
|
+
*
|
|
7
|
+
* - HTTP: `createMcpHandler(() => buildServer())` wrapped with
|
|
8
|
+
* `toNodeHandler(...)` from `@modelcontextprotocol/node`, mounted on the
|
|
9
|
+
* Express app. Stateless per-request serving, `server/discover`, per-request
|
|
10
|
+
* `_meta` envelope, `Mcp-Method`/`Mcp-Name` headers, and cache hints are all
|
|
11
|
+
* provided by the SDK.
|
|
12
|
+
* - stdio: `serveStdio(() => buildServer())` from `@modelcontextprotocol/server/stdio`.
|
|
13
|
+
*
|
|
14
|
+
* The SDK stamps `_meta['io.modelcontextprotocol/serverInfo']` on every 2026
|
|
15
|
+
* response from the `Implementation` handed to `new McpServer(...)`.
|
|
16
|
+
*
|
|
17
|
+
* The v2 packages are loaded lazily (dynamic `import`) so a default (legacy)
|
|
18
|
+
* install never touches them and existing Jest suites never load v2. The SDK's
|
|
19
|
+
* types use minified re-exports, so this file types the SDK surface loosely at
|
|
20
|
+
* the boundary while keeping NitroStack's own objects strongly typed.
|
|
21
|
+
*
|
|
22
|
+
* @module
|
|
23
|
+
*/
|
|
24
|
+
import type { Express, Request as ExpressRequest, Response as ExpressResponse } from 'express';
|
|
25
|
+
import type { ProtocolAdapter, ProtocolRegistry, ProtocolTransportOptions } from './adapter.js';
|
|
26
|
+
import { TaskManager, type TaskData } from '../task.js';
|
|
27
|
+
type AnyRecord = Record<string, any>;
|
|
28
|
+
export interface ModernProtocolAdapterOptions {
|
|
29
|
+
legacyMode?: 'stateless' | 'reject';
|
|
30
|
+
taskManager?: TaskManager;
|
|
31
|
+
}
|
|
32
|
+
export declare class ModernProtocolAdapter implements ProtocolAdapter {
|
|
33
|
+
private readonly registry;
|
|
34
|
+
private readonly options;
|
|
35
|
+
readonly era: "modern";
|
|
36
|
+
private handler?;
|
|
37
|
+
private stdioHandle?;
|
|
38
|
+
private serverSdkPromise?;
|
|
39
|
+
private readonly taskManager?;
|
|
40
|
+
constructor(registry: ProtocolRegistry, options?: ModernProtocolAdapterOptions);
|
|
41
|
+
private loadServerSdk;
|
|
42
|
+
private buildServer;
|
|
43
|
+
/** Server-level per-operation cache hints for list/discover results. */
|
|
44
|
+
private buildServerCacheHints;
|
|
45
|
+
private registerTools;
|
|
46
|
+
private registerResources;
|
|
47
|
+
private registerPrompts;
|
|
48
|
+
private runTool;
|
|
49
|
+
/**
|
|
50
|
+
* Translate a NitroStack/handler error into an SDK error carrying the right
|
|
51
|
+
* JSON-RPC code for the modern era. Prefers the v2 SDK error classes (so the
|
|
52
|
+
* SDK serializes `error.code` correctly); falls back to a plain `Error` with
|
|
53
|
+
* a numeric `code` property the SDK also recognizes.
|
|
54
|
+
*/
|
|
55
|
+
private toSdkError;
|
|
56
|
+
private readResource;
|
|
57
|
+
private buildContext;
|
|
58
|
+
private mapAuthInfo;
|
|
59
|
+
private toModernSchema;
|
|
60
|
+
/**
|
|
61
|
+
* Build the stateless per-request Node HTTP handler for the modern engine.
|
|
62
|
+
* Returned so an existing Express host (NitroStack's `StreamableHttpTransport`)
|
|
63
|
+
* can route its `/mcp` endpoint to it, keeping one Express app and one set of
|
|
64
|
+
* OAuth/docs routes.
|
|
65
|
+
*/
|
|
66
|
+
/**
|
|
67
|
+
* Build (once) the web-standard v2 handler `{ fetch, close, notify, bus }`
|
|
68
|
+
* returned by `createMcpHandler`. Idempotent: repeated calls reuse the same
|
|
69
|
+
* handler so a single notify bus backs `subscriptions/listen`.
|
|
70
|
+
*/
|
|
71
|
+
getHttpHandler(): Promise<AnyRecord>;
|
|
72
|
+
private extractAccessContext;
|
|
73
|
+
private handleTaskPreDispatch;
|
|
74
|
+
createNodeHandler(): Promise<(req: ExpressRequest, res: ExpressResponse) => void>;
|
|
75
|
+
attachHttp(app: Express, options: ProtocolTransportOptions): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* SEP-2243/SEP-2575 CORS: expose and allow the new required request headers
|
|
78
|
+
* (`MCP-Protocol-Version`, `Mcp-Method`, `Mcp-Name`, and `Mcp-Param-*`).
|
|
79
|
+
*/
|
|
80
|
+
private applyCorsHeaders;
|
|
81
|
+
serveStdio(): Promise<void>;
|
|
82
|
+
notifyToolsListChanged(): void;
|
|
83
|
+
notifyResourcesListChanged(): void;
|
|
84
|
+
notifyPromptsListChanged(): void;
|
|
85
|
+
notifyResourceUpdated(uri: string): void;
|
|
86
|
+
notifyTaskStatus(taskData: TaskData): void;
|
|
87
|
+
close(): Promise<void>;
|
|
88
|
+
/** The extensions map this adapter would advertise (for diagnostics/notes). */
|
|
89
|
+
advertisedExtensions(): Record<string, Record<string, unknown>>;
|
|
90
|
+
}
|
|
91
|
+
export {};
|
|
92
|
+
//# sourceMappingURL=modern-v2.adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"modern-v2.adapter.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/modern-v2.adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,SAAS,CAAC;AAC/F,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,cAAc,CAAC;AAWhG,OAAO,EAAE,WAAW,EAA8C,KAAK,QAAQ,EAA0B,MAAM,YAAY,CAAC;AAG5H,KAAK,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;AAwBrC,MAAM,WAAW,4BAA4B;IAC3C,UAAU,CAAC,EAAE,WAAW,GAAG,QAAQ,CAAC;IACpC,WAAW,CAAC,EAAE,WAAW,CAAC;CAC3B;AAED,qBAAa,qBAAsB,YAAW,eAAe;IASzD,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAT1B,QAAQ,CAAC,GAAG,EAAG,QAAQ,CAAU;IAEjC,OAAO,CAAC,OAAO,CAAC,CAAY;IAC5B,OAAO,CAAC,WAAW,CAAC,CAAY;IAChC,OAAO,CAAC,gBAAgB,CAAC,CAAqB;IAC9C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAc;gBAGxB,QAAQ,EAAE,gBAAgB,EAC1B,OAAO,GAAE,4BAAuD;IAKnF,OAAO,CAAC,aAAa;YAWP,WAAW;IAsBzB,wEAAwE;IACxE,OAAO,CAAC,qBAAqB;YAKf,aAAa;YAqEb,iBAAiB;YAgHjB,eAAe;YAkEf,OAAO;IAiFrB;;;;;OAKG;IACH,OAAO,CAAC,UAAU;YAuBJ,YAAY;IAsC1B,OAAO,CAAC,YAAY;IAmHpB,OAAO,CAAC,WAAW;YAcL,cAAc;IAqB5B;;;;;OAKG;IACH;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC,SAAS,CAAC;IAsD1C,OAAO,CAAC,oBAAoB;YAad,qBAAqB;IA4J7B,iBAAiB,IAAI,OAAO,CAAC,CAAC,GAAG,EAAE,cAAc,EAAE,GAAG,EAAE,eAAe,KAAK,IAAI,CAAC;IAiEjF,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBhF;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAoBlB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAUjC,sBAAsB,IAAI,IAAI;IAG9B,0BAA0B,IAAI,IAAI;IAGlC,wBAAwB,IAAI,IAAI;IAGhC,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAGxC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IASpC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAe5B,+EAA+E;IAC/E,oBAAoB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAMhE"}
|