@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.
- package/LICENSE +1 -1
- package/README.md +74 -40
- package/dist/auth/quick-setup.js +12 -12
- package/dist/auth/quick-setup.js.map +1 -1
- package/dist/core/app-decorator.d.ts.map +1 -1
- package/dist/core/app-decorator.js +19 -2
- package/dist/core/app-decorator.js.map +1 -1
- package/dist/core/builders.d.ts.map +1 -1
- package/dist/core/builders.js +24 -1
- package/dist/core/builders.js.map +1 -1
- package/dist/core/decorators/cache.decorator.d.ts.map +1 -1
- package/dist/core/decorators/cache.decorator.js +13 -2
- package/dist/core/decorators/cache.decorator.js.map +1 -1
- package/dist/core/decorators.d.ts +35 -1
- package/dist/core/decorators.d.ts.map +1 -1
- package/dist/core/decorators.js.map +1 -1
- package/dist/core/events/event.decorator.d.ts.map +1 -1
- package/dist/core/events/event.decorator.js +1 -3
- package/dist/core/events/event.decorator.js.map +1 -1
- package/dist/core/index.d.ts +21 -4
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +19 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/oauth-module.d.ts +35 -0
- package/dist/core/oauth-module.d.ts.map +1 -1
- package/dist/core/oauth-module.js +81 -11
- package/dist/core/oauth-module.js.map +1 -1
- package/dist/core/prompt.d.ts +7 -2
- package/dist/core/prompt.d.ts.map +1 -1
- package/dist/core/prompt.js +11 -2
- package/dist/core/prompt.js.map +1 -1
- package/dist/core/resource.d.ts +83 -12
- package/dist/core/resource.d.ts.map +1 -1
- package/dist/core/resource.js +131 -20
- package/dist/core/resource.js.map +1 -1
- package/dist/core/server.d.ts +48 -1
- package/dist/core/server.d.ts.map +1 -1
- package/dist/core/server.js +411 -11
- package/dist/core/server.js.map +1 -1
- package/dist/core/task.d.ts +280 -0
- package/dist/core/task.d.ts.map +1 -0
- package/dist/core/task.js +414 -0
- package/dist/core/task.js.map +1 -0
- package/dist/core/tool.d.ts +36 -1
- package/dist/core/tool.d.ts.map +1 -1
- package/dist/core/tool.js +71 -24
- package/dist/core/tool.js.map +1 -1
- package/dist/core/transports/discovery-http-server.d.ts +16 -2
- package/dist/core/transports/discovery-http-server.d.ts.map +1 -1
- package/dist/core/transports/discovery-http-server.js +75 -7
- package/dist/core/transports/discovery-http-server.js.map +1 -1
- package/dist/core/types.d.ts +137 -0
- package/dist/core/types.d.ts.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task.js","sourceRoot":"","sources":["../../src/core/task.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tool.d.ts
CHANGED
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Tool as McpTool } from '@modelcontextprotocol/sdk/types.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
3
|
import { Component } from './component.js';
|
|
4
|
-
import { ExecutionContext, JsonValue } from './types.js';
|
|
4
|
+
import { ExecutionContext, JsonValue, ToolAnnotations } from './types.js';
|
|
5
5
|
import { GuardConstructor } from './guards/guard.interface.js';
|
|
6
6
|
import { MiddlewareConstructor } from './middleware/middleware.interface.js';
|
|
7
7
|
import { InterceptorConstructor } from './interceptors/interceptor.interface.js';
|
|
8
8
|
import { PipeConstructor } from './pipes/pipe.interface.js';
|
|
9
9
|
import { ExceptionFilterConstructor } from './filters/exception-filter.interface.js';
|
|
10
|
+
import type { TaskSupportLevel } from './task.js';
|
|
10
11
|
/**
|
|
11
12
|
* JSON Schema representation for tool input
|
|
12
13
|
*/
|
|
@@ -36,10 +37,27 @@ export interface ToolExamples {
|
|
|
36
37
|
request?: JsonValue;
|
|
37
38
|
response?: JsonValue;
|
|
38
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Tool invocation status messages (OpenAI Apps SDK)
|
|
42
|
+
*/
|
|
43
|
+
export interface ToolInvocation {
|
|
44
|
+
/** Message shown while tool is executing */
|
|
45
|
+
invoking?: string;
|
|
46
|
+
/** Message shown after tool completes */
|
|
47
|
+
invoked?: string;
|
|
48
|
+
}
|
|
39
49
|
export interface ToolOptions<TInput = unknown, TOutput = unknown> {
|
|
40
50
|
name: string;
|
|
51
|
+
/** Optional human-readable title for display */
|
|
52
|
+
title?: string;
|
|
41
53
|
description: string;
|
|
42
54
|
inputSchema: ToolInputSchema;
|
|
55
|
+
/** Optional JSON Schema for validating tool output */
|
|
56
|
+
outputSchema?: ToolInputSchema;
|
|
57
|
+
/** Optional annotations describing tool behavior */
|
|
58
|
+
annotations?: ToolAnnotations;
|
|
59
|
+
/** Optional invocation status messages for UI feedback */
|
|
60
|
+
invocation?: ToolInvocation;
|
|
43
61
|
handler: ToolHandler<TInput, TOutput>;
|
|
44
62
|
guards?: GuardConstructor[];
|
|
45
63
|
middlewares?: MiddlewareConstructor[];
|
|
@@ -52,17 +70,30 @@ export interface ToolOptions<TInput = unknown, TOutput = unknown> {
|
|
|
52
70
|
};
|
|
53
71
|
outputTemplate?: string;
|
|
54
72
|
isInitial?: boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Task support level for this tool.
|
|
75
|
+
* - 'forbidden' (default): Tool cannot be invoked as a task
|
|
76
|
+
* - 'optional': Tool can be invoked normally or as a task
|
|
77
|
+
* - 'required': Tool MUST be invoked as a task
|
|
78
|
+
*/
|
|
79
|
+
taskSupport?: TaskSupportLevel;
|
|
55
80
|
}
|
|
56
81
|
export declare class Tool<TInput = unknown, TOutput = unknown> {
|
|
57
82
|
name: string;
|
|
83
|
+
title?: string;
|
|
58
84
|
description: string;
|
|
59
85
|
inputSchema: ToolInputSchema;
|
|
86
|
+
outputSchema?: ToolInputSchema;
|
|
87
|
+
annotations?: ToolAnnotations;
|
|
88
|
+
invocation?: ToolInvocation;
|
|
60
89
|
examples?: ToolExamples;
|
|
61
90
|
widget?: {
|
|
62
91
|
route: string;
|
|
63
92
|
};
|
|
64
93
|
outputTemplate?: string;
|
|
65
94
|
isInitial?: boolean;
|
|
95
|
+
/** Task support level for this tool */
|
|
96
|
+
taskSupport: TaskSupportLevel;
|
|
66
97
|
private handler;
|
|
67
98
|
private guards;
|
|
68
99
|
private middlewares;
|
|
@@ -100,6 +131,10 @@ export declare class Tool<TInput = unknown, TOutput = unknown> {
|
|
|
100
131
|
* Check if schema is a Zod schema
|
|
101
132
|
*/
|
|
102
133
|
private isZodSchema;
|
|
134
|
+
/**
|
|
135
|
+
* Convert schema to JSON Schema format
|
|
136
|
+
*/
|
|
137
|
+
private convertToJsonSchema;
|
|
103
138
|
/**
|
|
104
139
|
* Convert to MCP tool format
|
|
105
140
|
*/
|
package/dist/core/tool.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"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"}
|
package/dist/core/tool.js
CHANGED
|
@@ -1,12 +1,18 @@
|
|
|
1
1
|
import { DIContainer } from './di/container.js';
|
|
2
2
|
export class Tool {
|
|
3
3
|
name;
|
|
4
|
+
title;
|
|
4
5
|
description;
|
|
5
6
|
inputSchema;
|
|
7
|
+
outputSchema;
|
|
8
|
+
annotations;
|
|
9
|
+
invocation;
|
|
6
10
|
examples;
|
|
7
11
|
widget;
|
|
8
12
|
outputTemplate;
|
|
9
13
|
isInitial;
|
|
14
|
+
/** Task support level for this tool */
|
|
15
|
+
taskSupport;
|
|
10
16
|
handler;
|
|
11
17
|
guards;
|
|
12
18
|
middlewares;
|
|
@@ -16,8 +22,12 @@ export class Tool {
|
|
|
16
22
|
component;
|
|
17
23
|
constructor(options) {
|
|
18
24
|
this.name = options.name;
|
|
25
|
+
this.title = options.title;
|
|
19
26
|
this.description = options.description;
|
|
20
27
|
this.inputSchema = options.inputSchema;
|
|
28
|
+
this.outputSchema = options.outputSchema;
|
|
29
|
+
this.annotations = options.annotations;
|
|
30
|
+
this.invocation = options.invocation;
|
|
21
31
|
this.handler = options.handler;
|
|
22
32
|
this.guards = options.guards || [];
|
|
23
33
|
this.middlewares = options.middlewares || [];
|
|
@@ -28,6 +38,7 @@ export class Tool {
|
|
|
28
38
|
this.widget = options.widget;
|
|
29
39
|
this.outputTemplate = options.outputTemplate;
|
|
30
40
|
this.isInitial = options.isInitial;
|
|
41
|
+
this.taskSupport = options.taskSupport ?? 'forbidden';
|
|
31
42
|
}
|
|
32
43
|
/**
|
|
33
44
|
* Execute the tool with full pipeline:
|
|
@@ -138,42 +149,41 @@ export class Tool {
|
|
|
138
149
|
return schema && typeof schema === 'object' && '_def' in schema;
|
|
139
150
|
}
|
|
140
151
|
/**
|
|
141
|
-
* Convert to
|
|
152
|
+
* Convert schema to JSON Schema format
|
|
142
153
|
*/
|
|
143
|
-
async
|
|
144
|
-
|
|
145
|
-
let jsonSchema = this.inputSchema;
|
|
146
|
-
// If it's a Zod schema, convert it
|
|
147
|
-
if (this.isZodSchema(this.inputSchema)) {
|
|
148
|
-
// It's a Zod schema, need to convert to JSON Schema
|
|
154
|
+
async convertToJsonSchema(schema) {
|
|
155
|
+
if (this.isZodSchema(schema)) {
|
|
149
156
|
try {
|
|
150
|
-
// Dynamic import for ES modules
|
|
151
157
|
const zodToJsonSchemaModule = await import('zod-to-json-schema');
|
|
152
158
|
const zodToJsonSchema = zodToJsonSchemaModule.zodToJsonSchema || zodToJsonSchemaModule.default;
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
$refStrategy: 'none', // Don't use $refs, inline everything
|
|
159
|
+
return zodToJsonSchema(schema, {
|
|
160
|
+
$refStrategy: 'none',
|
|
156
161
|
target: 'jsonSchema7',
|
|
157
162
|
});
|
|
158
|
-
jsonSchema = converted;
|
|
159
163
|
}
|
|
160
164
|
catch (error) {
|
|
161
|
-
// Error converting - use stderr to avoid corrupting MCP protocol
|
|
162
165
|
console.error('Error converting Zod schema:', error);
|
|
163
|
-
|
|
164
|
-
jsonSchema = {
|
|
165
|
-
type: 'object',
|
|
166
|
-
properties: {},
|
|
167
|
-
additionalProperties: true,
|
|
168
|
-
};
|
|
166
|
+
return { type: 'object', properties: {}, additionalProperties: true };
|
|
169
167
|
}
|
|
170
168
|
}
|
|
169
|
+
return schema;
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Convert to MCP tool format
|
|
173
|
+
*/
|
|
174
|
+
async toMcpTool() {
|
|
175
|
+
// Convert input schema
|
|
176
|
+
let jsonSchema = await this.convertToJsonSchema(this.inputSchema);
|
|
171
177
|
// Ensure type is set to "object" if not present
|
|
172
178
|
if (!jsonSchema.type) {
|
|
173
|
-
jsonSchema = {
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
jsonSchema = { ...jsonSchema, type: 'object' };
|
|
180
|
+
}
|
|
181
|
+
// Convert output schema if present and ensure type: "object"
|
|
182
|
+
let outputJsonSchema;
|
|
183
|
+
if (this.outputSchema) {
|
|
184
|
+
const converted = await this.convertToJsonSchema(this.outputSchema);
|
|
185
|
+
const { type: outputType, ...outputRest } = converted;
|
|
186
|
+
outputJsonSchema = { ...outputRest, type: 'object' };
|
|
177
187
|
}
|
|
178
188
|
// Construct the final schema, ensuring type is "object"
|
|
179
189
|
const { type: schemaType, ...restSchema } = jsonSchema;
|
|
@@ -186,6 +196,20 @@ export class Tool {
|
|
|
186
196
|
description: this.description,
|
|
187
197
|
inputSchema: finalSchema,
|
|
188
198
|
};
|
|
199
|
+
// Add optional fields per MCP spec
|
|
200
|
+
if (this.title) {
|
|
201
|
+
mcpTool.title = this.title;
|
|
202
|
+
}
|
|
203
|
+
if (outputJsonSchema) {
|
|
204
|
+
mcpTool.outputSchema = outputJsonSchema;
|
|
205
|
+
}
|
|
206
|
+
if (this.annotations) {
|
|
207
|
+
mcpTool.annotations = this.annotations;
|
|
208
|
+
}
|
|
209
|
+
// Add task support level (MCP Tasks spec)
|
|
210
|
+
if (this.taskSupport && this.taskSupport !== 'forbidden') {
|
|
211
|
+
mcpTool.execution = { taskSupport: this.taskSupport };
|
|
212
|
+
}
|
|
189
213
|
// Initialize _meta if needed
|
|
190
214
|
mcpTool._meta = mcpTool._meta || {};
|
|
191
215
|
// Initial tool flag
|
|
@@ -208,13 +232,22 @@ export class Tool {
|
|
|
208
232
|
if (this.outputTemplate) {
|
|
209
233
|
mcpTool.outputTemplate = this.outputTemplate;
|
|
210
234
|
}
|
|
211
|
-
// CRITICAL:
|
|
235
|
+
// CRITICAL: Store widget info in _meta to ensure it's preserved
|
|
212
236
|
// through MCP serialization/deserialization. The studio checks _meta
|
|
213
237
|
// fields, and custom top-level fields may be stripped by the MCP SDK.
|
|
238
|
+
//
|
|
239
|
+
// We support multiple formats for compatibility:
|
|
240
|
+
// - MCP Apps spec: _meta.ui = { resourceUri: '...' }
|
|
241
|
+
// - OpenAI Apps SDK: _meta['openai/outputTemplate'] = '...'
|
|
242
|
+
// - Generic: _meta['ui/template'] = '...'
|
|
214
243
|
// 1. Check if we have an attached component (preferred)
|
|
215
244
|
if (this.component) {
|
|
216
245
|
const resourceUri = this.component.getResourceUri();
|
|
246
|
+
// Generic format
|
|
217
247
|
mcpTool._meta['ui/template'] = resourceUri;
|
|
248
|
+
// MCP Apps spec format (object)
|
|
249
|
+
mcpTool._meta['ui'] = { resourceUri };
|
|
250
|
+
// OpenAI Apps SDK format
|
|
218
251
|
mcpTool._meta['openai/outputTemplate'] = resourceUri;
|
|
219
252
|
// Add other component metadata
|
|
220
253
|
const componentMeta = this.component.getResourceMetadata();
|
|
@@ -224,6 +257,10 @@ export class Tool {
|
|
|
224
257
|
if (widgetDesc !== undefined) {
|
|
225
258
|
mcpTool._meta['openai/widgetDescription'] = widgetDesc;
|
|
226
259
|
}
|
|
260
|
+
const widgetBorder = componentMeta['openai/widgetPrefersBorder'];
|
|
261
|
+
if (widgetBorder !== undefined) {
|
|
262
|
+
mcpTool._meta['openai/widgetPrefersBorder'] = widgetBorder;
|
|
263
|
+
}
|
|
227
264
|
}
|
|
228
265
|
}
|
|
229
266
|
// 2. Fallback to legacy widget/outputTemplate options
|
|
@@ -232,9 +269,19 @@ export class Tool {
|
|
|
232
269
|
const widgetRoute = this.widget?.route || this.outputTemplate;
|
|
233
270
|
if (widgetRoute) {
|
|
234
271
|
mcpTool._meta['ui/template'] = widgetRoute;
|
|
272
|
+
mcpTool._meta['ui'] = { resourceUri: widgetRoute };
|
|
235
273
|
mcpTool._meta['openai/outputTemplate'] = widgetRoute;
|
|
236
274
|
}
|
|
237
275
|
}
|
|
276
|
+
// Add invocation status messages (OpenAI Apps SDK)
|
|
277
|
+
if (this.invocation) {
|
|
278
|
+
if (this.invocation.invoking) {
|
|
279
|
+
mcpTool._meta['openai/toolInvocation/invoking'] = this.invocation.invoking;
|
|
280
|
+
}
|
|
281
|
+
if (this.invocation.invoked) {
|
|
282
|
+
mcpTool._meta['openai/toolInvocation/invoked'] = this.invocation.invoked;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
238
285
|
return mcpTool;
|
|
239
286
|
}
|
|
240
287
|
}
|
package/dist/core/tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/core/tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,14 +4,28 @@ interface Logger {
|
|
|
4
4
|
warn(message: string, ...args: unknown[]): void;
|
|
5
5
|
error(message: string, ...args: unknown[]): void;
|
|
6
6
|
}
|
|
7
|
+
export interface DiscoveryServerOptions {
|
|
8
|
+
/** Preferred port to start on */
|
|
9
|
+
port?: number;
|
|
10
|
+
/** If true, try next available port if preferred port is in use */
|
|
11
|
+
autoRetry?: boolean;
|
|
12
|
+
/** Maximum number of ports to try */
|
|
13
|
+
maxRetries?: number;
|
|
14
|
+
}
|
|
7
15
|
export declare class DiscoveryHttpServer {
|
|
8
|
-
private port;
|
|
9
16
|
private logger;
|
|
10
17
|
private server;
|
|
11
18
|
private handlers;
|
|
12
|
-
|
|
19
|
+
private _actualPort;
|
|
20
|
+
private options;
|
|
21
|
+
constructor(portOrOptions: number | DiscoveryServerOptions, logger: Logger);
|
|
13
22
|
private handleRequest;
|
|
14
23
|
on(path: string, handler: http.RequestListener): void;
|
|
24
|
+
/**
|
|
25
|
+
* Get the actual port the server is running on
|
|
26
|
+
* (may differ from configured port if auto-retry found an available port)
|
|
27
|
+
*/
|
|
28
|
+
getPort(): number;
|
|
15
29
|
start(): Promise<void>;
|
|
16
30
|
stop(): Promise<void>;
|
|
17
31
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-http-server.d.ts","sourceRoot":"","sources":["../../../src/core/transports/discovery-http-server.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery-http-server.d.ts","sourceRoot":"","sources":["../../../src/core/transports/discovery-http-server.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;AAGxB,UAAU,MAAM;IACd,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAChD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,WAAW,sBAAsB;IACrC,iCAAiC;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,mEAAmE;IACnE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,qCAAqC;IACrC,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AA6BD,qBAAa,mBAAmB;IAM8B,OAAO,CAAC,MAAM;IAL1E,OAAO,CAAC,MAAM,CAAc;IAC5B,OAAO,CAAC,QAAQ,CAAgD;IAChE,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,OAAO,CAAmC;gBAEtC,aAAa,EAAE,MAAM,GAAG,sBAAsB,EAAU,MAAM,EAAE,MAAM;IAmBlF,OAAO,CAAC,aAAa;IAYd,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC,eAAe;IAKrD;;;OAGG;IACI,OAAO,IAAI,MAAM;IAIX,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC5B,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAY7B"}
|
|
@@ -1,12 +1,54 @@
|
|
|
1
1
|
import http from 'http';
|
|
2
|
+
import net from 'net';
|
|
3
|
+
/**
|
|
4
|
+
* Check if a port is available
|
|
5
|
+
*/
|
|
6
|
+
async function isPortAvailable(port) {
|
|
7
|
+
return new Promise((resolve) => {
|
|
8
|
+
const server = net.createServer();
|
|
9
|
+
server.once('error', () => resolve(false));
|
|
10
|
+
server.once('listening', () => {
|
|
11
|
+
server.close(() => resolve(true));
|
|
12
|
+
});
|
|
13
|
+
server.listen(port);
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Find an available port starting from the preferred port
|
|
18
|
+
*/
|
|
19
|
+
async function findAvailablePort(startPort, maxRetries) {
|
|
20
|
+
for (let i = 0; i < maxRetries; i++) {
|
|
21
|
+
const port = startPort + i;
|
|
22
|
+
if (await isPortAvailable(port)) {
|
|
23
|
+
return port;
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`No available port found in range ${startPort}-${startPort + maxRetries - 1}`);
|
|
27
|
+
}
|
|
2
28
|
export class DiscoveryHttpServer {
|
|
3
|
-
port;
|
|
4
29
|
logger;
|
|
5
30
|
server;
|
|
6
31
|
handlers = new Map();
|
|
7
|
-
|
|
8
|
-
|
|
32
|
+
_actualPort;
|
|
33
|
+
options;
|
|
34
|
+
constructor(portOrOptions, logger) {
|
|
9
35
|
this.logger = logger;
|
|
36
|
+
// Support both old (port number) and new (options object) API
|
|
37
|
+
if (typeof portOrOptions === 'number') {
|
|
38
|
+
this.options = {
|
|
39
|
+
port: portOrOptions,
|
|
40
|
+
autoRetry: false,
|
|
41
|
+
maxRetries: 10,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
else {
|
|
45
|
+
this.options = {
|
|
46
|
+
port: portOrOptions.port ?? 3005,
|
|
47
|
+
autoRetry: portOrOptions.autoRetry ?? true,
|
|
48
|
+
maxRetries: portOrOptions.maxRetries ?? 10,
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
this._actualPort = this.options.port;
|
|
10
52
|
this.server = http.createServer(this.handleRequest.bind(this));
|
|
11
53
|
}
|
|
12
54
|
handleRequest(req, res) {
|
|
@@ -25,14 +67,40 @@ export class DiscoveryHttpServer {
|
|
|
25
67
|
this.logger.info(`DiscoveryHttpServer: Registering handler for ${path}`);
|
|
26
68
|
this.handlers.set(path, handler);
|
|
27
69
|
}
|
|
28
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Get the actual port the server is running on
|
|
72
|
+
* (may differ from configured port if auto-retry found an available port)
|
|
73
|
+
*/
|
|
74
|
+
getPort() {
|
|
75
|
+
return this._actualPort;
|
|
76
|
+
}
|
|
77
|
+
async start() {
|
|
78
|
+
// Find available port if auto-retry is enabled
|
|
79
|
+
if (this.options.autoRetry) {
|
|
80
|
+
try {
|
|
81
|
+
this._actualPort = await findAvailablePort(this.options.port, this.options.maxRetries);
|
|
82
|
+
if (this._actualPort !== this.options.port) {
|
|
83
|
+
this.logger.info(`DiscoveryHttpServer: Port ${this.options.port} in use, using ${this._actualPort}`);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
catch (error) {
|
|
87
|
+
this.logger.error(`DiscoveryHttpServer: Failed to find available port`, error);
|
|
88
|
+
throw error;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
29
91
|
return new Promise((resolve, reject) => {
|
|
30
|
-
this.server.listen(this.
|
|
31
|
-
this.logger.info(`🚀 OAuth discovery server running at http://localhost:${this.
|
|
92
|
+
this.server.listen(this._actualPort, () => {
|
|
93
|
+
this.logger.info(`🚀 OAuth discovery server running at http://localhost:${this._actualPort}`);
|
|
32
94
|
resolve();
|
|
33
95
|
});
|
|
34
96
|
this.server.on('error', (err) => {
|
|
35
|
-
|
|
97
|
+
if (err.code === 'EADDRINUSE' && !this.options.autoRetry) {
|
|
98
|
+
this.logger.error(`OAuth discovery server error: Port ${this._actualPort} is already in use. ` +
|
|
99
|
+
`Set OAUTH_DISCOVERY_PORT to a different port or enable auto-retry.`);
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
this.logger.error('OAuth discovery server error', err);
|
|
103
|
+
}
|
|
36
104
|
reject(err);
|
|
37
105
|
});
|
|
38
106
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"discovery-http-server.js","sourceRoot":"","sources":["../../../src/core/transports/discovery-http-server.ts"],"names":[],"mappings":"AACA,OAAO,IAAI,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"discovery-http-server.js","sourceRoot":"","sources":["../../../src/core/transports/discovery-http-server.ts"],"names":[],"mappings":"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"}
|