@vinkius-core/mcp-fusion 1.3.0 → 1.4.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/CHANGELOG.md +33 -0
- package/README.md +2 -0
- package/dist/framework/builder/GroupedToolBuilder.d.ts +15 -1
- package/dist/framework/builder/GroupedToolBuilder.d.ts.map +1 -1
- package/dist/framework/builder/GroupedToolBuilder.js +15 -0
- package/dist/framework/builder/GroupedToolBuilder.js.map +1 -1
- package/dist/framework/index.d.ts +1 -1
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/server/ExpositionCompiler.d.ts +60 -0
- package/dist/framework/server/ExpositionCompiler.d.ts.map +1 -0
- package/dist/framework/server/ExpositionCompiler.js +251 -0
- package/dist/framework/server/ExpositionCompiler.js.map +1 -0
- package/dist/framework/server/ExpositionTypes.d.ts +58 -0
- package/dist/framework/server/ExpositionTypes.d.ts.map +1 -0
- package/dist/framework/server/ExpositionTypes.js +11 -0
- package/dist/framework/server/ExpositionTypes.js.map +1 -0
- package/dist/framework/server/ServerAttachment.d.ts +41 -2
- package/dist/framework/server/ServerAttachment.d.ts.map +1 -1
- package/dist/framework/server/ServerAttachment.js +93 -5
- package/dist/framework/server/ServerAttachment.js.map +1 -1
- package/dist/framework/server/index.d.ts +2 -0
- package/dist/framework/server/index.d.ts.map +1 -1
- package/dist/framework/server/index.js +1 -0
- package/dist/framework/server/index.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/llms.txt +28 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,39 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [1.4.0] - 2026-02-23
|
|
9
|
+
|
|
10
|
+
### 🔀 Tool Exposition Strategies — Flat vs Grouped Topology Compiler
|
|
11
|
+
|
|
12
|
+
Two first-class exposition strategies for the same codebase: **flat** (one MCP tool per action — precision at action level) and **grouped** (one MCP tool per builder with discriminator enum — density at scale). Choose at attach time with `toolExposition: 'flat' | 'grouped'`. Same handlers, different wire format.
|
|
13
|
+
|
|
14
|
+
### Added
|
|
15
|
+
|
|
16
|
+
- **`ExpositionCompiler`:** New compile-time topology compiler that transforms builder action graphs into either flat atomic tools or grouped discriminator tools. Builds an O(1) routing map for flat mode dispatch.
|
|
17
|
+
- **`toolExposition` option in `AttachOptions`:** `'flat'` (default) expands each action into an independent MCP tool with isolated schema and annotations. `'grouped'` preserves the single-tool discriminator pattern.
|
|
18
|
+
- **`actionSeparator` option in `AttachOptions`:** Controls flat tool naming convention (default `'_'`). `projects` + `list` → `projects_list`.
|
|
19
|
+
- **MCP Annotation Refinement (`buildAtomicAnnotations`):** Annotations now follow correct MCP spec semantics:
|
|
20
|
+
- Read-only actions → `{ readOnlyHint: true, destructiveHint: false }` (derived: read-only is never destructive)
|
|
21
|
+
- Destructive actions → `{ destructiveHint: true }` (`readOnlyHint` omitted — spec default is `false`)
|
|
22
|
+
- Normal actions → `{ destructiveHint: false }` (overrides spec default of `true` to prevent unnecessary safety warnings in Claude Desktop/Cursor)
|
|
23
|
+
- `readOnlyHint: false` is never emitted (matches spec default)
|
|
24
|
+
- **Flat mode description synthesis:** Auto-generated descriptions tagged with `[READ-ONLY]` or `[DESTRUCTIVE]` prefixes, plus origin trail `(builder → action)`.
|
|
25
|
+
- **Flat mode StateSync integration:** Canonical dot-notation keys (`projects.create`) translate to/from flat wire names (`projects_create`) transparently.
|
|
26
|
+
|
|
27
|
+
### Documentation
|
|
28
|
+
- **New "Tool Exposition" page:** Stripe/Vercel-quality guide covering both strategies as equal peers, real-world SaaS admin example (10-action grouped), token math comparison, MCP annotation semantics callout, O(1) dispatch explanation, and decision guide table.
|
|
29
|
+
- **VitePress sidebar:** Added Tool Exposition under Core Concepts.
|
|
30
|
+
- **API Reference:** Updated `AttachOptions` with `toolExposition` and `actionSeparator` fields, added `ToolExposition` and `ExpositionConfig` type sections.
|
|
31
|
+
- **Routing page:** Cross-reference to Tool Exposition guide.
|
|
32
|
+
- **README:** Tool Exposition row in capability matrix and Learn by Doing guides table.
|
|
33
|
+
- **llms.txt:** Tool Exposition section with both strategies, MCP annotation semantics, and updated `AttachOptions` type.
|
|
34
|
+
|
|
35
|
+
### Test Suite
|
|
36
|
+
- **48 new tests** across 2 new test files:
|
|
37
|
+
- `ToolExposition.test.ts` — 21 tests covering flat compilation, grouped passthrough, annotation isolation, hierarchical group expansion, multi-builder merging, separator customization, single-action builders.
|
|
38
|
+
- `ToolExpositionSadPath.test.ts` — 27 sad-path tests covering builder-with-no-actions, empty separator, name collisions, schema shadowing, empty iterables, incorrect tool naming, mode confusion, detach/re-attach, late registration, custom discriminators, exception handling.
|
|
39
|
+
- **Test count:** 1,342 tests across 60 files, all passing.
|
|
40
|
+
|
|
8
41
|
## [1.3.0] - 2026-02-22
|
|
9
42
|
|
|
10
43
|
### 🔠Native OpenTelemetry-Compatible Tracing
|
package/README.md
CHANGED
|
@@ -395,6 +395,7 @@ After `buildToolDefinition()`, the builder is permanently frozen. `Object.freeze
|
|
|
395
395
|
| **Tag Filtering** | Context gating — control what the LLM sees per session |
|
|
396
396
|
| **Observability** | Debug observers with zero-overhead typed event system |
|
|
397
397
|
| **Introspection API** | Runtime metadata for compliance audits |
|
|
398
|
+
| **Tool Exposition** | `'flat'` or `'grouped'` — decouple authoring topology from wire format |
|
|
398
399
|
| **Freeze-After-Build** | `Object.freeze()` — immutability after registration |
|
|
399
400
|
| **Duck-Typed Server** | Works with `Server` and `McpServer` — zero coupling |
|
|
400
401
|
|
|
@@ -415,6 +416,7 @@ After `buildToolDefinition()`, the builder is permanently frozen. `Object.freeze
|
|
|
415
416
|
| 📈 **[Scaling](docs/scaling.md)** | Tag filtering, TOON, hierarchical groups at scale |
|
|
416
417
|
| 🧠**[State Sync](docs/state-sync.md)** | Prevent temporal blindness with cache signals |
|
|
417
418
|
| 🔠**[Observability](docs/observability.md)** | Zero-overhead debug observers with typed event system |
|
|
419
|
+
| 🔀 **[Tool Exposition](docs/tool-exposition.md)** | Flat vs grouped wire strategies — per-action isolation |
|
|
418
420
|
| 📖 **[API Reference](docs/api-reference.md)** | Complete typings and method reference |
|
|
419
421
|
|
|
420
422
|
---
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
*/
|
|
46
46
|
import { type ZodObject, type ZodRawShape } from 'zod';
|
|
47
47
|
import { type Tool as McpTool } from '@modelcontextprotocol/sdk/types.js';
|
|
48
|
-
import { type ToolResponse, type ToolBuilder, type ActionMetadata, type MiddlewareFn, type ActionConfig } from '../types.js';
|
|
48
|
+
import { type ToolResponse, type ToolBuilder, type ActionMetadata, type InternalAction, type MiddlewareFn, type ActionConfig } from '../types.js';
|
|
49
49
|
import { type DebugObserverFn } from '../observability/DebugObserver.js';
|
|
50
50
|
import { type FusionTracer } from '../observability/Tracing.js';
|
|
51
51
|
import { type ProgressSink } from '../execution/ProgressHelper.js';
|
|
@@ -496,6 +496,20 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
496
496
|
getTags(): string[];
|
|
497
497
|
/** Get all registered action keys (e.g. `["list", "create"]` or `["users.list", "users.ban"]`). */
|
|
498
498
|
getActionNames(): string[];
|
|
499
|
+
/** Get the discriminator field name (e.g. `"action"`). Used by the Exposition Compiler. */
|
|
500
|
+
getDiscriminator(): string;
|
|
501
|
+
/**
|
|
502
|
+
* Get all registered internal actions.
|
|
503
|
+
* Used by the Exposition Compiler for atomic tool expansion.
|
|
504
|
+
* @returns Read-only array of internal action definitions
|
|
505
|
+
*/
|
|
506
|
+
getActions(): readonly InternalAction<TContext>[];
|
|
507
|
+
/**
|
|
508
|
+
* Get the common schema shared across all actions.
|
|
509
|
+
* Used by the Exposition Compiler for schema purification.
|
|
510
|
+
* @returns The common Zod schema, or undefined if not set
|
|
511
|
+
*/
|
|
512
|
+
getCommonSchema(): ZodObject<ZodRawShape> | undefined;
|
|
499
513
|
/**
|
|
500
514
|
* Preview the exact MCP protocol payload that the LLM will receive.
|
|
501
515
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupedToolBuilder.d.ts","sourceRoot":"","sources":["../../../src/framework/builder/GroupedToolBuilder.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4CG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,EACH,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,cAAc,
|
|
1
|
+
{"version":3,"file":"GroupedToolBuilder.d.ts","sourceRoot":"","sources":["../../../src/framework/builder/GroupedToolBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -688,6 +688,21 @@ export class GroupedToolBuilder {
|
|
|
688
688
|
getTags() { return [...this._tags]; }
|
|
689
689
|
/** Get all registered action keys (e.g. `["list", "create"]` or `["users.list", "users.ban"]`). */
|
|
690
690
|
getActionNames() { return this._actions.map(a => a.key); }
|
|
691
|
+
// ── AST Reflection (Exposition Compiler) ─────────────
|
|
692
|
+
/** Get the discriminator field name (e.g. `"action"`). Used by the Exposition Compiler. */
|
|
693
|
+
getDiscriminator() { return this._discriminator; }
|
|
694
|
+
/**
|
|
695
|
+
* Get all registered internal actions.
|
|
696
|
+
* Used by the Exposition Compiler for atomic tool expansion.
|
|
697
|
+
* @returns Read-only array of internal action definitions
|
|
698
|
+
*/
|
|
699
|
+
getActions() { return this._actions; }
|
|
700
|
+
/**
|
|
701
|
+
* Get the common schema shared across all actions.
|
|
702
|
+
* Used by the Exposition Compiler for schema purification.
|
|
703
|
+
* @returns The common Zod schema, or undefined if not set
|
|
704
|
+
*/
|
|
705
|
+
getCommonSchema() { return this._commonSchema; }
|
|
691
706
|
/**
|
|
692
707
|
* Preview the exact MCP protocol payload that the LLM will receive.
|
|
693
708
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupedToolBuilder.js","sourceRoot":"","sources":["../../../src/framework/builder/GroupedToolBuilder.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GroupedToolBuilder.js","sourceRoot":"","sources":["../../../src/framework/builder/GroupedToolBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ export type { GroupConfigurator, ToolConfig, ActionDef, GroupDef } from './build
|
|
|
14
14
|
export type { ParamDef, ParamsMap, InferParams, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef, } from './builder/index.js';
|
|
15
15
|
export { ToolRegistry } from './registry/index.js';
|
|
16
16
|
export type { ToolFilter } from './registry/index.js';
|
|
17
|
-
export type { AttachOptions, DetachFn } from './server/index.js';
|
|
17
|
+
export type { AttachOptions, DetachFn, ToolExposition, ExpositionConfig } from './server/index.js';
|
|
18
18
|
export { generateToonDescription } from './schema/index.js';
|
|
19
19
|
export { progress } from './execution/index.js';
|
|
20
20
|
export type { ProgressEvent, ProgressSink } from './execution/index.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG5D,YAAY,EACR,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,YAAY,EAC5B,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EACR,QAAQ,EAAE,SAAS,EAAE,WAAW,EAChC,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,YAAY,EAAE,aAAa,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/framework/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AACjF,YAAY,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACpE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,aAAa,CAAC;AAC5C,YAAY,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AAG5D,YAAY,EACR,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,YAAY,EAC5B,YAAY,GACf,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AACpG,YAAY,EAAE,iBAAiB,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC7F,YAAY,EACR,QAAQ,EAAE,SAAS,EAAE,WAAW,EAChC,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,YAAY,EAAE,aAAa,GAC9B,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,YAAY,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAGnG,OAAO,EAAE,uBAAuB,EAAE,MAAM,mBAAmB,CAAC;AAG5D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAGxE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC5E,YAAY,EAAE,oBAAoB,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAGjG,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,YAAY,EAAE,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAGlH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,YAAY,EACR,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,GACvE,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGjG,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAChF,YAAY,EACR,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,GAC9D,MAAM,uBAAuB,CAAC;AAG/B,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAE,EAAE,EAAE,MAAM,sBAAsB,CAAC;AAC1C,YAAY,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAGhE,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,6BAA6B,EAAE,MAAM,0BAA0B,CAAC;AACzG,YAAY,EACR,mBAAmB,EAAE,eAAe,EACpC,oBAAoB,EAAE,YAAY,EAClC,cAAc,EAAE,iBAAiB,EACjC,6BAA6B,GAChC,MAAM,0BAA0B,CAAC"}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExpositionCompiler — Topology Compiler Engine
|
|
3
|
+
*
|
|
4
|
+
* Pure-function transformation module responsible for projecting
|
|
5
|
+
* the tool registry's abstract definitions onto the MCP protocol
|
|
6
|
+
* wire format based on the configured Exposition Strategy.
|
|
7
|
+
*
|
|
8
|
+
* - **flat**: Deterministically expands each action into an independent
|
|
9
|
+
* atomic MCP tool with isolated schema, description, and annotations.
|
|
10
|
+
*
|
|
11
|
+
* - **grouped**: Passthrough — yields the grouped tool definition unmodified.
|
|
12
|
+
*
|
|
13
|
+
* Also emits an O(1) dispatch map for constant-time request proxying
|
|
14
|
+
* during execution.
|
|
15
|
+
*
|
|
16
|
+
* Pure-function module: no state, no side effects.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
import { type Tool as McpTool } from '@modelcontextprotocol/sdk/types.js';
|
|
21
|
+
import { type ToolBuilder } from '../types.js';
|
|
22
|
+
import { type ToolExposition } from './ExpositionTypes.js';
|
|
23
|
+
/**
|
|
24
|
+
* Routing entry for the O(1) dispatch map.
|
|
25
|
+
*
|
|
26
|
+
* Maps a flat tool name (e.g. `projects_list`) back to its
|
|
27
|
+
* originating builder, the action key, and the discriminator field.
|
|
28
|
+
*/
|
|
29
|
+
export interface FlatRoute<TContext> {
|
|
30
|
+
/** The originating grouped builder */
|
|
31
|
+
readonly builder: ToolBuilder<TContext>;
|
|
32
|
+
/** Action key to inject as discriminator value (e.g. `"list"`) */
|
|
33
|
+
readonly actionKey: string;
|
|
34
|
+
/** Discriminator field name (e.g. `"action"`) */
|
|
35
|
+
readonly discriminator: string;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Result of the exposition compilation phase.
|
|
39
|
+
*
|
|
40
|
+
* Contains the protocol-facing tool definitions and the routing map
|
|
41
|
+
* for incoming flat tool calls.
|
|
42
|
+
*/
|
|
43
|
+
export interface ExpositionResult<TContext> {
|
|
44
|
+
/** MCP Tool definitions to expose in `tools/list` */
|
|
45
|
+
readonly tools: McpTool[];
|
|
46
|
+
/** O(1) dispatch map: flat tool name → route info */
|
|
47
|
+
readonly routingMap: Map<string, FlatRoute<TContext>>;
|
|
48
|
+
/** Whether flat mode is active (controls callHandler behavior) */
|
|
49
|
+
readonly isFlat: boolean;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Compile tool builders into the protocol-facing exposition format.
|
|
53
|
+
*
|
|
54
|
+
* @param builders - Iterable of registered tool builders
|
|
55
|
+
* @param exposition - Exposition strategy ('flat' or 'grouped')
|
|
56
|
+
* @param separator - Action separator for flat naming (default: '_')
|
|
57
|
+
* @returns Compiled tools and routing map
|
|
58
|
+
*/
|
|
59
|
+
export declare function compileExposition<TContext>(builders: Iterable<ToolBuilder<TContext>>, exposition?: ToolExposition, separator?: string): ExpositionResult<TContext>;
|
|
60
|
+
//# sourceMappingURL=ExpositionCompiler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpositionCompiler.d.ts","sourceRoot":"","sources":["../../../src/framework/server/ExpositionCompiler.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AACH,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAG1E,OAAO,EAAE,KAAK,WAAW,EAAuB,MAAM,aAAa,CAAC;AACpE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAI3D;;;;;GAKG;AACH,MAAM,WAAW,SAAS,CAAC,QAAQ;IAC/B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,kEAAkE;IAClE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,iDAAiD;IACjD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IACtC,qDAAqD;IACrD,QAAQ,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC;IAC1B,qDAAqD;IACrD,QAAQ,CAAC,UAAU,EAAE,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtD,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC5B;AAID;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EACtC,QAAQ,EAAE,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,EACzC,UAAU,GAAE,cAAuB,EACnC,SAAS,GAAE,MAAY,GACxB,gBAAgB,CAAC,QAAQ,CAAC,CAK5B"}
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExpositionCompiler — Topology Compiler Engine
|
|
3
|
+
*
|
|
4
|
+
* Pure-function transformation module responsible for projecting
|
|
5
|
+
* the tool registry's abstract definitions onto the MCP protocol
|
|
6
|
+
* wire format based on the configured Exposition Strategy.
|
|
7
|
+
*
|
|
8
|
+
* - **flat**: Deterministically expands each action into an independent
|
|
9
|
+
* atomic MCP tool with isolated schema, description, and annotations.
|
|
10
|
+
*
|
|
11
|
+
* - **grouped**: Passthrough — yields the grouped tool definition unmodified.
|
|
12
|
+
*
|
|
13
|
+
* Also emits an O(1) dispatch map for constant-time request proxying
|
|
14
|
+
* during execution.
|
|
15
|
+
*
|
|
16
|
+
* Pure-function module: no state, no side effects.
|
|
17
|
+
*
|
|
18
|
+
* @module
|
|
19
|
+
*/
|
|
20
|
+
import {} from '@modelcontextprotocol/sdk/types.js';
|
|
21
|
+
import {} from 'zod';
|
|
22
|
+
import { zodToJsonSchema } from 'zod-to-json-schema';
|
|
23
|
+
import {} from '../types.js';
|
|
24
|
+
import {} from './ExpositionTypes.js';
|
|
25
|
+
// ── Compiler ─────────────────────────────────────────────
|
|
26
|
+
/**
|
|
27
|
+
* Compile tool builders into the protocol-facing exposition format.
|
|
28
|
+
*
|
|
29
|
+
* @param builders - Iterable of registered tool builders
|
|
30
|
+
* @param exposition - Exposition strategy ('flat' or 'grouped')
|
|
31
|
+
* @param separator - Action separator for flat naming (default: '_')
|
|
32
|
+
* @returns Compiled tools and routing map
|
|
33
|
+
*/
|
|
34
|
+
export function compileExposition(builders, exposition = 'flat', separator = '_') {
|
|
35
|
+
if (exposition === 'grouped') {
|
|
36
|
+
return compileGrouped(builders);
|
|
37
|
+
}
|
|
38
|
+
return compileFlat(builders, separator);
|
|
39
|
+
}
|
|
40
|
+
// ── Flat Strategy ────────────────────────────────────────
|
|
41
|
+
/**
|
|
42
|
+
* Flat strategy: expand each action into an independent atomic MCP tool.
|
|
43
|
+
*
|
|
44
|
+
* Iterates over each builder, extracts per-action metadata, and
|
|
45
|
+
* synthesizes one McpTool per action with:
|
|
46
|
+
* - Deterministic name: `{toolName}{separator}{actionKey}`
|
|
47
|
+
* - Isolated schema (action-specific + common, no discriminator)
|
|
48
|
+
* - Isolated annotations (readOnlyHint, destructiveHint, idempotentHint)
|
|
49
|
+
* - Per-action description
|
|
50
|
+
*/
|
|
51
|
+
function compileFlat(builders, separator) {
|
|
52
|
+
const tools = [];
|
|
53
|
+
const routingMap = new Map();
|
|
54
|
+
for (const builder of builders) {
|
|
55
|
+
// Ensure the grouped definition is compiled (caches internally)
|
|
56
|
+
builder.buildToolDefinition();
|
|
57
|
+
// Use AST reflection interfaces to access internal structures
|
|
58
|
+
const actions = getBuilderActions(builder);
|
|
59
|
+
const discriminator = getBuilderDiscriminator(builder);
|
|
60
|
+
const commonSchema = getBuilderCommonSchema(builder);
|
|
61
|
+
const toolName = builder.getName();
|
|
62
|
+
if (!actions || actions.length === 0) {
|
|
63
|
+
// Fallback: builder has no reflection — pass through as grouped
|
|
64
|
+
tools.push(builder.buildToolDefinition());
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
for (const action of actions) {
|
|
68
|
+
const flatName = `${toolName}${separator}${action.key}`;
|
|
69
|
+
// ── Schema Purification ──────────────────────────
|
|
70
|
+
const inputSchema = buildAtomicSchema(action, commonSchema);
|
|
71
|
+
// ── Boundary Isolation (Annotations) ─────────────
|
|
72
|
+
const annotations = buildAtomicAnnotations(action);
|
|
73
|
+
// ── Description ──────────────────────────────────
|
|
74
|
+
const description = buildAtomicDescription(action, toolName);
|
|
75
|
+
const tool = {
|
|
76
|
+
name: flatName,
|
|
77
|
+
description,
|
|
78
|
+
inputSchema,
|
|
79
|
+
};
|
|
80
|
+
if (Object.keys(annotations).length > 0) {
|
|
81
|
+
Object.defineProperty(tool, 'annotations', {
|
|
82
|
+
value: annotations,
|
|
83
|
+
enumerable: true,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
tools.push(tool);
|
|
87
|
+
// ── O(1) Dispatch Map Entry ──────────────────────
|
|
88
|
+
routingMap.set(flatName, {
|
|
89
|
+
builder,
|
|
90
|
+
actionKey: action.key,
|
|
91
|
+
discriminator,
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return { tools, routingMap, isFlat: true };
|
|
96
|
+
}
|
|
97
|
+
// ── Grouped Strategy ─────────────────────────────────────
|
|
98
|
+
/**
|
|
99
|
+
* Grouped strategy: passthrough — yields the grouped tool definition unmodified.
|
|
100
|
+
* This preserves byte-for-byte identical protocol schema compared to pre-exposition behavior.
|
|
101
|
+
*/
|
|
102
|
+
function compileGrouped(builders) {
|
|
103
|
+
const tools = [];
|
|
104
|
+
for (const builder of builders) {
|
|
105
|
+
tools.push(builder.buildToolDefinition());
|
|
106
|
+
}
|
|
107
|
+
return { tools, routingMap: new Map(), isFlat: false };
|
|
108
|
+
}
|
|
109
|
+
// ── Atomic Builders (Internal) ───────────────────────────
|
|
110
|
+
/**
|
|
111
|
+
* Build an isolated JSON Schema for a single action.
|
|
112
|
+
*
|
|
113
|
+
* Merges the action's specific schema with the common schema,
|
|
114
|
+
* applies omitCommon fields, and strips the discriminator.
|
|
115
|
+
* Result is a clean object schema without the union wrapper.
|
|
116
|
+
*/
|
|
117
|
+
function buildAtomicSchema(action, commonSchema) {
|
|
118
|
+
const properties = {};
|
|
119
|
+
const required = [];
|
|
120
|
+
// ── Merge common schema fields ───────────────────────
|
|
121
|
+
if (commonSchema) {
|
|
122
|
+
const omitSet = action.omitCommonFields
|
|
123
|
+
? new Set(action.omitCommonFields)
|
|
124
|
+
: undefined;
|
|
125
|
+
const jsonSchema = zodToJsonSchema(commonSchema, { target: 'jsonSchema7' });
|
|
126
|
+
for (const [key, value] of Object.entries(jsonSchema.properties ?? {})) {
|
|
127
|
+
if (omitSet?.has(key))
|
|
128
|
+
continue;
|
|
129
|
+
properties[key] = value;
|
|
130
|
+
}
|
|
131
|
+
for (const key of jsonSchema.required ?? []) {
|
|
132
|
+
if (omitSet?.has(key))
|
|
133
|
+
continue;
|
|
134
|
+
if (key in properties) {
|
|
135
|
+
required.push(key);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
// ── Merge action-specific schema fields ──────────────
|
|
140
|
+
if (action.schema) {
|
|
141
|
+
const jsonSchema = zodToJsonSchema(action.schema, { target: 'jsonSchema7' });
|
|
142
|
+
for (const [key, value] of Object.entries(jsonSchema.properties ?? {})) {
|
|
143
|
+
properties[key] = value;
|
|
144
|
+
}
|
|
145
|
+
for (const key of jsonSchema.required ?? []) {
|
|
146
|
+
if (key in properties && !required.includes(key)) {
|
|
147
|
+
required.push(key);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return {
|
|
152
|
+
type: 'object',
|
|
153
|
+
properties,
|
|
154
|
+
...(required.length > 0 ? { required } : {}),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Build isolated annotations for a single action.
|
|
159
|
+
*
|
|
160
|
+
* Each action gets its own `readOnlyHint`, `destructiveHint`,
|
|
161
|
+
* and `idempotentHint` — no privilege bleed across actions.
|
|
162
|
+
*/
|
|
163
|
+
function buildAtomicAnnotations(action) {
|
|
164
|
+
const annotations = {};
|
|
165
|
+
if (action.readOnly === true) {
|
|
166
|
+
// Action is read-only → never destructive.
|
|
167
|
+
// readOnlyHint default is false, so we must explicitly signal true.
|
|
168
|
+
// destructiveHint default is true (MCP assumes dangerous), so we must
|
|
169
|
+
// explicitly signal false to prevent unnecessary confirmation dialogs.
|
|
170
|
+
annotations['readOnlyHint'] = true;
|
|
171
|
+
annotations['destructiveHint'] = false;
|
|
172
|
+
}
|
|
173
|
+
else if (action.destructive === true) {
|
|
174
|
+
// Action is destructive → matches MCP's conservative default.
|
|
175
|
+
// We still emit explicitly for clarity in tools/list responses.
|
|
176
|
+
annotations['destructiveHint'] = true;
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
// Neither read-only nor destructive.
|
|
180
|
+
// MCP spec defaults destructiveHint to true (assume dangerous).
|
|
181
|
+
// We MUST emit false to override this — otherwise clients like
|
|
182
|
+
// Claude Desktop or Cursor will show unnecessary safety warnings.
|
|
183
|
+
annotations['destructiveHint'] = false;
|
|
184
|
+
}
|
|
185
|
+
if (action.idempotent === true) {
|
|
186
|
+
annotations['idempotentHint'] = true;
|
|
187
|
+
}
|
|
188
|
+
return annotations;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Build a human-readable description for a single atomic action.
|
|
192
|
+
*/
|
|
193
|
+
function buildAtomicDescription(action, toolName) {
|
|
194
|
+
const parts = [];
|
|
195
|
+
if (action.description) {
|
|
196
|
+
parts.push(action.description);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
// Generate a default description from the tool and action name
|
|
200
|
+
const actionLabel = action.groupName
|
|
201
|
+
? `${action.groupName}.${action.actionName}`
|
|
202
|
+
: action.actionName;
|
|
203
|
+
parts.push(`${toolName} → ${actionLabel}`);
|
|
204
|
+
}
|
|
205
|
+
// Append safety flags for LLM awareness
|
|
206
|
+
if (action.destructive) {
|
|
207
|
+
parts.push('[DESTRUCTIVE]');
|
|
208
|
+
}
|
|
209
|
+
if (action.readOnly) {
|
|
210
|
+
parts.push('[READ-ONLY]');
|
|
211
|
+
}
|
|
212
|
+
return parts.join(' ');
|
|
213
|
+
}
|
|
214
|
+
// ── AST Reflection Helpers ───────────────────────────────
|
|
215
|
+
/**
|
|
216
|
+
* Extract actions from a builder using optional AST reflection interface.
|
|
217
|
+
* Returns undefined if the builder doesn't implement `getActions()`.
|
|
218
|
+
*/
|
|
219
|
+
function getBuilderActions(builder) {
|
|
220
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
221
|
+
const b = builder;
|
|
222
|
+
if (typeof b.getActions === 'function') {
|
|
223
|
+
return b.getActions();
|
|
224
|
+
}
|
|
225
|
+
return undefined;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* Extract discriminator field name from a builder.
|
|
229
|
+
* Defaults to 'action' if the builder doesn't implement `getDiscriminator()`.
|
|
230
|
+
*/
|
|
231
|
+
function getBuilderDiscriminator(builder) {
|
|
232
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
233
|
+
const b = builder;
|
|
234
|
+
if (typeof b.getDiscriminator === 'function') {
|
|
235
|
+
return b.getDiscriminator();
|
|
236
|
+
}
|
|
237
|
+
return 'action';
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Extract common schema from a builder.
|
|
241
|
+
* Returns undefined if the builder doesn't implement `getCommonSchema()`.
|
|
242
|
+
*/
|
|
243
|
+
function getBuilderCommonSchema(builder) {
|
|
244
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
245
|
+
const b = builder;
|
|
246
|
+
if (typeof b.getCommonSchema === 'function') {
|
|
247
|
+
return b.getCommonSchema();
|
|
248
|
+
}
|
|
249
|
+
return undefined;
|
|
250
|
+
}
|
|
251
|
+
//# sourceMappingURL=ExpositionCompiler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpositionCompiler.js","sourceRoot":"","sources":["../../../src/framework/server/ExpositionCompiler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExpositionTypes — Tool Exposition Strategy Contracts
|
|
3
|
+
*
|
|
4
|
+
* Defines the configuration interfaces for the Topology Compiler Pattern.
|
|
5
|
+
* Controls how the framework projects grouped tool definitions onto the
|
|
6
|
+
* MCP protocol wire format.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Tool exposition strategy.
|
|
12
|
+
*
|
|
13
|
+
* - `'flat'` — Each action is exposed as an independent atomic MCP tool.
|
|
14
|
+
* Guarantees privilege isolation, deterministic routing, and granular UI.
|
|
15
|
+
* **This is the default.**
|
|
16
|
+
*
|
|
17
|
+
* - `'grouped'` — All actions within a builder are merged into a single
|
|
18
|
+
* MCP tool with a discriminated-union schema. Optimizes context-window
|
|
19
|
+
* token economy at the cost of UI granularity.
|
|
20
|
+
*
|
|
21
|
+
* @see {@link ExpositionConfig} for full configuration
|
|
22
|
+
*/
|
|
23
|
+
export type ToolExposition = 'flat' | 'grouped';
|
|
24
|
+
/**
|
|
25
|
+
* Configuration for the Topology Compiler's exposition strategy.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* registry.attachToServer(server, {
|
|
30
|
+
* contextFactory: createContext,
|
|
31
|
+
* toolExposition: 'flat', // Each action = 1 MCP tool
|
|
32
|
+
* actionSeparator: '_', // projects_list, projects_create
|
|
33
|
+
* });
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export interface ExpositionConfig {
|
|
37
|
+
/**
|
|
38
|
+
* Exposition strategy for projecting grouped tools onto the MCP wire format.
|
|
39
|
+
*
|
|
40
|
+
* @default 'flat'
|
|
41
|
+
*/
|
|
42
|
+
toolExposition?: ToolExposition;
|
|
43
|
+
/**
|
|
44
|
+
* Delimiter for deterministic naming interpolation in flat mode.
|
|
45
|
+
* Used to join `{toolName}{separator}{actionKey}`.
|
|
46
|
+
*
|
|
47
|
+
* @default '_'
|
|
48
|
+
*
|
|
49
|
+
* @example
|
|
50
|
+
* ```typescript
|
|
51
|
+
* // With separator '_': projects_list, projects_create
|
|
52
|
+
* // With separator '.': projects.list, projects.create
|
|
53
|
+
* // With separator '-': projects-list, projects-create
|
|
54
|
+
* ```
|
|
55
|
+
*/
|
|
56
|
+
actionSeparator?: string;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=ExpositionTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpositionTypes.d.ts","sourceRoot":"","sources":["../../../src/framework/server/ExpositionTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAIH;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,SAAS,CAAC;AAEhD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,gBAAgB;IAC7B;;;;OAIG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ExpositionTypes — Tool Exposition Strategy Contracts
|
|
3
|
+
*
|
|
4
|
+
* Defines the configuration interfaces for the Topology Compiler Pattern.
|
|
5
|
+
* Controls how the framework projects grouped tool definitions onto the
|
|
6
|
+
* MCP protocol wire format.
|
|
7
|
+
*
|
|
8
|
+
* @module
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=ExpositionTypes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ExpositionTypes.js","sourceRoot":"","sources":["../../../src/framework/server/ExpositionTypes.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -6,6 +6,7 @@ import { type DebugObserverFn } from '../observability/DebugObserver.js';
|
|
|
6
6
|
import { type FusionTracer } from '../observability/Tracing.js';
|
|
7
7
|
import { type StateSyncConfig } from '../state-sync/types.js';
|
|
8
8
|
import { type IntrospectionConfig } from '../introspection/types.js';
|
|
9
|
+
import { type ToolExposition } from './ExpositionTypes.js';
|
|
9
10
|
/** Options for attaching to an MCP Server */
|
|
10
11
|
export interface AttachOptions<TContext> {
|
|
11
12
|
/** Only expose tools matching these tag filters */
|
|
@@ -127,6 +128,44 @@ export interface AttachOptions<TContext> {
|
|
|
127
128
|
* @defaultValue `'mcp-fusion-server'`
|
|
128
129
|
*/
|
|
129
130
|
serverName?: string;
|
|
131
|
+
/**
|
|
132
|
+
* Exposition strategy for projecting grouped tools onto the MCP wire format.
|
|
133
|
+
*
|
|
134
|
+
* - `'flat'` (default): Each action becomes an independent atomic MCP tool.
|
|
135
|
+
* Guarantees privilege isolation, deterministic routing, and granular UI.
|
|
136
|
+
* Example: `projects_list`, `projects_create` — two separate buttons in Claude.
|
|
137
|
+
*
|
|
138
|
+
* - `'grouped'`: All actions within a builder are merged into a single MCP
|
|
139
|
+
* tool with a discriminated-union schema (legacy behavior).
|
|
140
|
+
*
|
|
141
|
+
* @default 'flat'
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* ```typescript
|
|
145
|
+
* registry.attachToServer(server, {
|
|
146
|
+
* contextFactory: createContext,
|
|
147
|
+
* toolExposition: 'flat', // Each action = 1 MCP tool
|
|
148
|
+
* actionSeparator: '_', // projects_list, projects_create
|
|
149
|
+
* });
|
|
150
|
+
* ```
|
|
151
|
+
*
|
|
152
|
+
* @see {@link ToolExposition} for strategy details
|
|
153
|
+
*/
|
|
154
|
+
toolExposition?: ToolExposition;
|
|
155
|
+
/**
|
|
156
|
+
* Delimiter for deterministic naming interpolation in flat mode.
|
|
157
|
+
* Used to join `{toolName}{separator}{actionKey}`.
|
|
158
|
+
*
|
|
159
|
+
* @default '_'
|
|
160
|
+
*
|
|
161
|
+
* @example
|
|
162
|
+
* ```typescript
|
|
163
|
+
* // '_' → projects_list, projects_create
|
|
164
|
+
* // '.' → projects.list, projects.create
|
|
165
|
+
* // '-' → projects-list, projects-create
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
actionSeparator?: string;
|
|
130
169
|
}
|
|
131
170
|
/** Function to detach the registry from the server */
|
|
132
171
|
export type DetachFn = () => void;
|
|
@@ -143,8 +182,8 @@ export interface RegistryDelegate<TContext> {
|
|
|
143
182
|
enableDebug?(observer: DebugObserverFn): void;
|
|
144
183
|
/** Propagate a tracer to all registered builders (duck-typed) */
|
|
145
184
|
enableTracing?(tracer: FusionTracer): void;
|
|
146
|
-
/** Get an iterable of all registered builders (for introspection) */
|
|
147
|
-
getBuilders
|
|
185
|
+
/** Get an iterable of all registered builders (for introspection and exposition) */
|
|
186
|
+
getBuilders(): Iterable<ToolBuilder<TContext>>;
|
|
148
187
|
}
|
|
149
188
|
/**
|
|
150
189
|
* Attach a registry to an MCP Server.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerAttachment.d.ts","sourceRoot":"","sources":["../../../src/framework/server/ServerAttachment.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,gCAAgC,CAAC;AAEvF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerAttachment.d.ts","sourceRoot":"","sources":["../../../src/framework/server/ServerAttachment.ts"],"names":[],"mappings":"AAcA,OAAO,EAAE,KAAK,IAAI,IAAI,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAE,KAAK,YAAY,EAAS,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,KAAK,YAAY,EAAsB,MAAM,gCAAgC,CAAC;AAEvF,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAE,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEhE,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,KAAK,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAErE,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAyB3D,6CAA6C;AAC7C,MAAM,WAAW,aAAa,CAAC,QAAQ;IACnC,mDAAmD;IACnD,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC;IACpE;;;;;OAKG;IACH,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE;;;;;;;;;;;;;;;OAeG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IAExB;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,SAAS,CAAC,EAAE,eAAe,CAAC;IAE5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,aAAa,CAAC,EAAE,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IAE9C;;;;;;;;;;;;;;;;;;;;;;;OAuBG;IACH,OAAO,CAAC,EAAE,YAAY,CAAC;IAEvB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAIpB;;;;;;;;;;;;;;;;;;;;;;OAsBG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;;;;;;;;;;;OAYG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,sDAAsD;AACtD,MAAM,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC;AAElC,gFAAgF;AAChF,MAAM,WAAW,gBAAgB,CAAC,QAAQ;IACtC,WAAW,IAAI,OAAO,EAAE,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;KAAE,GAAG,OAAO,EAAE,CAAC;IACxF,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1H,yEAAyE;IACzE,WAAW,CAAC,CAAC,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IAC9C,iEAAiE;IACjE,aAAa,CAAC,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,oFAAoF;IACpF,WAAW,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;CAClD;AAID;;;;;;;;;;GAUG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EACnC,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,gBAAgB,CAAC,QAAQ,CAAC,EACpC,OAAO,GAAE,aAAa,CAAC,QAAQ,CAAM,GACtC,QAAQ,CAuHV"}
|
|
@@ -20,6 +20,8 @@ import { StateSyncLayer } from '../state-sync/StateSyncLayer.js';
|
|
|
20
20
|
import {} from '../state-sync/types.js';
|
|
21
21
|
import {} from '../introspection/types.js';
|
|
22
22
|
import { registerIntrospectionResource } from '../introspection/IntrospectionResource.js';
|
|
23
|
+
import {} from './ExpositionTypes.js';
|
|
24
|
+
import { compileExposition } from './ExpositionCompiler.js';
|
|
23
25
|
// ── Attachment ───────────────────────────────────────────
|
|
24
26
|
/**
|
|
25
27
|
* Attach a registry to an MCP Server.
|
|
@@ -35,7 +37,7 @@ import { registerIntrospectionResource } from '../introspection/IntrospectionRes
|
|
|
35
37
|
export function attachToServer(server, registry, options = {}) {
|
|
36
38
|
// Resolve the low-level Server instance via ServerResolver strategy
|
|
37
39
|
const resolved = resolveServer(server);
|
|
38
|
-
const { filter, contextFactory, debug, tracing, stateSync, introspection, serverName } = options;
|
|
40
|
+
const { filter, contextFactory, debug, tracing, stateSync, introspection, serverName, toolExposition = 'flat', actionSeparator = '_', } = options;
|
|
39
41
|
// Propagate debug observer to all registered builders
|
|
40
42
|
if (debug && registry.enableDebug) {
|
|
41
43
|
registry.enableDebug(debug);
|
|
@@ -47,14 +49,32 @@ export function attachToServer(server, registry, options = {}) {
|
|
|
47
49
|
// Create State Sync layer (zero overhead when not configured)
|
|
48
50
|
const syncLayer = stateSync ? new StateSyncLayer(stateSync) : undefined;
|
|
49
51
|
// Register introspection resource (zero overhead when disabled)
|
|
50
|
-
if (introspection?.enabled
|
|
52
|
+
if (introspection?.enabled) {
|
|
51
53
|
registerIntrospectionResource(resolved, introspection, serverName ?? 'mcp-fusion-server', { values: () => registry.getBuilders() }, contextFactory);
|
|
52
54
|
}
|
|
55
|
+
// ── Topology Compiler: Exposition Strategy ────────────────────
|
|
56
|
+
// Compilation is lazy (per-request) to support late-registered tools.
|
|
57
|
+
// In 'flat' mode, each action becomes an independent atomic MCP tool.
|
|
58
|
+
// In 'grouped' mode, tools pass through unchanged (legacy behavior).
|
|
59
|
+
const isFlat = toolExposition === 'flat';
|
|
60
|
+
// Helper: recompile on demand (ensures late-registered tools are visible)
|
|
61
|
+
const recompile = () => compileExposition(registry.getBuilders(), toolExposition, actionSeparator);
|
|
53
62
|
// ── tools/list handler ────────────────────────────────────────
|
|
54
63
|
const listHandler = () => {
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
: registry
|
|
64
|
+
let tools;
|
|
65
|
+
if (isFlat) {
|
|
66
|
+
// Flat mode: re-compile from current registry state
|
|
67
|
+
const exposition = recompile();
|
|
68
|
+
tools = filter
|
|
69
|
+
? filterFlatTools(exposition.tools, exposition.routingMap, filter)
|
|
70
|
+
: exposition.tools;
|
|
71
|
+
}
|
|
72
|
+
else {
|
|
73
|
+
// Grouped mode: delegate to registry (legacy behavior)
|
|
74
|
+
tools = filter
|
|
75
|
+
? registry.getTools(filter)
|
|
76
|
+
: registry.getAllTools();
|
|
77
|
+
}
|
|
58
78
|
return { tools: syncLayer ? syncLayer.decorateTools(tools) : tools };
|
|
59
79
|
};
|
|
60
80
|
// ── tools/call handler ────────────────────────────────────────
|
|
@@ -67,6 +87,27 @@ export function attachToServer(server, registry, options = {}) {
|
|
|
67
87
|
// metadata and create a ProgressSink that sends notifications/progress.
|
|
68
88
|
// Zero overhead when the client does not request progress.
|
|
69
89
|
const progressSink = createProgressSink(extra);
|
|
90
|
+
if (isFlat) {
|
|
91
|
+
// ── O(1) Dispatch Interceptor for Flat Topology ──────────
|
|
92
|
+
// Re-compile to pick up any late-registered tools, then look up
|
|
93
|
+
// the flat route for the incoming tool name.
|
|
94
|
+
const exposition = recompile();
|
|
95
|
+
const flatRoute = exposition.routingMap.get(name);
|
|
96
|
+
if (flatRoute) {
|
|
97
|
+
const enrichedArgs = { ...args, [flatRoute.discriminator]: flatRoute.actionKey };
|
|
98
|
+
const result = await flatRoute.builder.execute(ctx, enrichedArgs, progressSink);
|
|
99
|
+
if (syncLayer) {
|
|
100
|
+
// Use the canonical internal key (e.g. "projects.list") for policy matching,
|
|
101
|
+
// NOT the protocol-facing flat name (e.g. "projects_list"), since StateSync
|
|
102
|
+
// policies use dot-notation globs (e.g. "projects.*").
|
|
103
|
+
const builderName = flatRoute.builder.getName();
|
|
104
|
+
const canonicalKey = `${builderName}.${flatRoute.actionKey}`;
|
|
105
|
+
return syncLayer.decorateResult(canonicalKey, result);
|
|
106
|
+
}
|
|
107
|
+
return result;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
// Standard dispatch (grouped mode or unrecognized flat tool)
|
|
70
111
|
const result = await registry.routeCall(ctx, name, args, progressSink);
|
|
71
112
|
return syncLayer ? syncLayer.decorateResult(name, result) : result;
|
|
72
113
|
};
|
|
@@ -79,6 +120,53 @@ export function attachToServer(server, registry, options = {}) {
|
|
|
79
120
|
resolved.setRequestHandler(CallToolRequestSchema, () => error('Tool handlers have been detached'));
|
|
80
121
|
};
|
|
81
122
|
}
|
|
123
|
+
// ── Flat Tool Filtering ──────────────────────────────────
|
|
124
|
+
/**
|
|
125
|
+
* Filter flat tools by tag criteria.
|
|
126
|
+
*
|
|
127
|
+
* Maps each flat tool back to its originating builder to check tags,
|
|
128
|
+
* then applies the standard tag filter logic.
|
|
129
|
+
*/
|
|
130
|
+
function filterFlatTools(tools, routeMap, filter) {
|
|
131
|
+
const requiredTags = filter.tags && filter.tags.length > 0 ? new Set(filter.tags) : undefined;
|
|
132
|
+
const anyTags = filter.anyTag && filter.anyTag.length > 0 ? new Set(filter.anyTag) : undefined;
|
|
133
|
+
const excludeTags = filter.exclude && filter.exclude.length > 0 ? new Set(filter.exclude) : undefined;
|
|
134
|
+
if (!requiredTags && !anyTags && !excludeTags)
|
|
135
|
+
return tools;
|
|
136
|
+
return tools.filter(tool => {
|
|
137
|
+
const route = routeMap.get(tool.name);
|
|
138
|
+
if (!route)
|
|
139
|
+
return true; // Non-flat tool, include by default
|
|
140
|
+
const builderTags = route.builder.getTags();
|
|
141
|
+
// AND logic: builder must have ALL required tags
|
|
142
|
+
if (requiredTags) {
|
|
143
|
+
for (const t of requiredTags) {
|
|
144
|
+
if (!builderTags.includes(t))
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// OR logic: builder must have at least ONE of these tags
|
|
149
|
+
if (anyTags) {
|
|
150
|
+
let hasAny = false;
|
|
151
|
+
for (const t of builderTags) {
|
|
152
|
+
if (anyTags.has(t)) {
|
|
153
|
+
hasAny = true;
|
|
154
|
+
break;
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
if (!hasAny)
|
|
158
|
+
return false;
|
|
159
|
+
}
|
|
160
|
+
// Exclude: builder must NOT have ANY of these tags
|
|
161
|
+
if (excludeTags) {
|
|
162
|
+
for (const t of builderTags) {
|
|
163
|
+
if (excludeTags.has(t))
|
|
164
|
+
return false;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return true;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
82
170
|
// ── Progress Sink Factory ────────────────────────────────
|
|
83
171
|
/**
|
|
84
172
|
* Duck-type check: the extra object from MCP SDK has _meta and sendNotification.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerAttachment.js","sourceRoot":"","sources":["../../../src/framework/server/ServerAttachment.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EACH,sBAAsB,EACtB,qBAAqB,GACxB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAwB,MAAM,oCAAoC,CAAC;AAC1E,OAAO,EAAqB,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAoB,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAyC,MAAM,gCAAgC,CAAC;AACvF,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAwB,MAAM,mCAAmC,CAAC;AACzE,OAAO,EAAqB,MAAM,6BAA6B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAC;AACjE,OAAO,EAAwB,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAA4B,MAAM,2BAA2B,CAAC;AACrE,OAAO,EAAE,6BAA6B,EAAE,MAAM,2CAA2C,CAAC;
|
|
1
|
+
{"version":3,"file":"ServerAttachment.js","sourceRoot":"","sources":["../../../src/framework/server/ServerAttachment.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
/** Server Integration Bounded Context — Barrel Export */
|
|
2
2
|
export { resolveServer } from './ServerResolver.js';
|
|
3
3
|
export { attachToServer, type AttachOptions, type DetachFn, type RegistryDelegate, } from './ServerAttachment.js';
|
|
4
|
+
export type { ToolExposition, ExpositionConfig } from './ExpositionTypes.js';
|
|
5
|
+
export { compileExposition, type FlatRoute, type ExpositionResult } from './ExpositionCompiler.js';
|
|
4
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/framework/server/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACH,cAAc,EACd,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,GAC3D,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/framework/server/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACH,cAAc,EACd,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,KAAK,gBAAgB,GAC3D,MAAM,uBAAuB,CAAC;AAC/B,YAAY,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,iBAAiB,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
/** Server Integration Bounded Context — Barrel Export */
|
|
2
2
|
export { resolveServer } from './ServerResolver.js';
|
|
3
3
|
export { attachToServer, } from './ServerAttachment.js';
|
|
4
|
+
export { compileExposition } from './ExpositionCompiler.js';
|
|
4
5
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/framework/server/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACH,cAAc,GAEjB,MAAM,uBAAuB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/framework/server/index.ts"],"names":[],"mappings":"AAAA,yDAAyD;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EACH,cAAc,GAEjB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,iBAAiB,EAAyC,MAAM,yBAAyB,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -40,5 +40,5 @@ export { ConverterBase, type GroupConverter, GroupConverterBase, type ToolConver
|
|
|
40
40
|
/** @category Framework */
|
|
41
41
|
export { success, error, required, toonSuccess, toolError, GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool, ToolRegistry, generateToonDescription, succeed, fail, progress, defineMiddleware, resolveMiddleware, createFusionClient, createTypedRegistry, createDebugObserver, SpanStatusCode, StateSyncLayer, PolicyEngine, matchGlob, ResponseBuilder, response, isResponseBuilder, ui, Presenter, createPresenter, isPresenter, PresenterValidationError, } from './framework/index.js';
|
|
42
42
|
/** @category Framework */
|
|
43
|
-
export type { ToolResponse, ToolErrorOptions, ActionConfig, MiddlewareFn, GroupConfigurator, ToolFilter, ToolBuilder, ActionMetadata, AttachOptions, DetachFn, Result, Success, Failure, ToolConfig, ActionDef, GroupDef, ParamDef, ParamsMap, InferParams, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef, ProgressEvent, ProgressSink, MiddlewareDefinition, MergeContext, InferContextOut, FusionClient, FusionTransport, RouterMap, InferRouter, TypedToolRegistry, DebugEvent, DebugObserverFn, RouteEvent, ValidateEvent, MiddlewareEvent, ExecuteEvent, ErrorEvent, FusionSpan, FusionTracer, FusionAttributeValue, CacheDirective, SyncPolicy, StateSyncConfig, ResolvedPolicy, UiBlock, ActionSuggestion, } from './framework/index.js';
|
|
43
|
+
export type { ToolResponse, ToolErrorOptions, ActionConfig, MiddlewareFn, GroupConfigurator, ToolFilter, ToolBuilder, ActionMetadata, AttachOptions, DetachFn, ToolExposition, ExpositionConfig, Result, Success, Failure, ToolConfig, ActionDef, GroupDef, ParamDef, ParamsMap, InferParams, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef, ProgressEvent, ProgressSink, MiddlewareDefinition, MergeContext, InferContextOut, FusionClient, FusionTransport, RouterMap, InferRouter, TypedToolRegistry, DebugEvent, DebugObserverFn, RouteEvent, ValidateEvent, MiddlewareEvent, ExecuteEvent, ErrorEvent, FusionSpan, FusionTracer, FusionAttributeValue, CacheDirective, SyncPolicy, StateSyncConfig, ResolvedPolicy, UiBlock, ActionSuggestion, } from './framework/index.js';
|
|
44
44
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,KAAK,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,8BAA8B;AAC9B,OAAO,EAAE,KAAK,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;GAIG;AAEH,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACb,KAAK,cAAc,EAAE,kBAAkB,EACvC,KAAK,aAAa,EAAE,iBAAiB,EACrC,KAAK,eAAe,EAAE,mBAAmB,EACzC,KAAK,iBAAiB,EAAE,qBAAqB,EAC7C,KAAK,wBAAwB,EAAE,4BAA4B,EAC9D,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AAEH,0BAA0B;AAC1B,OAAO,EACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAChD,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAC9D,YAAY,EACZ,uBAAuB,EACvB,OAAO,EAAE,IAAI,EACb,QAAQ,EACR,gBAAgB,EAAE,iBAAiB,EACnC,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EAAE,YAAY,EAAE,SAAS,EACvC,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAC5C,EAAE,EACF,SAAS,EAAE,eAAe,EAAE,WAAW,EACvC,wBAAwB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,0BAA0B;AAC1B,YAAY,EACR,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAC7C,UAAU,EACV,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EACpD,MAAM,EAAE,OAAO,EAAE,OAAO,EACxB,UAAU,EAAE,SAAS,EAAE,QAAQ,EAC/B,QAAQ,EAAE,SAAS,EAAE,WAAW,EAChC,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,YAAY,EAAE,eAAe,EACnD,YAAY,EAAE,eAAe,EAAE,SAAS,EACxC,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EACpE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAC9C,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAC3D,OAAO,EACP,gBAAgB,GACnB,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,KAAK,IAAI,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACzD,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,8BAA8B;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAClD,8BAA8B;AAC9B,OAAO,EAAE,KAAK,WAAW,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,8BAA8B;AAC9B,OAAO,EAAE,KAAK,eAAe,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAC1F,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,8BAA8B;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD;;;;GAIG;AAEH,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACb,KAAK,cAAc,EAAE,kBAAkB,EACvC,KAAK,aAAa,EAAE,iBAAiB,EACrC,KAAK,eAAe,EAAE,mBAAmB,EACzC,KAAK,iBAAiB,EAAE,qBAAqB,EAC7C,KAAK,wBAAwB,EAAE,4BAA4B,EAC9D,MAAM,uBAAuB,CAAC;AAE/B;;;;GAIG;AAEH,0BAA0B;AAC1B,OAAO,EACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAChD,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,UAAU,EAC9D,YAAY,EACZ,uBAAuB,EACvB,OAAO,EAAE,IAAI,EACb,QAAQ,EACR,gBAAgB,EAAE,iBAAiB,EACnC,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,cAAc,EACd,cAAc,EAAE,YAAY,EAAE,SAAS,EACvC,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAC5C,EAAE,EACF,SAAS,EAAE,eAAe,EAAE,WAAW,EACvC,wBAAwB,GAC3B,MAAM,sBAAsB,CAAC;AAC9B,0BAA0B;AAC1B,YAAY,EACR,YAAY,EAAE,gBAAgB,EAC9B,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAC7C,UAAU,EACV,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,QAAQ,EACpD,cAAc,EAAE,gBAAgB,EAChC,MAAM,EAAE,OAAO,EAAE,OAAO,EACxB,UAAU,EAAE,SAAS,EAAE,QAAQ,EAC/B,QAAQ,EAAE,SAAS,EAAE,WAAW,EAChC,cAAc,EAAE,cAAc,EAAE,eAAe,EAC/C,YAAY,EAAE,aAAa,EAC3B,aAAa,EAAE,YAAY,EAC3B,oBAAoB,EAAE,YAAY,EAAE,eAAe,EACnD,YAAY,EAAE,eAAe,EAAE,SAAS,EACxC,WAAW,EAAE,iBAAiB,EAC9B,UAAU,EAAE,eAAe,EAC3B,UAAU,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,UAAU,EACpE,UAAU,EAAE,YAAY,EAAE,oBAAoB,EAC9C,cAAc,EAAE,UAAU,EAAE,eAAe,EAAE,cAAc,EAC3D,OAAO,EACP,gBAAgB,GACnB,MAAM,sBAAsB,CAAC"}
|
package/llms.txt
CHANGED
|
@@ -33,6 +33,7 @@ The Presenter replaces the human-centric View with an agent-centric perception l
|
|
|
33
33
|
- **Tags**: Capability labels for selective tool exposure per session
|
|
34
34
|
- **TOON**: Token-Oriented Object Notation for compact descriptions/responses
|
|
35
35
|
- **State Sync**: RFC 7234-inspired cache-control signals to prevent temporal blindness
|
|
36
|
+
- **Tool Exposition**: Compile-time topology compiler — choose flat (one tool per action) or grouped (one tool per builder with discriminator enum) at attach time. Same handlers, different wire format.
|
|
36
37
|
- **Dynamic Manifest**: RBAC-filtered server capabilities exposed as a native MCP Resource
|
|
37
38
|
|
|
38
39
|
## Quick Start — MVA with Presenter
|
|
@@ -286,6 +287,31 @@ registry.attachToServer(server, { filter: { tags: ['core'] } }); // Only co
|
|
|
286
287
|
registry.attachToServer(server, { filter: { exclude: ['internal'] } }); // No internal tools
|
|
287
288
|
```
|
|
288
289
|
|
|
290
|
+
## Tool Exposition
|
|
291
|
+
|
|
292
|
+
Two strategies for the same codebase — choose at attach time:
|
|
293
|
+
|
|
294
|
+
```typescript
|
|
295
|
+
// Flat (default) — each action becomes an independent MCP tool
|
|
296
|
+
// projects → projects_list, projects_create, projects_delete
|
|
297
|
+
registry.attachToServer(server, {
|
|
298
|
+
toolExposition: 'flat',
|
|
299
|
+
actionSeparator: '_',
|
|
300
|
+
});
|
|
301
|
+
|
|
302
|
+
// Grouped — one MCP tool per builder with discriminator enum
|
|
303
|
+
// projects → { action: 'list' | 'create' | 'delete' }
|
|
304
|
+
registry.attachToServer(server, {
|
|
305
|
+
toolExposition: 'grouped',
|
|
306
|
+
});
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
**Flat** — precision per action: isolated schemas, per-action MCP annotations, per-tool toggles in clients. Best for small-to-medium APIs and weaker LLMs.
|
|
310
|
+
|
|
311
|
+
**Grouped** — density at scale: one schema, one description, shared params appear once. Best for large domain APIs (50+ actions) and token-constrained contexts.
|
|
312
|
+
|
|
313
|
+
MCP annotation semantics: Fusion emits `destructiveHint: false` on non-destructive actions because the MCP spec defaults `destructiveHint` to `true` (assume dangerous). Read-only actions get both `readOnlyHint: true` and `destructiveHint: false`. Destructive actions get `destructiveHint: true`. `readOnlyHint: false` is never emitted (matches spec default).
|
|
314
|
+
|
|
289
315
|
## Response Helpers
|
|
290
316
|
|
|
291
317
|
```typescript
|
|
@@ -407,7 +433,8 @@ handler: async function* (ctx, args) {
|
|
|
407
433
|
- `ToolBuilder<TContext>` — Interface for custom builders
|
|
408
434
|
- `ActionMetadata` — { key, actionName, groupName, description, destructive, idempotent, readOnly, requiredFields, hasMiddleware, presenterName?, presenterSchemaKeys?, presenterUiBlockTypes?, presenterHasContextualRules? }
|
|
409
435
|
- `ToolFilter` — { tags?: string[], exclude?: string[] }
|
|
410
|
-
- `AttachOptions<TContext>` — { contextFactory?, filter?, debug?, stateSync?, introspection?, serverName? }
|
|
436
|
+
- `AttachOptions<TContext>` — { contextFactory?, filter?, debug?, stateSync?, introspection?, serverName?, toolExposition?, actionSeparator?, tracing? }
|
|
437
|
+
- `ToolExposition` — 'flat' | 'grouped'
|
|
411
438
|
- `IntrospectionConfig<TContext>` — { enabled, uri?, filter? }
|
|
412
439
|
- `ManifestPayload` — { server, mcp_fusion_version, architecture, capabilities: { tools, presenters } }
|
|
413
440
|
- `ManifestTool` — { description, tags, actions, input_schema }
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@vinkius-core/mcp-fusion",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "MVA (Model-View-Agent) framework for the Model Context Protocol. Structured perception packages with Presenters, cognitive guardrails, self-healing errors, action consolidation, and tRPC-style type safety — so AI agents perceive and act on your data deterministically.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|