@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 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":"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"}
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;AAGjE,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"}
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?(): Iterable<ToolBuilder<TContext>>;
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;AAyBrE,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;CACvB;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,qEAAqE;IACrE,WAAW,CAAC,IAAI,QAAQ,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;CACnD;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,CAoEV"}
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 && registry.getBuilders) {
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
- const tools = filter
56
- ? registry.getTools(filter)
57
- : registry.getAllTools();
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":"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"}
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
@@ -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.0",
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",