@nitrostack/core 1.0.17 → 1.1.0-beta.1

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 (199) hide show
  1. package/dist/core/app-decorator.d.ts +5 -0
  2. package/dist/core/app-decorator.d.ts.map +1 -1
  3. package/dist/core/app-decorator.js +2 -1
  4. package/dist/core/app-decorator.js.map +1 -1
  5. package/dist/core/builders.d.ts.map +1 -1
  6. package/dist/core/builders.js +2 -0
  7. package/dist/core/builders.js.map +1 -1
  8. package/dist/core/decorators.d.ts +11 -0
  9. package/dist/core/decorators.d.ts.map +1 -1
  10. package/dist/core/decorators.js.map +1 -1
  11. package/dist/core/health/health-checks.resource.d.ts +4 -3
  12. package/dist/core/health/health-checks.resource.d.ts.map +1 -1
  13. package/dist/core/health/health-checks.resource.js +35 -8
  14. package/dist/core/health/health-checks.resource.js.map +1 -1
  15. package/dist/core/health/health.interface.d.ts +40 -0
  16. package/dist/core/health/health.interface.d.ts.map +1 -0
  17. package/dist/core/health/health.interface.js +2 -0
  18. package/dist/core/health/health.interface.js.map +1 -0
  19. package/dist/core/index.d.ts +11 -2
  20. package/dist/core/index.d.ts.map +1 -1
  21. package/dist/core/index.js +9 -1
  22. package/dist/core/index.js.map +1 -1
  23. package/dist/core/interceptors/data-spillover.interceptor.d.ts +30 -0
  24. package/dist/core/interceptors/data-spillover.interceptor.d.ts.map +1 -0
  25. package/dist/core/interceptors/data-spillover.interceptor.js +174 -0
  26. package/dist/core/interceptors/data-spillover.interceptor.js.map +1 -0
  27. package/dist/core/interceptors/interceptor.decorator.d.ts +17 -8
  28. package/dist/core/interceptors/interceptor.decorator.d.ts.map +1 -1
  29. package/dist/core/interceptors/interceptor.decorator.js +36 -11
  30. package/dist/core/interceptors/interceptor.decorator.js.map +1 -1
  31. package/dist/core/interceptors/interceptor.interface.d.ts +4 -0
  32. package/dist/core/interceptors/interceptor.interface.d.ts.map +1 -1
  33. package/dist/core/interceptors/spillover/fs-spillover.store.d.ts +54 -0
  34. package/dist/core/interceptors/spillover/fs-spillover.store.d.ts.map +1 -0
  35. package/dist/core/interceptors/spillover/fs-spillover.store.js +302 -0
  36. package/dist/core/interceptors/spillover/fs-spillover.store.js.map +1 -0
  37. package/dist/core/interceptors/spillover/index.d.ts +6 -0
  38. package/dist/core/interceptors/spillover/index.d.ts.map +1 -0
  39. package/dist/core/interceptors/spillover/index.js +6 -0
  40. package/dist/core/interceptors/spillover/index.js.map +1 -0
  41. package/dist/core/interceptors/spillover/memory-spillover.store.d.ts +25 -0
  42. package/dist/core/interceptors/spillover/memory-spillover.store.d.ts.map +1 -0
  43. package/dist/core/interceptors/spillover/memory-spillover.store.js +115 -0
  44. package/dist/core/interceptors/spillover/memory-spillover.store.js.map +1 -0
  45. package/dist/core/interceptors/spillover/preview-generator.d.ts +7 -0
  46. package/dist/core/interceptors/spillover/preview-generator.d.ts.map +1 -0
  47. package/dist/core/interceptors/spillover/preview-generator.js +79 -0
  48. package/dist/core/interceptors/spillover/preview-generator.js.map +1 -0
  49. package/dist/core/interceptors/spillover/spillover-store.interface.d.ts +20 -0
  50. package/dist/core/interceptors/spillover/spillover-store.interface.d.ts.map +1 -0
  51. package/dist/core/interceptors/spillover/spillover-store.interface.js +2 -0
  52. package/dist/core/interceptors/spillover/spillover-store.interface.js.map +1 -0
  53. package/dist/core/interceptors/spillover/types.d.ts +71 -0
  54. package/dist/core/interceptors/spillover/types.d.ts.map +1 -0
  55. package/dist/core/interceptors/spillover/types.js +12 -0
  56. package/dist/core/interceptors/spillover/types.js.map +1 -0
  57. package/dist/core/protocol/adapter.d.ts +7 -1
  58. package/dist/core/protocol/adapter.d.ts.map +1 -1
  59. package/dist/core/protocol/modern-v2.adapter.d.ts +95 -2
  60. package/dist/core/protocol/modern-v2.adapter.d.ts.map +1 -1
  61. package/dist/core/protocol/modern-v2.adapter.js +703 -165
  62. package/dist/core/protocol/modern-v2.adapter.js.map +1 -1
  63. package/dist/core/server.d.ts +104 -4
  64. package/dist/core/server.d.ts.map +1 -1
  65. package/dist/core/server.js +465 -52
  66. package/dist/core/server.js.map +1 -1
  67. package/dist/core/task.d.ts.map +1 -1
  68. package/dist/core/task.js +8 -7
  69. package/dist/core/task.js.map +1 -1
  70. package/dist/core/tool.d.ts +12 -3
  71. package/dist/core/tool.d.ts.map +1 -1
  72. package/dist/core/tool.js +21 -3
  73. package/dist/core/tool.js.map +1 -1
  74. package/dist/core/transforms/catalog.transform.d.ts +40 -0
  75. package/dist/core/transforms/catalog.transform.d.ts.map +1 -0
  76. package/dist/core/transforms/catalog.transform.js +52 -0
  77. package/dist/core/transforms/catalog.transform.js.map +1 -0
  78. package/dist/core/transforms/code-mode/code-mode.transform.d.ts +75 -0
  79. package/dist/core/transforms/code-mode/code-mode.transform.d.ts.map +1 -0
  80. package/dist/core/transforms/code-mode/code-mode.transform.js +226 -0
  81. package/dist/core/transforms/code-mode/code-mode.transform.js.map +1 -0
  82. package/dist/core/transforms/code-mode/destructive-guard.d.ts +7 -0
  83. package/dist/core/transforms/code-mode/destructive-guard.d.ts.map +1 -0
  84. package/dist/core/transforms/code-mode/destructive-guard.js +18 -0
  85. package/dist/core/transforms/code-mode/destructive-guard.js.map +1 -0
  86. package/dist/core/transforms/code-mode/guest-evaluator.d.ts +17 -0
  87. package/dist/core/transforms/code-mode/guest-evaluator.d.ts.map +1 -0
  88. package/dist/core/transforms/code-mode/guest-evaluator.js +277 -0
  89. package/dist/core/transforms/code-mode/guest-evaluator.js.map +1 -0
  90. package/dist/core/transforms/code-mode/index.d.ts +11 -0
  91. package/dist/core/transforms/code-mode/index.d.ts.map +1 -0
  92. package/dist/core/transforms/code-mode/index.js +11 -0
  93. package/dist/core/transforms/code-mode/index.js.map +1 -0
  94. package/dist/core/transforms/code-mode/ipc-messages.d.ts +31 -0
  95. package/dist/core/transforms/code-mode/ipc-messages.d.ts.map +1 -0
  96. package/dist/core/transforms/code-mode/ipc-messages.js +2 -0
  97. package/dist/core/transforms/code-mode/ipc-messages.js.map +1 -0
  98. package/dist/core/transforms/code-mode/legible-error.d.ts +8 -0
  99. package/dist/core/transforms/code-mode/legible-error.d.ts.map +1 -0
  100. package/dist/core/transforms/code-mode/legible-error.js +17 -0
  101. package/dist/core/transforms/code-mode/legible-error.js.map +1 -0
  102. package/dist/core/transforms/code-mode/quickjs-wasm.provider.d.ts +25 -0
  103. package/dist/core/transforms/code-mode/quickjs-wasm.provider.d.ts.map +1 -0
  104. package/dist/core/transforms/code-mode/quickjs-wasm.provider.js +31 -0
  105. package/dist/core/transforms/code-mode/quickjs-wasm.provider.js.map +1 -0
  106. package/dist/core/transforms/code-mode/sandbox.interface.d.ts +10 -0
  107. package/dist/core/transforms/code-mode/sandbox.interface.d.ts.map +1 -0
  108. package/dist/core/transforms/code-mode/sandbox.interface.js +2 -0
  109. package/dist/core/transforms/code-mode/sandbox.interface.js.map +1 -0
  110. package/dist/core/transforms/code-mode/sandbox.worker.d.ts +2 -0
  111. package/dist/core/transforms/code-mode/sandbox.worker.d.ts.map +1 -0
  112. package/dist/core/transforms/code-mode/sandbox.worker.js +69 -0
  113. package/dist/core/transforms/code-mode/sandbox.worker.js.map +1 -0
  114. package/dist/core/transforms/code-mode/synthetic-tools.d.ts +23 -0
  115. package/dist/core/transforms/code-mode/synthetic-tools.d.ts.map +1 -0
  116. package/dist/core/transforms/code-mode/synthetic-tools.js +112 -0
  117. package/dist/core/transforms/code-mode/synthetic-tools.js.map +1 -0
  118. package/dist/core/transforms/code-mode/types.d.ts +32 -0
  119. package/dist/core/transforms/code-mode/types.d.ts.map +1 -0
  120. package/dist/core/transforms/code-mode/types.js +2 -0
  121. package/dist/core/transforms/code-mode/types.js.map +1 -0
  122. package/dist/core/transforms/code-mode/worker-pool.d.ts +71 -0
  123. package/dist/core/transforms/code-mode/worker-pool.d.ts.map +1 -0
  124. package/dist/core/transforms/code-mode/worker-pool.js +435 -0
  125. package/dist/core/transforms/code-mode/worker-pool.js.map +1 -0
  126. package/dist/core/transforms/index.d.ts +6 -0
  127. package/dist/core/transforms/index.d.ts.map +1 -0
  128. package/dist/core/transforms/index.js +6 -0
  129. package/dist/core/transforms/index.js.map +1 -0
  130. package/dist/core/transforms/search/base-search.transform.d.ts +59 -0
  131. package/dist/core/transforms/search/base-search.transform.d.ts.map +1 -0
  132. package/dist/core/transforms/search/base-search.transform.js +169 -0
  133. package/dist/core/transforms/search/base-search.transform.js.map +1 -0
  134. package/dist/core/transforms/search/bm25-search.transform.d.ts +27 -0
  135. package/dist/core/transforms/search/bm25-search.transform.d.ts.map +1 -0
  136. package/dist/core/transforms/search/bm25-search.transform.js +37 -0
  137. package/dist/core/transforms/search/bm25-search.transform.js.map +1 -0
  138. package/dist/core/transforms/search/bm25.engine.d.ts +46 -0
  139. package/dist/core/transforms/search/bm25.engine.d.ts.map +1 -0
  140. package/dist/core/transforms/search/bm25.engine.js +160 -0
  141. package/dist/core/transforms/search/bm25.engine.js.map +1 -0
  142. package/dist/core/transforms/search/index.d.ts +9 -0
  143. package/dist/core/transforms/search/index.d.ts.map +1 -0
  144. package/dist/core/transforms/search/index.js +9 -0
  145. package/dist/core/transforms/search/index.js.map +1 -0
  146. package/dist/core/transforms/search/regex-match.worker.d.ts +2 -0
  147. package/dist/core/transforms/search/regex-match.worker.d.ts.map +1 -0
  148. package/dist/core/transforms/search/regex-match.worker.js +19 -0
  149. package/dist/core/transforms/search/regex-match.worker.js.map +1 -0
  150. package/dist/core/transforms/search/regex-search.transform.d.ts +41 -0
  151. package/dist/core/transforms/search/regex-search.transform.d.ts.map +1 -0
  152. package/dist/core/transforms/search/regex-search.transform.js +237 -0
  153. package/dist/core/transforms/search/regex-search.transform.js.map +1 -0
  154. package/dist/core/transforms/search/synthetic-tools.d.ts +11 -0
  155. package/dist/core/transforms/search/synthetic-tools.d.ts.map +1 -0
  156. package/dist/core/transforms/search/synthetic-tools.js +76 -0
  157. package/dist/core/transforms/search/synthetic-tools.js.map +1 -0
  158. package/dist/core/transforms/search/tokenizer.d.ts +11 -0
  159. package/dist/core/transforms/search/tokenizer.d.ts.map +1 -0
  160. package/dist/core/transforms/search/tokenizer.js +38 -0
  161. package/dist/core/transforms/search/tokenizer.js.map +1 -0
  162. package/dist/core/transforms/search/tool-serializer.d.ts +6 -0
  163. package/dist/core/transforms/search/tool-serializer.d.ts.map +1 -0
  164. package/dist/core/transforms/search/tool-serializer.js +41 -0
  165. package/dist/core/transforms/search/tool-serializer.js.map +1 -0
  166. package/dist/core/transforms/search/types.d.ts +36 -0
  167. package/dist/core/transforms/search/types.d.ts.map +1 -0
  168. package/dist/core/transforms/search/types.js +2 -0
  169. package/dist/core/transforms/search/types.js.map +1 -0
  170. package/dist/core/transforms/tool-cache-key.d.ts +15 -0
  171. package/dist/core/transforms/tool-cache-key.d.ts.map +1 -0
  172. package/dist/core/transforms/tool-cache-key.js +61 -0
  173. package/dist/core/transforms/tool-cache-key.js.map +1 -0
  174. package/dist/core/transforms/transform.interface.d.ts +34 -0
  175. package/dist/core/transforms/transform.interface.d.ts.map +1 -0
  176. package/dist/core/transforms/transform.interface.js +2 -0
  177. package/dist/core/transforms/transform.interface.js.map +1 -0
  178. package/dist/core/transforms/validate-tool-arguments.d.ts +10 -0
  179. package/dist/core/transforms/validate-tool-arguments.d.ts.map +1 -0
  180. package/dist/core/transforms/validate-tool-arguments.js +62 -0
  181. package/dist/core/transforms/validate-tool-arguments.js.map +1 -0
  182. package/dist/core/transforms/visibility/index.d.ts +3 -0
  183. package/dist/core/transforms/visibility/index.d.ts.map +1 -0
  184. package/dist/core/transforms/visibility/index.js +3 -0
  185. package/dist/core/transforms/visibility/index.js.map +1 -0
  186. package/dist/core/transforms/visibility/session-store.d.ts +132 -0
  187. package/dist/core/transforms/visibility/session-store.d.ts.map +1 -0
  188. package/dist/core/transforms/visibility/session-store.js +330 -0
  189. package/dist/core/transforms/visibility/session-store.js.map +1 -0
  190. package/dist/core/transforms/visibility/visibility.transform.d.ts +42 -0
  191. package/dist/core/transforms/visibility/visibility.transform.d.ts.map +1 -0
  192. package/dist/core/transforms/visibility/visibility.transform.js +109 -0
  193. package/dist/core/transforms/visibility/visibility.transform.js.map +1 -0
  194. package/dist/core/types.d.ts +60 -0
  195. package/dist/core/types.d.ts.map +1 -1
  196. package/dist/testing/index.d.ts.map +1 -1
  197. package/dist/testing/index.js +3 -0
  198. package/dist/testing/index.js.map +1 -1
  199. package/package.json +8 -2
