apcore-mcp 0.13.0 → 0.15.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 +246 -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 +37 -0
- package/dist/adapters/errors.d.ts.map +1 -1
- package/dist/adapters/errors.js +213 -17
- package/dist/adapters/errors.js.map +1 -1
- package/dist/adapters/id-normalizer.d.ts +41 -0
- package/dist/adapters/id-normalizer.d.ts.map +1 -0
- package/dist/adapters/id-normalizer.js +56 -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 +32 -4
- package/dist/adapters/schema.d.ts.map +1 -1
- package/dist/adapters/schema.js +190 -14
- package/dist/adapters/schema.js.map +1 -1
- package/dist/apcore-mcp.d.ts +25 -3
- 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/index.d.ts +7 -0
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +7 -0
- package/dist/auth/index.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 +22 -11
- 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 +21 -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/constants.d.ts +37 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +43 -0
- package/dist/constants.js.map +1 -0
- package/dist/converters/openai.d.ts +22 -0
- package/dist/converters/openai.d.ts.map +1 -1
- package/dist/converters/openai.js +128 -8
- package/dist/converters/openai.js.map +1 -1
- package/dist/index.d.ts +62 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +329 -108
- package/dist/index.js.map +1 -1
- package/dist/markdown.d.ts +54 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +125 -0
- package/dist/markdown.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 +228 -0
- package/dist/server/async-task-bridge.d.ts.map +1 -0
- package/dist/server/async-task-bridge.js +579 -0
- package/dist/server/async-task-bridge.js.map +1 -0
- package/dist/server/context.d.ts +17 -2
- package/dist/server/context.d.ts.map +1 -1
- package/dist/server/context.js +29 -6
- package/dist/server/context.js.map +1 -1
- package/dist/server/factory.d.ts +57 -3
- package/dist/server/factory.d.ts.map +1 -1
- package/dist/server/factory.js +179 -9
- 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 +103 -3
- package/dist/server/router.d.ts.map +1 -1
- package/dist/server/router.js +289 -25
- 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 +47 -1
- package/dist/server/transport.d.ts.map +1 -1
- package/dist/server/transport.js +147 -4
- package/dist/server/transport.js.map +1 -1
- package/dist/types.d.ts +16 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +12 -0
- package/dist/types.js.map +1 -1
- package/package.json +11 -8
- 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
- package/dist/server/index.d.ts +0 -11
- package/dist/server/index.d.ts.map +0 -1
- package/dist/server/index.js +0 -8
- package/dist/server/index.js.map +0 -1
|
@@ -0,0 +1,56 @@
|
|
|
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. the dash→dot replacement yields a string matching
|
|
40
|
+
* MODULE_ID_PATTERN). Returns `null` for inputs that could not have been
|
|
41
|
+
* produced by `normalize()`.
|
|
42
|
+
*
|
|
43
|
+
* Cross-language parity [D11-3]: validates the denormalized result against
|
|
44
|
+
* the shared MODULE_ID_PATTERN so underscores within segments (e.g.
|
|
45
|
+
* `"my_mod-v2"` → `"my_mod.v2"`) round-trip identically to Python/Rust.
|
|
46
|
+
*/
|
|
47
|
+
tryDenormalize(toolName) {
|
|
48
|
+
if (!toolName || toolName.length === 0)
|
|
49
|
+
return null;
|
|
50
|
+
const denormalized = this.denormalize(toolName);
|
|
51
|
+
if (!MODULE_ID_PATTERN.test(denormalized))
|
|
52
|
+
return null;
|
|
53
|
+
return denormalized;
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
//# 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;;;;;;;;;;;OAWG;IACH,cAAc,CAAC,QAAgB;QAC7B,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACpD,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC;YAAE,OAAO,IAAI,CAAC;QACvD,OAAO,YAAY,CAAC;IACtB,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,31 +5,57 @@
|
|
|
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
|
*
|
|
31
48
|
* Returns a deep copy of the resolved definition to avoid mutation.
|
|
32
49
|
* Throws Error if the ref format is invalid or the definition is not found.
|
|
50
|
+
*
|
|
51
|
+
* JS-specific hardening (mirrors apcore-toolkit's `PROTO_DENY_LIST` in
|
|
52
|
+
* `binding-parser.ts`): reject ref segments that resolve to dangerous
|
|
53
|
+
* prototype-chain keys (`__proto__`, `constructor`, `prototype`). Without
|
|
54
|
+
* this guard, `defs[name]` would return values from `Object.prototype`
|
|
55
|
+
* even when the user supplied no matching definition, enabling prototype
|
|
56
|
+
* pollution / unexpected schema resolution. This deny-list has no Python
|
|
57
|
+
* counterpart because Python's attribute lookups are not affected by this
|
|
58
|
+
* vulnerability class.
|
|
33
59
|
*/
|
|
34
60
|
_resolveRef(refPath: string, defs: Record<string, JsonSchema>): JsonSchema;
|
|
35
61
|
/**
|
|
@@ -37,6 +63,8 @@ export declare class SchemaConverter {
|
|
|
37
63
|
*
|
|
38
64
|
* - Empty schema -> `{ type: "object", properties: {} }`
|
|
39
65
|
* - Schema without `type` -> adds `type: "object"`
|
|
66
|
+
* - Schema with non-object `type` but defining `properties` -> forces
|
|
67
|
+
* `type: "object"` to keep cross-language parity with Python/Rust [D11-4].
|
|
40
68
|
*/
|
|
41
69
|
_ensureObjectType(schema: JsonSchema): JsonSchema;
|
|
42
70
|
}
|
|
@@ -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;AAuBD,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;;;;;;;;;;;;;;OAcG;IACH,WAAW,CACT,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,GAC/B,UAAU;IA+Bb;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;CA0BlD"}
|
package/dist/adapters/schema.js
CHANGED
|
@@ -4,32 +4,168 @@
|
|
|
4
4
|
* Handles deep copying, inlining $ref references, and ensuring schemas
|
|
5
5
|
* have the required `type: "object"` for MCP tool input/output schemas.
|
|
6
6
|
*/
|
|
7
|
+
/**
|
|
8
|
+
* [SC-1] Maximum recursion depth for $ref inlining and schema descent.
|
|
9
|
+
* Matches Python's _MAX_REF_DEPTH and Rust's MAX_REF_DEPTH (32 levels).
|
|
10
|
+
* Prevents stack overflow on pathological-but-legal acyclic schemas
|
|
11
|
+
* (e.g. a chain of 100,000 distinct $defs each pointing to the next).
|
|
12
|
+
*/
|
|
13
|
+
const MAX_REF_DEPTH = 32;
|
|
14
|
+
/**
|
|
15
|
+
* JavaScript-specific prototype-pollution guard (mirrors apcore-toolkit's
|
|
16
|
+
* `PROTO_DENY_LIST` in `binding-parser.ts`). Reject these names when used as
|
|
17
|
+
* `$ref` segments, so that a malicious schema cannot resolve `#/$defs/__proto__`,
|
|
18
|
+
* `#/$defs/constructor`, or `#/$defs/prototype` to inherited values on
|
|
19
|
+
* `Object.prototype`. Python and Rust ports do not require an equivalent.
|
|
20
|
+
*/
|
|
21
|
+
const PROTO_DENY_LIST = new Set([
|
|
22
|
+
"__proto__",
|
|
23
|
+
"constructor",
|
|
24
|
+
"prototype",
|
|
25
|
+
]);
|
|
7
26
|
export class SchemaConverter {
|
|
8
27
|
/**
|
|
9
28
|
* Convert a module descriptor's inputSchema to an MCP-compatible schema.
|
|
10
29
|
*/
|
|
11
|
-
convertInputSchema(descriptor) {
|
|
12
|
-
return this._convertSchema(descriptor.inputSchema);
|
|
30
|
+
convertInputSchema(descriptor, options) {
|
|
31
|
+
return this._convertSchema(descriptor.inputSchema, options);
|
|
13
32
|
}
|
|
14
33
|
/**
|
|
15
34
|
* Convert a module descriptor's outputSchema to an MCP-compatible schema.
|
|
16
35
|
*/
|
|
17
|
-
convertOutputSchema(descriptor) {
|
|
18
|
-
return this._convertSchema(descriptor.outputSchema);
|
|
36
|
+
convertOutputSchema(descriptor, options) {
|
|
37
|
+
return this._convertSchema(descriptor.outputSchema, options);
|
|
19
38
|
}
|
|
20
39
|
/**
|
|
21
40
|
* Apply all schema transformations: deep copy, inline $ref, ensure object type.
|
|
22
41
|
*/
|
|
23
|
-
_convertSchema(schema) {
|
|
42
|
+
_convertSchema(schema, options) {
|
|
24
43
|
// Deep copy to avoid mutating the original
|
|
25
44
|
const copied = structuredClone(schema);
|
|
26
45
|
// Extract and remove $defs before inlining
|
|
27
46
|
const defs = copied["$defs"] ?? {};
|
|
28
47
|
delete copied["$defs"];
|
|
29
48
|
// Inline all $ref references (with circular ref detection)
|
|
30
|
-
const inlined = this._inlineRefs(copied, defs, new Set());
|
|
49
|
+
const inlined = this._inlineRefs(copied, defs, new Set(), 0);
|
|
31
50
|
// Ensure the top-level schema has type: "object"
|
|
32
|
-
|
|
51
|
+
const normalized = this._ensureObjectType(inlined);
|
|
52
|
+
// [SC-11] Default strict=true to match Python and Rust SDKs. Pre-fix
|
|
53
|
+
// TS defaulted to false (undefined → falsy), silently producing
|
|
54
|
+
// permissive schemas. Callers that explicitly want non-strict must
|
|
55
|
+
// now pass `{ strict: false }`.
|
|
56
|
+
const strict = options?.strict ?? true;
|
|
57
|
+
if (strict) {
|
|
58
|
+
return this._applyStrict(normalized);
|
|
59
|
+
}
|
|
60
|
+
return normalized;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Recursively set `additionalProperties: false` on every object-shaped
|
|
64
|
+
* schema node that does not already specify `additionalProperties`.
|
|
65
|
+
*
|
|
66
|
+
* A node is treated as an object schema when ANY of:
|
|
67
|
+
* - `type === "object"`
|
|
68
|
+
* - `Array.isArray(type) && type.includes("object")`
|
|
69
|
+
* - `"properties" in node` AND the declared scalar `type` (if any) isn't
|
|
70
|
+
* a non-object scalar (string/number/integer/boolean/null)
|
|
71
|
+
*
|
|
72
|
+
* Recurses only into known subschema slots. Opaque value slots like
|
|
73
|
+
* `enum`, `const`, `examples`, `default` are left untouched.
|
|
74
|
+
*/
|
|
75
|
+
_applyStrict(node) {
|
|
76
|
+
if (Array.isArray(node)) {
|
|
77
|
+
return node.map((item) => this._applyStrict(item));
|
|
78
|
+
}
|
|
79
|
+
if (node === null || typeof node !== "object") {
|
|
80
|
+
return node;
|
|
81
|
+
}
|
|
82
|
+
const obj = node;
|
|
83
|
+
const result = { ...obj };
|
|
84
|
+
// Recurse into subschema slots only
|
|
85
|
+
if ("properties" in result && result.properties !== null && typeof result.properties === "object" && !Array.isArray(result.properties)) {
|
|
86
|
+
const props = result.properties;
|
|
87
|
+
const newProps = {};
|
|
88
|
+
for (const [k, v] of Object.entries(props)) {
|
|
89
|
+
newProps[k] = this._applyStrict(v);
|
|
90
|
+
}
|
|
91
|
+
result.properties = newProps;
|
|
92
|
+
}
|
|
93
|
+
if ("patternProperties" in result && result.patternProperties !== null && typeof result.patternProperties === "object" && !Array.isArray(result.patternProperties)) {
|
|
94
|
+
const pp = result.patternProperties;
|
|
95
|
+
const newPP = {};
|
|
96
|
+
for (const [k, v] of Object.entries(pp)) {
|
|
97
|
+
newPP[k] = this._applyStrict(v);
|
|
98
|
+
}
|
|
99
|
+
result.patternProperties = newPP;
|
|
100
|
+
}
|
|
101
|
+
if ("$defs" in result && result.$defs !== null && typeof result.$defs === "object" && !Array.isArray(result.$defs)) {
|
|
102
|
+
const defs = result.$defs;
|
|
103
|
+
const newDefs = {};
|
|
104
|
+
for (const [k, v] of Object.entries(defs)) {
|
|
105
|
+
newDefs[k] = this._applyStrict(v);
|
|
106
|
+
}
|
|
107
|
+
result.$defs = newDefs;
|
|
108
|
+
}
|
|
109
|
+
if ("definitions" in result && result.definitions !== null && typeof result.definitions === "object" && !Array.isArray(result.definitions)) {
|
|
110
|
+
const defs = result.definitions;
|
|
111
|
+
const newDefs = {};
|
|
112
|
+
for (const [k, v] of Object.entries(defs)) {
|
|
113
|
+
newDefs[k] = this._applyStrict(v);
|
|
114
|
+
}
|
|
115
|
+
result.definitions = newDefs;
|
|
116
|
+
}
|
|
117
|
+
if ("items" in result) {
|
|
118
|
+
result.items = this._applyStrict(result.items);
|
|
119
|
+
}
|
|
120
|
+
if ("additionalProperties" in result && typeof result.additionalProperties === "object" && result.additionalProperties !== null) {
|
|
121
|
+
result.additionalProperties = this._applyStrict(result.additionalProperties);
|
|
122
|
+
}
|
|
123
|
+
if ("not" in result) {
|
|
124
|
+
result.not = this._applyStrict(result.not);
|
|
125
|
+
}
|
|
126
|
+
for (const key of ["oneOf", "anyOf", "allOf"]) {
|
|
127
|
+
if (Array.isArray(result[key])) {
|
|
128
|
+
result[key] = result[key].map((v) => this._applyStrict(v));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
for (const key of ["if", "then", "else"]) {
|
|
132
|
+
if (key in result) {
|
|
133
|
+
result[key] = this._applyStrict(result[key]);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
// [D11-002] Mirror Python's _SCHEMA_CHILD_SCHEMA_KEYS: also recurse into
|
|
137
|
+
// `propertyNames` (single schema) and `contains` (single schema).
|
|
138
|
+
for (const key of ["propertyNames", "contains"]) {
|
|
139
|
+
if (key in result && result[key] !== null && typeof result[key] === "object") {
|
|
140
|
+
result[key] = this._applyStrict(result[key]);
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
// [D11-002] Mirror Python's _SCHEMA_CHILD_LIST_KEYS: also recurse into
|
|
144
|
+
// `prefixItems` (array of schemas).
|
|
145
|
+
if ("prefixItems" in result && Array.isArray(result["prefixItems"])) {
|
|
146
|
+
result["prefixItems"] = result["prefixItems"].map((v) => this._applyStrict(v));
|
|
147
|
+
}
|
|
148
|
+
// Decide whether this node is object-shaped
|
|
149
|
+
const type = result["type"];
|
|
150
|
+
const SCALAR_TYPES = new Set(["string", "number", "integer", "boolean", "null"]);
|
|
151
|
+
let isObjectShaped = false;
|
|
152
|
+
if (type === "object") {
|
|
153
|
+
isObjectShaped = true;
|
|
154
|
+
}
|
|
155
|
+
else if (Array.isArray(type) && type.includes("object")) {
|
|
156
|
+
isObjectShaped = true;
|
|
157
|
+
}
|
|
158
|
+
else if (type === undefined && "properties" in result) {
|
|
159
|
+
isObjectShaped = true;
|
|
160
|
+
}
|
|
161
|
+
else if (typeof type === "string" && !SCALAR_TYPES.has(type) && "properties" in result) {
|
|
162
|
+
// Unknown string type with properties — treat as object
|
|
163
|
+
isObjectShaped = true;
|
|
164
|
+
}
|
|
165
|
+
if (isObjectShaped && !("additionalProperties" in result)) {
|
|
166
|
+
result["additionalProperties"] = false;
|
|
167
|
+
}
|
|
168
|
+
return result;
|
|
33
169
|
}
|
|
34
170
|
/**
|
|
35
171
|
* Recursively inline `$ref` references using the provided $defs map.
|
|
@@ -37,9 +173,13 @@ export class SchemaConverter {
|
|
|
37
173
|
* Handles dicts (objects), arrays, and primitive values.
|
|
38
174
|
* Skips the `$defs` key itself during traversal.
|
|
39
175
|
*/
|
|
40
|
-
_inlineRefs(node, defs, activeRefs) {
|
|
176
|
+
_inlineRefs(node, defs, activeRefs, depth = 0) {
|
|
177
|
+
// [SC-1] Cap recursion at MAX_REF_DEPTH to match Python+Rust.
|
|
178
|
+
if (depth > MAX_REF_DEPTH) {
|
|
179
|
+
throw new Error(`Maximum schema recursion depth (${MAX_REF_DEPTH}) exceeded`);
|
|
180
|
+
}
|
|
41
181
|
if (Array.isArray(node)) {
|
|
42
|
-
return node.map((item) => this._inlineRefs(item, defs, activeRefs));
|
|
182
|
+
return node.map((item) => this._inlineRefs(item, defs, activeRefs, depth + 1));
|
|
43
183
|
}
|
|
44
184
|
if (node !== null && typeof node === "object") {
|
|
45
185
|
const obj = node;
|
|
@@ -53,9 +193,15 @@ export class SchemaConverter {
|
|
|
53
193
|
const resolved = this._resolveRef(refPath, defs);
|
|
54
194
|
// Track this ref as active during recursion
|
|
55
195
|
activeRefs.add(refPath);
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
196
|
+
try {
|
|
197
|
+
const result = this._inlineRefs(resolved, defs, activeRefs, depth + 1);
|
|
198
|
+
return result;
|
|
199
|
+
}
|
|
200
|
+
finally {
|
|
201
|
+
// [SC-2] Use try/finally so an exception mid-recursion doesn't
|
|
202
|
+
// leave activeRefs poisoned for subsequent sibling branches.
|
|
203
|
+
activeRefs.delete(refPath);
|
|
204
|
+
}
|
|
59
205
|
}
|
|
60
206
|
// Otherwise, recurse into each key (skip $defs)
|
|
61
207
|
const result = {};
|
|
@@ -63,7 +209,7 @@ export class SchemaConverter {
|
|
|
63
209
|
if (key === "$defs") {
|
|
64
210
|
continue;
|
|
65
211
|
}
|
|
66
|
-
result[key] = this._inlineRefs(value, defs, activeRefs);
|
|
212
|
+
result[key] = this._inlineRefs(value, defs, activeRefs, depth + 1);
|
|
67
213
|
}
|
|
68
214
|
return result;
|
|
69
215
|
}
|
|
@@ -75,6 +221,15 @@ export class SchemaConverter {
|
|
|
75
221
|
*
|
|
76
222
|
* Returns a deep copy of the resolved definition to avoid mutation.
|
|
77
223
|
* Throws Error if the ref format is invalid or the definition is not found.
|
|
224
|
+
*
|
|
225
|
+
* JS-specific hardening (mirrors apcore-toolkit's `PROTO_DENY_LIST` in
|
|
226
|
+
* `binding-parser.ts`): reject ref segments that resolve to dangerous
|
|
227
|
+
* prototype-chain keys (`__proto__`, `constructor`, `prototype`). Without
|
|
228
|
+
* this guard, `defs[name]` would return values from `Object.prototype`
|
|
229
|
+
* even when the user supplied no matching definition, enabling prototype
|
|
230
|
+
* pollution / unexpected schema resolution. This deny-list has no Python
|
|
231
|
+
* counterpart because Python's attribute lookups are not affected by this
|
|
232
|
+
* vulnerability class.
|
|
78
233
|
*/
|
|
79
234
|
_resolveRef(refPath, defs) {
|
|
80
235
|
const prefix = "#/$defs/";
|
|
@@ -85,6 +240,15 @@ export class SchemaConverter {
|
|
|
85
240
|
if (!name) {
|
|
86
241
|
throw new Error(`Invalid $ref format: ${refPath}`);
|
|
87
242
|
}
|
|
243
|
+
// [SC-PROTO] Reject prototype-pollution segments before key lookup.
|
|
244
|
+
if (PROTO_DENY_LIST.has(name)) {
|
|
245
|
+
throw new Error(`$ref not found: ${refPath}`);
|
|
246
|
+
}
|
|
247
|
+
// Use Object.prototype.hasOwnProperty.call to guarantee we never read
|
|
248
|
+
// inherited keys (defense-in-depth alongside PROTO_DENY_LIST above).
|
|
249
|
+
if (!Object.prototype.hasOwnProperty.call(defs, name)) {
|
|
250
|
+
throw new Error(`$ref not found: ${refPath}`);
|
|
251
|
+
}
|
|
88
252
|
const definition = defs[name];
|
|
89
253
|
if (definition === undefined) {
|
|
90
254
|
throw new Error(`$ref not found: ${refPath}`);
|
|
@@ -97,14 +261,26 @@ export class SchemaConverter {
|
|
|
97
261
|
*
|
|
98
262
|
* - Empty schema -> `{ type: "object", properties: {} }`
|
|
99
263
|
* - Schema without `type` -> adds `type: "object"`
|
|
264
|
+
* - Schema with non-object `type` but defining `properties` -> forces
|
|
265
|
+
* `type: "object"` to keep cross-language parity with Python/Rust [D11-4].
|
|
100
266
|
*/
|
|
101
267
|
_ensureObjectType(schema) {
|
|
102
268
|
// Empty schema (no keys)
|
|
103
269
|
if (Object.keys(schema).length === 0) {
|
|
104
270
|
return { type: "object", properties: {} };
|
|
105
271
|
}
|
|
106
|
-
// If type is already set,
|
|
272
|
+
// If type is already set, only upgrade when `properties` is present but
|
|
273
|
+
// the current type is not object-compatible (Python/Rust parity).
|
|
107
274
|
if (schema["type"] !== undefined) {
|
|
275
|
+
const hasProperties = schema !== null &&
|
|
276
|
+
typeof schema === "object" &&
|
|
277
|
+
"properties" in schema;
|
|
278
|
+
const typeValue = schema["type"];
|
|
279
|
+
const typeIsObject = typeValue === "object" ||
|
|
280
|
+
(Array.isArray(typeValue) && typeValue.includes("object"));
|
|
281
|
+
if (hasProperties && !typeIsObject) {
|
|
282
|
+
schema["type"] = "object";
|
|
283
|
+
}
|
|
108
284
|
return schema;
|
|
109
285
|
}
|
|
110
286
|
// Add type: "object" if missing
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/adapters/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/adapters/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH;;;;;GAKG;AACH,MAAM,aAAa,GAAG,EAAE,CAAC;AAEzB;;;;;;GAMG;AACH,MAAM,eAAe,GAAwB,IAAI,GAAG,CAAC;IACnD,WAAW;IACX,aAAa;IACb,WAAW;CACZ,CAAC,CAAC;AAEH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACH,kBAAkB,CAChB,UAA4B,EAC5B,OAA8B;QAE9B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC9D,CAAC;IAED;;OAEG;IACH,mBAAmB,CACjB,UAA4B,EAC5B,OAA8B;QAE9B,OAAO,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,MAAkB,EAAE,OAA8B;QAC/D,2CAA2C;QAC3C,MAAM,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QAEvC,2CAA2C;QAC3C,MAAM,IAAI,GAAI,MAAM,CAAC,OAAO,CAAgC,IAAI,EAAE,CAAC;QACnE,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC;QAEvB,2DAA2D;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,GAAG,EAAU,EAAE,CAAC,CAAe,CAAC;QAEnF,iDAAiD;QACjD,MAAM,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAEnD,qEAAqE;QACrE,gEAAgE;QAChE,mEAAmE;QACnE,gCAAgC;QAChC,MAAM,MAAM,GAAG,OAAO,EAAE,MAAM,IAAI,IAAI,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,OAAO,IAAI,CAAC,YAAY,CAAC,UAAU,CAAe,CAAC;QACrD,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAED;;;;;;;;;;;;OAYG;IACH,YAAY,CAAC,IAAa;QACxB,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QACrD,CAAC;QACD,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,GAAG,GAAG,IAA+B,CAAC;QAC5C,MAAM,MAAM,GAA4B,EAAE,GAAG,GAAG,EAAE,CAAC;QAEnD,oCAAoC;QACpC,IAAI,YAAY,IAAI,MAAM,IAAI,MAAM,CAAC,UAAU,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;YACvI,MAAM,KAAK,GAAG,MAAM,CAAC,UAAqC,CAAC;YAC3D,MAAM,QAAQ,GAA4B,EAAE,CAAC;YAC7C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC/B,CAAC;QACD,IAAI,mBAAmB,IAAI,MAAM,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,iBAAiB,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACnK,MAAM,EAAE,GAAG,MAAM,CAAC,iBAA4C,CAAC;YAC/D,MAAM,KAAK,GAA4B,EAAE,CAAC;YAC1C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;gBACxC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAClC,CAAC;YACD,MAAM,CAAC,iBAAiB,GAAG,KAAK,CAAC;QACnC,CAAC;QACD,IAAI,OAAO,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YACnH,MAAM,IAAI,GAAG,MAAM,CAAC,KAAgC,CAAC;YACrD,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,KAAK,GAAG,OAAO,CAAC;QACzB,CAAC;QACD,IAAI,aAAa,IAAI,MAAM,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC;YAC3I,MAAM,IAAI,GAAG,MAAM,CAAC,WAAsC,CAAC;YAC3D,MAAM,OAAO,GAA4B,EAAE,CAAC;YAC5C,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YACpC,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,OAAO,CAAC;QAC/B,CAAC;QACD,IAAI,OAAO,IAAI,MAAM,EAAE,CAAC;YACtB,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjD,CAAC;QACD,IAAI,sBAAsB,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,oBAAoB,KAAK,QAAQ,IAAI,MAAM,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;YAChI,MAAM,CAAC,oBAAoB,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;QAC/E,CAAC;QACD,IAAI,KAAK,IAAI,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAU,EAAE,CAAC;YACvD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC/B,MAAM,CAAC,GAAG,CAAC,GAAI,MAAM,CAAC,GAAG,CAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;QACD,KAAK,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAU,EAAE,CAAC;YAClD,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;gBAClB,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,yEAAyE;QACzE,kEAAkE;QAClE,KAAK,MAAM,GAAG,IAAI,CAAC,eAAe,EAAE,UAAU,CAAU,EAAE,CAAC;YACzD,IAAI,GAAG,IAAI,MAAM,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC7E,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QACD,uEAAuE;QACvE,oCAAoC;QACpC,IAAI,aAAa,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC;YACpE,MAAM,CAAC,aAAa,CAAC,GAAI,MAAM,CAAC,aAAa,CAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC;QAChG,CAAC;QAED,4CAA4C;QAC5C,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAC5B,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QACjF,IAAI,cAAc,GAAG,KAAK,CAAC;QAC3B,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1D,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YACxD,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,YAAY,IAAI,MAAM,EAAE,CAAC;YACzF,wDAAwD;YACxD,cAAc,GAAG,IAAI,CAAC;QACxB,CAAC;QAED,IAAI,cAAc,IAAI,CAAC,CAAC,sBAAsB,IAAI,MAAM,CAAC,EAAE,CAAC;YAC1D,MAAM,CAAC,sBAAsB,CAAC,GAAG,KAAK,CAAC;QACzC,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACH,WAAW,CACT,IAAa,EACb,IAAgC,EAChC,UAAuB,EACvB,QAAgB,CAAC;QAEjB,8DAA8D;QAC9D,IAAI,KAAK,GAAG,aAAa,EAAE,CAAC;YAC1B,MAAM,IAAI,KAAK,CACb,mCAAmC,aAAa,YAAY,CAC7D,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACvB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CACpD,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC9C,MAAM,GAAG,GAAG,IAA+B,CAAC;YAE5C,uCAAuC;YACvC,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACpC,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;gBAE5B,6BAA6B;gBAC7B,IAAI,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC5B,MAAM,IAAI,KAAK,CAAC,2BAA2B,OAAO,EAAE,CAAC,CAAC;gBACxD,CAAC;gBAED,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;gBAEjD,4CAA4C;gBAC5C,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC;oBACH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;oBACvE,OAAO,MAAM,CAAC;gBAChB,CAAC;wBAAS,CAAC;oBACT,+DAA+D;oBAC/D,6DAA6D;oBAC7D,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YAED,gDAAgD;YAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;YAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/C,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;oBACpB,SAAS;gBACX,CAAC;gBACD,MAAM,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YACrE,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,oCAAoC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;OAcG;IACH,WAAW,CACT,OAAe,EACf,IAAgC;QAEhC,MAAM,MAAM,GAAG,UAAU,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,KAAK,CAAC,wBAAwB,OAAO,EAAE,CAAC,CAAC;QACrD,CAAC;QAED,oEAAoE;QACpE,IAAI,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9B,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,sEAAsE;QACtE,qEAAqE;QACrE,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YACtD,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,UAAU,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,8CAA8C;QAC9C,OAAO,eAAe,CAAC,UAAU,CAAC,CAAC;IACrC,CAAC;IAED;;;;;;;OAOG;IACH,iBAAiB,CAAC,MAAkB;QAClC,yBAAyB;QACzB,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5C,CAAC;QAED,wEAAwE;QACxE,kEAAkE;QAClE,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,SAAS,EAAE,CAAC;YACjC,MAAM,aAAa,GACjB,MAAM,KAAK,IAAI;gBACf,OAAO,MAAM,KAAK,QAAQ;gBAC1B,YAAY,IAAI,MAAM,CAAC;YACzB,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;YACjC,MAAM,YAAY,GAChB,SAAS,KAAK,QAAQ;gBACtB,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC7D,IAAI,aAAa,IAAI,CAAC,YAAY,EAAE,CAAC;gBACnC,MAAM,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YAC5B,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,gCAAgC;QAChC,OAAO,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC;IACvC,CAAC;CACF"}
|
package/dist/apcore-mcp.d.ts
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
import type { RegistryOrExecutor, Registry, Executor, OpenAIToolDef } from "./types.js";
|
|
29
29
|
import type { Authenticator } from "./auth/types.js";
|
|
30
30
|
import type { MetricsExporter } from "./server/transport.js";
|
|
31
|
+
import type { ObservabilityFlag } from "./server/observability.js";
|
|
31
32
|
import type { AsyncServeApp, ToOpenaiToolsOptions } from "./index.js";
|
|
32
33
|
/** Options for the APCoreMCP constructor. */
|
|
33
34
|
export interface APCoreMCPOptions {
|
|
@@ -43,8 +44,16 @@ export interface APCoreMCPOptions {
|
|
|
43
44
|
logLevel?: "DEBUG" | "INFO" | "WARNING" | "ERROR" | "CRITICAL";
|
|
44
45
|
/** Enable input validation against schemas. Default: false */
|
|
45
46
|
validateInputs?: boolean;
|
|
46
|
-
/** Optional MetricsCollector for Prometheus /metrics endpoint. */
|
|
47
|
-
metricsCollector?: MetricsExporter;
|
|
47
|
+
/** Optional MetricsCollector for Prometheus /metrics endpoint. Pass `true` to auto-instantiate. */
|
|
48
|
+
metricsCollector?: MetricsExporter | boolean;
|
|
49
|
+
/** Enable the full observability stack (metrics + usage middleware). */
|
|
50
|
+
observability?: ObservabilityFlag;
|
|
51
|
+
/** Async Task Bridge configuration (F-043). */
|
|
52
|
+
async?: boolean | {
|
|
53
|
+
enabled?: boolean;
|
|
54
|
+
maxConcurrent?: number;
|
|
55
|
+
maxTasks?: number;
|
|
56
|
+
};
|
|
48
57
|
/** Optional authenticator for request authentication (HTTP transports only). */
|
|
49
58
|
authenticator?: Authenticator;
|
|
50
59
|
/** If true (default), unauthenticated requests are rejected with 401. */
|
|
@@ -57,7 +66,20 @@ export interface APCoreMCPOptions {
|
|
|
57
66
|
* Optional function that formats execution results into text for LLM consumption.
|
|
58
67
|
* When undefined, results are serialised with `JSON.stringify(result)`.
|
|
59
68
|
*/
|
|
60
|
-
outputFormatter?: (result: Record<string, unknown>) => string;
|
|
69
|
+
outputFormatter?: (result: Record<string, unknown> | Array<unknown>) => string;
|
|
70
|
+
/**
|
|
71
|
+
* Optional list of apcore `Middleware` instances to install on the Executor
|
|
72
|
+
* via `executor.use()`. Appended to any middleware declared under Config
|
|
73
|
+
* Bus key `mcp.middleware`. Chain execution order is controlled by
|
|
74
|
+
* `Middleware.priority`, not insertion order.
|
|
75
|
+
*/
|
|
76
|
+
middleware?: unknown[];
|
|
77
|
+
/**
|
|
78
|
+
* Optional apcore `ACL` instance to install via `executor.setAcl()`.
|
|
79
|
+
* When omitted, the bridge falls back to any ACL declared under Config
|
|
80
|
+
* Bus key `mcp.acl`. Caller-supplied ACL takes precedence over Config Bus.
|
|
81
|
+
*/
|
|
82
|
+
acl?: unknown;
|
|
61
83
|
}
|
|
62
84
|
/** Options for APCoreMCP.serve() (transport + lifecycle subset). */
|
|
63
85
|
export interface APCoreMCPServeOptions {
|
package/dist/apcore-mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apcore-mcp.d.ts","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,KAAK,EACV,kBAAkB,EAClB,QAAQ,EACR,QAAQ,EACR,aAAa,EACd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"apcore-mcp.d.ts","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"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"}
|
package/dist/apcore-mcp.js
CHANGED
|
@@ -117,6 +117,8 @@ export class APCoreMCP {
|
|
|
117
117
|
onStartup: overrides.onStartup,
|
|
118
118
|
onShutdown: overrides.onShutdown,
|
|
119
119
|
metricsCollector: this._options.metricsCollector,
|
|
120
|
+
observability: this._options.observability,
|
|
121
|
+
async: this._options.async,
|
|
120
122
|
explorer: overrides.explorer,
|
|
121
123
|
explorerPrefix: overrides.explorerPrefix,
|
|
122
124
|
allowExecute: overrides.allowExecute,
|
|
@@ -128,6 +130,8 @@ export class APCoreMCP {
|
|
|
128
130
|
exemptPaths: this._options.exemptPaths,
|
|
129
131
|
approvalHandler: this._options.approvalHandler,
|
|
130
132
|
outputFormatter: this._options.outputFormatter,
|
|
133
|
+
middleware: this._options.middleware,
|
|
134
|
+
acl: this._options.acl,
|
|
131
135
|
};
|
|
132
136
|
}
|
|
133
137
|
/**
|
|
@@ -187,6 +191,8 @@ export class APCoreMCP {
|
|
|
187
191
|
prefix: this._options.prefix,
|
|
188
192
|
logLevel: this._options.logLevel,
|
|
189
193
|
metricsCollector: this._options.metricsCollector,
|
|
194
|
+
observability: this._options.observability,
|
|
195
|
+
async: this._options.async,
|
|
190
196
|
explorer: options.explorer,
|
|
191
197
|
explorerPrefix: options.explorerPrefix,
|
|
192
198
|
allowExecute: options.allowExecute,
|
|
@@ -199,6 +205,8 @@ export class APCoreMCP {
|
|
|
199
205
|
approvalHandler: this._options.approvalHandler,
|
|
200
206
|
endpoint: options.endpoint,
|
|
201
207
|
outputFormatter: this._options.outputFormatter,
|
|
208
|
+
middleware: this._options.middleware,
|
|
209
|
+
acl: this._options.acl,
|
|
202
210
|
};
|
|
203
211
|
return asyncServe(backend, asyncOpts);
|
|
204
212
|
}
|
package/dist/apcore-mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apcore-mcp.js","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;
|
|
1
|
+
{"version":3,"file":"apcore-mcp.js","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"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"}
|