@vinkius-core/mcp-fusion 2.6.0 → 2.7.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/dist/client/FusionClient.d.ts +122 -1
- package/dist/client/FusionClient.d.ts.map +1 -1
- package/dist/client/FusionClient.js +173 -11
- package/dist/client/FusionClient.js.map +1 -1
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/core/StandardSchema.d.ts +178 -0
- package/dist/core/StandardSchema.d.ts.map +1 -0
- package/dist/core/StandardSchema.js +166 -0
- package/dist/core/StandardSchema.js.map +1 -0
- package/dist/core/createGroup.d.ts +140 -0
- package/dist/core/createGroup.d.ts.map +1 -0
- package/dist/core/createGroup.js +133 -0
- package/dist/core/createGroup.js.map +1 -0
- package/dist/core/execution/ExecutionPipeline.d.ts.map +1 -1
- package/dist/core/execution/ExecutionPipeline.js +6 -2
- package/dist/core/execution/ExecutionPipeline.js.map +1 -1
- package/dist/core/index.d.ts +7 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +6 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/initFusion.d.ts +201 -0
- package/dist/core/initFusion.d.ts.map +1 -0
- package/dist/core/initFusion.js +134 -0
- package/dist/core/initFusion.js.map +1 -0
- package/dist/core/response.d.ts +49 -2
- package/dist/core/response.d.ts.map +1 -1
- package/dist/core/response.js +27 -5
- package/dist/core/response.js.map +1 -1
- package/dist/index.d.ts +16 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +8 -4
- package/dist/index.js.map +1 -1
- package/dist/presenter/ZodDescriptionExtractor.d.ts +54 -0
- package/dist/presenter/ZodDescriptionExtractor.d.ts.map +1 -0
- package/dist/presenter/ZodDescriptionExtractor.js +131 -0
- package/dist/presenter/ZodDescriptionExtractor.js.map +1 -0
- package/dist/presenter/definePresenter.d.ts +172 -0
- package/dist/presenter/definePresenter.d.ts.map +1 -0
- package/dist/presenter/definePresenter.js +96 -0
- package/dist/presenter/definePresenter.js.map +1 -0
- package/dist/presenter/index.d.ts +3 -0
- package/dist/presenter/index.d.ts.map +1 -1
- package/dist/presenter/index.js +4 -0
- package/dist/presenter/index.js.map +1 -1
- package/dist/server/DevServer.d.ts +96 -0
- package/dist/server/DevServer.d.ts.map +1 -0
- package/dist/server/DevServer.js +187 -0
- package/dist/server/DevServer.js.map +1 -0
- package/dist/server/autoDiscover.d.ts +63 -0
- package/dist/server/autoDiscover.d.ts.map +1 -0
- package/dist/server/autoDiscover.js +157 -0
- package/dist/server/autoDiscover.js.map +1 -0
- package/dist/server/index.d.ts +4 -0
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +4 -0
- package/dist/server/index.js.map +1 -1
- package/dist/state-sync/PolicyValidator.d.ts +36 -0
- package/dist/state-sync/PolicyValidator.d.ts.map +1 -1
- package/dist/state-sync/PolicyValidator.js +35 -0
- package/dist/state-sync/PolicyValidator.js.map +1 -1
- package/dist/state-sync/ResponseDecorator.d.ts.map +1 -1
- package/dist/state-sync/ResponseDecorator.js +2 -1
- package/dist/state-sync/ResponseDecorator.js.map +1 -1
- package/dist/state-sync/StateSyncLayer.d.ts +5 -4
- package/dist/state-sync/StateSyncLayer.d.ts.map +1 -1
- package/dist/state-sync/StateSyncLayer.js +35 -4
- package/dist/state-sync/StateSyncLayer.js.map +1 -1
- package/dist/state-sync/index.d.ts +3 -1
- package/dist/state-sync/index.d.ts.map +1 -1
- package/dist/state-sync/index.js +1 -0
- package/dist/state-sync/index.js.map +1 -1
- package/dist/state-sync/types.d.ts +62 -0
- package/dist/state-sync/types.d.ts.map +1 -1
- package/package.json +38 -1
|
@@ -0,0 +1,201 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* initFusion() — tRPC-Style Context Initialization
|
|
3
|
+
*
|
|
4
|
+
* Eliminates the need to pass `<AppContext>` as a generic parameter
|
|
5
|
+
* everywhere. Define your context type once, and every `f.tool()`,
|
|
6
|
+
* `f.presenter()`, `f.prompt()`, and `f.middleware()` call
|
|
7
|
+
* automatically inherits it.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // src/fusion.ts — defined once in the project
|
|
12
|
+
* import { initFusion } from '@vinkius-core/mcp-fusion';
|
|
13
|
+
*
|
|
14
|
+
* interface AppContext {
|
|
15
|
+
* db: PrismaClient;
|
|
16
|
+
* user: { id: string; role: string };
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* export const f = initFusion<AppContext>();
|
|
20
|
+
*
|
|
21
|
+
* // src/tools/billing.ts — daily usage, super clean
|
|
22
|
+
* import { f } from '../fusion';
|
|
23
|
+
* import { z } from 'zod';
|
|
24
|
+
*
|
|
25
|
+
* export const getInvoice = f.tool({
|
|
26
|
+
* name: 'billing.get_invoice',
|
|
27
|
+
* input: z.object({ id: z.string() }),
|
|
28
|
+
* handler: async ({ input, ctx }) => {
|
|
29
|
+
* // ctx is fully typed as AppContext!
|
|
30
|
+
* return await ctx.db.invoices.findUnique(input.id);
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @module
|
|
36
|
+
*/
|
|
37
|
+
import { type ZodType, type ZodObject, type ZodRawShape } from 'zod';
|
|
38
|
+
import { GroupedToolBuilder } from './builder/GroupedToolBuilder.js';
|
|
39
|
+
import { type ToolResponse } from './response.js';
|
|
40
|
+
import { type MiddlewareFn } from './types.js';
|
|
41
|
+
import { ToolRegistry } from './registry/ToolRegistry.js';
|
|
42
|
+
import { type Presenter } from '../presenter/Presenter.js';
|
|
43
|
+
import { type PresenterConfig } from '../presenter/definePresenter.js';
|
|
44
|
+
import { type MiddlewareDefinition } from './middleware/index.js';
|
|
45
|
+
import { type ToolConfig } from './builder/defineTool.js';
|
|
46
|
+
import { type PromptBuilder, type PromptConfig } from '../prompt/types.js';
|
|
47
|
+
import { type ParamsMap, type InferParams } from './builder/ParamDescriptors.js';
|
|
48
|
+
/**
|
|
49
|
+
* Ergonomic tool config for `f.tool()`.
|
|
50
|
+
*
|
|
51
|
+
* The `handler` receives `{ input, ctx }` instead of `(ctx, args)` —
|
|
52
|
+
* a more intuitive destructured pattern inspired by tRPC v11.
|
|
53
|
+
*
|
|
54
|
+
* @typeParam TContext - Application context (inherited from `initFusion`)
|
|
55
|
+
* @typeParam TInput - Input schema type (inferred from `input`)
|
|
56
|
+
*/
|
|
57
|
+
export interface FusionToolConfig<TContext, TInput extends ZodObject<ZodRawShape> | ParamsMap = ParamsMap> {
|
|
58
|
+
/** Tool name — use `domain.action` convention for flat exposition */
|
|
59
|
+
readonly name: string;
|
|
60
|
+
/** Human-readable description for the LLM */
|
|
61
|
+
readonly description?: string;
|
|
62
|
+
/** Input schema (Zod object or JSON param descriptors) */
|
|
63
|
+
readonly input?: TInput;
|
|
64
|
+
/** Capability tags for filtering */
|
|
65
|
+
readonly tags?: string[];
|
|
66
|
+
/** MCP annotations */
|
|
67
|
+
readonly annotations?: Record<string, unknown>;
|
|
68
|
+
/** Mark as read-only (no side effects) */
|
|
69
|
+
readonly readOnly?: boolean;
|
|
70
|
+
/** Mark as destructive (irreversible) */
|
|
71
|
+
readonly destructive?: boolean;
|
|
72
|
+
/** Mark as idempotent (safe to retry) */
|
|
73
|
+
readonly idempotent?: boolean;
|
|
74
|
+
/** Global middleware */
|
|
75
|
+
readonly middleware?: MiddlewareFn<TContext>[];
|
|
76
|
+
/** MVA Presenter for automatic response formatting */
|
|
77
|
+
readonly returns?: Presenter<unknown>;
|
|
78
|
+
/** Handler function — receives destructured `{ input, ctx }` */
|
|
79
|
+
readonly handler: (args: {
|
|
80
|
+
input: TInput extends ZodObject<ZodRawShape> ? TInput['_output'] : TInput extends ParamsMap ? InferParams<TInput> : Record<string, unknown>;
|
|
81
|
+
ctx: TContext;
|
|
82
|
+
}) => Promise<ToolResponse | unknown>;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The initialized Fusion instance.
|
|
86
|
+
*
|
|
87
|
+
* Provides context-typed factory methods for tools, presenters,
|
|
88
|
+
* prompts, middleware, and registry. Every method automatically
|
|
89
|
+
* inherits the `TContext` defined in `initFusion<TContext>()`.
|
|
90
|
+
*
|
|
91
|
+
* @typeParam TContext - The application context type
|
|
92
|
+
*/
|
|
93
|
+
export interface FusionInstance<TContext> {
|
|
94
|
+
/**
|
|
95
|
+
* Define a tool with automatic context typing.
|
|
96
|
+
*
|
|
97
|
+
* The handler receives `{ input, ctx }` where `ctx` is your `AppContext`
|
|
98
|
+
* and `input` is fully typed from the `input` schema.
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* const myTool = f.tool({
|
|
103
|
+
* name: 'users.list',
|
|
104
|
+
* input: z.object({ limit: z.number().optional() }),
|
|
105
|
+
* readOnly: true,
|
|
106
|
+
* handler: async ({ input, ctx }) => {
|
|
107
|
+
* return await ctx.db.users.findMany({ take: input.limit });
|
|
108
|
+
* },
|
|
109
|
+
* });
|
|
110
|
+
* ```
|
|
111
|
+
*/
|
|
112
|
+
tool<TInput extends ZodObject<ZodRawShape> | ParamsMap>(config: FusionToolConfig<TContext, TInput>): GroupedToolBuilder<TContext>;
|
|
113
|
+
/**
|
|
114
|
+
* Define a Presenter with the standard object-config API.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* ```typescript
|
|
118
|
+
* const InvoicePresenter = f.presenter({
|
|
119
|
+
* name: 'Invoice',
|
|
120
|
+
* schema: invoiceSchema,
|
|
121
|
+
* rules: ['CRITICAL: amount_cents is in CENTS.'],
|
|
122
|
+
* ui: (inv) => [ui.echarts({ ... })],
|
|
123
|
+
* });
|
|
124
|
+
* ```
|
|
125
|
+
*/
|
|
126
|
+
presenter<TSchema extends ZodType>(config: PresenterConfig<TSchema['_output']> & {
|
|
127
|
+
schema: TSchema;
|
|
128
|
+
}): Presenter<TSchema['_output']>;
|
|
129
|
+
/**
|
|
130
|
+
* Define a prompt with automatic context typing.
|
|
131
|
+
*
|
|
132
|
+
* @example
|
|
133
|
+
* ```typescript
|
|
134
|
+
* const greetPrompt = f.prompt('greet', {
|
|
135
|
+
* args: z.object({ name: z.string() }),
|
|
136
|
+
* handler: async (ctx, args) => ({
|
|
137
|
+
* messages: [PromptMessage.user(`Hello ${args.name}`)],
|
|
138
|
+
* }),
|
|
139
|
+
* });
|
|
140
|
+
* ```
|
|
141
|
+
*/
|
|
142
|
+
prompt(name: string, config: Omit<PromptConfig<TContext>, 'handler'> & {
|
|
143
|
+
handler: PromptConfig<TContext>['handler'];
|
|
144
|
+
}): PromptBuilder<TContext>;
|
|
145
|
+
/**
|
|
146
|
+
* Define a context-derivation middleware.
|
|
147
|
+
*
|
|
148
|
+
* @example
|
|
149
|
+
* ```typescript
|
|
150
|
+
* const withUser = f.middleware(async (ctx) => ({
|
|
151
|
+
* user: await ctx.db.users.findUnique(ctx.userId),
|
|
152
|
+
* }));
|
|
153
|
+
* ```
|
|
154
|
+
*/
|
|
155
|
+
middleware<TDerived extends Record<string, unknown>>(derive: (ctx: TContext) => TDerived | Promise<TDerived>): MiddlewareDefinition<TContext, TDerived>;
|
|
156
|
+
/**
|
|
157
|
+
* Create a fully configured tool using the standard `defineTool()` config.
|
|
158
|
+
* For power users who want the full `ToolConfig` API with context typing.
|
|
159
|
+
*
|
|
160
|
+
* @example
|
|
161
|
+
* ```typescript
|
|
162
|
+
* const platform = f.defineTool('platform', {
|
|
163
|
+
* shared: { workspace_id: 'string' },
|
|
164
|
+
* groups: { users: { actions: { list: { handler: listUsers } } } },
|
|
165
|
+
* });
|
|
166
|
+
* ```
|
|
167
|
+
*/
|
|
168
|
+
defineTool(name: string, config: ToolConfig<TContext>): GroupedToolBuilder<TContext>;
|
|
169
|
+
/**
|
|
170
|
+
* Create a pre-typed ToolRegistry ready for registration.
|
|
171
|
+
*
|
|
172
|
+
* @example
|
|
173
|
+
* ```typescript
|
|
174
|
+
* const registry = f.registry();
|
|
175
|
+
* registry.register(myTool);
|
|
176
|
+
* ```
|
|
177
|
+
*/
|
|
178
|
+
registry(): ToolRegistry<TContext>;
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Initialize a Fusion instance with a fixed context type.
|
|
182
|
+
*
|
|
183
|
+
* Call once per project. All factory methods on the returned instance
|
|
184
|
+
* automatically inherit the context type — zero generic repetition.
|
|
185
|
+
*
|
|
186
|
+
* @typeParam TContext - The application-level context type
|
|
187
|
+
* @returns A {@link FusionInstance} with context-typed factories
|
|
188
|
+
*
|
|
189
|
+
* @example
|
|
190
|
+
* ```typescript
|
|
191
|
+
* // Single definition, typically in src/fusion.ts
|
|
192
|
+
* export const f = initFusion<AppContext>();
|
|
193
|
+
*
|
|
194
|
+
* // Usage anywhere in the project
|
|
195
|
+
* const tool = f.tool({ name: 'tasks.list', handler: ... });
|
|
196
|
+
* const presenter = f.presenter({ name: 'Task', schema: taskSchema });
|
|
197
|
+
* const registry = f.registry();
|
|
198
|
+
* ```
|
|
199
|
+
*/
|
|
200
|
+
export declare function initFusion<TContext = void>(): FusionInstance<TContext>;
|
|
201
|
+
//# sourceMappingURL=initFusion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initFusion.d.ts","sourceRoot":"","sources":["../../src/core/initFusion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* initFusion() — tRPC-Style Context Initialization
|
|
3
|
+
*
|
|
4
|
+
* Eliminates the need to pass `<AppContext>` as a generic parameter
|
|
5
|
+
* everywhere. Define your context type once, and every `f.tool()`,
|
|
6
|
+
* `f.presenter()`, `f.prompt()`, and `f.middleware()` call
|
|
7
|
+
* automatically inherits it.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // src/fusion.ts — defined once in the project
|
|
12
|
+
* import { initFusion } from '@vinkius-core/mcp-fusion';
|
|
13
|
+
*
|
|
14
|
+
* interface AppContext {
|
|
15
|
+
* db: PrismaClient;
|
|
16
|
+
* user: { id: string; role: string };
|
|
17
|
+
* }
|
|
18
|
+
*
|
|
19
|
+
* export const f = initFusion<AppContext>();
|
|
20
|
+
*
|
|
21
|
+
* // src/tools/billing.ts — daily usage, super clean
|
|
22
|
+
* import { f } from '../fusion';
|
|
23
|
+
* import { z } from 'zod';
|
|
24
|
+
*
|
|
25
|
+
* export const getInvoice = f.tool({
|
|
26
|
+
* name: 'billing.get_invoice',
|
|
27
|
+
* input: z.object({ id: z.string() }),
|
|
28
|
+
* handler: async ({ input, ctx }) => {
|
|
29
|
+
* // ctx is fully typed as AppContext!
|
|
30
|
+
* return await ctx.db.invoices.findUnique(input.id);
|
|
31
|
+
* },
|
|
32
|
+
* });
|
|
33
|
+
* ```
|
|
34
|
+
*
|
|
35
|
+
* @module
|
|
36
|
+
*/
|
|
37
|
+
import {} from 'zod';
|
|
38
|
+
import { GroupedToolBuilder } from './builder/GroupedToolBuilder.js';
|
|
39
|
+
import { success } from './response.js';
|
|
40
|
+
import {} from './types.js';
|
|
41
|
+
import { ToolRegistry } from './registry/ToolRegistry.js';
|
|
42
|
+
import {} from '../presenter/Presenter.js';
|
|
43
|
+
import { definePresenter } from '../presenter/definePresenter.js';
|
|
44
|
+
import { defineMiddleware } from './middleware/index.js';
|
|
45
|
+
import { defineTool } from './builder/defineTool.js';
|
|
46
|
+
import { definePrompt } from '../prompt/definePrompt.js';
|
|
47
|
+
import {} from '../prompt/types.js';
|
|
48
|
+
import { isZodSchema } from './schema/SchemaUtils.js';
|
|
49
|
+
import { convertParamsToZod } from './builder/ParamDescriptors.js';
|
|
50
|
+
// ── Factory ──────────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* Initialize a Fusion instance with a fixed context type.
|
|
53
|
+
*
|
|
54
|
+
* Call once per project. All factory methods on the returned instance
|
|
55
|
+
* automatically inherit the context type — zero generic repetition.
|
|
56
|
+
*
|
|
57
|
+
* @typeParam TContext - The application-level context type
|
|
58
|
+
* @returns A {@link FusionInstance} with context-typed factories
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* // Single definition, typically in src/fusion.ts
|
|
63
|
+
* export const f = initFusion<AppContext>();
|
|
64
|
+
*
|
|
65
|
+
* // Usage anywhere in the project
|
|
66
|
+
* const tool = f.tool({ name: 'tasks.list', handler: ... });
|
|
67
|
+
* const presenter = f.presenter({ name: 'Task', schema: taskSchema });
|
|
68
|
+
* const registry = f.registry();
|
|
69
|
+
* ```
|
|
70
|
+
*/
|
|
71
|
+
export function initFusion() {
|
|
72
|
+
return {
|
|
73
|
+
tool(config) {
|
|
74
|
+
// Parse the tool name into group + action
|
|
75
|
+
// Convention: 'domain.action' → tool named 'domain' with single action 'action'
|
|
76
|
+
const dotIndex = config.name.indexOf('.');
|
|
77
|
+
const toolName = dotIndex > 0 ? config.name.slice(0, dotIndex) : config.name;
|
|
78
|
+
const actionName = dotIndex > 0 ? config.name.slice(dotIndex + 1) : 'default';
|
|
79
|
+
// Resolve input schema
|
|
80
|
+
let schema;
|
|
81
|
+
if (config.input) {
|
|
82
|
+
schema = isZodSchema(config.input)
|
|
83
|
+
? config.input
|
|
84
|
+
: convertParamsToZod(config.input);
|
|
85
|
+
}
|
|
86
|
+
// Wrap handler: { input, ctx } → (ctx, args)
|
|
87
|
+
const wrappedHandler = async (ctx, args) => {
|
|
88
|
+
const result = await config.handler({ input: args, ctx });
|
|
89
|
+
// Auto-wrap non-ToolResponse results
|
|
90
|
+
if (typeof result === 'object' &&
|
|
91
|
+
result !== null &&
|
|
92
|
+
'content' in result &&
|
|
93
|
+
Array.isArray(result.content)) {
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
return success(result);
|
|
97
|
+
};
|
|
98
|
+
// Build via defineTool for consistency
|
|
99
|
+
const toolConfig = {
|
|
100
|
+
...(config.description ? { description: config.description } : {}),
|
|
101
|
+
...(config.tags && config.tags.length > 0 ? { tags: config.tags } : {}),
|
|
102
|
+
...(config.annotations ? { annotations: config.annotations } : {}),
|
|
103
|
+
...(config.middleware ? { middleware: config.middleware } : {}),
|
|
104
|
+
actions: {
|
|
105
|
+
[actionName]: {
|
|
106
|
+
handler: wrappedHandler,
|
|
107
|
+
...(schema ? { params: schema } : {}),
|
|
108
|
+
...(config.readOnly !== undefined ? { readOnly: config.readOnly } : {}),
|
|
109
|
+
...(config.destructive !== undefined ? { destructive: config.destructive } : {}),
|
|
110
|
+
...(config.idempotent !== undefined ? { idempotent: config.idempotent } : {}),
|
|
111
|
+
...(config.returns ? { returns: config.returns } : {}),
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
};
|
|
115
|
+
return defineTool(toolName, toolConfig);
|
|
116
|
+
},
|
|
117
|
+
presenter(config) {
|
|
118
|
+
return definePresenter(config);
|
|
119
|
+
},
|
|
120
|
+
prompt(name, config) {
|
|
121
|
+
return definePrompt(name, config);
|
|
122
|
+
},
|
|
123
|
+
middleware(derive) {
|
|
124
|
+
return defineMiddleware(derive);
|
|
125
|
+
},
|
|
126
|
+
defineTool(name, config) {
|
|
127
|
+
return defineTool(name, config);
|
|
128
|
+
},
|
|
129
|
+
registry() {
|
|
130
|
+
return new ToolRegistry();
|
|
131
|
+
},
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=initFusion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"initFusion.js","sourceRoot":"","sources":["../../src/core/initFusion.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,OAAO,EAAkD,MAAM,KAAK,CAAC;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAqB,OAAO,EAAE,MAAM,eAAe,CAAC;AAC3D,OAAO,EAAqB,MAAM,YAAY,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAkB,MAAM,2BAA2B,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAwB,MAAM,iCAAiC,CAAC;AACxF,OAAO,EAAE,gBAAgB,EAA6B,MAAM,uBAAuB,CAAC;AACpF,OAAO,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AACtE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAyC,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAoC,MAAM,+BAA+B,CAAC;AAuJrG,4DAA4D;AAE5D;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,UAAU,UAAU;IACtB,OAAO;QACH,IAAI,CACA,MAA0C;YAE1C,0CAA0C;YAC1C,gFAAgF;YAChF,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,QAAQ,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;YAC7E,MAAM,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAE9E,uBAAuB;YACvB,IAAI,MAA0C,CAAC;YAC/C,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACf,MAAM,GAAG,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC;oBAC9B,CAAC,CAAC,MAAM,CAAC,KAA+B;oBACxC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAkB,CAAC,CAAC;YACxD,CAAC;YAED,6CAA6C;YAC7C,MAAM,cAAc,GAAG,KAAK,EAAE,GAAa,EAAE,IAA6B,EAAyB,EAAE;gBACjG,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAa,EAAE,GAAG,EAAE,CAAC,CAAC;gBAEnE,qCAAqC;gBACrC,IACI,OAAO,MAAM,KAAK,QAAQ;oBAC1B,MAAM,KAAK,IAAI;oBACf,SAAS,IAAI,MAAM;oBACnB,KAAK,CAAC,OAAO,CAAE,MAA+B,CAAC,OAAO,CAAC,EACzD,CAAC;oBACC,OAAO,MAAsB,CAAC;gBAClC,CAAC;gBAED,OAAO,OAAO,CAAC,MAAyB,CAAC,CAAC;YAC9C,CAAC,CAAC;YAEF,uCAAuC;YACvC,MAAM,UAAU,GAAyB;gBACrC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACvE,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/D,OAAO,EAAE;oBACL,CAAC,UAAU,CAAC,EAAE;wBACV,OAAO,EAAE,cAAc;wBACvB,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACrC,GAAG,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBACvE,GAAG,CAAC,MAAM,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAChF,GAAG,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAC7E,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzD;iBACJ;aACJ,CAAC;YAEF,OAAO,UAAU,CAAW,QAAQ,EAAE,UAAU,CAAC,CAAC;QACtD,CAAC;QAED,SAAS,CACL,MAAiE;YAEjE,OAAO,eAAe,CAAC,MAAM,CAAC,CAAC;QACnC,CAAC;QAED,MAAM,CAAC,IAAY,EAAE,MAEpB;YACG,OAAO,YAAY,CAAW,IAAI,EAAE,MAAe,CAAC,CAAC;QACzD,CAAC;QAED,UAAU,CACN,MAAuD;YAEvD,OAAO,gBAAgB,CAAqB,MAAM,CAAC,CAAC;QACxD,CAAC;QAED,UAAU,CAAC,IAAY,EAAE,MAA4B;YACjD,OAAO,UAAU,CAAW,IAAI,EAAE,MAAM,CAAC,CAAC;QAC9C,CAAC;QAED,QAAQ;YACJ,OAAO,IAAI,YAAY,EAAY,CAAC;QACxC,CAAC;KACJ,CAAC;AACN,CAAC"}
|
package/dist/core/response.d.ts
CHANGED
|
@@ -127,7 +127,7 @@ export declare function success(data: string | object): ToolResponse;
|
|
|
127
127
|
* @see {@link required} for missing field errors
|
|
128
128
|
* @see {@link success} for success responses
|
|
129
129
|
*/
|
|
130
|
-
export declare function error(message: string): ToolResponse;
|
|
130
|
+
export declare function error(message: string, code?: ErrorCode): ToolResponse;
|
|
131
131
|
/**
|
|
132
132
|
* Create a validation error for a missing required field.
|
|
133
133
|
*
|
|
@@ -176,6 +176,29 @@ export declare function required(field: string): ToolResponse;
|
|
|
176
176
|
* @see {@link success} for standard JSON responses
|
|
177
177
|
*/
|
|
178
178
|
export declare function toonSuccess(data: unknown, options?: EncodeOptions): ToolResponse;
|
|
179
|
+
/**
|
|
180
|
+
* Canonical error codes for deterministic agent self-correction.
|
|
181
|
+
*
|
|
182
|
+
* Provides compile-time autocomplete while allowing custom codes
|
|
183
|
+
* via the `string` fallback. Constants cover the most common
|
|
184
|
+
* failure modes in agentic pipelines.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* return toolError('VALIDATION_ERROR', { message: '...' });
|
|
189
|
+
* return toolError('RateLimited', { message: '...' }); // custom code — also valid
|
|
190
|
+
* ```
|
|
191
|
+
*/
|
|
192
|
+
export type ErrorCode = 'MISSING_DISCRIMINATOR' | 'UNKNOWN_ACTION' | 'VALIDATION_ERROR' | 'MISSING_REQUIRED_FIELD' | 'INTERNAL_ERROR' | 'RATE_LIMITED' | 'UNAUTHORIZED' | 'FORBIDDEN' | 'NOT_FOUND' | 'CONFLICT' | 'TIMEOUT' | 'SERVER_BUSY' | 'DEPRECATED' | 'AUTH_REQUIRED' | (string & {});
|
|
193
|
+
/**
|
|
194
|
+
* Error severity level.
|
|
195
|
+
*
|
|
196
|
+
* - `'warning'` — Non-fatal. The operation succeeded but with caveats
|
|
197
|
+
* (e.g. deprecated tool, partial results, soft quota approaching).
|
|
198
|
+
* - `'error'` — The operation failed. Agent should attempt recovery.
|
|
199
|
+
* - `'critical'` — Unrecoverable. Agent should escalate to the user.
|
|
200
|
+
*/
|
|
201
|
+
export type ErrorSeverity = 'warning' | 'error' | 'critical';
|
|
179
202
|
/**
|
|
180
203
|
* Options for a self-healing error response.
|
|
181
204
|
*
|
|
@@ -188,6 +211,30 @@ export interface ToolErrorOptions {
|
|
|
188
211
|
suggestion?: string;
|
|
189
212
|
/** Action names the agent should try instead */
|
|
190
213
|
availableActions?: string[];
|
|
214
|
+
/**
|
|
215
|
+
* Error severity.
|
|
216
|
+
*
|
|
217
|
+
* Defaults to `'error'` when omitted.
|
|
218
|
+
*
|
|
219
|
+
* @example `'warning'` for deprecation notices
|
|
220
|
+
*/
|
|
221
|
+
severity?: ErrorSeverity;
|
|
222
|
+
/**
|
|
223
|
+
* Structured metadata about the error (e.g. the invalid value,
|
|
224
|
+
* the entity ID that wasn't found, or constraint violations).
|
|
225
|
+
*
|
|
226
|
+
* Rendered as `<details>` child elements in the XML envelope.
|
|
227
|
+
*
|
|
228
|
+
* @example `{ entity_id: 'inv_123', expected_type: 'string' }`
|
|
229
|
+
*/
|
|
230
|
+
details?: Record<string, string>;
|
|
231
|
+
/**
|
|
232
|
+
* Suggested retry delay in seconds for transient errors.
|
|
233
|
+
*
|
|
234
|
+
* Rendered as `<retry_after>{n} seconds</retry_after>` in the
|
|
235
|
+
* XML envelope. Useful for rate-limit and concurrency errors.
|
|
236
|
+
*/
|
|
237
|
+
retryAfter?: number;
|
|
191
238
|
}
|
|
192
239
|
/**
|
|
193
240
|
* Create a self-healing error response with recovery instructions.
|
|
@@ -229,5 +276,5 @@ export interface ToolErrorOptions {
|
|
|
229
276
|
* @see {@link error} for simple error responses
|
|
230
277
|
* @see {@link required} for missing field errors
|
|
231
278
|
*/
|
|
232
|
-
export declare function toolError(code:
|
|
279
|
+
export declare function toolError(code: ErrorCode, options: ToolErrorOptions): ToolResponse;
|
|
233
280
|
//# sourceMappingURL=response.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAM/D;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAK3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"response.d.ts","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAU,KAAK,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAM/D;;;;;;;;;GASG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAI7C;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAOjD;AAMD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAClF,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;CAC9B;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,YAAY,CAK3D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,GAAG,YAAY,CAMrE;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CASpD;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,aAAa,GAAG,YAAY,CAIhF;AAMD;;;;;;;;;;;;GAYG;AACH,MAAM,MAAM,SAAS,GACf,uBAAuB,GACvB,gBAAgB,GAChB,kBAAkB,GAClB,wBAAwB,GACxB,gBAAgB,GAChB,cAAc,GACd,cAAc,GACd,WAAW,GACX,WAAW,GACX,UAAU,GACV,SAAS,GACT,aAAa,GACb,YAAY,GACZ,eAAe,GACf,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC;AAEpB;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,gBAAgB;IAC7B,uCAAuC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,4CAA4C;IAC5C,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,gDAAgD;IAChD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,aAAa,CAAC;IACzB;;;;;;;OAOG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;;OAKG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuCG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,gBAAgB,GAAG,YAAY,CAqClF"}
|
package/dist/core/response.js
CHANGED
|
@@ -124,9 +124,10 @@ export function success(data) {
|
|
|
124
124
|
* @see {@link required} for missing field errors
|
|
125
125
|
* @see {@link success} for success responses
|
|
126
126
|
*/
|
|
127
|
-
export function error(message) {
|
|
127
|
+
export function error(message, code) {
|
|
128
|
+
const codeAttr = code !== undefined ? ` code="${escapeXmlAttr(code)}"` : '';
|
|
128
129
|
return {
|
|
129
|
-
content: [{ type: "text", text: `<tool_error>\n<message>${escapeXml(message)}</message>\n</tool_error>` }],
|
|
130
|
+
content: [{ type: "text", text: `<tool_error${codeAttr}>\n<message>${escapeXml(message)}</message>\n</tool_error>` }],
|
|
130
131
|
isError: true,
|
|
131
132
|
};
|
|
132
133
|
}
|
|
@@ -232,14 +233,35 @@ export function toonSuccess(data, options) {
|
|
|
232
233
|
* @see {@link required} for missing field errors
|
|
233
234
|
*/
|
|
234
235
|
export function toolError(code, options) {
|
|
235
|
-
const
|
|
236
|
+
const severity = options.severity ?? 'error';
|
|
237
|
+
const parts = [
|
|
238
|
+
`<tool_error code="${escapeXmlAttr(code)}" severity="${escapeXmlAttr(severity)}">`,
|
|
239
|
+
`<message>${escapeXml(options.message)}</message>`,
|
|
240
|
+
];
|
|
236
241
|
if (options.suggestion) {
|
|
237
242
|
parts.push(`<recovery>${escapeXml(options.suggestion)}</recovery>`);
|
|
238
243
|
}
|
|
239
244
|
if ((options.availableActions?.length ?? 0) > 0) {
|
|
240
|
-
parts.push(
|
|
245
|
+
parts.push('<available_actions>');
|
|
246
|
+
for (const action of options.availableActions) {
|
|
247
|
+
parts.push(` <action>${escapeXml(action)}</action>`);
|
|
248
|
+
}
|
|
249
|
+
parts.push('</available_actions>');
|
|
250
|
+
}
|
|
251
|
+
if (options.details != null && Object.keys(options.details).length > 0) {
|
|
252
|
+
parts.push('<details>');
|
|
253
|
+
for (const [key, value] of Object.entries(options.details)) {
|
|
254
|
+
parts.push(` <detail key="${escapeXmlAttr(key)}">${escapeXml(value)}</detail>`);
|
|
255
|
+
}
|
|
256
|
+
parts.push('</details>');
|
|
257
|
+
}
|
|
258
|
+
if (options.retryAfter !== undefined) {
|
|
259
|
+
parts.push(`<retry_after>${options.retryAfter} seconds</retry_after>`);
|
|
241
260
|
}
|
|
242
261
|
parts.push('</tool_error>');
|
|
243
|
-
|
|
262
|
+
// Warnings are non-fatal — do not set isError so the response
|
|
263
|
+
// flows through the success path while still carrying guidance.
|
|
264
|
+
const isError = severity !== 'warning';
|
|
265
|
+
return { content: [{ type: "text", text: parts.join('\n') }], isError };
|
|
244
266
|
}
|
|
245
267
|
//# sourceMappingURL=response.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,MAAM,EAAsB,MAAM,mBAAmB,CAAC;AAE/D,+EAA+E;AAC/E,aAAa;AACb,+EAA+E;AAE/E;;;;;;;;;GASG;AACH,MAAM,UAAU,SAAS,CAAC,GAAW;IACjC,OAAO,GAAG;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;AAC/B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAC,GAAW;IACrC,OAAO,GAAG;SACL,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC;SACtB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC;SACrB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC;SACvB,OAAO,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;AACjC,CAAC;AA6BD,+EAA+E;AAC/E,oBAAoB;AACpB,+EAA+E;AAE/E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,OAAO,CAAC,IAAqB;IACzC,MAAM,IAAI,GAAG,OAAO,IAAI,KAAK,QAAQ;QACjC,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC;QAChB,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IACpC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACjD,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,UAAU,KAAK,CAAC,OAAe;
|
|
1
|
+
{"version":3,"file":"response.js","sourceRoot":"","sources":["../../src/core/response.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -43,21 +43,21 @@ export { Resource } from './domain/Resource.js';
|
|
|
43
43
|
/** @category Converters */
|
|
44
44
|
export { ConverterBase, type GroupConverter, GroupConverterBase, type ToolConverter, ToolConverterBase, type PromptConverter, PromptConverterBase, type ResourceConverter, ResourceConverterBase, type ToolAnnotationsConverter, ToolAnnotationsConverterBase } from './converters/index.js';
|
|
45
45
|
/** @category Core */
|
|
46
|
-
export { success, error, required, toonSuccess, toolError, GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool, ToolRegistry, generateToonDescription, succeed, fail, progress, defineMiddleware, resolveMiddleware, } from './core/index.js';
|
|
46
|
+
export { success, error, required, toonSuccess, toolError, GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool, ToolRegistry, generateToonDescription, succeed, fail, progress, defineMiddleware, resolveMiddleware, initFusion, createGroup, toStandardValidator, fromZodSchema, isStandardSchema, autoValidator, } from './core/index.js';
|
|
47
47
|
/** @category Core */
|
|
48
|
-
export type { ToolResponse, ToolErrorOptions, ActionConfig, MiddlewareFn, GroupConfigurator, ToolFilter, ToolBuilder, ActionMetadata, Result, Success, Failure, ToolConfig, ActionDef, GroupDef, ParamDef, ParamsMap, InferParams, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef, ProgressEvent, ProgressSink, MiddlewareDefinition, MergeContext, InferContextOut, ConcurrencyConfig, EgressConfig, } from './core/index.js';
|
|
48
|
+
export type { ToolResponse, ToolErrorOptions, ErrorCode, ErrorSeverity, ActionConfig, MiddlewareFn, GroupConfigurator, ToolFilter, ToolBuilder, ActionMetadata, Result, Success, Failure, ToolConfig, ActionDef, GroupDef, ParamDef, ParamsMap, InferParams, StringParamDef, NumberParamDef, BooleanParamDef, EnumParamDef, ArrayParamDef, ProgressEvent, ProgressSink, MiddlewareDefinition, MergeContext, InferContextOut, ConcurrencyConfig, EgressConfig, FusionInstance, FusionToolConfig, GroupConfig, GroupAction, CompiledGroup, StandardSchemaV1, StandardSchemaIssue, InferStandardOutput, FusionValidator, ValidationResult, } from './core/index.js';
|
|
49
49
|
/** @category Client */
|
|
50
|
-
export { createFusionClient, createTypedRegistry } from './client/index.js';
|
|
50
|
+
export { createFusionClient, createTypedRegistry, FusionClientError } from './client/index.js';
|
|
51
51
|
/** @category Client */
|
|
52
|
-
export type { FusionClient, FusionTransport, RouterMap, InferRouter, TypedToolRegistry } from './client/index.js';
|
|
52
|
+
export type { FusionClient, FusionTransport, RouterMap, InferRouter, TypedToolRegistry, ClientMiddleware, FusionClientOptions } from './client/index.js';
|
|
53
53
|
/** @category Observability */
|
|
54
54
|
export { createDebugObserver, SpanStatusCode } from './observability/index.js';
|
|
55
55
|
/** @category Observability */
|
|
56
56
|
export type { DebugEvent, DebugObserverFn, RouteEvent, ValidateEvent, MiddlewareEvent, ExecuteEvent, ErrorEvent, FusionSpan, FusionTracer, FusionAttributeValue, } from './observability/index.js';
|
|
57
57
|
/** @category Presenter */
|
|
58
|
-
export { ResponseBuilder, response, isResponseBuilder, ui, Presenter, createPresenter, isPresenter, PresenterValidationError, } from './presenter/index.js';
|
|
58
|
+
export { ResponseBuilder, response, isResponseBuilder, ui, Presenter, createPresenter, isPresenter, PresenterValidationError, definePresenter, extractZodDescriptions, } from './presenter/index.js';
|
|
59
59
|
/** @category Presenter */
|
|
60
|
-
export type { UiBlock, ActionSuggestion } from './presenter/index.js';
|
|
60
|
+
export type { UiBlock, ActionSuggestion, PresenterConfig, AgentLimitDef, EmbedDef } from './presenter/index.js';
|
|
61
61
|
/** @category Prompt */
|
|
62
62
|
export { definePrompt, PromptMessage, assertFlatSchema, coercePromptArgs } from './prompt/index.js';
|
|
63
63
|
/** @category Prompt */
|
|
@@ -68,12 +68,20 @@ export type { PromptMessagePayload, PromptResult, PromptParamDef, PromptParamsMa
|
|
|
68
68
|
export type { McpPromptDef, PromptFilter } from './prompt/PromptRegistry.js';
|
|
69
69
|
/** @category Server */
|
|
70
70
|
export type { AttachOptions, DetachFn } from './server/index.js';
|
|
71
|
+
/** @category Server */
|
|
72
|
+
export { autoDiscover } from './server/index.js';
|
|
73
|
+
/** @category Server */
|
|
74
|
+
export type { AutoDiscoverOptions } from './server/index.js';
|
|
75
|
+
/** @category Server */
|
|
76
|
+
export { createDevServer } from './server/index.js';
|
|
77
|
+
/** @category Server */
|
|
78
|
+
export type { DevServerConfig, DevServer } from './server/index.js';
|
|
71
79
|
/** @category Exposition */
|
|
72
80
|
export type { ToolExposition, ExpositionConfig } from './exposition/index.js';
|
|
73
81
|
/** @category StateSync */
|
|
74
|
-
export { StateSyncLayer, PolicyEngine, matchGlob } from './state-sync/index.js';
|
|
82
|
+
export { StateSyncLayer, PolicyEngine, matchGlob, detectOverlaps } from './state-sync/index.js';
|
|
75
83
|
/** @category StateSync */
|
|
76
|
-
export type { CacheDirective, SyncPolicy, StateSyncConfig, ResolvedPolicy, } from './state-sync/index.js';
|
|
84
|
+
export type { CacheDirective, SyncPolicy, StateSyncConfig, ResolvedPolicy, InvalidationEvent, ResourceNotification, OverlapWarning, } from './state-sync/index.js';
|
|
77
85
|
/** @category Testing */
|
|
78
86
|
export { MVA_META_SYMBOL } from './testing/MvaMetaSymbol.js';
|
|
79
87
|
/** @category Testing */
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAGH,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;AAGhD,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;AAG/B,qBAAqB;AACrB,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,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -46,24 +46,28 @@ export { Resource } from './domain/Resource.js';
|
|
|
46
46
|
export { ConverterBase, GroupConverterBase, ToolConverterBase, PromptConverterBase, ResourceConverterBase, ToolAnnotationsConverterBase } from './converters/index.js';
|
|
47
47
|
// ── Core (Builder, Registry, Execution, Middleware) ──────
|
|
48
48
|
/** @category Core */
|
|
49
|
-
export { success, error, required, toonSuccess, toolError, GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool, ToolRegistry, generateToonDescription, succeed, fail, progress, defineMiddleware, resolveMiddleware, } from './core/index.js';
|
|
49
|
+
export { success, error, required, toonSuccess, toolError, GroupedToolBuilder, ActionGroupBuilder, createTool, defineTool, ToolRegistry, generateToonDescription, succeed, fail, progress, defineMiddleware, resolveMiddleware, initFusion, createGroup, toStandardValidator, fromZodSchema, isStandardSchema, autoValidator, } from './core/index.js';
|
|
50
50
|
// ── Client (tRPC-style type-safe) ────────────────────────
|
|
51
51
|
/** @category Client */
|
|
52
|
-
export { createFusionClient, createTypedRegistry } from './client/index.js';
|
|
52
|
+
export { createFusionClient, createTypedRegistry, FusionClientError } from './client/index.js';
|
|
53
53
|
// ── Observability (Debug + Tracing) ──────────────────────
|
|
54
54
|
/** @category Observability */
|
|
55
55
|
export { createDebugObserver, SpanStatusCode } from './observability/index.js';
|
|
56
56
|
// ── Presenter (MVA View Layer) ───────────────────────────
|
|
57
57
|
/** @category Presenter */
|
|
58
|
-
export { ResponseBuilder, response, isResponseBuilder, ui, Presenter, createPresenter, isPresenter, PresenterValidationError, } from './presenter/index.js';
|
|
58
|
+
export { ResponseBuilder, response, isResponseBuilder, ui, Presenter, createPresenter, isPresenter, PresenterValidationError, definePresenter, extractZodDescriptions, } from './presenter/index.js';
|
|
59
59
|
// ── Prompt Engine ────────────────────────────────────────
|
|
60
60
|
/** @category Prompt */
|
|
61
61
|
export { definePrompt, PromptMessage, assertFlatSchema, coercePromptArgs } from './prompt/index.js';
|
|
62
62
|
/** @category Prompt */
|
|
63
63
|
export { PromptRegistry } from './prompt/PromptRegistry.js';
|
|
64
|
+
/** @category Server */
|
|
65
|
+
export { autoDiscover } from './server/index.js';
|
|
66
|
+
/** @category Server */
|
|
67
|
+
export { createDevServer } from './server/index.js';
|
|
64
68
|
// ── State Sync (Epistemic Cache-Control) ─────────────────
|
|
65
69
|
/** @category StateSync */
|
|
66
|
-
export { StateSyncLayer, PolicyEngine, matchGlob } from './state-sync/index.js';
|
|
70
|
+
export { StateSyncLayer, PolicyEngine, matchGlob, detectOverlaps } from './state-sync/index.js';
|
|
67
71
|
// ── Testing (In-Memory MVA Backdoor) ─────────────────────
|
|
68
72
|
/** @category Testing */
|
|
69
73
|
export { MVA_META_SYMBOL } from './testing/MvaMetaSymbol.js';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4DAA4D;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAa,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,EAAoB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,8BAA8B;AAC9B,OAAO,EAAwB,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,4DAA4D;AAC5D,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACQ,kBAAkB,EACnB,iBAAiB,EACf,mBAAmB,EACjB,qBAAqB,EACd,4BAA4B,EAC9D,MAAM,uBAAuB,CAAC;AAE/B,4DAA4D;AAC5D,qBAAqB;AACrB,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,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,4DAA4D;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACxC,8BAA8B;AAC9B,OAAO,EAAa,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,EAAoB,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,8BAA8B;AAC9B,OAAO,EAAwB,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,4DAA4D;AAC5D,2BAA2B;AAC3B,OAAO,EACH,aAAa,EACQ,kBAAkB,EACnB,iBAAiB,EACf,mBAAmB,EACjB,qBAAqB,EACd,4BAA4B,EAC9D,MAAM,uBAAuB,CAAC;AAE/B,4DAA4D;AAC5D,qBAAqB;AACrB,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,UAAU,EACV,WAAW,EACX,mBAAmB,EAAE,aAAa,EAAE,gBAAgB,EAAE,aAAa,GACtE,MAAM,iBAAiB,CAAC;AAqBzB,4DAA4D;AAC5D,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAI/F,4DAA4D;AAC5D,8BAA8B;AAC9B,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAQ/E,4DAA4D;AAC5D,0BAA0B;AAC1B,OAAO,EACH,eAAe,EAAE,QAAQ,EAAE,iBAAiB,EAC5C,EAAE,EACF,SAAS,EAAE,eAAe,EAAE,WAAW,EACvC,wBAAwB,EACxB,eAAe,EACf,sBAAsB,GACzB,MAAM,sBAAsB,CAAC;AAI9B,4DAA4D;AAC5D,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACpG,uBAAuB;AACvB,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAa5D,uBAAuB;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,uBAAuB;AACvB,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAQpD,4DAA4D;AAC5D,0BAA0B;AAC1B,OAAO,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAOhG,4DAA4D;AAC5D,wBAAwB;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC"}
|