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.
Files changed (120) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +246 -19
  3. package/dist/acl-builder.d.ts +43 -0
  4. package/dist/acl-builder.d.ts.map +1 -0
  5. package/dist/acl-builder.js +115 -0
  6. package/dist/acl-builder.js.map +1 -0
  7. package/dist/adapters/annotations.d.ts.map +1 -1
  8. package/dist/adapters/annotations.js +23 -2
  9. package/dist/adapters/annotations.js.map +1 -1
  10. package/dist/adapters/errors.d.ts +37 -0
  11. package/dist/adapters/errors.d.ts.map +1 -1
  12. package/dist/adapters/errors.js +213 -17
  13. package/dist/adapters/errors.js.map +1 -1
  14. package/dist/adapters/id-normalizer.d.ts +41 -0
  15. package/dist/adapters/id-normalizer.d.ts.map +1 -0
  16. package/dist/adapters/id-normalizer.js +56 -0
  17. package/dist/adapters/id-normalizer.js.map +1 -0
  18. package/dist/adapters/index.d.ts +2 -2
  19. package/dist/adapters/index.d.ts.map +1 -1
  20. package/dist/adapters/index.js +2 -2
  21. package/dist/adapters/index.js.map +1 -1
  22. package/dist/adapters/{mcpErrorFormatter.d.ts → mcp-error-formatter.d.ts} +1 -1
  23. package/dist/adapters/mcp-error-formatter.d.ts.map +1 -0
  24. package/dist/adapters/{mcpErrorFormatter.js → mcp-error-formatter.js} +1 -1
  25. package/dist/adapters/mcp-error-formatter.js.map +1 -0
  26. package/dist/adapters/schema.d.ts +32 -4
  27. package/dist/adapters/schema.d.ts.map +1 -1
  28. package/dist/adapters/schema.js +190 -14
  29. package/dist/adapters/schema.js.map +1 -1
  30. package/dist/apcore-mcp.d.ts +25 -3
  31. package/dist/apcore-mcp.d.ts.map +1 -1
  32. package/dist/apcore-mcp.js +8 -0
  33. package/dist/apcore-mcp.js.map +1 -1
  34. package/dist/auth/hooks.d.ts +1 -1
  35. package/dist/auth/hooks.d.ts.map +1 -1
  36. package/dist/auth/hooks.js +10 -3
  37. package/dist/auth/hooks.js.map +1 -1
  38. package/dist/auth/index.d.ts +7 -0
  39. package/dist/auth/index.d.ts.map +1 -1
  40. package/dist/auth/index.js +7 -0
  41. package/dist/auth/index.js.map +1 -1
  42. package/dist/auth/jwt.d.ts +1 -2
  43. package/dist/auth/jwt.d.ts.map +1 -1
  44. package/dist/auth/jwt.js +22 -11
  45. package/dist/auth/jwt.js.map +1 -1
  46. package/dist/auth/types.d.ts +6 -3
  47. package/dist/auth/types.d.ts.map +1 -1
  48. package/dist/cli.d.ts.map +1 -1
  49. package/dist/cli.js +21 -1
  50. package/dist/cli.js.map +1 -1
  51. package/dist/config.d.ts.map +1 -1
  52. package/dist/config.js +6 -0
  53. package/dist/config.js.map +1 -1
  54. package/dist/constants.d.ts +37 -0
  55. package/dist/constants.d.ts.map +1 -0
  56. package/dist/constants.js +43 -0
  57. package/dist/constants.js.map +1 -0
  58. package/dist/converters/openai.d.ts +22 -0
  59. package/dist/converters/openai.d.ts.map +1 -1
  60. package/dist/converters/openai.js +128 -8
  61. package/dist/converters/openai.js.map +1 -1
  62. package/dist/index.d.ts +62 -7
  63. package/dist/index.d.ts.map +1 -1
  64. package/dist/index.js +329 -108
  65. package/dist/index.js.map +1 -1
  66. package/dist/markdown.d.ts +54 -0
  67. package/dist/markdown.d.ts.map +1 -0
  68. package/dist/markdown.js +125 -0
  69. package/dist/markdown.js.map +1 -0
  70. package/dist/middleware-builder.d.ts +41 -0
  71. package/dist/middleware-builder.d.ts.map +1 -0
  72. package/dist/middleware-builder.js +129 -0
  73. package/dist/middleware-builder.js.map +1 -0
  74. package/dist/server/async-task-bridge.d.ts +228 -0
  75. package/dist/server/async-task-bridge.d.ts.map +1 -0
  76. package/dist/server/async-task-bridge.js +579 -0
  77. package/dist/server/async-task-bridge.js.map +1 -0
  78. package/dist/server/context.d.ts +17 -2
  79. package/dist/server/context.d.ts.map +1 -1
  80. package/dist/server/context.js +29 -6
  81. package/dist/server/context.js.map +1 -1
  82. package/dist/server/factory.d.ts +57 -3
  83. package/dist/server/factory.d.ts.map +1 -1
  84. package/dist/server/factory.js +179 -9
  85. package/dist/server/factory.js.map +1 -1
  86. package/dist/server/listener.d.ts +3 -0
  87. package/dist/server/listener.d.ts.map +1 -1
  88. package/dist/server/listener.js +13 -2
  89. package/dist/server/listener.js.map +1 -1
  90. package/dist/server/observability.d.ts +51 -0
  91. package/dist/server/observability.d.ts.map +1 -0
  92. package/dist/server/observability.js +96 -0
  93. package/dist/server/observability.js.map +1 -0
  94. package/dist/server/router.d.ts +103 -3
  95. package/dist/server/router.d.ts.map +1 -1
  96. package/dist/server/router.js +289 -25
  97. package/dist/server/router.js.map +1 -1
  98. package/dist/server/trace-context.d.ts +40 -0
  99. package/dist/server/trace-context.d.ts.map +1 -0
  100. package/dist/server/trace-context.js +67 -0
  101. package/dist/server/trace-context.js.map +1 -0
  102. package/dist/server/transport.d.ts +47 -1
  103. package/dist/server/transport.d.ts.map +1 -1
  104. package/dist/server/transport.js +147 -4
  105. package/dist/server/transport.js.map +1 -1
  106. package/dist/types.d.ts +16 -5
  107. package/dist/types.d.ts.map +1 -1
  108. package/dist/types.js +12 -0
  109. package/dist/types.js.map +1 -1
  110. package/package.json +11 -8
  111. package/dist/adapters/idNormalizer.d.ts +0 -22
  112. package/dist/adapters/idNormalizer.d.ts.map +0 -1
  113. package/dist/adapters/idNormalizer.js +0 -30
  114. package/dist/adapters/idNormalizer.js.map +0 -1
  115. package/dist/adapters/mcpErrorFormatter.d.ts.map +0 -1
  116. package/dist/adapters/mcpErrorFormatter.js.map +0 -1
  117. package/dist/server/index.d.ts +0 -11
  118. package/dist/server/index.d.ts.map +0 -1
  119. package/dist/server/index.js +0 -8
  120. 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"}
