@mcp-b/global 1.2.1 → 1.2.2-beta.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/README.md +37 -0
- package/dist/index.d.ts +186 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.iife.js +31 -18
- package/dist/index.js +194 -137
- package/dist/index.js.map +1 -1
- package/package.json +4 -6
package/README.md
CHANGED
|
@@ -1011,6 +1011,43 @@ if ("modelContext" in navigator) {
|
|
|
1011
1011
|
|
|
1012
1012
|
## 🐛 Debugging
|
|
1013
1013
|
|
|
1014
|
+
### Enable Debug Logging
|
|
1015
|
+
|
|
1016
|
+
The @mcp-b/global library includes a lightweight logging system that can be enabled in the browser console. By default, the console is kept clean (only errors and warnings are shown). You can enable detailed debug logging when troubleshooting:
|
|
1017
|
+
|
|
1018
|
+
```javascript
|
|
1019
|
+
// Enable all debug logging
|
|
1020
|
+
localStorage.setItem('WEBMCP_DEBUG', '*');
|
|
1021
|
+
|
|
1022
|
+
// Enable specific namespaces
|
|
1023
|
+
localStorage.setItem('WEBMCP_DEBUG', 'WebModelContext');
|
|
1024
|
+
localStorage.setItem('WEBMCP_DEBUG', 'NativeAdapter,MCPBridge');
|
|
1025
|
+
|
|
1026
|
+
// Refresh the page to apply changes
|
|
1027
|
+
location.reload();
|
|
1028
|
+
```
|
|
1029
|
+
|
|
1030
|
+
To disable debug logging:
|
|
1031
|
+
|
|
1032
|
+
```javascript
|
|
1033
|
+
localStorage.removeItem('WEBMCP_DEBUG');
|
|
1034
|
+
location.reload();
|
|
1035
|
+
```
|
|
1036
|
+
|
|
1037
|
+
**Available Namespaces:**
|
|
1038
|
+
- `WebModelContext` - Main polyfill implementation
|
|
1039
|
+
- `NativeAdapter` - Native Chromium API adapter
|
|
1040
|
+
- `MCPBridge` - MCP server and transport setup
|
|
1041
|
+
- `ModelContextTesting` - Testing API operations
|
|
1042
|
+
|
|
1043
|
+
**Log Levels:**
|
|
1044
|
+
- **Error** (always shown): Critical failures and exceptions
|
|
1045
|
+
- **Warn** (always shown): Compatibility warnings and potential issues
|
|
1046
|
+
- **Info** (debug mode only): Initialization and setup progress
|
|
1047
|
+
- **Debug** (debug mode only): Detailed operation traces
|
|
1048
|
+
|
|
1049
|
+
### Access Internal Bridge
|
|
1050
|
+
|
|
1014
1051
|
In development mode, access the internal bridge:
|
|
1015
1052
|
|
|
1016
1053
|
```javascript
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { IframeChildTransportOptions, TabServerTransportOptions } from "@mcp-b/transports";
|
|
2
2
|
import { CallToolResult, CreateMessageRequest, CreateMessageResult, ElicitRequest, ElicitResult, Prompt, PromptMessage, Resource, ResourceContents, ResourceTemplate, Server, ToolAnnotations, Transport } from "@mcp-b/webmcp-ts-sdk";
|
|
3
|
-
import { z } from "zod";
|
|
3
|
+
import { z } from "zod/v4";
|
|
4
4
|
|
|
5
5
|
//#region src/types.d.ts
|
|
6
6
|
|
|
@@ -50,7 +50,7 @@ interface InputSchema {
|
|
|
50
50
|
*
|
|
51
51
|
* @example
|
|
52
52
|
* ```typescript
|
|
53
|
-
* import { z } from 'zod';
|
|
53
|
+
* import { z } from 'zod/v4';
|
|
54
54
|
*
|
|
55
55
|
* const mySchema: ZodSchemaObject = {
|
|
56
56
|
* query: z.string().describe('Search query'),
|
|
@@ -65,6 +65,146 @@ type ZodSchemaObject = Record<string, z.ZodTypeAny>;
|
|
|
65
65
|
* @see {@link CallToolResult}
|
|
66
66
|
*/
|
|
67
67
|
type ToolResponse = CallToolResult;
|
|
68
|
+
/**
|
|
69
|
+
* Metadata for tools that trigger page navigation.
|
|
70
|
+
*
|
|
71
|
+
* When a tool needs to navigate the page (e.g., to a different URL), it must include
|
|
72
|
+
* this metadata in its response to signal the navigation intent to the client. This
|
|
73
|
+
* allows the client to distinguish between successful navigation and interrupted execution.
|
|
74
|
+
*
|
|
75
|
+
* **CRITICAL PATTERN**: Tools MUST return their response BEFORE triggering navigation.
|
|
76
|
+
* Use `setTimeout()` with a minimum 100ms delay to ensure the response is transmitted
|
|
77
|
+
* via `postMessage` and received by the client before the page unloads.
|
|
78
|
+
*
|
|
79
|
+
* **Why the pattern is necessary**: During page navigation, the JavaScript context
|
|
80
|
+
* is destroyed. If navigation occurs before the response is sent, the client will
|
|
81
|
+
* never receive the tool's result and cannot distinguish success from failure.
|
|
82
|
+
*
|
|
83
|
+
* @example Correct pattern - Response before navigation
|
|
84
|
+
* ```typescript
|
|
85
|
+
* navigator.modelContext.registerTool({
|
|
86
|
+
* name: 'navigate_to_docs',
|
|
87
|
+
* description: 'Navigate to documentation page',
|
|
88
|
+
* inputSchema: { section: z.string() },
|
|
89
|
+
* async execute(args) {
|
|
90
|
+
* const url = `https://docs.example.com/${args.section}`;
|
|
91
|
+
*
|
|
92
|
+
* // 1. Prepare response with navigation metadata
|
|
93
|
+
* const response = {
|
|
94
|
+
* content: [{ type: 'text', text: `Navigating to ${url}` }],
|
|
95
|
+
* metadata: {
|
|
96
|
+
* willNavigate: true,
|
|
97
|
+
* navigationUrl: url,
|
|
98
|
+
* navigationTiming: 'immediate',
|
|
99
|
+
* },
|
|
100
|
+
* };
|
|
101
|
+
*
|
|
102
|
+
* // 2. Schedule navigation AFTER response is returned (100ms minimum)
|
|
103
|
+
* setTimeout(() => {
|
|
104
|
+
* window.location.href = url;
|
|
105
|
+
* }, 100);
|
|
106
|
+
*
|
|
107
|
+
* // 3. Return response BEFORE navigation occurs
|
|
108
|
+
* return response;
|
|
109
|
+
* },
|
|
110
|
+
* });
|
|
111
|
+
* ```
|
|
112
|
+
*
|
|
113
|
+
* @example Anti-pattern - Navigation before response (DO NOT DO THIS)
|
|
114
|
+
* ```typescript
|
|
115
|
+
* // ❌ WRONG - Response will be lost during navigation
|
|
116
|
+
* async execute(args) {
|
|
117
|
+
* window.location.href = computeUrl(args); // Navigation happens first
|
|
118
|
+
* return { content: [...] }; // This response is never received!
|
|
119
|
+
* }
|
|
120
|
+
* ```
|
|
121
|
+
*
|
|
122
|
+
* @see {@link InterruptionMetadata} for metadata added when navigation interrupts execution
|
|
123
|
+
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/Window/postMessage} for postMessage timing
|
|
124
|
+
*/
|
|
125
|
+
interface NavigationMetadata {
|
|
126
|
+
/**
|
|
127
|
+
* Indicates this tool will trigger page navigation.
|
|
128
|
+
* This flag signals to the client that the tool succeeded and navigation is expected.
|
|
129
|
+
*/
|
|
130
|
+
willNavigate: true;
|
|
131
|
+
/**
|
|
132
|
+
* The URL the page will navigate to (if known).
|
|
133
|
+
* Helps clients track navigation targets.
|
|
134
|
+
*/
|
|
135
|
+
navigationUrl?: string;
|
|
136
|
+
/**
|
|
137
|
+
* When navigation will occur relative to the response.
|
|
138
|
+
* - 'immediate': Navigation scheduled immediately after return (within ~100ms)
|
|
139
|
+
* - 'delayed': Navigation will occur after some delay (see navigationDelayMs)
|
|
140
|
+
* @default 'immediate'
|
|
141
|
+
*/
|
|
142
|
+
navigationTiming?: 'immediate' | 'delayed';
|
|
143
|
+
/**
|
|
144
|
+
* Expected delay in milliseconds before navigation (if timing='delayed').
|
|
145
|
+
* Only meaningful when navigationTiming is 'delayed'.
|
|
146
|
+
*/
|
|
147
|
+
navigationDelayMs?: number;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Metadata indicating a tool call was interrupted by page navigation.
|
|
151
|
+
*
|
|
152
|
+
* This metadata is automatically added by the transport layer (`TabServerTransport`)
|
|
153
|
+
* when a page navigation occurs while a tool is executing. The transport layer's
|
|
154
|
+
* `beforeunload` event handler detects the navigation and sends an interrupted
|
|
155
|
+
* response for any pending tool calls.
|
|
156
|
+
*
|
|
157
|
+
* **When this occurs**:
|
|
158
|
+
* - User clicks browser back/forward buttons during tool execution
|
|
159
|
+
* - User manually navigates to a different URL
|
|
160
|
+
* - Tool triggers immediate navigation without following the response-first pattern
|
|
161
|
+
* - Page is reloaded or closed during tool execution
|
|
162
|
+
*
|
|
163
|
+
* **How to distinguish from successful navigation**:
|
|
164
|
+
* - Tool succeeded and navigated: Response includes `NavigationMetadata` with `willNavigate: true`
|
|
165
|
+
* - Tool was interrupted: Response includes `InterruptionMetadata` with `navigationInterrupted: true`
|
|
166
|
+
*
|
|
167
|
+
* **Client handling**:
|
|
168
|
+
* ```typescript
|
|
169
|
+
* const response = await client.callTool('my_tool', args);
|
|
170
|
+
*
|
|
171
|
+
* if (response.metadata?.willNavigate) {
|
|
172
|
+
* // Tool succeeded and will navigate - expected behavior
|
|
173
|
+
* console.log('Tool navigated successfully');
|
|
174
|
+
* } else if (response.metadata?.navigationInterrupted) {
|
|
175
|
+
* // Tool was interrupted - may not have completed
|
|
176
|
+
* console.warn('Tool execution interrupted by navigation');
|
|
177
|
+
* } else {
|
|
178
|
+
* // Normal tool response - no navigation
|
|
179
|
+
* console.log('Tool completed normally');
|
|
180
|
+
* }
|
|
181
|
+
* ```
|
|
182
|
+
*
|
|
183
|
+
* @see {@link NavigationMetadata} for metadata indicating intentional navigation
|
|
184
|
+
* @see {@link TabServerTransport._handleBeforeUnload} for the implementation
|
|
185
|
+
* @internal This metadata is added automatically by the transport layer
|
|
186
|
+
*/
|
|
187
|
+
interface InterruptionMetadata {
|
|
188
|
+
/**
|
|
189
|
+
* Indicates the tool execution was interrupted by page navigation.
|
|
190
|
+
* When `true`, the tool may not have completed its operation successfully.
|
|
191
|
+
*/
|
|
192
|
+
navigationInterrupted: true;
|
|
193
|
+
/**
|
|
194
|
+
* The original JSON-RPC method that was interrupted.
|
|
195
|
+
* Typically `'tools/call'` for tool invocations, but could be other MCP methods.
|
|
196
|
+
*
|
|
197
|
+
* @example 'tools/call' | 'resources/read' | 'prompts/get'
|
|
198
|
+
*/
|
|
199
|
+
originalMethod: string;
|
|
200
|
+
/**
|
|
201
|
+
* Unix timestamp (milliseconds since epoch) when the interruption was detected.
|
|
202
|
+
* Useful for logging, debugging, and understanding the timeline of events.
|
|
203
|
+
*
|
|
204
|
+
* @example 1704067200000 (January 1, 2024, 00:00:00 UTC)
|
|
205
|
+
*/
|
|
206
|
+
timestamp: number;
|
|
207
|
+
}
|
|
68
208
|
/**
|
|
69
209
|
* Transport configuration for initializing the Web Model Context polyfill.
|
|
70
210
|
*
|
|
@@ -907,15 +1047,57 @@ declare function initializeWebModelContext(options?: WebModelContextInitOptions)
|
|
|
907
1047
|
*/
|
|
908
1048
|
declare function cleanupWebModelContext(): void;
|
|
909
1049
|
//#endregion
|
|
1050
|
+
//#region src/logger.d.ts
|
|
1051
|
+
/**
|
|
1052
|
+
* @license
|
|
1053
|
+
* Copyright 2025 Google LLC
|
|
1054
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
1055
|
+
*/
|
|
1056
|
+
/**
|
|
1057
|
+
* Logger interface with standard log levels
|
|
1058
|
+
*
|
|
1059
|
+
* All methods accept the same argument patterns as their console.* equivalents,
|
|
1060
|
+
* supporting format strings, object inspection, and multiple arguments.
|
|
1061
|
+
*/
|
|
1062
|
+
interface Logger {
|
|
1063
|
+
/** Debug-level logging (disabled by default, enable via WEBMCP_DEBUG) */
|
|
1064
|
+
debug(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1065
|
+
/** Info-level logging (disabled by default, enable via WEBMCP_DEBUG) */
|
|
1066
|
+
info(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1067
|
+
/** Warning-level logging (enabled by default, not gated by WEBMCP_DEBUG) */
|
|
1068
|
+
warn(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1069
|
+
/** Error-level logging (enabled by default, not gated by WEBMCP_DEBUG) */
|
|
1070
|
+
error(message?: unknown, ...optionalParams: unknown[]): void;
|
|
1071
|
+
}
|
|
1072
|
+
/**
|
|
1073
|
+
* Create a namespaced logger
|
|
1074
|
+
*
|
|
1075
|
+
* Uses .bind() to prepend namespace prefixes to console methods without manual
|
|
1076
|
+
* string concatenation. Debug enablement is determined at logger creation time
|
|
1077
|
+
* for performance - changes to localStorage after creation won't affect existing
|
|
1078
|
+
* loggers. Refresh the page to apply new WEBMCP_DEBUG settings.
|
|
1079
|
+
*
|
|
1080
|
+
* @param namespace - Namespace for the logger (e.g., 'WebModelContext', 'NativeAdapter')
|
|
1081
|
+
* @returns Logger instance with debug, info, warn, error methods
|
|
1082
|
+
*
|
|
1083
|
+
* @example
|
|
1084
|
+
* ```typescript
|
|
1085
|
+
* const logger = createLogger('WebModelContext');
|
|
1086
|
+
* logger.debug('Tool registered:', toolName); // Only shown if WEBMCP_DEBUG includes 'WebModelContext'
|
|
1087
|
+
* logger.error('Execution failed:', error); // Always enabled
|
|
1088
|
+
* ```
|
|
1089
|
+
*/
|
|
1090
|
+
declare function createLogger(namespace: string): Logger;
|
|
1091
|
+
//#endregion
|
|
910
1092
|
//#region src/validation.d.ts
|
|
911
1093
|
/**
|
|
912
1094
|
* Convert Zod schema object to JSON Schema
|
|
913
|
-
* Uses
|
|
1095
|
+
* Uses Zod 4's native z.toJSONSchema() for conversion
|
|
914
1096
|
*
|
|
915
1097
|
* @param schema - Record of Zod type definitions (e.g., { name: z.string(), age: z.number() })
|
|
916
1098
|
* @returns JSON Schema object compatible with MCP InputSchema
|
|
917
1099
|
*/
|
|
918
1100
|
declare function zodToJsonSchema(schema: Record<string, z.ZodTypeAny>): InputSchema;
|
|
919
1101
|
//#endregion
|
|
920
|
-
export { type CallToolResult, type CreateMessageRequest, type CreateMessageResult, type ElicitRequest, type ElicitResult, ElicitationFormParams, ElicitationParams, ElicitationResult, ElicitationUrlParams, InputSchema, InternalModelContext, MCPBridge, ModelContext, ModelContextInput, ModelContextTesting, type Prompt, PromptDescriptor, type PromptMessage, RegistrationHandle, type Resource, type ResourceContents, ResourceDescriptor, type ResourceTemplate, ResourceTemplateInfo, SamplingRequestParams, SamplingResult, type ToolAnnotations, ToolCallEvent, ToolDescriptor, ToolInfo, ToolListItem, ToolResponse, TransportConfiguration, ValidatedPromptDescriptor, ValidatedResourceDescriptor, ValidatedToolDescriptor, WebModelContextInitOptions, ZodSchemaObject, cleanupWebModelContext, initializeWebModelContext, zodToJsonSchema };
|
|
1102
|
+
export { type CallToolResult, type CreateMessageRequest, type CreateMessageResult, type ElicitRequest, type ElicitResult, ElicitationFormParams, ElicitationParams, ElicitationResult, ElicitationUrlParams, InputSchema, InternalModelContext, InterruptionMetadata, MCPBridge, ModelContext, ModelContextInput, ModelContextTesting, NavigationMetadata, type Prompt, PromptDescriptor, type PromptMessage, RegistrationHandle, type Resource, type ResourceContents, ResourceDescriptor, type ResourceTemplate, ResourceTemplateInfo, SamplingRequestParams, SamplingResult, type ToolAnnotations, ToolCallEvent, ToolDescriptor, ToolInfo, ToolListItem, ToolResponse, TransportConfiguration, ValidatedPromptDescriptor, ValidatedResourceDescriptor, ValidatedToolDescriptor, WebModelContextInitOptions, ZodSchemaObject, cleanupWebModelContext, createLogger, initializeWebModelContext, zodToJsonSchema };
|
|
921
1103
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/global.ts","../src/validation.ts"],"sourcesContent":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/global.ts","../src/logger.ts","../src/validation.ts"],"sourcesContent":[],"mappings":"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"}
|