@vinkius-core/mcp-fusion 0.9.1 → 0.11.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 +24 -0
- package/README.md +13 -2
- package/dist/framework/builder/GroupedToolBuilder.d.ts +44 -8
- package/dist/framework/builder/GroupedToolBuilder.d.ts.map +1 -1
- package/dist/framework/builder/GroupedToolBuilder.js +89 -5
- package/dist/framework/builder/GroupedToolBuilder.js.map +1 -1
- package/dist/framework/builder/defineTool.d.ts +21 -10
- package/dist/framework/builder/defineTool.d.ts.map +1 -1
- package/dist/framework/builder/defineTool.js.map +1 -1
- package/dist/framework/client/InferRouter.d.ts +91 -0
- package/dist/framework/client/InferRouter.d.ts.map +1 -0
- package/dist/framework/client/InferRouter.js +30 -0
- package/dist/framework/client/InferRouter.js.map +1 -0
- package/dist/framework/client/createTypedRegistry.d.ts +25 -0
- package/dist/framework/client/createTypedRegistry.d.ts.map +1 -0
- package/dist/framework/client/createTypedRegistry.js +74 -0
- package/dist/framework/client/createTypedRegistry.js.map +1 -0
- package/dist/framework/client/index.d.ts +2 -0
- package/dist/framework/client/index.d.ts.map +1 -1
- package/dist/framework/client/index.js +1 -0
- package/dist/framework/client/index.js.map +1 -1
- package/dist/framework/index.d.ts +4 -2
- package/dist/framework/index.d.ts.map +1 -1
- package/dist/framework/index.js +3 -1
- package/dist/framework/index.js.map +1 -1
- package/dist/framework/observability/DebugObserver.d.ts +150 -0
- package/dist/framework/observability/DebugObserver.d.ts.map +1 -0
- package/dist/framework/observability/DebugObserver.js +95 -0
- package/dist/framework/observability/DebugObserver.js.map +1 -0
- package/dist/framework/registry/ToolRegistry.d.ts +20 -0
- package/dist/framework/registry/ToolRegistry.d.ts.map +1 -1
- package/dist/framework/registry/ToolRegistry.js +31 -0
- package/dist/framework/registry/ToolRegistry.js.map +1 -1
- package/dist/framework/server/ServerAttachment.d.ts +20 -0
- package/dist/framework/server/ServerAttachment.d.ts.map +1 -1
- package/dist/framework/server/ServerAttachment.js +6 -1
- package/dist/framework/server/ServerAttachment.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,30 @@ 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
|
+
## [0.10.0] - 2026-02-22
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
- **`InferRouter<typeof registry>` — Compile-Time Router Type Extraction (Task 2.1):**
|
|
12
|
+
- New `createTypedRegistry<TContext>()` curried factory that creates a `ToolRegistry` while preserving builder types for compile-time inference.
|
|
13
|
+
- New `InferRouter<T>` type utility that extracts a fully typed `RouterMap` from a `TypedToolRegistry`, producing `{ 'toolName.actionName': ArgsType }` entries with zero runtime cost.
|
|
14
|
+
- New `TypedToolRegistry<TContext, TBuilders>` interface for type-safe registry wrapping.
|
|
15
|
+
- `GroupedToolBuilder` now carries `TName` (literal tool name) and `TRouterMap` (accumulated action entries) as phantom generics — each `.action()` call widens the type with the new action's key and args.
|
|
16
|
+
- `createTool()` now captures the tool name as a string literal type for inference.
|
|
17
|
+
- 19 new tests covering runtime behavior + type-level inference verification.
|
|
18
|
+
|
|
19
|
+
- **Typed Handler Args via Schema Inference (Task 2.2):**
|
|
20
|
+
- **`defineTool()` path:** `ActionDef` is now generic over `TParams`, so when `params: { name: 'string' }` is specified, the handler receives `args: { name: string }` — no casts needed. Works with shared params too: `args: InferParams<TParams> & InferParams<TShared>`.
|
|
21
|
+
- **`createTool()` path:** Already supported via typed overload — verified with new compile-time tests.
|
|
22
|
+
- Removed legacy double-cast pattern `(args as Record<string, unknown>)['message'] as string` from existing tests — `args.message` now works directly.
|
|
23
|
+
- 6 new type-level tests verifying both `defineTool()` and `createTool()` paths.
|
|
24
|
+
|
|
25
|
+
### Changed
|
|
26
|
+
- **`GroupedToolBuilder` generics:** Expanded from `<TContext, TCommon>` to `<TContext, TCommon, TName, TRouterMap>`. Fully backward-compatible — all new generics have default values.
|
|
27
|
+
- **`ActionDef` generics:** Expanded from `<TContext, TArgs>` to `<TContext, TSharedArgs, TParams>`. Handler args are now conditionally typed based on params presence.
|
|
28
|
+
- **`ToolConfig.actions` / `GroupDef.actions`:** Changed from `Record<string, ActionDef>` to mapped types `{ [K in string]: ActionDef }` for per-action param inference.
|
|
29
|
+
- **Test count:** 842 tests across 36 files, all passing.
|
|
30
|
+
|
|
31
|
+
|
|
8
32
|
## [0.9.1] - 2026-02-22
|
|
9
33
|
|
|
10
34
|
### Fixed
|
package/README.md
CHANGED
|
@@ -282,9 +282,18 @@ handler: async function* (ctx, args) {
|
|
|
282
282
|
}
|
|
283
283
|
```
|
|
284
284
|
|
|
285
|
-
### Type-Safe Client — `createFusionClient()` (tRPC-style)
|
|
286
|
-
End-to-end type safety from server to client, with full autocomplete
|
|
285
|
+
### Type-Safe Client — `createFusionClient()` + `InferRouter` (tRPC-style)
|
|
286
|
+
End-to-end type safety from server to client, with full autocomplete — **no manual type definitions**:
|
|
287
287
|
```typescript
|
|
288
|
+
// ── Server: automatic router extraction ──
|
|
289
|
+
import { createTool, createTypedRegistry } from '@vinkius-core/mcp-fusion';
|
|
290
|
+
import type { InferRouter } from '@vinkius-core/mcp-fusion';
|
|
291
|
+
|
|
292
|
+
const registry = createTypedRegistry<AppContext>()(projects, billing);
|
|
293
|
+
export type AppRouter = InferRouter<typeof registry>;
|
|
294
|
+
// Produces: { 'projects.list': { workspace_id: string }, 'billing.refund': { invoice_id: string, amount: number } }
|
|
295
|
+
|
|
296
|
+
// ── Client: full autocomplete ──
|
|
288
297
|
import { createFusionClient } from '@vinkius-core/mcp-fusion/client';
|
|
289
298
|
import type { AppRouter } from './mcp-server';
|
|
290
299
|
|
|
@@ -396,6 +405,8 @@ Six pure-function modules organized by bounded context. Every module is independ
|
|
|
396
405
|
| **`defineTool()` — JSON-First API** | Build tools without Zod imports — strings, enums, arrays, regex |
|
|
397
406
|
| **`createTool()` — Zod Power Mode** | Full `.refine()`, `.transform()`, `.regex()` for advanced validation |
|
|
398
407
|
| **`createFusionClient()` — Typed Client** | tRPC-style end-to-end type safety from server to client |
|
|
408
|
+
| **`InferRouter<T>` — Automatic Router Types** | Zero-manual-typing: extracts RouterMap from `createTypedRegistry()` at compile time |
|
|
409
|
+
| **Typed Handler Args** | Handler `args` automatically typed from schema/params — no casts needed |
|
|
399
410
|
| **`defineMiddleware()` — Context Derivation** | tRPC-style derive data into context with type inference |
|
|
400
411
|
| **`toolError()` — Self-Healing Errors** | Structured error recovery for autonomous LLM agents |
|
|
401
412
|
| **`progress()` — Streaming Progress** | Generator handlers yield progress during long operations |
|
|
@@ -46,6 +46,7 @@
|
|
|
46
46
|
import { type ZodObject, type ZodRawShape } from 'zod';
|
|
47
47
|
import { type Tool as McpTool } from '@modelcontextprotocol/sdk/types.js';
|
|
48
48
|
import { type ToolResponse, type ToolBuilder, type ActionMetadata, type MiddlewareFn, type ActionConfig } from '../types.js';
|
|
49
|
+
import { type DebugObserverFn } from '../observability/DebugObserver.js';
|
|
49
50
|
import { type GroupConfigurator } from './ActionGroupBuilder.js';
|
|
50
51
|
export { ActionGroupBuilder } from './ActionGroupBuilder.js';
|
|
51
52
|
export type { GroupConfigurator } from './ActionGroupBuilder.js';
|
|
@@ -98,7 +99,7 @@ export type { GroupConfigurator } from './ActionGroupBuilder.js';
|
|
|
98
99
|
* @see {@link GroupedToolBuilder} for the full builder API
|
|
99
100
|
* @see {@link ToolRegistry.register} for tool registration
|
|
100
101
|
*/
|
|
101
|
-
export declare function createTool<TContext = void>(name:
|
|
102
|
+
export declare function createTool<TContext = void, TName extends string = string>(name: TName): GroupedToolBuilder<TContext, Record<string, never>, TName>;
|
|
102
103
|
/**
|
|
103
104
|
* Fluent builder for creating consolidated MCP tools.
|
|
104
105
|
*
|
|
@@ -108,10 +109,12 @@ export declare function createTool<TContext = void>(name: string): GroupedToolBu
|
|
|
108
109
|
*
|
|
109
110
|
* @typeParam TContext - Application context passed to every handler
|
|
110
111
|
* @typeParam TCommon - Shape of the common schema (inferred automatically)
|
|
112
|
+
* @typeParam TName - Tool name literal (inferred by createTool)
|
|
113
|
+
* @typeParam TRouterMap - Accumulated action entries for InferRouter (phantom type)
|
|
111
114
|
*
|
|
112
115
|
* @see {@link createTool} for the recommended factory function
|
|
113
116
|
*/
|
|
114
|
-
export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<string, unknown> = Record<string, never>> implements ToolBuilder<TContext> {
|
|
117
|
+
export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<string, unknown> = Record<string, never>, TName extends string = string, TRouterMap extends Record<string, unknown> = Record<string, never>> implements ToolBuilder<TContext> {
|
|
115
118
|
private readonly _name;
|
|
116
119
|
private _description?;
|
|
117
120
|
private _discriminator;
|
|
@@ -124,6 +127,7 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
124
127
|
private _hasGroup;
|
|
125
128
|
private _toonMode;
|
|
126
129
|
private _frozen;
|
|
130
|
+
private _debug?;
|
|
127
131
|
private _cachedTool?;
|
|
128
132
|
private _executionContext?;
|
|
129
133
|
constructor(name: string);
|
|
@@ -233,7 +237,7 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
233
237
|
* });
|
|
234
238
|
* ```
|
|
235
239
|
*/
|
|
236
|
-
commonSchema<TSchema extends ZodObject<ZodRawShape>>(schema: TSchema): GroupedToolBuilder<TContext, TSchema["_output"]>;
|
|
240
|
+
commonSchema<TSchema extends ZodObject<ZodRawShape>>(schema: TSchema): GroupedToolBuilder<TContext, TSchema["_output"], TName, TRouterMap>;
|
|
237
241
|
/**
|
|
238
242
|
* Enable TOON-formatted descriptions for token optimization.
|
|
239
243
|
*
|
|
@@ -316,8 +320,8 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
316
320
|
* @see {@link ActionConfig} for all configuration options
|
|
317
321
|
* @see {@link GroupedToolBuilder.group} for hierarchical grouping
|
|
318
322
|
*/
|
|
319
|
-
action<TSchema extends ZodObject<ZodRawShape>, TOmit extends keyof TCommon = never>(config: {
|
|
320
|
-
name:
|
|
323
|
+
action<TActionName extends string, TSchema extends ZodObject<ZodRawShape>, TOmit extends keyof TCommon = never>(config: {
|
|
324
|
+
name: TActionName;
|
|
321
325
|
description?: string;
|
|
322
326
|
schema: TSchema;
|
|
323
327
|
destructive?: boolean;
|
|
@@ -325,9 +329,15 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
325
329
|
readOnly?: boolean;
|
|
326
330
|
omitCommon?: TOmit[];
|
|
327
331
|
handler: (ctx: TContext, args: TSchema["_output"] & Omit<TCommon, TOmit>) => Promise<ToolResponse>;
|
|
328
|
-
}):
|
|
329
|
-
|
|
330
|
-
|
|
332
|
+
}): GroupedToolBuilder<TContext, TCommon, TName, TRouterMap & {
|
|
333
|
+
[K in `${TName}.${TActionName}`]: TSchema["_output"] & Omit<TCommon, TOmit>;
|
|
334
|
+
}>;
|
|
335
|
+
/** Register a flat action (untyped: no schema, args default to Record<string, unknown>) */
|
|
336
|
+
action<TActionName extends string>(config: ActionConfig<TContext> & {
|
|
337
|
+
name: TActionName;
|
|
338
|
+
}): GroupedToolBuilder<TContext, TCommon, TName, TRouterMap & {
|
|
339
|
+
[K in `${TName}.${TActionName}`]: TCommon extends Record<string, never> ? Record<string, unknown> : TCommon;
|
|
340
|
+
}>;
|
|
331
341
|
/**
|
|
332
342
|
* Register a group of actions under a namespace.
|
|
333
343
|
*
|
|
@@ -378,12 +388,38 @@ export declare class GroupedToolBuilder<TContext = void, TCommon extends Record<
|
|
|
378
388
|
* ```
|
|
379
389
|
*/
|
|
380
390
|
buildToolDefinition(): McpTool;
|
|
391
|
+
/**
|
|
392
|
+
* Enable debug observability for this tool.
|
|
393
|
+
*
|
|
394
|
+
* When enabled, structured {@link DebugEvent} events are emitted at
|
|
395
|
+
* each step of the execution pipeline.
|
|
396
|
+
*
|
|
397
|
+
* When disabled (the default), there is **zero runtime overhead** —
|
|
398
|
+
* no conditionals, no timing, no object allocations in the hot path.
|
|
399
|
+
*
|
|
400
|
+
* @param observer - A {@link DebugObserverFn} created by `createDebugObserver()`
|
|
401
|
+
* @returns `this` for chaining
|
|
402
|
+
*
|
|
403
|
+
* @example
|
|
404
|
+
* ```typescript
|
|
405
|
+
* import { createTool, createDebugObserver, success } from '@vinkius-core/mcp-fusion';
|
|
406
|
+
*
|
|
407
|
+
* const debug = createDebugObserver();
|
|
408
|
+
*
|
|
409
|
+
* const tool = createTool<void>('users')
|
|
410
|
+
* .debug(debug) // ← enable observability
|
|
411
|
+
* .action({ name: 'list', handler: async () => success([]) });
|
|
412
|
+
* ```
|
|
413
|
+
*/
|
|
414
|
+
debug(observer: DebugObserverFn): this;
|
|
381
415
|
/**
|
|
382
416
|
* Route a tool call to the correct action handler.
|
|
383
417
|
*
|
|
384
418
|
* Pipeline: `parseDiscriminator → resolveAction → validateArgs → runChain`
|
|
385
419
|
*
|
|
386
420
|
* Auto-calls {@link buildToolDefinition} if not called yet.
|
|
421
|
+
* If a debug observer is active, structured events are emitted
|
|
422
|
+
* at each pipeline step with timing information.
|
|
387
423
|
*
|
|
388
424
|
* @param ctx - Application context
|
|
389
425
|
* @param args - Raw arguments from the LLM (includes discriminator)
|
|
@@ -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,EAEnB,KAAK,YAAY,EACjB,KAAK,YAAY,EACpB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"GroupedToolBuilder.d.ts","sourceRoot":"","sources":["../../../src/framework/builder/GroupedToolBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -47,6 +47,7 @@ import {} from 'zod';
|
|
|
47
47
|
import {} from '@modelcontextprotocol/sdk/types.js';
|
|
48
48
|
import { error } from '../response.js';
|
|
49
49
|
import {} from '../types.js';
|
|
50
|
+
import {} from '../observability/DebugObserver.js';
|
|
50
51
|
import { getActionRequiredFields } from '../schema/SchemaUtils.js';
|
|
51
52
|
import { parseDiscriminator, resolveAction, validateArgs, runChain, } from '../execution/ExecutionPipeline.js';
|
|
52
53
|
import { compileToolDefinition } from './ToolDefinitionCompiler.js';
|
|
@@ -118,6 +119,8 @@ export function createTool(name) {
|
|
|
118
119
|
*
|
|
119
120
|
* @typeParam TContext - Application context passed to every handler
|
|
120
121
|
* @typeParam TCommon - Shape of the common schema (inferred automatically)
|
|
122
|
+
* @typeParam TName - Tool name literal (inferred by createTool)
|
|
123
|
+
* @typeParam TRouterMap - Accumulated action entries for InferRouter (phantom type)
|
|
121
124
|
*
|
|
122
125
|
* @see {@link createTool} for the recommended factory function
|
|
123
126
|
*/
|
|
@@ -134,6 +137,7 @@ export class GroupedToolBuilder {
|
|
|
134
137
|
_hasGroup = false;
|
|
135
138
|
_toonMode = false;
|
|
136
139
|
_frozen = false;
|
|
140
|
+
_debug;
|
|
137
141
|
// Cached build result
|
|
138
142
|
_cachedTool;
|
|
139
143
|
_executionContext;
|
|
@@ -404,6 +408,35 @@ export class GroupedToolBuilder {
|
|
|
404
408
|
Object.freeze(this._actions);
|
|
405
409
|
return result.tool;
|
|
406
410
|
}
|
|
411
|
+
// ── Debug (opt-in observability) ──────────────────────
|
|
412
|
+
/**
|
|
413
|
+
* Enable debug observability for this tool.
|
|
414
|
+
*
|
|
415
|
+
* When enabled, structured {@link DebugEvent} events are emitted at
|
|
416
|
+
* each step of the execution pipeline.
|
|
417
|
+
*
|
|
418
|
+
* When disabled (the default), there is **zero runtime overhead** —
|
|
419
|
+
* no conditionals, no timing, no object allocations in the hot path.
|
|
420
|
+
*
|
|
421
|
+
* @param observer - A {@link DebugObserverFn} created by `createDebugObserver()`
|
|
422
|
+
* @returns `this` for chaining
|
|
423
|
+
*
|
|
424
|
+
* @example
|
|
425
|
+
* ```typescript
|
|
426
|
+
* import { createTool, createDebugObserver, success } from '@vinkius-core/mcp-fusion';
|
|
427
|
+
*
|
|
428
|
+
* const debug = createDebugObserver();
|
|
429
|
+
*
|
|
430
|
+
* const tool = createTool<void>('users')
|
|
431
|
+
* .debug(debug) // ← enable observability
|
|
432
|
+
* .action({ name: 'list', handler: async () => success([]) });
|
|
433
|
+
* ```
|
|
434
|
+
*/
|
|
435
|
+
debug(observer) {
|
|
436
|
+
// No frozen check — debug is safe to attach after build
|
|
437
|
+
this._debug = observer;
|
|
438
|
+
return this;
|
|
439
|
+
}
|
|
407
440
|
// ── Execute (delegates to ExecutionPipeline) ────────
|
|
408
441
|
/**
|
|
409
442
|
* Route a tool call to the correct action handler.
|
|
@@ -411,6 +444,8 @@ export class GroupedToolBuilder {
|
|
|
411
444
|
* Pipeline: `parseDiscriminator → resolveAction → validateArgs → runChain`
|
|
412
445
|
*
|
|
413
446
|
* Auto-calls {@link buildToolDefinition} if not called yet.
|
|
447
|
+
* If a debug observer is active, structured events are emitted
|
|
448
|
+
* at each pipeline step with timing information.
|
|
414
449
|
*
|
|
415
450
|
* @param ctx - Application context
|
|
416
451
|
* @param args - Raw arguments from the LLM (includes discriminator)
|
|
@@ -433,16 +468,65 @@ export class GroupedToolBuilder {
|
|
|
433
468
|
if (!execCtx) {
|
|
434
469
|
return error(`Builder "${this._name}" failed to initialize.`);
|
|
435
470
|
}
|
|
471
|
+
// Fast path: no debug observer → zero overhead
|
|
472
|
+
if (!this._debug) {
|
|
473
|
+
const disc = parseDiscriminator(execCtx, args);
|
|
474
|
+
if (!disc.ok)
|
|
475
|
+
return disc.response;
|
|
476
|
+
const resolved = resolveAction(execCtx, disc.value);
|
|
477
|
+
if (!resolved.ok)
|
|
478
|
+
return resolved.response;
|
|
479
|
+
const validated = validateArgs(execCtx, resolved.value, args);
|
|
480
|
+
if (!validated.ok)
|
|
481
|
+
return validated.response;
|
|
482
|
+
return runChain(execCtx, resolved.value, ctx, validated.value);
|
|
483
|
+
}
|
|
484
|
+
// Debug path: emit structured events at each step
|
|
485
|
+
const debug = this._debug;
|
|
486
|
+
const startTime = performance.now();
|
|
487
|
+
// Step 1: Route
|
|
436
488
|
const disc = parseDiscriminator(execCtx, args);
|
|
437
|
-
if (!disc.ok)
|
|
489
|
+
if (!disc.ok) {
|
|
490
|
+
debug({ type: 'error', tool: this._name, action: '?', error: 'Missing discriminator', step: 'route', timestamp: Date.now() });
|
|
438
491
|
return disc.response;
|
|
439
|
-
|
|
440
|
-
|
|
492
|
+
}
|
|
493
|
+
const actionName = disc.value;
|
|
494
|
+
debug({ type: 'route', tool: this._name, action: actionName, timestamp: Date.now() });
|
|
495
|
+
// Step 2: Resolve
|
|
496
|
+
const resolved = resolveAction(execCtx, actionName);
|
|
497
|
+
if (!resolved.ok) {
|
|
498
|
+
debug({ type: 'error', tool: this._name, action: actionName, error: `Unknown action "${actionName}"`, step: 'route', timestamp: Date.now() });
|
|
441
499
|
return resolved.response;
|
|
500
|
+
}
|
|
501
|
+
// Step 3: Validate
|
|
502
|
+
const validateStart = performance.now();
|
|
442
503
|
const validated = validateArgs(execCtx, resolved.value, args);
|
|
443
|
-
|
|
504
|
+
const validateDuration = performance.now() - validateStart;
|
|
505
|
+
if (!validated.ok) {
|
|
506
|
+
debug({ type: 'validate', tool: this._name, action: actionName, valid: false, error: 'Validation failed', durationMs: validateDuration, timestamp: Date.now() });
|
|
444
507
|
return validated.response;
|
|
445
|
-
|
|
508
|
+
}
|
|
509
|
+
debug({ type: 'validate', tool: this._name, action: actionName, valid: true, durationMs: validateDuration, timestamp: Date.now() });
|
|
510
|
+
// Step 4: Middleware chain info (global + action-level)
|
|
511
|
+
const actionMwCount = resolved.value.action.middlewares?.length ?? 0;
|
|
512
|
+
const globalMwCount = this._middlewares.length;
|
|
513
|
+
const chainLength = globalMwCount + actionMwCount;
|
|
514
|
+
if (chainLength > 0) {
|
|
515
|
+
debug({ type: 'middleware', tool: this._name, action: actionName, chainLength, timestamp: Date.now() });
|
|
516
|
+
}
|
|
517
|
+
// Step 5: Execute
|
|
518
|
+
try {
|
|
519
|
+
const response = await runChain(execCtx, resolved.value, ctx, validated.value);
|
|
520
|
+
const totalDuration = performance.now() - startTime;
|
|
521
|
+
const isErr = response.isError === true;
|
|
522
|
+
debug({ type: 'execute', tool: this._name, action: actionName, durationMs: totalDuration, isError: isErr, timestamp: Date.now() });
|
|
523
|
+
return response;
|
|
524
|
+
}
|
|
525
|
+
catch (err) {
|
|
526
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
527
|
+
debug({ type: 'error', tool: this._name, action: actionName, error: message, step: 'execute', timestamp: Date.now() });
|
|
528
|
+
throw err;
|
|
529
|
+
}
|
|
446
530
|
}
|
|
447
531
|
// ── Introspection ───────────────────────────────────
|
|
448
532
|
/** Get the tool name. */
|
|
@@ -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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"}
|
|
@@ -31,14 +31,19 @@ import { type ParamsMap, type InferParams } from './ParamDescriptors.js';
|
|
|
31
31
|
/**
|
|
32
32
|
* Action definition within a `defineTool()` config.
|
|
33
33
|
*
|
|
34
|
+
* When `params` is provided as a `ParamsMap`, the handler's `args` are
|
|
35
|
+
* automatically typed as `InferParams<TParams> & TSharedArgs`.
|
|
36
|
+
* When `params` is a ZodObject, use `z.infer<typeof schema>` for manual typing.
|
|
37
|
+
*
|
|
34
38
|
* @typeParam TContext - Application context type
|
|
35
|
-
* @typeParam
|
|
39
|
+
* @typeParam TSharedArgs - Shared args inherited from ToolConfig.shared
|
|
40
|
+
* @typeParam TParams - Action-specific params (inferred from the params field)
|
|
36
41
|
*/
|
|
37
|
-
export interface ActionDef<TContext,
|
|
42
|
+
export interface ActionDef<TContext, TSharedArgs = Record<string, never>, TParams extends ParamsMap = ParamsMap> {
|
|
38
43
|
/** Human-readable description for the LLM */
|
|
39
44
|
description?: string;
|
|
40
45
|
/** Parameter definitions (JSON descriptors or Zod schema) */
|
|
41
|
-
params?:
|
|
46
|
+
params?: TParams | ZodObject<ZodRawShape>;
|
|
42
47
|
/** Mark as read-only (no side effects) */
|
|
43
48
|
readOnly?: boolean;
|
|
44
49
|
/** Mark as destructive (irreversible) */
|
|
@@ -49,8 +54,8 @@ export interface ActionDef<TContext, TArgs = Record<string, never>> {
|
|
|
49
54
|
omitCommon?: string[];
|
|
50
55
|
/** Action-level middleware */
|
|
51
56
|
middleware?: MiddlewareFn<TContext>[];
|
|
52
|
-
/** The handler function */
|
|
53
|
-
handler: (ctx: TContext, args:
|
|
57
|
+
/** The handler function — args are fully typed when params is specified */
|
|
58
|
+
handler: (ctx: TContext, args: TParams extends ParamsMap ? (keyof TParams extends never ? TSharedArgs & Record<string, unknown> : InferParams<TParams> & TSharedArgs) : TSharedArgs & Record<string, unknown>) => Promise<ToolResponse>;
|
|
54
59
|
}
|
|
55
60
|
/**
|
|
56
61
|
* Group definition within a `defineTool()` config.
|
|
@@ -65,8 +70,10 @@ export interface GroupDef<TContext, TSharedArgs = Record<string, never>> {
|
|
|
65
70
|
omitCommon?: string[];
|
|
66
71
|
/** Group-scoped middleware */
|
|
67
72
|
middleware?: MiddlewareFn<TContext>[];
|
|
68
|
-
/** Actions within this group */
|
|
69
|
-
actions:
|
|
73
|
+
/** Actions within this group — each action's params are inferred independently */
|
|
74
|
+
actions: {
|
|
75
|
+
[K in string]: ActionDef<TContext, TSharedArgs>;
|
|
76
|
+
};
|
|
70
77
|
}
|
|
71
78
|
/**
|
|
72
79
|
* Full `defineTool()` configuration.
|
|
@@ -87,10 +94,14 @@ export interface ToolConfig<TContext, TShared extends ParamsMap = ParamsMap> {
|
|
|
87
94
|
shared?: TShared | ZodObject<ZodRawShape>;
|
|
88
95
|
/** Global middleware applied to all actions */
|
|
89
96
|
middleware?: MiddlewareFn<TContext>[];
|
|
90
|
-
/** Flat actions
|
|
91
|
-
actions?:
|
|
97
|
+
/** Flat actions — each action's params are inferred independently */
|
|
98
|
+
actions?: {
|
|
99
|
+
[K in string]: ActionDef<TContext, InferParams<TShared>>;
|
|
100
|
+
};
|
|
92
101
|
/** Hierarchical groups (mutually exclusive with `actions`) */
|
|
93
|
-
groups?:
|
|
102
|
+
groups?: {
|
|
103
|
+
[K in string]: GroupDef<TContext, InferParams<TShared>>;
|
|
104
|
+
};
|
|
94
105
|
}
|
|
95
106
|
/** Expected return type for handlers */
|
|
96
107
|
export type ExpectedHandlerReturnType = Promise<ToolResponse> | AsyncGenerator<unknown, ToolResponse, unknown>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineTool.d.ts","sourceRoot":"","sources":["../../../src/framework/builder/defineTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAE,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAqB,MAAM,aAAa,CAAC;AACtF,OAAO,EAEH,KAAK,SAAS,EACd,KAAK,WAAW,EACnB,MAAM,uBAAuB,CAAC;AAM/B
|
|
1
|
+
{"version":3,"file":"defineTool.d.ts","sourceRoot":"","sources":["../../../src/framework/builder/defineTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"defineTool.js","sourceRoot":"","sources":["../../../src/framework/builder/defineTool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,EAAoC,MAAM,KAAK,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAA2D,MAAM,aAAa,CAAC;AACtF,OAAO,EACH,kBAAkB,GAGrB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"defineTool.js","sourceRoot":"","sources":["../../../src/framework/builder/defineTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InferRouter — Compile-Time Router Type Extraction
|
|
3
|
+
*
|
|
4
|
+
* Extracts a fully typed `RouterMap` from a `TypedToolRegistry` or
|
|
5
|
+
* an array of `GroupedToolBuilder` instances. This is the key piece
|
|
6
|
+
* that makes the FusionClient tRPC-style experience real.
|
|
7
|
+
*
|
|
8
|
+
* **Zero runtime cost** — this module contains only type declarations.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // ── SERVER SIDE ──
|
|
13
|
+
* const registry = createTypedRegistry<AppContext>()(
|
|
14
|
+
* projectsTool, // GroupedToolBuilder<AppContext, ..., 'projects', { 'projects.list': ..., ... }>
|
|
15
|
+
* billingTool,
|
|
16
|
+
* );
|
|
17
|
+
* export type AppRouter = InferRouter<typeof registry>;
|
|
18
|
+
*
|
|
19
|
+
* // ── CLIENT SIDE ──
|
|
20
|
+
* import type { AppRouter } from './server';
|
|
21
|
+
* const client = createFusionClient<AppRouter>(transport);
|
|
22
|
+
* await client.execute('projects.list', { workspace_id: 'ws_1' });
|
|
23
|
+
* // ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
|
|
24
|
+
* // autocomplete! typed args!
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @module
|
|
28
|
+
*/
|
|
29
|
+
import { type GroupedToolBuilder } from '../builder/GroupedToolBuilder.js';
|
|
30
|
+
/**
|
|
31
|
+
* A typed wrapper around `ToolRegistry` that preserves builder types
|
|
32
|
+
* for compile-time router inference.
|
|
33
|
+
*
|
|
34
|
+
* Created by {@link createTypedRegistry}. The registry itself stores
|
|
35
|
+
* builders at runtime via a standard `ToolRegistry`, but the `_builders`
|
|
36
|
+
* tuple type is preserved for `InferRouter` extraction.
|
|
37
|
+
*
|
|
38
|
+
* @typeParam TContext - Application context type
|
|
39
|
+
* @typeParam TBuilders - Tuple of registered builder types
|
|
40
|
+
*/
|
|
41
|
+
export interface TypedToolRegistry<TContext, TBuilders extends readonly unknown[]> {
|
|
42
|
+
/** The underlying ToolRegistry instance (for runtime use) */
|
|
43
|
+
readonly registry: import('../registry/ToolRegistry.js').ToolRegistry<TContext>;
|
|
44
|
+
/** Branded field for type inference — never accessed at runtime */
|
|
45
|
+
readonly _builders: TBuilders;
|
|
46
|
+
/** Branded phantom type for context inference */
|
|
47
|
+
readonly _context: TContext;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Infer a `RouterMap` from a `TypedToolRegistry`.
|
|
51
|
+
*
|
|
52
|
+
* Extracts the accumulated `TRouterMap` from each builder registered
|
|
53
|
+
* in the typed registry, producing a flat intersection of all
|
|
54
|
+
* `{ 'toolName.actionName': ArgsType }` entries.
|
|
55
|
+
*
|
|
56
|
+
* @typeParam T - A `TypedToolRegistry` instance type
|
|
57
|
+
*
|
|
58
|
+
* @example
|
|
59
|
+
* ```typescript
|
|
60
|
+
* const projects = createTool<Ctx>('projects')
|
|
61
|
+
* .action({ name: 'list', schema: z.object({ status: z.string() }), handler: ... })
|
|
62
|
+
* .action({ name: 'create', schema: z.object({ name: z.string() }), handler: ... });
|
|
63
|
+
*
|
|
64
|
+
* const registry = createTypedRegistry<Ctx>()(projects);
|
|
65
|
+
* type AppRouter = InferRouter<typeof registry>;
|
|
66
|
+
* // Result: {
|
|
67
|
+
* // 'projects.list': { status: string };
|
|
68
|
+
* // 'projects.create': { name: string };
|
|
69
|
+
* // }
|
|
70
|
+
* ```
|
|
71
|
+
*/
|
|
72
|
+
export type InferRouter<T> = T extends TypedToolRegistry<infer _TCtx, infer TBuilders> ? InferRouterFromBuilders<TBuilders> : T extends readonly unknown[] ? InferRouterFromBuilders<T> : Record<string, Record<string, unknown>>;
|
|
73
|
+
/**
|
|
74
|
+
* Infer router entries from a tuple of builders.
|
|
75
|
+
*
|
|
76
|
+
* Recursively intersects the `TRouterMap` from each builder in the tuple.
|
|
77
|
+
*
|
|
78
|
+
* @internal
|
|
79
|
+
*/
|
|
80
|
+
type InferRouterFromBuilders<T> = T extends readonly [infer First, ...infer Rest] ? ExtractRouterMap<First> & InferRouterFromBuilders<Rest> : T extends readonly [] ? {} : Record<string, Record<string, unknown>>;
|
|
81
|
+
/**
|
|
82
|
+
* Extract the accumulated `TRouterMap` from a single `GroupedToolBuilder`.
|
|
83
|
+
*
|
|
84
|
+
* The 4th generic parameter of `GroupedToolBuilder<TCtx, TCommon, TName, TRouterMap>`
|
|
85
|
+
* carries the compile-time action map. This type extracts it.
|
|
86
|
+
*
|
|
87
|
+
* @internal
|
|
88
|
+
*/
|
|
89
|
+
type ExtractRouterMap<T> = T extends GroupedToolBuilder<infer _TCtx, infer _TCommon, infer _TName, infer TRouterMap> ? TRouterMap : Record<string, Record<string, unknown>>;
|
|
90
|
+
export {};
|
|
91
|
+
//# sourceMappingURL=InferRouter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InferRouter.d.ts","sourceRoot":"","sources":["../../../src/framework/client/InferRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,kCAAkC,CAAC;AAM3E;;;;;;;;;;GAUG;AACH,MAAM,WAAW,iBAAiB,CAAC,QAAQ,EAAE,SAAS,SAAS,SAAS,OAAO,EAAE;IAC7E,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,EAAE,OAAO,6BAA6B,EAAE,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChF,mEAAmE;IACnE,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,iDAAiD;IACjD,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;CAC/B;AAMD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,MAAM,WAAW,CAAC,CAAC,IACrB,CAAC,SAAS,iBAAiB,CAAC,MAAM,KAAK,EAAE,MAAM,SAAS,CAAC,GACnD,uBAAuB,CAAC,SAAS,CAAC,GAClC,CAAC,SAAS,SAAS,OAAO,EAAE,GACxB,uBAAuB,CAAC,CAAC,CAAC,GAC1B,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtD;;;;;;GAMG;AACH,KAAK,uBAAuB,CAAC,CAAC,IAC1B,CAAC,SAAS,SAAS,CAAC,MAAM,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,GACzC,gBAAgB,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,IAAI,CAAC,GACvD,CAAC,SAAS,SAAS,EAAE,GAEjB,EAAE,GACF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAEtD;;;;;;;GAOG;AACH,KAAK,gBAAgB,CAAC,CAAC,IACnB,CAAC,SAAS,kBAAkB,CAAC,MAAM,KAAK,EAAE,MAAM,QAAQ,EAAE,MAAM,MAAM,EAAE,MAAM,UAAU,CAAC,GACnF,UAAU,GACV,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* InferRouter — Compile-Time Router Type Extraction
|
|
3
|
+
*
|
|
4
|
+
* Extracts a fully typed `RouterMap` from a `TypedToolRegistry` or
|
|
5
|
+
* an array of `GroupedToolBuilder` instances. This is the key piece
|
|
6
|
+
* that makes the FusionClient tRPC-style experience real.
|
|
7
|
+
*
|
|
8
|
+
* **Zero runtime cost** — this module contains only type declarations.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```typescript
|
|
12
|
+
* // ── SERVER SIDE ──
|
|
13
|
+
* const registry = createTypedRegistry<AppContext>()(
|
|
14
|
+
* projectsTool, // GroupedToolBuilder<AppContext, ..., 'projects', { 'projects.list': ..., ... }>
|
|
15
|
+
* billingTool,
|
|
16
|
+
* );
|
|
17
|
+
* export type AppRouter = InferRouter<typeof registry>;
|
|
18
|
+
*
|
|
19
|
+
* // ── CLIENT SIDE ──
|
|
20
|
+
* import type { AppRouter } from './server';
|
|
21
|
+
* const client = createFusionClient<AppRouter>(transport);
|
|
22
|
+
* await client.execute('projects.list', { workspace_id: 'ws_1' });
|
|
23
|
+
* // ^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^
|
|
24
|
+
* // autocomplete! typed args!
|
|
25
|
+
* ```
|
|
26
|
+
*
|
|
27
|
+
* @module
|
|
28
|
+
*/
|
|
29
|
+
import {} from '../builder/GroupedToolBuilder.js';
|
|
30
|
+
//# sourceMappingURL=InferRouter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InferRouter.js","sourceRoot":"","sources":["../../../src/framework/client/InferRouter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAA2B,MAAM,kCAAkC,CAAC"}
|