@@ -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 "./idNormalizer.js";
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 "./mcpErrorFormatter.js";
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,mBAAmB,CAAC;AACvD,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,wBAAwB,CAAC"}
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"}
@@ -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 "./idNormalizer.js";
7
+ export { ModuleIDNormalizer } from "./id-normalizer.js";
8
8
  export { ElicitationApprovalHandler } from "./approval.js";
9
- export { McpErrorFormatter, registerMcpFormatter } from "./mcpErrorFormatter.js";
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,mBAAmB,CAAC;AACvD,OAAO,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC"}
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=mcpErrorFormatter.d.ts.map
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"}
@@ -27,4 +27,4 @@ export async function registerMcpFormatter() {
27
27
  // ErrorFormatterRegistry not available in this apcore-js version
28
28
  }
29
29
  }
30
- //# sourceMappingURL=mcpErrorFormatter.js.map
30
+ //# sourceMappingURL=mcp-error-formatter.js.map
@@ -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>): unknown;
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,CAAC,UAAU,EAAE,gBAAgB,GAAG,UAAU;IAI5D;;OAEG;IACH,mBAAmB,CAAC,UAAU,EAAE,gBAAgB,GAAG,UAAU;IAI7D;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,UAAU;IAe9C;;;;;OAKG;IACH,WAAW,CACT,IAAI,EAAE,OAAO,EACb,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EAChC,UAAU,EAAE,GAAG,CAAC,MAAM,CAAC,GACtB,OAAO;IA0CV;;;;;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"}
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"}
@@ -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
- return this._ensureObjectType(inlined);
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
- const result = this._inlineRefs(resolved, defs, activeRefs);
57
- activeRefs.delete(refPath);
58
- return result;
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, return as-is
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":"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"}
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"}
@@ -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 {
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-mcp.d.ts","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apcore-mcp.d.ts","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"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"}
@@ -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
  }
