apcore-mcp 0.13.0 → 0.14.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.
- package/LICENSE +190 -0
- package/README.md +165 -19
- package/dist/acl-builder.d.ts +43 -0
- package/dist/acl-builder.d.ts.map +1 -0
- package/dist/acl-builder.js +115 -0
- package/dist/acl-builder.js.map +1 -0
- package/dist/adapters/annotations.d.ts.map +1 -1
- package/dist/adapters/annotations.js +23 -2
- package/dist/adapters/annotations.js.map +1 -1
- package/dist/adapters/errors.d.ts +17 -0
- package/dist/adapters/errors.d.ts.map +1 -1
- package/dist/adapters/errors.js +146 -2
- package/dist/adapters/errors.js.map +1 -1
- package/dist/adapters/id-normalizer.d.ts +40 -0
- package/dist/adapters/id-normalizer.d.ts.map +1 -0
- package/dist/adapters/id-normalizer.js +59 -0
- package/dist/adapters/id-normalizer.js.map +1 -0
- package/dist/adapters/index.d.ts +2 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +2 -2
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/{mcpErrorFormatter.d.ts → mcp-error-formatter.d.ts} +1 -1
- package/dist/adapters/mcp-error-formatter.d.ts.map +1 -0
- package/dist/adapters/{mcpErrorFormatter.js → mcp-error-formatter.js} +1 -1
- package/dist/adapters/mcp-error-formatter.js.map +1 -0
- package/dist/adapters/schema.d.ts +21 -4
- package/dist/adapters/schema.d.ts.map +1 -1
- package/dist/adapters/schema.js +147 -13
- package/dist/adapters/schema.js.map +1 -1
- package/dist/apcore-mcp.d.ts +24 -2
- package/dist/apcore-mcp.d.ts.map +1 -1
- package/dist/apcore-mcp.js +8 -0
- package/dist/apcore-mcp.js.map +1 -1
- package/dist/auth/hooks.d.ts +1 -1
- package/dist/auth/hooks.d.ts.map +1 -1
- package/dist/auth/hooks.js +10 -3
- package/dist/auth/hooks.js.map +1 -1
- package/dist/auth/jwt.d.ts +1 -2
- package/dist/auth/jwt.d.ts.map +1 -1
- package/dist/auth/jwt.js +18 -10
- package/dist/auth/jwt.js.map +1 -1
- package/dist/auth/types.d.ts +6 -3
- package/dist/auth/types.d.ts.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +12 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/converters/openai.d.ts +10 -0
- package/dist/converters/openai.d.ts.map +1 -1
- package/dist/converters/openai.js +100 -5
- package/dist/converters/openai.js.map +1 -1
- package/dist/explorer/index.d.ts +2 -0
- package/dist/explorer/index.d.ts.map +1 -0
- package/dist/explorer/index.js +2 -0
- package/dist/explorer/index.js.map +1 -0
- package/dist/index.d.ts +55 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +319 -107
- package/dist/index.js.map +1 -1
- package/dist/inspector/index.d.ts +2 -0
- package/dist/inspector/index.d.ts.map +1 -0
- package/dist/inspector/index.js +2 -0
- package/dist/inspector/index.js.map +1 -0
- package/dist/middleware-builder.d.ts +41 -0
- package/dist/middleware-builder.d.ts.map +1 -0
- package/dist/middleware-builder.js +129 -0
- package/dist/middleware-builder.js.map +1 -0
- package/dist/server/async-task-bridge.d.ts +190 -0
- package/dist/server/async-task-bridge.d.ts.map +1 -0
- package/dist/server/async-task-bridge.js +393 -0
- package/dist/server/async-task-bridge.js.map +1 -0
- package/dist/server/context.d.ts +9 -2
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +14 -6
- package/dist/server/context.js.map +1 -1
- package/dist/server/factory.d.ts +25 -2
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +127 -7
- package/dist/server/factory.js.map +1 -1
- package/dist/server/listener.d.ts +3 -0
- package/dist/server/listener.d.ts.map +1 -1
- package/dist/server/listener.js +13 -2
- package/dist/server/listener.js.map +1 -1
- package/dist/server/observability.d.ts +51 -0
- package/dist/server/observability.d.ts.map +1 -0
- package/dist/server/observability.js +96 -0
- package/dist/server/observability.js.map +1 -0
- package/dist/server/router.d.ts +77 -0
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/router.js +224 -10
- package/dist/server/router.js.map +1 -1
- package/dist/server/trace-context.d.ts +40 -0
- package/dist/server/trace-context.d.ts.map +1 -0
- package/dist/server/trace-context.js +67 -0
- package/dist/server/trace-context.js.map +1 -0
- package/dist/server/transport.d.ts +39 -0
- package/dist/server/transport.d.ts.map +1 -1
- package/dist/server/transport.js +134 -4
- package/dist/server/transport.js.map +1 -1
- package/dist/types.d.ts +14 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +8 -0
- package/dist/types.js.map +1 -1
- package/package.json +11 -5
- package/dist/adapters/idNormalizer.d.ts +0 -22
- package/dist/adapters/idNormalizer.d.ts.map +0 -1
- package/dist/adapters/idNormalizer.js +0 -30
- package/dist/adapters/idNormalizer.js.map +0 -1
- package/dist/adapters/mcpErrorFormatter.d.ts.map +0 -1
- package/dist/adapters/mcpErrorFormatter.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/adapters/annotations.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,8EAA8E;AAC9E,MAAM,mBAAmB,
|
|
1
|
+
{"version":3,"file":"annotations.js","sourceRoot":"","sources":["../../src/adapters/annotations.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,13 @@
|
|
|
4
4
|
* Handles ModuleError instances with specific error codes, sanitizes
|
|
5
5
|
* internal error details, formats schema validation errors with
|
|
6
6
|
* field-level detail, and extracts AI guidance fields.
|
|
7
|
+
*
|
|
8
|
+
* Cross-language contract: apcore-js exposes concrete error classes
|
|
9
|
+
* (e.g. `TaskLimitExceededError`). We prefer `instanceof` dispatch when
|
|
10
|
+
* those classes are importable so structured fields flow through
|
|
11
|
+
* losslessly; we fall back to duck-typing (`error.code` inspection)
|
|
12
|
+
* when apcore-js is unavailable or the caller constructs a bare
|
|
13
|
+
* `ModuleError`.
|
|
7
14
|
*/
|
|
8
15
|
import type { McpErrorResponse } from "../types.js";
|
|
9
16
|
export declare class ErrorMapper {
|
|
@@ -14,6 +21,16 @@ export declare class ErrorMapper {
|
|
|
14
21
|
* Applies sanitization and formatting rules based on the error code.
|
|
15
22
|
*/
|
|
16
23
|
toMcpError(error: unknown): McpErrorResponse;
|
|
24
|
+
/**
|
|
25
|
+
* Preferred `instanceof` dispatch for concrete apcore-js error classes.
|
|
26
|
+
*
|
|
27
|
+
* When the cache hasn't been populated yet (first call before the lazy
|
|
28
|
+
* load settles), returns null and the caller falls back to duck-typing.
|
|
29
|
+
* Once the cache is warm, subsequent calls produce identical output
|
|
30
|
+
* whether the error was thrown as a concrete class or a duck-typed
|
|
31
|
+
* plain object — the duck-typed branch below handles the latter.
|
|
32
|
+
*/
|
|
33
|
+
private _matchApcoreErrorInstance;
|
|
17
34
|
/**
|
|
18
35
|
* Extract AI guidance fields from error and attach non-undefined values to result.
|
|
19
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/adapters/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/adapters/errors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAmDpD,qBAAa,WAAW;IACtB;;;;;OAKG;IACH,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,gBAAgB;IAgO5C;;;;;;;;OAQG;IACH,OAAO,CAAC,yBAAyB;IAyDjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAazB;;OAEG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;OAIG;IACH,OAAO,CAAC,cAAc;IAetB;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;CA4B/B"}
|
package/dist/adapters/errors.js
CHANGED
|
@@ -4,8 +4,43 @@
|
|
|
4
4
|
* Handles ModuleError instances with specific error codes, sanitizes
|
|
5
5
|
* internal error details, formats schema validation errors with
|
|
6
6
|
* field-level detail, and extracts AI guidance fields.
|
|
7
|
+
*
|
|
8
|
+
* Cross-language contract: apcore-js exposes concrete error classes
|
|
9
|
+
* (e.g. `TaskLimitExceededError`). We prefer `instanceof` dispatch when
|
|
10
|
+
* those classes are importable so structured fields flow through
|
|
11
|
+
* losslessly; we fall back to duck-typing (`error.code` inspection)
|
|
12
|
+
* when apcore-js is unavailable or the caller constructs a bare
|
|
13
|
+
* `ModuleError`.
|
|
7
14
|
*/
|
|
8
15
|
import { ErrorCodes } from "../types.js";
|
|
16
|
+
/**
|
|
17
|
+
* Lazy snapshot of apcore-js error classes used for `instanceof` dispatch.
|
|
18
|
+
* Populated on first use; falls back to duck-typing when apcore-js is
|
|
19
|
+
* unavailable. Cached across calls for perf.
|
|
20
|
+
*/
|
|
21
|
+
let _apcoreErrorClasses = null;
|
|
22
|
+
async function _loadApcoreErrorClasses() {
|
|
23
|
+
if (_apcoreErrorClasses)
|
|
24
|
+
return _apcoreErrorClasses;
|
|
25
|
+
try {
|
|
26
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
27
|
+
const apcore = (await import("apcore-js"));
|
|
28
|
+
_apcoreErrorClasses = {
|
|
29
|
+
TaskLimitExceededError: apcore.TaskLimitExceededError,
|
|
30
|
+
VersionConstraintError: apcore.VersionConstraintError,
|
|
31
|
+
DependencyNotFoundError: apcore.DependencyNotFoundError,
|
|
32
|
+
DependencyVersionMismatchError: apcore.DependencyVersionMismatchError,
|
|
33
|
+
loaded: true,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
_apcoreErrorClasses = { loaded: true };
|
|
38
|
+
}
|
|
39
|
+
return _apcoreErrorClasses;
|
|
40
|
+
}
|
|
41
|
+
// Kick off the load eagerly but don't await; toMcpError is sync and will
|
|
42
|
+
// observe the populated cache on subsequent invocations.
|
|
43
|
+
void _loadApcoreErrorClasses();
|
|
9
44
|
/** Internal error codes that should be sanitized to a generic message. */
|
|
10
45
|
const INTERNAL_ERROR_CODES = new Set([
|
|
11
46
|
ErrorCodes.CALL_DEPTH_EXCEEDED,
|
|
@@ -36,6 +71,13 @@ export class ErrorMapper {
|
|
|
36
71
|
retryable: true,
|
|
37
72
|
};
|
|
38
73
|
}
|
|
74
|
+
// Preferred: instanceof dispatch against apcore-js's concrete error
|
|
75
|
+
// classes so cross-language contracts stay tight. Falls back to the
|
|
76
|
+
// duck-typed code-based dispatch below when apcore-js was unavailable
|
|
77
|
+
// at load time.
|
|
78
|
+
const instanceMatch = this._matchApcoreErrorInstance(error);
|
|
79
|
+
if (instanceMatch)
|
|
80
|
+
return instanceMatch;
|
|
39
81
|
// Duck-type check for ModuleError-like objects
|
|
40
82
|
if (this._isModuleError(error)) {
|
|
41
83
|
const code = error.code;
|
|
@@ -71,8 +113,9 @@ export class ErrorMapper {
|
|
|
71
113
|
return result;
|
|
72
114
|
}
|
|
73
115
|
// Approval pending -> narrow details to approvalId only
|
|
74
|
-
//
|
|
75
|
-
//
|
|
116
|
+
// Handles both camelCase (apcore-js) and snake_case (apcore-py/rs) field names.
|
|
117
|
+
// [D10-011] TypeScript intentionally handles both conventions; Python+Rust only
|
|
118
|
+
// handle snake_case and would silently emit `details: null` for camelCase errors.
|
|
76
119
|
if (code === ErrorCodes.APPROVAL_PENDING) {
|
|
77
120
|
const idKey = details && "approvalId" in details
|
|
78
121
|
? "approvalId"
|
|
@@ -161,6 +204,47 @@ export class ErrorMapper {
|
|
|
161
204
|
this._attachAiGuidance(error, result);
|
|
162
205
|
return result;
|
|
163
206
|
}
|
|
207
|
+
// Dependency resolution errors (apcore 0.19) -> pass through with user-fixable hint
|
|
208
|
+
if (code === ErrorCodes.DEPENDENCY_NOT_FOUND ||
|
|
209
|
+
code === ErrorCodes.DEPENDENCY_VERSION_MISMATCH) {
|
|
210
|
+
const result = {
|
|
211
|
+
isError: true,
|
|
212
|
+
errorType: code,
|
|
213
|
+
message: error.message,
|
|
214
|
+
details,
|
|
215
|
+
userFixable: true,
|
|
216
|
+
};
|
|
217
|
+
this._attachAiGuidance(error, result);
|
|
218
|
+
return result;
|
|
219
|
+
}
|
|
220
|
+
// Task limit exceeded -> retryable
|
|
221
|
+
if (code === ErrorCodes.TASK_LIMIT_EXCEEDED) {
|
|
222
|
+
const result = {
|
|
223
|
+
isError: true,
|
|
224
|
+
errorType: code,
|
|
225
|
+
message: error.message,
|
|
226
|
+
details,
|
|
227
|
+
retryable: true,
|
|
228
|
+
};
|
|
229
|
+
this._attachAiGuidance(error, result);
|
|
230
|
+
return result;
|
|
231
|
+
}
|
|
232
|
+
// Binding / version-constraint validation errors (apcore 0.19) -> pass through
|
|
233
|
+
if (code === ErrorCodes.VERSION_CONSTRAINT_INVALID ||
|
|
234
|
+
code === ErrorCodes.BINDING_SCHEMA_INFERENCE_FAILED ||
|
|
235
|
+
code === ErrorCodes.BINDING_SCHEMA_MODE_CONFLICT ||
|
|
236
|
+
code === ErrorCodes.BINDING_STRICT_SCHEMA_INCOMPATIBLE ||
|
|
237
|
+
code === ErrorCodes.BINDING_POLICY_VIOLATION) {
|
|
238
|
+
const result = {
|
|
239
|
+
isError: true,
|
|
240
|
+
errorType: code,
|
|
241
|
+
message: error.message,
|
|
242
|
+
details,
|
|
243
|
+
userFixable: true,
|
|
244
|
+
};
|
|
245
|
+
this._attachAiGuidance(error, result);
|
|
246
|
+
return result;
|
|
247
|
+
}
|
|
164
248
|
// Other known ModuleError codes -> pass through
|
|
165
249
|
const result = {
|
|
166
250
|
isError: true,
|
|
@@ -179,6 +263,66 @@ export class ErrorMapper {
|
|
|
179
263
|
details: null,
|
|
180
264
|
};
|
|
181
265
|
}
|
|
266
|
+
/**
|
|
267
|
+
* Preferred `instanceof` dispatch for concrete apcore-js error classes.
|
|
268
|
+
*
|
|
269
|
+
* When the cache hasn't been populated yet (first call before the lazy
|
|
270
|
+
* load settles), returns null and the caller falls back to duck-typing.
|
|
271
|
+
* Once the cache is warm, subsequent calls produce identical output
|
|
272
|
+
* whether the error was thrown as a concrete class or a duck-typed
|
|
273
|
+
* plain object — the duck-typed branch below handles the latter.
|
|
274
|
+
*/
|
|
275
|
+
_matchApcoreErrorInstance(error) {
|
|
276
|
+
if (!(error instanceof Error) || !_apcoreErrorClasses?.loaded)
|
|
277
|
+
return null;
|
|
278
|
+
const classes = _apcoreErrorClasses;
|
|
279
|
+
const asModErr = error;
|
|
280
|
+
if (classes.TaskLimitExceededError && error instanceof classes.TaskLimitExceededError) {
|
|
281
|
+
const result = {
|
|
282
|
+
isError: true,
|
|
283
|
+
errorType: ErrorCodes.TASK_LIMIT_EXCEEDED,
|
|
284
|
+
message: error.message,
|
|
285
|
+
details: asModErr.details ?? null,
|
|
286
|
+
retryable: true,
|
|
287
|
+
};
|
|
288
|
+
this._attachAiGuidance(error, result);
|
|
289
|
+
return result;
|
|
290
|
+
}
|
|
291
|
+
if (classes.DependencyNotFoundError && error instanceof classes.DependencyNotFoundError) {
|
|
292
|
+
const result = {
|
|
293
|
+
isError: true,
|
|
294
|
+
errorType: ErrorCodes.DEPENDENCY_NOT_FOUND,
|
|
295
|
+
message: error.message,
|
|
296
|
+
details: asModErr.details ?? null,
|
|
297
|
+
userFixable: true,
|
|
298
|
+
};
|
|
299
|
+
this._attachAiGuidance(error, result);
|
|
300
|
+
return result;
|
|
301
|
+
}
|
|
302
|
+
if (classes.DependencyVersionMismatchError && error instanceof classes.DependencyVersionMismatchError) {
|
|
303
|
+
const result = {
|
|
304
|
+
isError: true,
|
|
305
|
+
errorType: ErrorCodes.DEPENDENCY_VERSION_MISMATCH,
|
|
306
|
+
message: error.message,
|
|
307
|
+
details: asModErr.details ?? null,
|
|
308
|
+
userFixable: true,
|
|
309
|
+
};
|
|
310
|
+
this._attachAiGuidance(error, result);
|
|
311
|
+
return result;
|
|
312
|
+
}
|
|
313
|
+
if (classes.VersionConstraintError && error instanceof classes.VersionConstraintError) {
|
|
314
|
+
const result = {
|
|
315
|
+
isError: true,
|
|
316
|
+
errorType: ErrorCodes.VERSION_CONSTRAINT_INVALID,
|
|
317
|
+
message: error.message,
|
|
318
|
+
details: asModErr.details ?? null,
|
|
319
|
+
userFixable: true,
|
|
320
|
+
};
|
|
321
|
+
this._attachAiGuidance(error, result);
|
|
322
|
+
return result;
|
|
323
|
+
}
|
|
324
|
+
return null;
|
|
325
|
+
}
|
|
182
326
|
/**
|
|
183
327
|
* Extract AI guidance fields from error and attach non-undefined values to result.
|
|
184
328
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/adapters/errors.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/adapters/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModuleIDNormalizer - Converts between apcore module IDs and OpenAI tool names.
|
|
3
|
+
*
|
|
4
|
+
* apcore uses dot-separated module IDs (e.g. "myorg.tools.search").
|
|
5
|
+
*
|
|
6
|
+
* [MID-6] MCP tool names accept dots and hyphens (and dot-notation is the
|
|
7
|
+
* apcore convention), so this normalizer is intended ONLY for the OpenAI
|
|
8
|
+
* function-calling format, which restricts function names to `[a-zA-Z0-9_-]`.
|
|
9
|
+
* Pre-fix doc here claimed "MCP tool names use hyphens" — that is incorrect
|
|
10
|
+
* and contradicts the spec at `docs/features/openai-converter.md`. This
|
|
11
|
+
* normalizer must NOT be applied on the MCP path.
|
|
12
|
+
*/
|
|
13
|
+
export declare class ModuleIDNormalizer {
|
|
14
|
+
/**
|
|
15
|
+
* Normalize an apcore module ID to an MCP-compatible tool name.
|
|
16
|
+
*
|
|
17
|
+
* Validates the module ID against MODULE_ID_PATTERN before converting.
|
|
18
|
+
* Replaces dots (`.`) with hyphens (`-`).
|
|
19
|
+
*/
|
|
20
|
+
normalize(moduleId: string): string;
|
|
21
|
+
/**
|
|
22
|
+
* Denormalize an MCP tool name back to an apcore module ID.
|
|
23
|
+
*
|
|
24
|
+
* Replaces hyphens (`-`) with dots (`.`).
|
|
25
|
+
*/
|
|
26
|
+
denormalize(toolName: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Bijection-guarded variant of denormalize. [MID-5]
|
|
29
|
+
*
|
|
30
|
+
* Returns the denormalized module ID if `toolName` is a valid pre-image of
|
|
31
|
+
* `normalize()` (i.e. it passes the normalized-name pattern validation).
|
|
32
|
+
* Returns `null` for inputs that could not have been produced by `normalize()`.
|
|
33
|
+
*
|
|
34
|
+
* Valid normalized names must match: `[a-z0-9]+(-[a-z0-9]+)*`
|
|
35
|
+
* - Lowercase alphanumeric segments separated by single hyphens.
|
|
36
|
+
* - No uppercase, no leading/trailing/consecutive hyphens, no empty string.
|
|
37
|
+
*/
|
|
38
|
+
tryDenormalize(toolName: string): string | null;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=id-normalizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-normalizer.d.ts","sourceRoot":"","sources":["../../src/adapters/id-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH,qBAAa,kBAAkB;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IASnC;;;;OAIG;IACH,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM;IAIrC;;;;;;;;;;OAUG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;CAUhD"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModuleIDNormalizer - Converts between apcore module IDs and OpenAI tool names.
|
|
3
|
+
*
|
|
4
|
+
* apcore uses dot-separated module IDs (e.g. "myorg.tools.search").
|
|
5
|
+
*
|
|
6
|
+
* [MID-6] MCP tool names accept dots and hyphens (and dot-notation is the
|
|
7
|
+
* apcore convention), so this normalizer is intended ONLY for the OpenAI
|
|
8
|
+
* function-calling format, which restricts function names to `[a-zA-Z0-9_-]`.
|
|
9
|
+
* Pre-fix doc here claimed "MCP tool names use hyphens" — that is incorrect
|
|
10
|
+
* and contradicts the spec at `docs/features/openai-converter.md`. This
|
|
11
|
+
* normalizer must NOT be applied on the MCP path.
|
|
12
|
+
*/
|
|
13
|
+
import { MODULE_ID_PATTERN } from "../types.js";
|
|
14
|
+
export class ModuleIDNormalizer {
|
|
15
|
+
/**
|
|
16
|
+
* Normalize an apcore module ID to an MCP-compatible tool name.
|
|
17
|
+
*
|
|
18
|
+
* Validates the module ID against MODULE_ID_PATTERN before converting.
|
|
19
|
+
* Replaces dots (`.`) with hyphens (`-`).
|
|
20
|
+
*/
|
|
21
|
+
normalize(moduleId) {
|
|
22
|
+
if (!MODULE_ID_PATTERN.test(moduleId)) {
|
|
23
|
+
throw new Error(`Invalid module ID "${moduleId}": must match pattern ${MODULE_ID_PATTERN}`);
|
|
24
|
+
}
|
|
25
|
+
return moduleId.replaceAll(".", "-");
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Denormalize an MCP tool name back to an apcore module ID.
|
|
29
|
+
*
|
|
30
|
+
* Replaces hyphens (`-`) with dots (`.`).
|
|
31
|
+
*/
|
|
32
|
+
denormalize(toolName) {
|
|
33
|
+
return toolName.replaceAll("-", ".");
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Bijection-guarded variant of denormalize. [MID-5]
|
|
37
|
+
*
|
|
38
|
+
* Returns the denormalized module ID if `toolName` is a valid pre-image of
|
|
39
|
+
* `normalize()` (i.e. it passes the normalized-name pattern validation).
|
|
40
|
+
* Returns `null` for inputs that could not have been produced by `normalize()`.
|
|
41
|
+
*
|
|
42
|
+
* Valid normalized names must match: `[a-z0-9]+(-[a-z0-9]+)*`
|
|
43
|
+
* - Lowercase alphanumeric segments separated by single hyphens.
|
|
44
|
+
* - No uppercase, no leading/trailing/consecutive hyphens, no empty string.
|
|
45
|
+
*/
|
|
46
|
+
tryDenormalize(toolName) {
|
|
47
|
+
// Must be non-empty, all-lowercase, no consecutive/leading/trailing hyphens,
|
|
48
|
+
// only [a-z0-9-] characters.
|
|
49
|
+
if (!toolName || toolName.length === 0)
|
|
50
|
+
return null;
|
|
51
|
+
// Pattern: segments of [a-z][a-z0-9]* joined by single hyphens.
|
|
52
|
+
// Mirrors MODULE_ID_PATTERN where each segment starts with a lowercase letter.
|
|
53
|
+
const NORMALIZED_PATTERN = /^[a-z][a-z0-9]*(-[a-z][a-z0-9]*)*$/;
|
|
54
|
+
if (!NORMALIZED_PATTERN.test(toolName))
|
|
55
|
+
return null;
|
|
56
|
+
return this.denormalize(toolName);
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=id-normalizer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"id-normalizer.js","sourceRoot":"","sources":["../../src/adapters/id-normalizer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,OAAO,kBAAkB;IAC7B;;;;;OAKG;IACH,SAAS,CAAC,QAAgB;QACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,yBAAyB,iBAAiB,EAAE,CAC3E,CAAC;QACJ,CAAC;QACD,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED;;;;OAIG;IACH,WAAW,CAAC,QAAgB;QAC1B,OAAO,QAAQ,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;;;;;OAUG;IACH,cAAc,CAAC,QAAgB;QAC7B,6EAA6E;QAC7E,6BAA6B;QAC7B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,gEAAgE;QAChE,+EAA+E;QAC/E,MAAM,kBAAkB,GAAG,oCAAoC,CAAC;QAChE,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;CACF"}
|
package/dist/adapters/index.d.ts
CHANGED
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
export { SchemaConverter } from "./schema.js";
|
|
5
5
|
export { AnnotationMapper } from "./annotations.js";
|
|
6
6
|
export { ErrorMapper } from "./errors.js";
|
|
7
|
-
export { ModuleIDNormalizer } from "./
|
|
7
|
+
export { ModuleIDNormalizer } from "./id-normalizer.js";
|
|
8
8
|
export { ElicitationApprovalHandler } from "./approval.js";
|
|
9
9
|
export type { ApprovalRequest, ApprovalResult } from "./approval.js";
|
|
10
|
-
export { McpErrorFormatter, registerMcpFormatter } from "./
|
|
10
|
+
export { McpErrorFormatter, registerMcpFormatter } from "./mcp-error-formatter.js";
|
|
11
11
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
package/dist/adapters/index.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
export { SchemaConverter } from "./schema.js";
|
|
5
5
|
export { AnnotationMapper } from "./annotations.js";
|
|
6
6
|
export { ErrorMapper } from "./errors.js";
|
|
7
|
-
export { ModuleIDNormalizer } from "./
|
|
7
|
+
export { ModuleIDNormalizer } from "./id-normalizer.js";
|
|
8
8
|
export { ElicitationApprovalHandler } from "./approval.js";
|
|
9
|
-
export { McpErrorFormatter, registerMcpFormatter } from "./
|
|
9
|
+
export { McpErrorFormatter, registerMcpFormatter } from "./mcp-error-formatter.js";
|
|
10
10
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC"}
|
|
@@ -10,4 +10,4 @@ export declare class McpErrorFormatter implements ErrorFormatter {
|
|
|
10
10
|
}
|
|
11
11
|
/** Register the MCP error formatter. Safe to call multiple times. */
|
|
12
12
|
export declare function registerMcpFormatter(): Promise<void>;
|
|
13
|
-
//# sourceMappingURL=
|
|
13
|
+
//# sourceMappingURL=mcp-error-formatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-error-formatter.d.ts","sourceRoot":"","sources":["../../src/adapters/mcp-error-formatter.ts"],"names":[],"mappings":"AAQA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpE;AAED;;GAEG;AACH,qBAAa,iBAAkB,YAAW,cAAc;IACtD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAGpE;AAED,qEAAqE;AACrE,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAY1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-error-formatter.js","sourceRoot":"","sources":["../../src/adapters/mcp-error-formatter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAM1C;;GAEG;AACH,MAAM,OAAO,iBAAiB;IACX,WAAW,GAAG,IAAI,WAAW,EAAE,CAAC;IAEjD,MAAM,CAAC,KAAc,EAAE,QAAkB;QACvC,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,KAAK,CAAuC,CAAC;IAClF,CAAC;CACF;AAED,qEAAqE;AACrE,MAAM,CAAC,KAAK,UAAU,oBAAoB;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAI,MAAkC,CAAC,wBAAwB,CAEhE,CAAC;QACd,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,iBAAiB,EAAE,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;AACH,CAAC"}
|
|
@@ -5,26 +5,43 @@
|
|
|
5
5
|
* have the required `type: "object"` for MCP tool input/output schemas.
|
|
6
6
|
*/
|
|
7
7
|
import type { JsonSchema, ModuleDescriptor } from "../types.js";
|
|
8
|
+
export interface ConvertSchemaOptions {
|
|
9
|
+
strict?: boolean;
|
|
10
|
+
}
|
|
8
11
|
export declare class SchemaConverter {
|
|
9
12
|
/**
|
|
10
13
|
* Convert a module descriptor's inputSchema to an MCP-compatible schema.
|
|
11
14
|
*/
|
|
12
|
-
convertInputSchema(descriptor: ModuleDescriptor): JsonSchema;
|
|
15
|
+
convertInputSchema(descriptor: ModuleDescriptor, options?: ConvertSchemaOptions): JsonSchema;
|
|
13
16
|
/**
|
|
14
17
|
* Convert a module descriptor's outputSchema to an MCP-compatible schema.
|
|
15
18
|
*/
|
|
16
|
-
convertOutputSchema(descriptor: ModuleDescriptor): JsonSchema;
|
|
19
|
+
convertOutputSchema(descriptor: ModuleDescriptor, options?: ConvertSchemaOptions): JsonSchema;
|
|
17
20
|
/**
|
|
18
21
|
* Apply all schema transformations: deep copy, inline $ref, ensure object type.
|
|
19
22
|
*/
|
|
20
|
-
_convertSchema(schema: JsonSchema): JsonSchema;
|
|
23
|
+
_convertSchema(schema: JsonSchema, options?: ConvertSchemaOptions): JsonSchema;
|
|
24
|
+
/**
|
|
25
|
+
* Recursively set `additionalProperties: false` on every object-shaped
|
|
26
|
+
* schema node that does not already specify `additionalProperties`.
|
|
27
|
+
*
|
|
28
|
+
* A node is treated as an object schema when ANY of:
|
|
29
|
+
* - `type === "object"`
|
|
30
|
+
* - `Array.isArray(type) && type.includes("object")`
|
|
31
|
+
* - `"properties" in node` AND the declared scalar `type` (if any) isn't
|
|
32
|
+
* a non-object scalar (string/number/integer/boolean/null)
|
|
33
|
+
*
|
|
34
|
+
* Recurses only into known subschema slots. Opaque value slots like
|
|
35
|
+
* `enum`, `const`, `examples`, `default` are left untouched.
|
|
36
|
+
*/
|
|
37
|
+
_applyStrict(node: unknown): unknown;
|
|
21
38
|
/**
|
|
22
39
|
* Recursively inline `$ref` references using the provided $defs map.
|
|
23
40
|
*
|
|
24
41
|
* Handles dicts (objects), arrays, and primitive values.
|
|
25
42
|
* Skips the `$defs` key itself during traversal.
|
|
26
43
|
*/
|
|
27
|
-
_inlineRefs(node: unknown, defs: Record<string, JsonSchema>, activeRefs: Set<string
|
|
44
|
+
_inlineRefs(node: unknown, defs: Record<string, JsonSchema>, activeRefs: Set<string>, depth?: number): unknown;
|
|
28
45
|
/**
|
|
29
46
|
* Resolve a `$ref` path (e.g. `#/$defs/MyType`) against the $defs map.
|
|
30
47
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/adapters/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,qBAAa,eAAe;IAC1B;;OAEG;IACH,kBAAkB,
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/adapters/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEhE,MAAM,WAAW,oBAAoB;IACnC,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAUD,qBAAa,eAAe;IAC1B;;OAEG;IACH,kBAAkB,CAChB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,UAAU;IAIb;;OAEG;IACH,mBAAmB,CACjB,UAAU,EAAE,gBAAgB,EAC5B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,UAAU;IAIb;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,UAAU;IAyB9E;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO;IAkGpC;;;;;OAKG;IACH,WAAW,CACT,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,EACvB,KAAK,GAAE,MAAU,GAChB,OAAO;IAsDV;;;;;OAKG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAC/B,UAAU;IAoBb;;;;;OAKG;IACH,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;CAclD"}
|