@@ -0,0 +1,71 @@
1
+ import { z } from 'zod';
2
+ import { SpilloverStore } from './spillover-store.interface.js';
3
+ export interface SpilloverEnvelope {
4
+ _spillover: true;
5
+ resourceUri: string;
6
+ mimeType: string;
7
+ sizeBytes: number;
8
+ totalItems?: number;
9
+ summary: string;
10
+ preview: unknown;
11
+ hint: string;
12
+ }
13
+ export declare const SpilloverEnvelopeSchema: z.ZodObject<{
14
+ _spillover: z.ZodLiteral<true>;
15
+ resourceUri: z.ZodString;
16
+ mimeType: z.ZodString;
17
+ sizeBytes: z.ZodNumber;
18
+ totalItems: z.ZodOptional<z.ZodNumber>;
19
+ summary: z.ZodString;
20
+ preview: z.ZodUnknown;
21
+ hint: z.ZodString;
22
+ }, "strip", z.ZodTypeAny, {
23
+ mimeType: string;
24
+ resourceUri: string;
25
+ _spillover: true;
26
+ sizeBytes: number;
27
+ summary: string;
28
+ hint: string;
29
+ totalItems?: number | undefined;
30
+ preview?: unknown;
31
+ }, {
32
+ mimeType: string;
33
+ resourceUri: string;
34
+ _spillover: true;
35
+ sizeBytes: number;
36
+ summary: string;
37
+ hint: string;
38
+ totalItems?: number | undefined;
39
+ preview?: unknown;
40
+ }>;
41
+ export interface DataSpilloverOptions {
42
+ /**
43
+ * Maximum allowed payload size in bytes before spillover is triggered (default: 10KB = 10,240).
44
+ */
45
+ maxPayloadBytes?: number;
46
+ /**
47
+ * Time-to-live for spilled resources in seconds (default: 3,600 = 1 hour).
48
+ */
49
+ spilloverTtlSeconds?: number;
50
+ /**
51
+ * Storage backend driver: 'memory' (default), 'filesystem', or custom SpilloverStore instance.
52
+ */
53
+ storage?: 'memory' | 'filesystem' | SpilloverStore;
54
+ /**
55
+ * Storage directory when using 'filesystem' driver.
56
+ */
57
+ storagePath?: string;
58
+ /**
59
+ * Number of items to include in the preview slice for arrays/maps (default: 3).
60
+ */
61
+ previewItems?: number;
62
+ /**
63
+ * Number of characters to include in string preview (default: 500).
64
+ */
65
+ previewStringChars?: number;
66
+ /**
67
+ * URI prefix for generated resource pointers (default: 'resource://data-spillover/').
68
+ */
69
+ resourceUriPrefix?: string;
70
+ }
71
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/interceptors/spillover/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,WAAW,iBAAiB;IAChC,UAAU,EAAE,IAAI,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAC;AAEH,MAAM,WAAW,oBAAoB;IACnC;;OAEG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;OAEG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B;;OAEG;IACH,OAAO,CAAC,EAAE,QAAQ,GAAG,YAAY,GAAG,cAAc,CAAC;IACnD;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;OAEG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B"}
@@ -0,0 +1,12 @@
1
+ import { z } from 'zod';
2
+ export const SpilloverEnvelopeSchema = z.object({
3
+ _spillover: z.literal(true),
4
+ resourceUri: z.string(),
5
+ mimeType: z.string(),
6
+ sizeBytes: z.number(),
7
+ totalItems: z.number().optional(),
8
+ summary: z.string(),
9
+ preview: z.unknown(),
10
+ hint: z.string(),
11
+ });
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/core/interceptors/spillover/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAcxB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC;IAC3B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE;IACpB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;IACpB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;CACjB,CAAC,CAAC"}
@@ -34,6 +34,10 @@ export interface ProtocolRegistry {
34
34
  readonly logger: Logger;
35
35
  /** Registered tools keyed by name. */
36
36
  getTools(): Map<string, Tool>;
37
+ /** Pipeline-transformed catalog keyed by name. */
38
+ getTransformedTools(context?: ExecutionContext): Promise<Map<string, Tool>>;
39
+ /** Pipeline-resolved tool resolution for dynamic/synthetic tools. */
40
+ resolveTool(name: string, context?: ExecutionContext): Promise<Tool | undefined>;
37
41
  /** Registered static resources keyed by URI. */
38
42
  getResources(): Map<string, Resource>;
39
43
  /** Registered resource templates keyed by URI template. */
@@ -54,6 +58,8 @@ export interface ProtocolRegistry {
54
58
  toolName?: string;
55
59
  extra?: Partial<ExecutionContext>;
56
60
  }): ExecutionContext;