@@ -1 +1 @@
1
- {"version":3,"file":"apcore-mcp.js","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apcore-mcp.js","sourceRoot":"","sources":["../src/apcore-mcp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAWH,OAAO,EACL,KAAK,EACL,UAAU,EACV,aAAa,EACb,eAAe,GAChB,MAAM,YAAY,CAAC;AAoGpB,MAAM,OAAO,SAAS;IACZ,QAAQ,CAA4B;IAC3B,QAAQ,CAAmB;IACpC,SAAS,CAAuB;IAChC,SAAS,CAAuB;IACvB,cAAc,CAAqB;IAEpD;;;;;;OAMG;IACH,YACE,sBAAmD,EACnD,UAA4B,EAAE;QAE9B,mBAAmB;QACnB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,YAAY,CAAC;QAC1C,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;gBAC/B,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC7B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;QACH,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3F,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;QAC1D,CAAC;QAED,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,GAAG,OAAO,EAAE,CAAC;QAErC,IAAI,OAAO,sBAAsB,KAAK,QAAQ,EAAE,CAAC;YAC/C,yDAAyD;YACzD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;YACrB,IAAI,CAAC,cAAc,GAAG,sBAAsB,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,sBAAsB,CAAC;YACvC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;QAClC,CAAC;IACH,CAAC;IAED,sCAAsC;IACtC,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC;gBAC3B,IAAI,CAAC,SAAS,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,CAAC;iBAAM,CAAC;gBACN,MAAM,IAAI,KAAK,CACb,iEAAiE;oBACjE,iDAAiD,CAClD,CAAC;YACJ,CAAC;QACH,CAAC;QACD,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,wDAAwD;IACxD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,oEAAoE;IACpE,IAAI,KAAK;QACP,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS;YACrC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS;SAC1C,CAAC,CAAC;QACH,2FAA2F;QAC3F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACnC,IAAI,OAAO,MAAM,CAAC,CAAC,CAAC,KAAK,QAAQ;YAAE,OAAO,MAAkB,CAAC;QAC7D,OAAQ,MAAiD,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,YAAmC,EAAE;QAC9D,OAAO;YACL,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc;YAC5C,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,SAAS,EAAE,SAAS,CAAC,SAAS;YAC9B,UAAU,EAAE,SAAS,CAAC,UAAU;YAChC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;YAChD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC1C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,cAAc,EAAE,SAAS,CAAC,cAAc;YACxC,YAAY,EAAE,SAAS,CAAC,YAAY;YACpC,aAAa,EAAE,SAAS,CAAC,aAAa;YACtC,mBAAmB,EAAE,SAAS,CAAC,mBAAmB;YAClD,kBAAkB,EAAE,SAAS,CAAC,kBAAkB;YAChD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC1C,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;YACtC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;YACtC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC9C,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC9C,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YACpC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;SACvB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,eAAe;QAC3B,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAC,QAAQ,CAAC;QAEjD,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,CAAC;YACH,8DAA8D;YAC9D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,WAAW,CAAQ,CAAC;YAChD,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC;YAClE,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,EAAE,aAAa,EAAE,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAC3E,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC5C,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC5B,CAAC;YACD,IAAI,CAAC,SAAS,GAAG,QAAoB,CAAC;YACtC,IAAI,CAAC,QAAQ,GAAG,QAA8B,CAAC;YAC/C,OAAO,QAAQ,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,IAAI,KAAK,CACb,kDAAkD,IAAI,CAAC,cAAc,KAAK;gBAC1E,kDAAkD,GAAG,EAAE,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,KAAK,CAAC,UAAiC,EAAE;QAC7C,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAC7C,MAAM,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;IACzD,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,UAAU,CAAC,UAAsC,EAAE;QACvD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;QAE7C,MAAM,SAAS,GAAsB;YACnC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO;YAC9B,cAAc,EAAE,IAAI,CAAC,QAAQ,CAAC,cAAc;YAC5C,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI;YACxB,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;YAChC,gBAAgB,EAAE,IAAI,CAAC,QAAQ,CAAC,gBAAgB;YAChD,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC1C,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK;YAC1B,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,kBAAkB,EAAE,OAAO,CAAC,kBAAkB;YAC9C,aAAa,EAAE,IAAI,CAAC,QAAQ,CAAC,aAAa;YAC1C,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;YACtC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW;YACtC,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC9C,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,eAAe,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe;YAC9C,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU;YACpC,GAAG,EAAE,IAAI,CAAC,QAAQ,CAAC,GAAG;SACvB,CAAC;QAEF,OAAO,UAAU,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,aAAa,CAAC,UAAgC,EAAE;QAC9C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,OAAO,aAAa,CAAC,GAAG,EAAE;YACxB,GAAG,OAAO;YACV,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,SAAS;YACrC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,SAAS;SAC1C,CAAC,CAAC;IACL,CAAC;CACF"}