@mcp-b/webmcp-types 0.0.0-beta-20260216200013

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.
@@ -0,0 +1,198 @@
1
+ import type { JsonPrimitive, JsonValue } from './common.js';
2
+ /**
3
+ * Primitive JSON Schema `type` values supported by the MVP inference layer.
4
+ */
5
+ export type JsonSchemaPrimitiveType = 'string' | 'number' | 'integer' | 'boolean' | 'null';
6
+ /**
7
+ * JSON Schema `type` values supported by the MVP inference layer.
8
+ */
9
+ export type JsonSchemaType = JsonSchemaPrimitiveType | 'object' | 'array';
10
+ /**
11
+ * JSON Schema multi-type tuple (for example `["string", "null"]`).
12
+ */
13
+ export type JsonSchemaTypeArray = readonly [JsonSchemaType, ...JsonSchemaType[]];
14
+ /**
15
+ * Literal values supported in JSON Schema `enum`/`const`.
16
+ */
17
+ export type JsonSchemaEnumValue = JsonPrimitive | JsonValue;
18
+ /**
19
+ * Extra JSON Schema keywords tolerated by the inference layer.
20
+ *
21
+ * These keys are intentionally accepted as opaque metadata. Inference only uses
22
+ * the core MVP keywords and ignores these fields.
23
+ */
24
+ interface SupplementalJsonSchemaKeywords {
25
+ $defs?: unknown;
26
+ $ref?: unknown;
27
+ additionalItems?: unknown;
28
+ allOf?: unknown;
29
+ anyOf?: unknown;
30
+ contains?: unknown;
31
+ definitions?: unknown;
32
+ dependentRequired?: unknown;
33
+ dependentSchemas?: unknown;
34
+ format?: unknown;
35
+ if?: unknown;
36
+ maxContains?: unknown;
37
+ minContains?: unknown;
38
+ not?: unknown;
39
+ oneOf?: unknown;
40
+ patternProperties?: unknown;
41
+ prefixItems?: unknown;
42
+ propertyNames?: unknown;
43
+ then?: unknown;
44
+ unevaluatedItems?: unknown;
45
+ unevaluatedProperties?: unknown;
46
+ }
47
+ /**
48
+ * Non-validation metadata accepted by the MVP inference subset.
49
+ */
50
+ interface JsonSchemaMetadata extends SupplementalJsonSchemaKeywords {
51
+ default?: JsonValue;
52
+ description?: string;
53
+ examples?: readonly JsonValue[];
54
+ /**
55
+ * OpenAPI-compatible nullability marker.
56
+ */
57
+ nullable?: boolean;
58
+ title?: string;
59
+ }
60
+ /**
61
+ * JSON Schema for `type: "string"`.
62
+ */
63
+ export interface JsonSchemaString extends JsonSchemaMetadata {
64
+ const?: string;
65
+ enum?: readonly string[];
66
+ maxLength?: number;
67
+ minLength?: number;
68
+ pattern?: string;
69
+ type: 'string';
70
+ }
71
+ /**
72
+ * JSON Schema for `type: "number"` and `type: "integer"`.
73
+ */
74
+ export interface JsonSchemaNumber extends JsonSchemaMetadata {
75
+ const?: number;
76
+ enum?: readonly number[];
77
+ exclusiveMaximum?: number;
78
+ exclusiveMinimum?: number;
79
+ maximum?: number;
80
+ minimum?: number;
81
+ multipleOf?: number;
82
+ type: 'number' | 'integer';
83
+ }
84
+ /**
85
+ * JSON Schema for `type: "boolean"`.
86
+ */
87
+ export interface JsonSchemaBoolean extends JsonSchemaMetadata {
88
+ const?: boolean;
89
+ enum?: readonly boolean[];
90
+ type: 'boolean';
91
+ }
92
+ /**
93
+ * JSON Schema for `type: "null"`.
94
+ */
95
+ export interface JsonSchemaNull extends JsonSchemaMetadata {
96
+ const?: null;
97
+ enum?: readonly null[];
98
+ type: 'null';
99
+ }
100
+ /**
101
+ * JSON Schema for `type: "array"`.
102
+ */
103
+ export interface JsonSchemaArray extends JsonSchemaMetadata {
104
+ items: JsonSchemaForInference;
105
+ maxItems?: number;
106
+ minItems?: number;
107
+ type: 'array';
108
+ uniqueItems?: boolean;
109
+ }
110
+ /**
111
+ * JSON Schema for `type: "object"`.
112
+ */
113
+ export interface JsonSchemaObject extends JsonSchemaMetadata {
114
+ additionalProperties?: boolean | JsonSchemaForInference;
115
+ maxProperties?: number;
116
+ minProperties?: number;
117
+ properties?: Readonly<Record<string, JsonSchemaForInference>>;
118
+ required?: readonly string[];
119
+ type: 'object';
120
+ }
121
+ /**
122
+ * JSON Schema for multi-type unions via `type: [...]`.
123
+ */
124
+ export interface JsonSchemaMultiType extends JsonSchemaMetadata {
125
+ additionalProperties?: boolean | JsonSchemaForInference;
126
+ const?: JsonSchemaEnumValue;
127
+ enum?: readonly JsonSchemaEnumValue[];
128
+ items?: JsonSchemaForInference;
129
+ properties?: Readonly<Record<string, JsonSchemaForInference>>;
130
+ required?: readonly string[];
131
+ type: JsonSchemaTypeArray;
132
+ }
133
+ /**
134
+ * JSON Schema subset supported by the MVP type inference layer.
135
+ */
136
+ export type JsonSchemaForInference = JsonSchemaArray | JsonSchemaBoolean | JsonSchemaMultiType | JsonSchemaNull | JsonSchemaNumber | JsonSchemaObject | JsonSchemaString;
137
+ type Simplify<T> = {
138
+ [K in keyof T]: T[K];
139
+ } & {};
140
+ type EmptyObject = Record<never, never>;
141
+ type EnumLiteral<TSchema> = TSchema extends {
142
+ enum: infer TEnum extends readonly unknown[];
143
+ } ? Extract<TEnum[number], JsonSchemaEnumValue> : never;
144
+ type ConstLiteral<TSchema> = TSchema extends {
145
+ const: infer TConst;
146
+ } ? Extract<TConst, JsonSchemaEnumValue> : never;
147
+ type PropertiesOf<TSchema> = TSchema extends {
148
+ properties: infer TProperties extends Readonly<Record<string, JsonSchemaForInference>>;
149
+ } ? TProperties : EmptyObject;
150
+ type RequiredKeysOf<TSchema, TProperties extends Record<string, unknown>> = TSchema extends {
151
+ required: readonly (infer TRequired)[];
152
+ } ? string extends TRequired ? never : Extract<TRequired, keyof TProperties & string> : never;
153
+ type RequiredProps<TProperties extends Record<string, JsonSchemaForInference>, TRequiredKeys extends string> = {
154
+ [K in keyof TProperties as K extends TRequiredKeys ? K : never]-?: InferJsonSchema<TProperties[K]>;
155
+ };
156
+ type OptionalProps<TProperties extends Record<string, JsonSchemaForInference>, TRequiredKeys extends string> = {
157
+ [K in keyof TProperties as K extends TRequiredKeys ? never : K]?: InferJsonSchema<TProperties[K]>;
158
+ };
159
+ type PropertyKeysOf<TSchema> = keyof PropertiesOf<TSchema> & string;
160
+ type AdditionalSchemaOf<TSchema> = TSchema extends {
161
+ additionalProperties: infer TAdditional;
162
+ } ? TAdditional : undefined;
163
+ type AdditionalPropsValue<TSchema> = AdditionalSchemaOf<TSchema> extends JsonSchemaForInference ? InferJsonSchema<AdditionalSchemaOf<TSchema>> : unknown;
164
+ type AdditionalPropsOf<TSchema> = TSchema extends {
165
+ additionalProperties: false;
166
+ } ? EmptyObject : AdditionalSchemaOf<TSchema> extends JsonSchemaForInference ? PropertyKeysOf<TSchema> extends never ? Record<string, AdditionalPropsValue<TSchema>> : Record<string, unknown> : Record<string, unknown>;
167
+ type InferObject<TSchema> = Simplify<RequiredProps<PropertiesOf<TSchema>, RequiredKeysOf<TSchema, PropertiesOf<TSchema>>> & OptionalProps<PropertiesOf<TSchema>, RequiredKeysOf<TSchema, PropertiesOf<TSchema>>> & AdditionalPropsOf<TSchema>>;
168
+ type TypeKeywordOf<TSchema> = TSchema extends {
169
+ type: infer TType;
170
+ } ? TType : never;
171
+ type TypeOptionsOf<TSchema> = TypeKeywordOf<TSchema> extends readonly unknown[] ? Extract<TypeKeywordOf<TSchema>[number], JsonSchemaType> : Extract<TypeKeywordOf<TSchema>, JsonSchemaType>;
172
+ type InferFromTypeOption<TSchema, TType extends JsonSchemaType> = TType extends 'object' ? InferObject<TSchema> : TType extends 'array' ? TSchema extends {
173
+ items: infer TItems;
174
+ } ? InferJsonSchema<TItems>[] : unknown[] : TType extends 'string' ? string : TType extends 'number' | 'integer' ? number : TType extends 'boolean' ? boolean : TType extends 'null' ? null : unknown;
175
+ type InferFromTypeKeyword<TSchema> = TypeOptionsOf<TSchema> extends never ? unknown : InferFromTypeOption<TSchema, TypeOptionsOf<TSchema>>;
176
+ type ApplyNullable<TSchema, TValue> = TSchema extends {
177
+ nullable: true;
178
+ } ? TValue | null : TValue;
179
+ /**
180
+ * Infers a TypeScript type from the supported JSON Schema subset.
181
+ *
182
+ * `const` and `enum` take precedence when present.
183
+ */
184
+ export type InferJsonSchema<TSchema> = [ConstLiteral<TSchema>] extends [never] ? [EnumLiteral<TSchema>] extends [never] ? ApplyNullable<TSchema, InferFromTypeKeyword<TSchema>> : ApplyNullable<TSchema, EnumLiteral<TSchema>> : ApplyNullable<TSchema, ConstLiteral<TSchema>>;
185
+ type IsWidenedTypeKeyword<TTypeKeyword> = string extends TTypeKeyword ? true : TTypeKeyword extends readonly unknown[] ? string extends TTypeKeyword[number] ? true : false : false;
186
+ type IncludesObjectType<TSchema> = TypeOptionsOf<TSchema> extends never ? false : 'object' extends TypeOptionsOf<TSchema> ? true : false;
187
+ /**
188
+ * Infers tool argument types from a root `InputSchema`.
189
+ *
190
+ * If the schema is not a literal object schema (for example a widened
191
+ * `InputSchema` loaded at runtime), this intentionally falls back to
192
+ * `Record<string, unknown>`.
193
+ */
194
+ export type InferArgsFromInputSchema<TSchema extends {
195
+ type: string | readonly string[];
196
+ }> = IsWidenedTypeKeyword<TSchema['type']> extends true ? Record<string, unknown> : IncludesObjectType<TSchema> extends true ? InferObject<TSchema> : Record<string, unknown>;
197
+ export {};
198
+ //# sourceMappingURL=json-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"json-schema.d.ts","sourceRoot":"","sources":["../src/json-schema.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,232 @@
1
+ import type { CallToolResult, InputSchema, ToolResponse } from './common.js';
2
+ import type { JsonSchemaForInference, JsonSchemaObject } from './json-schema.js';
3
+ import type { ToolDescriptor, ToolDescriptorFromSchema, ToolListItem } from './tool.js';
4
+ /**
5
+ * Context provided to models via provideContext().
6
+ */
7
+ export interface ModelContextInput<TTools extends readonly ToolDescriptor[] = ToolDescriptor[]> {
8
+ /**
9
+ * Base tool descriptors to expose.
10
+ */
11
+ tools?: TTools;
12
+ }
13
+ /**
14
+ * Public options accepted by provideContext().
15
+ */
16
+ export type ModelContextOptions = ModelContextInput;
17
+ /**
18
+ * Tool info returned by ModelContextTesting.listTools().
19
+ */
20
+ export interface ModelContextTestingToolInfo {
21
+ name: string;
22
+ description: string;
23
+ inputSchema?: string;
24
+ }
25
+ /**
26
+ * Options supported by ModelContextTesting.executeTool().
27
+ */
28
+ export interface ModelContextTestingExecuteToolOptions {
29
+ signal?: AbortSignal;
30
+ }
31
+ /**
32
+ * Chromium early-preview testing API on navigator.modelContextTesting.
33
+ */
34
+ export interface ModelContextTesting {
35
+ listTools(): ModelContextTestingToolInfo[];
36
+ executeTool(toolName: string, inputArgsJson: string, options?: ModelContextTestingExecuteToolOptions): Promise<string | null>;
37
+ registerToolsChangedCallback(callback: () => void): void;
38
+ getCrossDocumentScriptToolResult(): Promise<string>;
39
+ }
40
+ /**
41
+ * Polyfill-only testing extensions layered on top of ModelContextTesting.
42
+ */
43
+ export interface ModelContextTestingPolyfillExtensions {
44
+ getToolCalls(): Array<{
45
+ toolName: string;
46
+ arguments: Record<string, unknown>;
47
+ timestamp: number;
48
+ }>;
49
+ clearToolCalls(): void;
50
+ setMockToolResponse(toolName: string, response: ToolResponse): void;
51
+ clearMockToolResponse(toolName: string): void;
52
+ clearAllMockToolResponses(): void;
53
+ getRegisteredTools(): ReturnType<ModelContextExtensions['listTools']>;
54
+ reset(): void;
55
+ }
56
+ /**
57
+ * Any supported tool descriptor.
58
+ *
59
+ * Uses `never` for args so descriptors with stricter argument objects remain assignable.
60
+ */
61
+ export type AnyToolDescriptor = ToolDescriptor<never, CallToolResult, string>;
62
+ /**
63
+ * Infers argument shape from a tool descriptor.
64
+ */
65
+ export type InferToolArgs<TTool> = TTool extends ToolDescriptor<infer TArgs, infer _TResult, infer _TName> ? TArgs : never;
66
+ /**
67
+ * Infers result shape from a tool descriptor.
68
+ */
69
+ export type InferToolResult<TTool> = TTool extends ToolDescriptor<infer _TArgs, infer TResult, infer _TName> ? TResult : never;
70
+ /**
71
+ * Union of tool names from a tuple/array of descriptors.
72
+ */
73
+ export type ToolName<TTools extends readonly {
74
+ name: string;
75
+ }[]> = TTools[number]['name'];
76
+ /**
77
+ * Extracts a tool descriptor by name from a tuple/array.
78
+ */
79
+ export type ToolByName<TTools extends readonly {
80
+ name: string;
81
+ }[], TName extends ToolName<TTools>> = Extract<TTools[number], {
82
+ name: TName;
83
+ }>;
84
+ /**
85
+ * Tool argument type by tool name from a tuple/array.
86
+ */
87
+ export type ToolArgsByName<TTools extends readonly {
88
+ name: string;
89
+ }[], TName extends ToolName<TTools>> = InferToolArgs<ToolByName<TTools, TName>>;
90
+ /**
91
+ * Tool result type by tool name from a tuple/array.
92
+ */
93
+ export type ToolResultByName<TTools extends readonly {
94
+ name: string;
95
+ }[], TName extends ToolName<TTools>> = InferToolResult<ToolByName<TTools, TName>>;
96
+ /**
97
+ * Typed parameters for `callTool`.
98
+ *
99
+ * When a tool has no args (`Record<string, never>`), `arguments` becomes optional.
100
+ */
101
+ export type ToolCallParams<TName extends string = string, TArgs extends Record<string, unknown> = Record<string, never>> = {
102
+ name: TName;
103
+ } & (TArgs extends Record<string, never> ? {
104
+ arguments?: TArgs;
105
+ } : {
106
+ arguments: TArgs;
107
+ });
108
+ /**
109
+ * Event dispatched when a tool is called.
110
+ */
111
+ export interface ToolCallEvent extends Event {
112
+ /**
113
+ * Tool name being invoked.
114
+ */
115
+ name: string;
116
+ /**
117
+ * Tool arguments supplied by the caller.
118
+ */
119
+ arguments: Record<string, unknown>;
120
+ /**
121
+ * Intercepts execution with a custom tool response.
122
+ */
123
+ respondWith: (response: ToolResponse) => void;
124
+ }
125
+ /**
126
+ * Strict WebMCP core interface on navigator.modelContext.
127
+ */
128
+ export interface ModelContextCore {
129
+ /**
130
+ * Replaces base context with provided tools.
131
+ */
132
+ provideContext(options?: ModelContextOptions): void;
133
+ /**
134
+ * Registers a dynamic tool with JSON Schema-driven inference.
135
+ *
136
+ * `execute(args)` is inferred from `inputSchema`, and when a literal object
137
+ * `outputSchema` is provided, `execute(...).structuredContent` is inferred too.
138
+ */
139
+ registerTool<TInputSchema extends JsonSchemaForInference, TOutputSchema extends JsonSchemaObject | undefined = undefined, TName extends string = string>(tool: ToolDescriptorFromSchema<TInputSchema, TOutputSchema, TName>): void;
140
+ /**
141
+ * Registers a dynamic tool with explicitly typed args/result.
142
+ */
143
+ registerTool<TInputSchema extends InputSchema, TArgs extends Record<string, unknown> = Record<string, unknown>, TResult extends CallToolResult = CallToolResult, TName extends string = string>(tool: ToolDescriptor<TArgs, TResult, TName> & {
144
+ inputSchema: TInputSchema;
145
+ } & (TInputSchema extends InputSchema ? string extends TInputSchema['type'] ? unknown : never : unknown)): void;
146
+ /**
147
+ * Registers a dynamic tool without an explicit inputSchema.
148
+ * Runtime defaults this to an empty object schema.
149
+ */
150
+ registerTool<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult extends CallToolResult = CallToolResult, TName extends string = string>(tool: Omit<ToolDescriptor<TArgs, TResult, TName>, 'inputSchema'> & {
151
+ inputSchema?: undefined;
152
+ }): void;
153
+ /**
154
+ * Unregisters a dynamic tool by name.
155
+ */
156
+ unregisterTool(name: string): void;
157
+ /**
158
+ * Clears all context (base + dynamic registrations).
159
+ */
160
+ clearContext(): void;
161
+ }
162
+ /**
163
+ * MCPB extension surface layered on top of strict WebMCP core.
164
+ * These members are intentionally non-standard.
165
+ */
166
+ export interface ModelContextExtensions {
167
+ /**
168
+ * Lists currently registered tools.
169
+ */
170
+ listTools(): ToolListItem[];
171
+ /**
172
+ * Executes a registered tool.
173
+ */
174
+ callTool<TName extends string = string, TArgs extends Record<string, unknown> = Record<string, unknown>>(params: {
175
+ name: TName;
176
+ arguments?: TArgs;
177
+ }): Promise<ToolResponse>;
178
+ /**
179
+ * Adds a listener for tool invocation events.
180
+ */
181
+ addEventListener(type: 'toolcall', listener: (event: ToolCallEvent) => void | Promise<void>, options?: boolean | AddEventListenerOptions): void;
182
+ /**
183
+ * Adds a listener for tool list changes.
184
+ */
185
+ addEventListener(type: 'toolschanged', listener: () => void, options?: boolean | AddEventListenerOptions): void;
186
+ /**
187
+ * Removes a listener for tool invocation events.
188
+ */
189
+ removeEventListener(type: 'toolcall', listener: (event: ToolCallEvent) => void | Promise<void>, options?: boolean | EventListenerOptions): void;
190
+ /**
191
+ * Removes a listener for tool list changes.
192
+ */
193
+ removeEventListener(type: 'toolschanged', listener: () => void, options?: boolean | EventListenerOptions): void;
194
+ /**
195
+ * Dispatches an event.
196
+ */
197
+ dispatchEvent(event: Event): boolean;
198
+ }
199
+ /**
200
+ * Public navigator.modelContext type (strict core only).
201
+ */
202
+ export type ModelContext = ModelContextCore;
203
+ /**
204
+ * Full runtime shape including MCPB extensions.
205
+ */
206
+ export type ModelContextWithExtensions = ModelContextCore & ModelContextExtensions;
207
+ /**
208
+ * Strongly-typed `ModelContext` view derived from known tool descriptors.
209
+ *
210
+ * This is useful when your project has a static tool registry and you want
211
+ * name-aware inference for `callTool`.
212
+ */
213
+ export type TypedModelContext<TTools extends readonly {
214
+ name: string;
215
+ }[] = readonly ToolDescriptor[]> = ModelContextWithExtensions & {
216
+ /**
217
+ * Executes a known tool with name-aware argument and response inference.
218
+ */
219
+ callTool<TName extends ToolName<TTools>>(params: ToolCallParams<TName, ToolArgsByName<TTools, TName>>): Promise<ToolResultByName<TTools, TName>>;
220
+ /**
221
+ * Fallback call signature for unknown or dynamically-discovered tools.
222
+ */
223
+ callTool(params: {
224
+ name: string;
225
+ arguments?: Record<string, unknown>;
226
+ }): Promise<ToolResponse>;
227
+ /**
228
+ * Lists tools with a narrowed name union.
229
+ */
230
+ listTools(): Array<ToolListItem<ToolName<TTools>>>;
231
+ };
232
+ //# sourceMappingURL=model-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-context.d.ts","sourceRoot":"","sources":["../src/model-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import type { StandardJSONSchemaV1 as BaseStandardJSONSchemaV1, StandardSchemaV1 as BaseStandardSchemaV1, StandardTypedV1 } from '@standard-schema/spec';
2
+ import type { InputSchema } from './common.js';
3
+ /**
4
+ * Re-export of the official Standard Schema spec types.
5
+ */
6
+ export type { BaseStandardJSONSchemaV1 as StandardJSONSchemaV1, BaseStandardSchemaV1 as StandardSchemaV1, StandardTypedV1, };
7
+ /**
8
+ * Standard Schema validator constrained to object-like tool args.
9
+ */
10
+ export type StandardInputValidatorSchema = BaseStandardSchemaV1<Record<string, unknown>, Record<string, unknown>>;
11
+ /**
12
+ * Standard JSON Schema converter constrained to object-like tool args.
13
+ */
14
+ export type StandardInputJsonSchema = BaseStandardJSONSchemaV1<Record<string, unknown>, Record<string, unknown>>;
15
+ /**
16
+ * Schema that supports both Standard Schema validation and JSON Schema conversion.
17
+ */
18
+ export type StandardInputSchemaWithJson = StandardInputValidatorSchema & StandardInputJsonSchema;
19
+ /**
20
+ * Any input schema accepted by tool descriptors.
21
+ *
22
+ * Runtime adapters may normalize all inputs to a Standard Schema validator.
23
+ * When a schema implements both Standard Schema validation and Standard JSON
24
+ * Schema conversion, adapters may prefer JSON conversion to keep validation
25
+ * errors consistent across plain JSON Schema and Standard-compatible inputs.
26
+ */
27
+ export type ToolInputSchema = InputSchema | StandardInputValidatorSchema | StandardInputJsonSchema;
28
+ /**
29
+ * Any output schema accepted by tool descriptors.
30
+ */
31
+ export type ToolOutputSchema = InputSchema | StandardInputJsonSchema;
32
+ //# sourceMappingURL=standard-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"standard-schema.d.ts","sourceRoot":"","sources":["../src/standard-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,oBAAoB,IAAI,wBAAwB,EAChD,gBAAgB,IAAI,oBAAoB,EACxC,eAAe,EAChB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C;;GAEG;AACH,YAAY,EACV,wBAAwB,IAAI,oBAAoB,EAChD,oBAAoB,IAAI,gBAAgB,EACxC,eAAe,GAChB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,4BAA4B,GAAG,oBAAoB,CAC7D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,uBAAuB,GAAG,wBAAwB,CAC5D,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxB,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,2BAA2B,GAAG,4BAA4B,GAAG,uBAAuB,CAAC;AAEjG;;;;;;;GAOG;AACH,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,4BAA4B,GAAG,uBAAuB,CAAC;AAEnG;;GAEG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,uBAAuB,CAAC"}
package/dist/tool.d.ts ADDED
@@ -0,0 +1,153 @@
1
+ import type { CallToolResult, ElicitationParams, ElicitationResult, InputSchema } from './common.js';
2
+ import type { InferArgsFromInputSchema, InferJsonSchema, JsonSchemaObject } from './json-schema.js';
3
+ /**
4
+ * Annotations providing hints about tool behavior.
5
+ *
6
+ * @see {@link https://spec.modelcontextprotocol.io/specification/server/tools/}
7
+ */
8
+ export interface ToolAnnotations {
9
+ /**
10
+ * Optional display title.
11
+ */
12
+ title?: string;
13
+ /**
14
+ * Indicates the tool is read-only.
15
+ */
16
+ readOnlyHint?: boolean;
17
+ /**
18
+ * Indicates the tool may perform destructive actions.
19
+ */
20
+ destructiveHint?: boolean;
21
+ /**
22
+ * Indicates the tool can be called repeatedly without changing outcome.
23
+ */
24
+ idempotentHint?: boolean;
25
+ /**
26
+ * Indicates the tool may reach beyond local context (network, external systems, etc.).
27
+ */
28
+ openWorldHint?: boolean;
29
+ }
30
+ /**
31
+ * Per-call client provided to tool handlers.
32
+ */
33
+ export interface ModelContextClient {
34
+ /**
35
+ * Requests user interaction during the current tool call.
36
+ */
37
+ requestUserInteraction(callback: () => Promise<unknown>): Promise<unknown>;
38
+ }
39
+ /**
40
+ * MCPB extension context with additional elicitation helper.
41
+ */
42
+ export interface ToolExecutionContext extends ModelContextClient {
43
+ /**
44
+ * Requests user input for the current tool call.
45
+ *
46
+ * This function is bound to the active tool call and should only be used
47
+ * during execution of that call.
48
+ */
49
+ elicitInput(params: ElicitationParams): Promise<ElicitationResult>;
50
+ }
51
+ /**
52
+ * Value that may be returned synchronously or via Promise.
53
+ */
54
+ export type MaybePromise<T> = T | Promise<T>;
55
+ /**
56
+ * Tool descriptor for the Web Model Context API.
57
+ *
58
+ * Tools are functions that AI models can call to perform actions or retrieve
59
+ * information. This interface uses JSON Schema for input/output typing.
60
+ *
61
+ * @template TArgs - Tool input arguments.
62
+ * @template TResult - Tool execution result shape.
63
+ * @template TName - Tool name literal type.
64
+ *
65
+ * @see {@link https://spec.modelcontextprotocol.io/specification/server/tools/}
66
+ */
67
+ export interface ToolDescriptor<TArgs extends Record<string, unknown> = Record<string, unknown>, TResult extends CallToolResult = CallToolResult, TName extends string = string> {
68
+ /**
69
+ * Unique tool identifier.
70
+ */
71
+ name: TName;
72
+ /**
73
+ * Human-readable summary of what the tool does.
74
+ */
75
+ description: string;
76
+ /**
77
+ * Schema describing accepted input arguments.
78
+ */
79
+ inputSchema?: InputSchema;
80
+ /**
81
+ * Optional schema describing output payload shape.
82
+ */
83
+ outputSchema?: InputSchema;
84
+ /**
85
+ * Optional behavior hints for LLM planners.
86
+ */
87
+ annotations?: ToolAnnotations;
88
+ /**
89
+ * Tool execution function.
90
+ */
91
+ execute: (args: TArgs, client: ModelContextClient) => MaybePromise<TResult>;
92
+ }
93
+ /**
94
+ * Tool response shape inferred from an `outputSchema`.
95
+ *
96
+ * When a literal object output schema is provided, `structuredContent` is
97
+ * narrowed to the inferred schema type. Otherwise, this resolves to the
98
+ * base `CallToolResult`.
99
+ *
100
+ * @template TOutputSchema - Optional literal JSON object schema.
101
+ */
102
+ export type ToolResultFromOutputSchema<TOutputSchema extends JsonSchemaObject | undefined = undefined> = TOutputSchema extends JsonSchemaObject ? CallToolResult & {
103
+ structuredContent?: InferJsonSchema<TOutputSchema>;
104
+ } : CallToolResult;
105
+ /**
106
+ * Tool descriptor whose `execute` args are inferred from a JSON Schema.
107
+ *
108
+ * For widened/non-literal schemas, arguments fall back to `Record<string, unknown>`.
109
+ * When `outputSchema` is an inferable literal object schema, `structuredContent` is inferred.
110
+ *
111
+ * @template TInputSchema - JSON Schema for tool arguments.
112
+ * @template TOutputSchema - Optional JSON schema for `structuredContent`.
113
+ * @template TName - Tool name literal type.
114
+ * @template TResult - Optional result type override constrained by inferred output schema.
115
+ */
116
+ export type ToolDescriptorFromSchema<TInputSchema extends {
117
+ type: string | readonly string[];
118
+ }, TOutputSchema extends JsonSchemaObject | undefined = undefined, TName extends string = string> = Omit<ToolDescriptor<InferArgsFromInputSchema<TInputSchema>, ToolResultFromOutputSchema<TOutputSchema>, TName>, 'inputSchema' | 'outputSchema'> & {
119
+ inputSchema: TInputSchema;
120
+ } & (TOutputSchema extends JsonSchemaObject ? {
121
+ outputSchema: TOutputSchema;
122
+ } : {
123
+ outputSchema?: undefined;
124
+ });
125
+ /**
126
+ * Tool information returned by listTools().
127
+ * Provides metadata about a registered tool without exposing the execute function.
128
+ *
129
+ * @template TName - Tool name literal type.
130
+ */
131
+ export interface ToolListItem<TName extends string = string> {
132
+ /**
133
+ * Unique tool identifier.
134
+ */
135
+ name: TName;
136
+ /**
137
+ * Human-readable summary of what the tool does.
138
+ */
139
+ description: string;
140
+ /**
141
+ * JSON Schema describing accepted input arguments.
142
+ */
143
+ inputSchema: InputSchema;
144
+ /**
145
+ * Optional JSON Schema describing output payload shape.
146
+ */
147
+ outputSchema?: InputSchema;
148
+ /**
149
+ * Optional behavior hints for LLM planners.
150
+ */
151
+ annotations?: ToolAnnotations;
152
+ }
153
+ //# sourceMappingURL=tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.d.ts","sourceRoot":"","sources":["../src/tool.ts"],"names":[],"mappings":"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"}