61
+ /** True when a VisibilityTransform is in the pipeline. */
62
+ hasSessionVisibility(): boolean;
57
63
  }
58
64
  /**
59
65
  * Options passed to a protocol adapter when it starts a transport.
@@ -84,7 +90,7 @@ export interface ProtocolAdapter {
84
90
  */
85
91
  serveStdio(): Promise<void>;
86
92
  /** Publish a tools/list changed event on the modern notify bus. */
87
- notifyToolsListChanged(): void;
93
+ notifyToolsListChanged(sessionId?: string): void;
88
94
  /** Publish a resources/list changed event on the modern notify bus. */
89
95
  notifyResourcesListChanged(): void;
90
96
  /** Publish a prompts/list changed event on the modern notify bus. */
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,gDAAgD;IAChD,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,2DAA2D;IAC3D,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD,oEAAoE;IACpE,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,wCAAwC;IACxC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,+BAA+B;IAC/B,cAAc,IAAI,WAAW,CAAC;IAC9B;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,CAAC,EAAE;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACnC,GAAG,gBAAgB,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3E;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,mEAAmE;IACnE,sBAAsB,IAAI,IAAI,CAAC;IAC/B,uEAAuE;IACvE,0BAA0B,IAAI,IAAI,CAAC;IACnC,qEAAqE;IACrE,wBAAwB,IAAI,IAAI,CAAC;IACjC,qFAAqF;IACrF,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzC,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC;AACvC,OAAO,KAAK,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExF;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,qBAAqB;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,sCAAsC;IACtC,QAAQ,IAAI,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IAC9B,kDAAkD;IAClD,mBAAmB,CAAC,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;IAC5E,qEAAqE;IACrE,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC;IACjF,gDAAgD;IAChD,YAAY,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACtC,2DAA2D;IAC3D,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IACtD,oEAAoE;IACpE,oBAAoB,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAC9C,wCAAwC;IACxC,UAAU,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,+BAA+B;IAC/B,cAAc,IAAI,WAAW,CAAC;IAC9B;;;;OAIG;IACH,sBAAsB,CAAC,OAAO,CAAC,EAAE;QAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QACrC,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;KACnC,GAAG,gBAAgB,CAAC;IACrB,0DAA0D;IAC1D,oBAAoB,IAAI,OAAO,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,mCAAmC;IACnC,QAAQ,CAAC,GAAG,EAAE,QAAQ,CAAC;IAEvB;;;;OAIG;IACH,UAAU,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE3E;;;OAGG;IACH,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5B,mEAAmE;IACnE,sBAAsB,CAAC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjD,uEAAuE;IACvE,0BAA0B,IAAI,IAAI,CAAC;IACnC,qEAAqE;IACrE,wBAAwB,IAAI,IAAI,CAAC;IACjC,qFAAqF;IACrF,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAEzC,gDAAgD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -35,14 +35,74 @@ export declare class ModernProtocolAdapter implements ProtocolAdapter {
35
35
  readonly era: "modern";
36
36
  private handler?;
37
37
  private stdioHandle?;
38
+ /** Process-local session for the single stdio peer. Not taken from a client header. */
39
+ private stdioSessionId?;
40
+ /** Tool registrations on the pinned stdio server, kept to resync after visibility changes. */
41
+ private stdioCatalog?;
42
+ private stdioResync;
38
43
  private serverSdkPromise?;
39
44
  private readonly taskManager?;
45
+ /**
46
+ * HTTP session ids minted by this process. Client-supplied ids are not members.
47
+ * The first verified subject to use an id owns it.
48
+ */
49
+ private readonly issuedSessions;
50
+ /** Method the HTTP gate already classified for this request. The SDK consumes the body before the factory runs. */
51
+ private readonly gatedMethods;
52
+ private static readonly ISSUED_SESSION_TTL_MS;
53
+ private static readonly MAX_ISSUED_SESSIONS;
54
+ private lastSessionCapWarning;
40
55
  constructor(registry: ProtocolRegistry, options?: ModernProtocolAdapterOptions);
41
56
  private loadServerSdk;
42
57
  private buildServer;
58
+ /**
59
+ * Session and auth from the per-request factory context.
60
+ * `createMcpHandler` supplies `requestInfo` (the HTTP request) and optional `authInfo`.
61
+ */
62
+ private contextFromFactory;
63
+ private visibilityRequiresSession;
64
+ /** Methods that proceed without a server-issued session. */
65
+ private isSessionFreeMethod;
66
+ /**
67
+ * Remember a session id this process minted.
68
+ * Tests use this to present the same id a successful `initialize` would return.
69
+ * An id the client invented is not accepted by {@link httpSessionOrThrow}.
70
+ */
71
+ issueSession(id?: string): string;
72
+ /** True when `id` is unexpired and was minted here. Refreshes its idle timer. */
73
+ private touchIssuedSession;
74
+ /** Drops the least recently active unclaimed session, or the least recently active one if all are claimed. */
75
+ private evictIssuedSession;
76
+ private sweepIssuedSessions;
77
+ /**
78
+ * When visibility is installed, an HTTP session id must be one `issueSession` recorded.
79
+ * A missing or unknown id throws. Stdio does not call this.
80
+ */
81
+ private httpSessionOrThrow;
82
+ /**
83
+ * The first verified subject to present a minted id owns it.
84
+ * A later call with a different subject, or with no subject, is rejected.
85
+ * An id that has only been used anonymously stays anonymous until a subject claims it.
86
+ */
87
+ private bindIssuedSubject;
88
+ private verifiedSubject;
89
+ /**
90
+ * One context for tools/list, tools/call, and resources/read.
91
+ * `authInfo` is the verified SDK principal. Metadata may still carry a raw
92
+ * bearer token; `createExecutionContext` does not use that token as the
93
+ * isolation subject.
94
+ */
95
+ private executionContextFromRequest;
43
96
  /** Server-level per-operation cache hints for list/discover results. */
44
97
  private buildServerCacheHints;
45
98
  private registerTools;
99
+ /**
100
+ * The stdio SDK pins one server per connection, so its catalog is built once.
101
+ * Re-run the pipeline for the peer session and add or remove registrations to
102
+ * match. Each change makes the SDK send `notifications/tools/list_changed`.
103
+ */
104
+ private resyncStdioTools;
105
+ private registerOneTool;
46
106
  private registerResources;
47
107
  private registerPrompts;
48
108
  private runTool;
@@ -69,17 +129,50 @@ export declare class ModernProtocolAdapter implements ProtocolAdapter {
69
129
  * handler so a single notify bus backs `subscriptions/listen`.
70
130
  */
71
131
  getHttpHandler(): Promise<AnyRecord>;
132
+ private sessionRequiredResponse;
133
+ /**
134
+ * Session gate for the modern HTTP fetch path.
135
+ * `initialize`, `ping`, and `server/discover` proceed without a session.
136
+ * `tools/list`, `tools/call`, and `resources/read` need an id this process minted.
137
+ * A POST whose method cannot be read fails closed.
138
+ */
139
+ private visibilityHttpGate;
140
+ /** Stamp a freshly minted session id onto a successful initialize response. */
141
+ private attachIssuedSession;
142
+ /**
143
+ * Read a finite JSON body, or the first SSE frame.
144
+ * A legacy initialize answer is a stream that stays open after the handshake.
145
+ */
146
+ private readResponseText;
147
+ /** First JSON-RPC message from a JSON body or an SSE `data:` frame. */
148
+ private extractRpcMessage;
149
+ /** Raw mcp-session-id from a Web Request or an Express request. Not an isolation key. */
150
+ private requestSessionId;
151
+ /**
152
+ * Principal attached by the host or the SDK.
153
+ * `auth` on the request body and `_meta` are not verified and are ignored.
154
+ */
155
+ private trustedAuthInfo;
156
+ /** SDK authInfo when the host attached it. A bearer header is not verified here. */
157
+ private requestAuthInfo;
72
158
  private extractAccessContext;
159
+ /**
160
+ * tasks/get, tasks/cancel, and tasks/update carry tool results. When visibility
161
+ * is on they need the same minted session as tools/call. params.sessionId is
162
+ * not a credential.
163
+ */
164
+ private taskAccessForRequest;
73
165
  private handleTaskPreDispatch;
74
166
  createNodeHandler(): Promise<(req: ExpressRequest, res: ExpressResponse) => void>;
75
167
  attachHttp(app: Express, options: ProtocolTransportOptions): Promise<void>;
76
168
  /**
77
169
  * SEP-2243/SEP-2575 CORS: expose and allow the new required request headers
78
- * (`MCP-Protocol-Version`, `Mcp-Method`, `Mcp-Name`, and `Mcp-Param-*`).
170
+ * (`MCP-Protocol-Version`, `Mcp-Method`, `Mcp-Name`, `Mcp-Param-*`, and
171
+ * `Mcp-Session-Id`). Session visibility and spillover both read that header.
79
172
  */
80
173
  private applyCorsHeaders;
81
174
  serveStdio(): Promise<void>;
82
- notifyToolsListChanged(): void;
175
+ notifyToolsListChanged(sessionId?: string): void;
83
176
  notifyResourcesListChanged(): void;
84
177
  notifyPromptsListChanged(): void;
85
178
  notifyResourceUpdated(uri: string): void;
@@ -1 +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"}
1
+ {"version":3,"file":"modern-v2.adapter.d.ts","sourceRoot":"","sources":["../../../src/core/protocol/modern-v2.adapter.ts"],"names":[],"mappings":"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"}