@nitrostack/core 1.0.0 → 1.0.2

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 (54) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +74 -40
  3. package/dist/auth/quick-setup.js +12 -12
  4. package/dist/auth/quick-setup.js.map +1 -1
  5. package/dist/core/app-decorator.d.ts.map +1 -1
  6. package/dist/core/app-decorator.js +19 -2
  7. package/dist/core/app-decorator.js.map +1 -1
  8. package/dist/core/builders.d.ts.map +1 -1
  9. package/dist/core/builders.js +24 -1
  10. package/dist/core/builders.js.map +1 -1
  11. package/dist/core/decorators/cache.decorator.d.ts.map +1 -1
  12. package/dist/core/decorators/cache.decorator.js +13 -2
  13. package/dist/core/decorators/cache.decorator.js.map +1 -1
  14. package/dist/core/decorators.d.ts +35 -1
  15. package/dist/core/decorators.d.ts.map +1 -1
  16. package/dist/core/decorators.js.map +1 -1
  17. package/dist/core/events/event.decorator.d.ts.map +1 -1
  18. package/dist/core/events/event.decorator.js +1 -3
  19. package/dist/core/events/event.decorator.js.map +1 -1
  20. package/dist/core/index.d.ts +21 -4
  21. package/dist/core/index.d.ts.map +1 -1
  22. package/dist/core/index.js +19 -1
  23. package/dist/core/index.js.map +1 -1
  24. package/dist/core/oauth-module.d.ts +35 -0
  25. package/dist/core/oauth-module.d.ts.map +1 -1
  26. package/dist/core/oauth-module.js +81 -11
  27. package/dist/core/oauth-module.js.map +1 -1
  28. package/dist/core/prompt.d.ts +7 -2
  29. package/dist/core/prompt.d.ts.map +1 -1
  30. package/dist/core/prompt.js +11 -2
  31. package/dist/core/prompt.js.map +1 -1
  32. package/dist/core/resource.d.ts +83 -12
  33. package/dist/core/resource.d.ts.map +1 -1
  34. package/dist/core/resource.js +131 -20
  35. package/dist/core/resource.js.map +1 -1
  36. package/dist/core/server.d.ts +48 -1
  37. package/dist/core/server.d.ts.map +1 -1
  38. package/dist/core/server.js +411 -11
  39. package/dist/core/server.js.map +1 -1
  40. package/dist/core/task.d.ts +280 -0
  41. package/dist/core/task.d.ts.map +1 -0
  42. package/dist/core/task.js +414 -0
  43. package/dist/core/task.js.map +1 -0
  44. package/dist/core/tool.d.ts +36 -1
  45. package/dist/core/tool.d.ts.map +1 -1
  46. package/dist/core/tool.js +71 -24
  47. package/dist/core/tool.js.map +1 -1
  48. package/dist/core/transports/discovery-http-server.d.ts +16 -2
  49. package/dist/core/transports/discovery-http-server.d.ts.map +1 -1
  50. package/dist/core/transports/discovery-http-server.js +75 -7
  51. package/dist/core/transports/discovery-http-server.js.map +1 -1
  52. package/dist/core/types.d.ts +137 -0
  53. package/dist/core/types.d.ts.map +1 -1
  54. package/package.json +5 -5
@@ -3,7 +3,8 @@
3
3
  */
4
4
  export class Resource {
5
5
  definition;
6
- cache;
6
+ caches = new Map();
7
+ subscribers = new Set();
7
8
  constructor(definition) {
8
9
  this.definition = definition;
9
10
  }
@@ -19,6 +20,12 @@ export class Resource {
19
20
  get name() {
20
21
  return this.definition.name;
21
22
  }
23
+ /**
24
+ * Get resource title (display name)
25
+ */
26
+ get title() {
27
+ return this.definition.title;
28
+ }
22
29
  /**
23
30
  * Get resource description
24
31
  */
@@ -31,54 +38,152 @@ export class Resource {
31
38
  get mimeType() {
32
39
  return this.definition.mimeType;
33
40
  }
41
+ /**
42
+ * Get resource size in bytes
43
+ */
44
+ get size() {
45
+ return this.definition.size;
46
+ }
47
+ /**
48
+ * Get resource annotations
49
+ */
50
+ get annotations() {
51
+ return this.definition.annotations;
52
+ }
53
+ /**
54
+ * Add a subscriber to this resource
55
+ */
56
+ subscribe(subscriberId) {
57
+ this.subscribers.add(subscriberId);
58
+ }
59
+ /**
60
+ * Remove a subscriber from this resource
61
+ */
62
+ unsubscribe(subscriberId) {
63
+ this.subscribers.delete(subscriberId);
64
+ }
65
+ /**
66
+ * Get all subscriber IDs
67
+ */
68
+ getSubscribers() {
69
+ return Array.from(this.subscribers);
70
+ }
71
+ /**
72
+ * Check if there are any subscribers
73
+ */
74
+ hasSubscribers() {
75
+ return this.subscribers.size > 0;
76
+ }
34
77
  /**
35
78
  * Fetch the resource content
79
+ * @param context - Execution context
80
+ * @param uri - Optional specific URI to fetch (defaults to resource.uri)
36
81
  */
37
- async fetch(context) {
82
+ async fetch(context, uri) {
83
+ const targetUri = uri || this.uri;
38
84
  const cacheable = this.definition.metadata?.cacheable;
39
85
  const cacheMaxAge = this.definition.metadata?.cacheMaxAge || 60000; // 1 minute default
40
- // Check cache
41
- if (cacheable && this.cache) {
42
- const age = Date.now() - this.cache.timestamp;
86
+ // Check cache for this specific URI
87
+ const existingCache = this.caches.get(targetUri);
88
+ if (cacheable && existingCache) {
89
+ const age = Date.now() - existingCache.timestamp;
43
90
  if (age < cacheMaxAge) {
44
- context.logger.debug(`Serving cached resource: ${this.uri}`);
45
- return this.cache.content;
91
+ context.logger.debug(`Serving cached resource: ${targetUri}`);
92
+ return existingCache.content;
46
93
  }
47
94
  }
48
- context.logger.info(`Fetching resource: ${this.uri}`);
95
+ context.logger.info(`Fetching resource: ${targetUri}`);
49
96
  try {
50
- const content = await this.definition.handler(this.uri, context);
51
- // Update cache
97
+ const content = await this.definition.handler(targetUri, context);
98
+ // Update cache for this specific URI
52
99
  if (cacheable) {
53
- this.cache = {
100
+ this.caches.set(targetUri, {
54
101
  content,
55
102
  timestamp: Date.now(),
56
- };
103
+ });
57
104
  }
58
- context.logger.info(`Resource fetched successfully: ${this.uri}`);
105
+ context.logger.info(`Resource fetched successfully: ${targetUri}`);
59
106
  return content;
60
107
  }
61
108
  catch (error) {
62
- context.logger.error(`Error fetching resource: ${this.uri}`, { error: error instanceof Error ? error.message : String(error) });
109
+ context.logger.error(`Error fetching resource: ${targetUri}`, { error: error instanceof Error ? error.message : String(error) });
63
110
  throw error;
64
111
  }
65
112
  }
66
113
  /**
67
- * Clear cached content
114
+ * Clear cached content for all URIs or a specific one
68
115
  */
69
- clearCache() {
70
- this.cache = undefined;
116
+ clearCache(uri) {
117
+ if (uri) {
118
+ this.caches.delete(uri);
119
+ }
120
+ else {
121
+ this.caches.clear();
122
+ }
71
123
  }
72
124
  /**
73
- * MCP Resource metadata structure
125
+ * MCP Resource metadata structure (full spec compliance)
74
126
  */
75
127
  toMcpResource() {
76
- return {
128
+ const resource = {
77
129
  uri: this.uri,
78
130
  name: this.name,
79
131
  description: this.description,
80
- mimeType: this.mimeType,
81
132
  };
133
+ if (this.title)
134
+ resource.title = this.title;
135
+ if (this.mimeType)
136
+ resource.mimeType = this.mimeType;
137
+ if (this.size !== undefined)
138
+ resource.size = this.size;
139
+ if (this.annotations)
140
+ resource.annotations = this.annotations;
141
+ return resource;
142
+ }
143
+ }
144
+ /**
145
+ * Resource Template class for parameterized resources (RFC 6570)
146
+ */
147
+ export class ResourceTemplate {
148
+ definition;
149
+ constructor(definition) {
150
+ this.definition = definition;
151
+ }
152
+ get uriTemplate() {
153
+ return this.definition.uriTemplate;
154
+ }
155
+ get name() {
156
+ return this.definition.name;
157
+ }
158
+ get title() {
159
+ return this.definition.title;
160
+ }
161
+ get description() {
162
+ return this.definition.description;
163
+ }
164
+ get mimeType() {
165
+ return this.definition.mimeType;
166
+ }
167
+ get annotations() {
168
+ return this.definition.annotations;
169
+ }
170
+ /**
171
+ * Convert to MCP protocol format
172
+ */
173
+ toMcpResourceTemplate() {
174
+ const template = {
175
+ uriTemplate: this.uriTemplate,
176
+ name: this.name,
177
+ };
178
+ if (this.title)
179
+ template.title = this.title;
180
+ if (this.description)
181
+ template.description = this.description;
182
+ if (this.mimeType)
183
+ template.mimeType = this.mimeType;
184
+ if (this.annotations)
185
+ template.annotations = this.annotations;
186
+ return template;
82
187
  }
83
188
  }
84
189
  /**
@@ -87,4 +192,10 @@ export class Resource {
87
192
  export function createResource(definition) {
88
193
  return new Resource(definition);
89
194
  }
195
+ /**
196
+ * Helper function to create a resource template
197
+ */
198
+ export function createResourceTemplate(definition) {
199
+ return new ResourceTemplate(definition);
200
+ }
90
201
  //# sourceMappingURL=resource.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,OAAO,QAAQ;IACX,UAAU,CAAqB;IAC/B,KAAK,CAGX;IAEF,YAAY,UAA8B;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;IAC/B,CAAC;IAED;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;IAC7B,CAAC;IAED;;OAEG;IACH,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,KAAK,CAAC,OAAyB;QACnC,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC;QACtD,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,WAAW,IAAI,KAAK,CAAC,CAAC,mBAAmB;QAEvF,cAAc;QACd,IAAI,SAAS,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC5B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC;YAC9C,IAAI,GAAG,GAAG,WAAW,EAAE,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;gBAC7D,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;YAC5B,CAAC;QACH,CAAC;QAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;QAEtD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAEjE,eAAe;YACf,IAAI,SAAS,EAAE,CAAC;gBACd,IAAI,CAAC,KAAK,GAAG;oBACX,OAAO;oBACP,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;iBACtB,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;YAClE,OAAO,OAAO,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAChI,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;IACJ,CAAC;CACF;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,UAA8B;IAC3D,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../src/core/resource.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { Tool } from './tool.js';
2
- import { Resource } from './resource.js';
2
+ import { Resource, ResourceTemplate } from './resource.js';
3
3
  import { Prompt } from './prompt.js';
4
4
  import { McpServerConfig, ServerStats, ClassConstructor } from './types.js';
5
+ import { TaskManager } from './task.js';
5
6
  /**
6
7
  * HTTP Transport interface
7
8
  */
@@ -46,6 +47,8 @@ export declare class NitroStackServer {
46
47
  private mcpServer;
47
48
  private tools;
48
49
  private resources;
50
+ private resourceTemplates;
51
+ private templateResources;
49
52
  private prompts;
50
53
  private modules;
51
54
  private config;
@@ -56,6 +59,8 @@ export declare class NitroStackServer {
56
59
  private _transportType?;
57
60
  /** HTTP transport instance (when using http or dual mode) */
58
61
  private _httpTransport?;
62
+ /** Task manager for MCP Tasks support */
63
+ private taskManager;
59
64
  constructor(config?: McpServerConfig);
60
65
  /**
61
66
  * Add a tool to the server
@@ -73,6 +78,26 @@ export declare class NitroStackServer {
73
78
  * Add a prompt to the server
74
79
  */
75
80
  prompt(prompt: Prompt): this;
81
+ /**
82
+ * Add a resource template to the server
83
+ */
84
+ resourceTemplate(template: ResourceTemplate): this;
85
+ /**
86
+ * Notify clients that the list of resources has changed
87
+ */
88
+ notifyResourcesListChanged(): void;
89
+ /**
90
+ * Notify clients that the list of prompts has changed
91
+ */
92
+ notifyPromptsListChanged(): void;
93
+ /**
94
+ * Notify clients that the list of tools has changed
95
+ */
96
+ notifyToolsListChanged(): void;
97
+ /**
98
+ * Notify subscribers that a resource has been updated
99
+ */
100
+ notifyResourceUpdated(uri: string): void;
76
101
  /**
77
102
  * Register a module with all its controllers
78
103
  * Automatically extracts and registers all tools, resources, and prompts
@@ -112,6 +137,28 @@ export declare class NitroStackServer {
112
137
  * @param transportOptions - Transport-specific options
113
138
  */
114
139
  private startWithTransport;
140
+ /**
141
+ * Execute a tool asynchronously as a task.
142
+ * Called from the tools/call handler when task-augmented.
143
+ * Updates task status and stores the result for tasks/result.
144
+ */
145
+ private runTaskAsync;
146
+ /**
147
+ * Register a custom JSON-RPC handler for task-related methods.
148
+ * The MCP SDK's setRequestHandler only works with pre-defined schemas,
149
+ * so we hook into the transport-level message handling.
150
+ */
151
+ private registerCustomHandler;
152
+ /** Custom JSON-RPC handlers (for task methods not covered by MCP SDK schemas) */
153
+ private _customHandlers;
154
+ /**
155
+ * Send a notifications/tasks/status notification to the client.
156
+ */
157
+ private sendTaskStatusNotification;
158
+ /**
159
+ * Get the TaskManager instance (useful for advanced use cases)
160
+ */
161
+ getTaskManager(): TaskManager;
115
162
  /**
116
163
  * Stop the server
117
164
  */
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/core/server.ts"],"names":[],"mappings":"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"}