@siteverb/webmcp 0.1.0-rc.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.
Files changed (95) hide show
  1. package/README.md +163 -0
  2. package/dist/browser.js +841 -0
  3. package/dist/client.d.ts +3 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +320 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/evals/index.d.ts +13 -0
  8. package/dist/evals/index.d.ts.map +1 -0
  9. package/dist/evals/index.js +20 -0
  10. package/dist/evals/index.js.map +1 -0
  11. package/dist/fingerprint.d.ts +3 -0
  12. package/dist/fingerprint.d.ts.map +1 -0
  13. package/dist/fingerprint.js +33 -0
  14. package/dist/fingerprint.js.map +1 -0
  15. package/dist/id.d.ts +2 -0
  16. package/dist/id.d.ts.map +1 -0
  17. package/dist/id.js +15 -0
  18. package/dist/id.js.map +1 -0
  19. package/dist/index.d.ts +9 -0
  20. package/dist/index.d.ts.map +1 -0
  21. package/dist/index.js +6 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/src/client.d.ts +3 -0
  24. package/dist/src/client.d.ts.map +1 -0
  25. package/dist/src/client.js +292 -0
  26. package/dist/src/client.js.map +1 -0
  27. package/dist/src/evals/index.d.ts +13 -0
  28. package/dist/src/evals/index.d.ts.map +1 -0
  29. package/dist/src/evals/index.js +20 -0
  30. package/dist/src/evals/index.js.map +1 -0
  31. package/dist/src/fingerprint.d.ts +3 -0
  32. package/dist/src/fingerprint.d.ts.map +1 -0
  33. package/dist/src/fingerprint.js +27 -0
  34. package/dist/src/fingerprint.js.map +1 -0
  35. package/dist/src/index.d.ts +9 -0
  36. package/dist/src/index.d.ts.map +1 -0
  37. package/dist/src/index.js +6 -0
  38. package/dist/src/index.js.map +1 -0
  39. package/dist/src/telemetry.d.ts +21 -0
  40. package/dist/src/telemetry.d.ts.map +1 -0
  41. package/dist/src/telemetry.js +218 -0
  42. package/dist/src/telemetry.js.map +1 -0
  43. package/dist/src/testing/index.d.ts +3 -0
  44. package/dist/src/testing/index.d.ts.map +1 -0
  45. package/dist/src/testing/index.js +2 -0
  46. package/dist/src/testing/index.js.map +1 -0
  47. package/dist/src/testing/memory.d.ts +17 -0
  48. package/dist/src/testing/memory.d.ts.map +1 -0
  49. package/dist/src/testing/memory.js +72 -0
  50. package/dist/src/testing/memory.js.map +1 -0
  51. package/dist/src/transport.d.ts +8 -0
  52. package/dist/src/transport.d.ts.map +1 -0
  53. package/dist/src/transport.js +29 -0
  54. package/dist/src/transport.js.map +1 -0
  55. package/dist/src/types.d.ts +185 -0
  56. package/dist/src/types.d.ts.map +1 -0
  57. package/dist/src/types.js +2 -0
  58. package/dist/src/types.js.map +1 -0
  59. package/dist/src/validation.d.ts +5 -0
  60. package/dist/src/validation.d.ts.map +1 -0
  61. package/dist/src/validation.js +119 -0
  62. package/dist/src/validation.js.map +1 -0
  63. package/dist/src/version.d.ts +2 -0
  64. package/dist/src/version.d.ts.map +1 -0
  65. package/dist/src/version.js +2 -0
  66. package/dist/src/version.js.map +1 -0
  67. package/dist/telemetry.d.ts +21 -0
  68. package/dist/telemetry.d.ts.map +1 -0
  69. package/dist/telemetry.js +276 -0
  70. package/dist/telemetry.js.map +1 -0
  71. package/dist/testing/index.d.ts +3 -0
  72. package/dist/testing/index.d.ts.map +1 -0
  73. package/dist/testing/index.js +2 -0
  74. package/dist/testing/index.js.map +1 -0
  75. package/dist/testing/memory.d.ts +17 -0
  76. package/dist/testing/memory.d.ts.map +1 -0
  77. package/dist/testing/memory.js +72 -0
  78. package/dist/testing/memory.js.map +1 -0
  79. package/dist/transport.d.ts +7 -0
  80. package/dist/transport.d.ts.map +1 -0
  81. package/dist/transport.js +55 -0
  82. package/dist/transport.js.map +1 -0
  83. package/dist/types.d.ts +189 -0
  84. package/dist/types.d.ts.map +1 -0
  85. package/dist/types.js +2 -0
  86. package/dist/types.js.map +1 -0
  87. package/dist/validation.d.ts +5 -0
  88. package/dist/validation.d.ts.map +1 -0
  89. package/dist/validation.js +117 -0
  90. package/dist/validation.js.map +1 -0
  91. package/dist/version.d.ts +2 -0
  92. package/dist/version.d.ts.map +1 -0
  93. package/dist/version.js +2 -0
  94. package/dist/version.js.map +1 -0
  95. package/package.json +57 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transport.js","sourceRoot":"","sources":["../src/transport.ts"],"names":[],"mappings":"AAOA,SAAS,gBAAgB,CAAC,KAAa;IACrC,IACE,KAAK,CAAC,MAAM,KAAK,CAAC;QAClB,KAAK,CAAC,MAAM,GAAG,KAAK;QACpB,KAAK,KAAK,KAAK,CAAC,IAAI,EAAE;QACtB,uBAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,EACnC,CAAC;QACD,MAAM,IAAI,SAAS,CAAC,4DAA4D,CAAC,CAAC;IACpF,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACrD,MAAM,IAAI,GAAG,0BAA0B,CAAC;QACxC,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QACtC,IAAI,QAAQ,CAAC,MAAM,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,SAAS,CAAC,6DAA6D,CAAC,CAAC;QACrF,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,GAAQ,CAAC;IACb,IAAI,CAAC;QACH,GAAG,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,SAAS,CAAC,qEAAqE,CAAC,CAAC;IAC7F,CAAC;IACD,MAAM,QAAQ,GACZ,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,WAAW,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC;IAC3F,IACE,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,QAAQ,CAAC,CAAC;QACtE,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,QAAQ;QACZ,GAAG,CAAC,MAAM;QACV,GAAG,CAAC,IAAI,EACR,CAAC;QACD,MAAM,IAAI,SAAS,CACjB,kGAAkG,CACnG,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,6BAA6B,CAC3C,OAAuC;IAEvC,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;QACtC,MAAM,IAAI,SAAS,CAAC,mCAAmC,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IAEpD,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,KAAqB,EAAE,OAA6B;YAC7D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAEnF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,QAAQ,EAAE;gBACvC,IAAI;gBACJ,WAAW,EAAE,MAAM;gBACnB,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;gBAC/C,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,MAAM;aACf,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,oCAAoC,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAC5F,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,189 @@
1
+ export type JsonPrimitive = boolean | null | number | string;
2
+ export type JsonValue = JsonPrimitive | JsonValue[] | {
3
+ [key: string]: JsonValue;
4
+ };
5
+ export type JsonSchema = Readonly<Record<string, unknown>>;
6
+ export interface WebMcpToolAnnotations {
7
+ readonly readOnlyHint?: boolean;
8
+ readonly untrustedContentHint?: boolean;
9
+ }
10
+ export interface NativeToolExecutionOptions {
11
+ readonly signal: AbortSignal;
12
+ }
13
+ export interface NativeModelContextTool {
14
+ readonly name: string;
15
+ readonly title?: string;
16
+ readonly description: string;
17
+ readonly inputSchema?: object;
18
+ readonly annotations?: WebMcpToolAnnotations;
19
+ readonly execute: (input: Record<string, unknown>, options: NativeToolExecutionOptions) => unknown | PromiseLike<unknown>;
20
+ }
21
+ export interface NativeRegisteredTool {
22
+ readonly name: string;
23
+ readonly title?: string;
24
+ readonly description: string;
25
+ readonly inputSchema?: object;
26
+ readonly annotations?: WebMcpToolAnnotations;
27
+ readonly origin?: string;
28
+ readonly window?: Window;
29
+ }
30
+ export interface NativeRegisterToolOptions {
31
+ readonly exposedTo?: string[];
32
+ readonly signal?: AbortSignal;
33
+ }
34
+ export interface NativeModelContext {
35
+ registerTool(tool: NativeModelContextTool, options?: NativeRegisterToolOptions): Promise<void>;
36
+ getTools?(): Promise<readonly NativeRegisteredTool[]>;
37
+ }
38
+ export interface SiteverbToolExecutionContext extends NativeToolExecutionOptions {
39
+ readonly invocationId: string;
40
+ }
41
+ export interface SiteverbToolDefinition<TInput extends object = Record<string, unknown>, TResult = unknown> {
42
+ readonly id: string;
43
+ readonly name: string;
44
+ readonly title?: string;
45
+ readonly description: string;
46
+ readonly inputSchema?: JsonSchema;
47
+ readonly annotations?: WebMcpToolAnnotations;
48
+ readonly execute: (input: TInput, context: SiteverbToolExecutionContext) => TResult | PromiseLike<TResult>;
49
+ }
50
+ declare const definedToolBrand: unique symbol;
51
+ export type DefinedSiteverbTool<TInput extends object = Record<string, unknown>, TResult = unknown> = Readonly<SiteverbToolDefinition<TInput, TResult>> & {
52
+ readonly [definedToolBrand]: true;
53
+ };
54
+ export type AnySiteverbTool = SiteverbToolDefinition<any, any> | DefinedSiteverbTool<any, any>;
55
+ export type ToolDiagnosticCode = 'description-budget' | 'invalid-annotations' | 'invalid-description' | 'invalid-execute' | 'invalid-input-schema' | 'invalid-stable-id' | 'invalid-title' | 'invalid-tool-name' | 'parameter-description-budget' | 'tool-name-budget';
56
+ export interface ToolDiagnostic {
57
+ readonly code: ToolDiagnosticCode;
58
+ readonly message: string;
59
+ readonly path: string;
60
+ readonly severity: 'error' | 'warning';
61
+ }
62
+ export interface RegisterToolOptions {
63
+ readonly exposedTo?: readonly string[];
64
+ readonly signal?: AbortSignal;
65
+ }
66
+ export type RegistrationStatus = 'pending' | 'registered' | 'unsupported' | 'unregistered' | 'failed';
67
+ export interface RegistrationResult {
68
+ readonly id: string;
69
+ readonly name: string;
70
+ readonly status: Extract<RegistrationStatus, 'registered' | 'unsupported'>;
71
+ }
72
+ export interface RegistrationHandle {
73
+ readonly id: string;
74
+ readonly name: string;
75
+ readonly ready: Promise<RegistrationResult>;
76
+ readonly signal: AbortSignal;
77
+ readonly status: RegistrationStatus;
78
+ unregister(reason?: unknown): void;
79
+ }
80
+ export interface RegisterToolsOptions extends RegisterToolOptions {
81
+ readonly atomic?: boolean;
82
+ }
83
+ export interface BatchRegistrationHandle {
84
+ readonly handles: readonly RegistrationHandle[];
85
+ readonly ready: Promise<readonly RegistrationResult[]>;
86
+ readonly signal: AbortSignal;
87
+ unregister(reason?: unknown): void;
88
+ }
89
+ export interface SiteverbOptions {
90
+ readonly environment?: string;
91
+ readonly modelContext?: NativeModelContext | (() => NativeModelContext | undefined);
92
+ readonly onDiagnostic?: (diagnostic: SiteverbDiagnostic) => void;
93
+ readonly release?: string;
94
+ readonly routeTemplate?: string | (() => string | undefined);
95
+ readonly siteId?: string;
96
+ readonly telemetry?: false | TelemetryOptions;
97
+ }
98
+ export interface RegisteredToolSnapshot {
99
+ readonly id: string;
100
+ readonly name: string;
101
+ readonly status: RegistrationStatus;
102
+ }
103
+ export interface RuntimeSnapshot {
104
+ readonly environment?: string;
105
+ readonly release?: string;
106
+ readonly siteId?: string;
107
+ readonly supported: boolean;
108
+ readonly telemetry: TelemetryStatus;
109
+ readonly tools: readonly RegisteredToolSnapshot[];
110
+ }
111
+ export interface CoverageSnapshot {
112
+ readonly completeness: number | null;
113
+ readonly discovered: readonly string[];
114
+ readonly instrumented: readonly string[];
115
+ readonly inventoryOnly: readonly string[];
116
+ readonly missing: readonly string[];
117
+ readonly status: 'available' | 'unavailable';
118
+ }
119
+ export interface SiteverbClient {
120
+ readonly supported: boolean;
121
+ readonly telemetry: TelemetryStatus;
122
+ registerTool<TInput extends object, TResult>(tool: SiteverbToolDefinition<TInput, TResult> | DefinedSiteverbTool<TInput, TResult>, options?: RegisterToolOptions): RegistrationHandle;
123
+ registerTools(tools: readonly AnySiteverbTool[], options?: RegisterToolsOptions): BatchRegistrationHandle;
124
+ coverage(): Promise<CoverageSnapshot>;
125
+ dispose(reason?: unknown): void;
126
+ flush(): Promise<void>;
127
+ snapshot(): RuntimeSnapshot;
128
+ }
129
+ export type SiteverbDiagnosticCode = 'coverage-unavailable' | 'telemetry-dropped' | 'telemetry-route-template-invalid' | 'telemetry-send-failed';
130
+ export interface SiteverbDiagnostic {
131
+ readonly cause?: unknown;
132
+ readonly code: SiteverbDiagnosticCode;
133
+ readonly message: string;
134
+ readonly severity: 'warning';
135
+ }
136
+ export type TelemetryEventName = 'surface_loaded' | 'tool_registered' | 'tool_unregistered' | 'tool_registration_cancelled' | 'tool_registration_failed' | 'tool_call_started' | 'tool_call_completed' | 'tool_call_failed' | 'tool_call_cancelled';
137
+ export type TelemetryErrorClass = 'abort' | 'network' | 'not-found' | 'permission' | 'timeout' | 'validation' | 'unknown';
138
+ export interface TelemetryToolIdentity {
139
+ readonly schemaHash: string;
140
+ readonly stableKey: string;
141
+ readonly wireName: string;
142
+ }
143
+ export interface SiteverbTelemetryEvent {
144
+ readonly dataClass: 'production';
145
+ readonly durationMs?: number;
146
+ readonly environment?: string;
147
+ readonly errorClass?: TelemetryErrorClass;
148
+ readonly event: TelemetryEventName;
149
+ readonly eventId: string;
150
+ readonly eventIndex: number;
151
+ readonly invocationId?: string;
152
+ readonly occurredAt: string;
153
+ readonly pageSessionId: string;
154
+ readonly release?: string;
155
+ readonly routeTemplate?: string;
156
+ readonly sequenceIndex?: number;
157
+ readonly tool?: TelemetryToolIdentity;
158
+ readonly webmcpSupported?: boolean;
159
+ }
160
+ export interface TelemetryBatch {
161
+ readonly batchId: string;
162
+ readonly events: readonly SiteverbTelemetryEvent[];
163
+ readonly protocolVersion: 1;
164
+ readonly sdkVersion: string;
165
+ readonly sentAt: string;
166
+ readonly siteId: string;
167
+ }
168
+ export type TelemetryFlushReason = 'interval' | 'lifecycle' | 'manual' | 'size';
169
+ export interface TelemetryTransport {
170
+ send(batch: TelemetryBatch, reason: TelemetryFlushReason): Promise<void> | void;
171
+ }
172
+ export interface TelemetryOptions {
173
+ readonly endpoint?: string;
174
+ readonly flushIntervalMs?: number;
175
+ readonly maxBatchSize?: number;
176
+ readonly maxQueueSize?: number;
177
+ readonly maxRetryAttempts?: number;
178
+ readonly retryMaxDelayMs?: number;
179
+ readonly transport?: TelemetryTransport;
180
+ }
181
+ export interface TelemetryStatus {
182
+ readonly autoRetryPaused: boolean;
183
+ readonly consecutiveFailures: number;
184
+ readonly droppedEvents: number;
185
+ readonly enabled: boolean;
186
+ readonly pendingEvents: number;
187
+ }
188
+ export {};
189
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,CAAC;AAE7D,MAAM,MAAM,SAAS,GAAG,aAAa,GAAG,SAAS,EAAE,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AAEnF,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE3D,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAChC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;CAC9B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,OAAO,EAAE,0BAA0B,KAChC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,WAAW,kBAAkB;IACjC,YAAY,CAAC,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,yBAAyB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/F,QAAQ,CAAC,IAAI,OAAO,CAAC,SAAS,oBAAoB,EAAE,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,4BAA6B,SAAQ,0BAA0B;IAC9E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB,CACrC,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,OAAO,GAAG,OAAO;IAEjB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,UAAU,CAAC;IAClC,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAC;IAC7C,QAAQ,CAAC,OAAO,EAAE,CAChB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,4BAA4B,KAClC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;CACrC;AAED,OAAO,CAAC,MAAM,gBAAgB,EAAE,OAAO,MAAM,CAAC;AAE9C,MAAM,MAAM,mBAAmB,CAC7B,MAAM,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,OAAO,GAAG,OAAO,IACf,QAAQ,CAAC,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG;IACtD,QAAQ,CAAC,CAAC,gBAAgB,CAAC,EAAE,IAAI,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,sBAAsB,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAE/F,MAAM,MAAM,kBAAkB,GAC1B,oBAAoB,GACpB,qBAAqB,GACrB,qBAAqB,GACrB,iBAAiB,GACjB,sBAAsB,GACtB,mBAAmB,GACnB,eAAe,GACf,mBAAmB,GACnB,8BAA8B,GAC9B,kBAAkB,CAAC;AAEvB,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,CAAC;CACxC;AAED,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;CAC/B;AAED,MAAM,MAAM,kBAAkB,GAC5B,SAAS,GAAG,YAAY,GAAG,aAAa,GAAG,cAAc,GAAG,QAAQ,CAAC;AAEvE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,kBAAkB,EAAE,YAAY,GAAG,aAAa,CAAC,CAAC;CAC5E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;IACpC,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,oBAAqB,SAAQ,mBAAmB;IAC/D,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,SAAS,kBAAkB,EAAE,CAAC;IAChD,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,SAAS,kBAAkB,EAAE,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC;IAC7B,UAAU,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,YAAY,CAAC,EAAE,kBAAkB,GAAG,CAAC,MAAM,kBAAkB,GAAG,SAAS,CAAC,CAAC;IACpF,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,kBAAkB,KAAK,IAAI,CAAC;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,GAAG,CAAC,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC;IAC7D,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,KAAK,GAAG,gBAAgB,CAAC;CAC/C;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,kBAAkB,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,QAAQ,CAAC,KAAK,EAAE,SAAS,sBAAsB,EAAE,CAAC;CACnD;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,aAAa,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,aAAa,CAAC;CAC9C;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC;IACpC,YAAY,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,EACzC,IAAI,EAAE,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,EACpF,OAAO,CAAC,EAAE,mBAAmB,GAC5B,kBAAkB,CAAC;IACtB,aAAa,CACX,KAAK,EAAE,SAAS,eAAe,EAAE,EACjC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,uBAAuB,CAAC;IAC3B,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACtC,OAAO,CAAC,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;IAChC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,QAAQ,IAAI,eAAe,CAAC;CAC7B;AAED,MAAM,MAAM,sBAAsB,GAC9B,sBAAsB,GACtB,mBAAmB,GACnB,kCAAkC,GAClC,uBAAuB,CAAC;AAE5B,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,SAAS,CAAC;CAC9B;AAED,MAAM,MAAM,kBAAkB,GAC1B,gBAAgB,GAChB,iBAAiB,GACjB,mBAAmB,GACnB,6BAA6B,GAC7B,0BAA0B,GAC1B,mBAAmB,GACnB,qBAAqB,GACrB,kBAAkB,GAClB,qBAAqB,CAAC;AAE1B,MAAM,MAAM,mBAAmB,GAC7B,OAAO,GAAG,SAAS,GAAG,WAAW,GAAG,YAAY,GAAG,SAAS,GAAG,YAAY,GAAG,SAAS,CAAC;AAE1F,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC;IACjC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,UAAU,CAAC,EAAE,mBAAmB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,qBAAqB,CAAC;IACtC,QAAQ,CAAC,eAAe,CAAC,EAAE,OAAO,CAAC;CACpC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,EAAE,SAAS,sBAAsB,EAAE,CAAC;IACnD,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC;IAC5B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEhF,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CACjF;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,kBAAkB,CAAC;CACzC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;CAChC"}
package/dist/types.js ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import type { DefinedSiteverbTool, SiteverbToolDefinition, ToolDiagnostic } from './types.js';
2
+ export declare function inspectToolDefinition(definition: SiteverbToolDefinition): readonly ToolDiagnostic[];
3
+ export declare function defineTool<TInput extends object, TResult>(definition: SiteverbToolDefinition<TInput, TResult>): DefinedSiteverbTool<TInput, TResult>;
4
+ export declare function isDefinedTool(value: unknown): value is DefinedSiteverbTool;
5
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EAEnB,sBAAsB,EACtB,cAAc,EAEf,MAAM,YAAY,CAAC;AAoFpB,wBAAgB,qBAAqB,CACnC,UAAU,EAAE,sBAAsB,GACjC,SAAS,cAAc,EAAE,CAuG3B;AAED,wBAAgB,UAAU,CAAC,MAAM,SAAS,MAAM,EAAE,OAAO,EACvD,UAAU,EAAE,sBAAsB,CAAC,MAAM,EAAE,OAAO,CAAC,GAClD,mBAAmB,CAAC,MAAM,EAAE,OAAO,CAAC,CAuBtC;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,mBAAmB,CAI1E"}
@@ -0,0 +1,117 @@
1
+ const DEFINED_TOOL = Symbol('siteverb.defined-tool');
2
+ const STABLE_ID_PATTERN = /^[a-z][a-z0-9_-]*(?:\.[a-z][a-z0-9_-]*)+$/;
3
+ const TOOL_NAME_PATTERN = /^[A-Za-z0-9_.-]{1,128}$/;
4
+ function diagnostic(code, message, path, severity) {
5
+ return { code, message, path, severity };
6
+ }
7
+ function inspectParameterDescriptions(value, path, diagnostics) {
8
+ if (value === null || typeof value !== 'object')
9
+ return;
10
+ if (Array.isArray(value)) {
11
+ value.forEach((entry, index) => inspectParameterDescriptions(entry, `${path}[${index}]`, diagnostics));
12
+ return;
13
+ }
14
+ const record = value;
15
+ if (typeof record.description === 'string' && record.description.length > 150) {
16
+ diagnostics.push(diagnostic('parameter-description-budget', 'Parameter descriptions should stay within 150 characters for current agent clients.', `${path}.description`, 'warning'));
17
+ }
18
+ for (const [key, entry] of Object.entries(record)) {
19
+ inspectParameterDescriptions(entry, `${path}.${key}`, diagnostics);
20
+ }
21
+ }
22
+ function inspectAnnotations(annotations, diagnostics) {
23
+ if (annotations === undefined)
24
+ return;
25
+ if ((annotations.readOnlyHint !== undefined && typeof annotations.readOnlyHint !== 'boolean') ||
26
+ (annotations.untrustedContentHint !== undefined &&
27
+ typeof annotations.untrustedContentHint !== 'boolean')) {
28
+ diagnostics.push(diagnostic('invalid-annotations', 'WebMCP annotation hints must be booleans.', 'annotations', 'error'));
29
+ }
30
+ }
31
+ function cloneSchema(schema) {
32
+ if (schema === undefined)
33
+ return undefined;
34
+ const serialized = JSON.stringify(schema);
35
+ if (serialized === undefined) {
36
+ throw new TypeError('inputSchema must be JSON serializable.');
37
+ }
38
+ return JSON.parse(serialized);
39
+ }
40
+ function deepFreeze(value) {
41
+ if (value === null || typeof value !== 'object' || Object.isFrozen(value))
42
+ return value;
43
+ Object.freeze(value);
44
+ for (const nested of Object.values(value))
45
+ deepFreeze(nested);
46
+ return value;
47
+ }
48
+ export function inspectToolDefinition(definition) {
49
+ const diagnostics = [];
50
+ if (typeof definition.id !== 'string' ||
51
+ definition.id.length > 128 ||
52
+ !STABLE_ID_PATTERN.test(definition.id)) {
53
+ diagnostics.push(diagnostic('invalid-stable-id', 'id must be a dot-namespaced stable key such as "catalog.search-products".', 'id', 'error'));
54
+ }
55
+ if (typeof definition.name !== 'string' || !TOOL_NAME_PATTERN.test(definition.name)) {
56
+ diagnostics.push(diagnostic('invalid-tool-name', 'name must contain 1-128 ASCII letters, digits, underscores, hyphens, or periods.', 'name', 'error'));
57
+ }
58
+ else if (definition.name.length > 30) {
59
+ diagnostics.push(diagnostic('tool-name-budget', 'Tool names should stay within 30 characters for current agent clients.', 'name', 'warning'));
60
+ }
61
+ if (typeof definition.description !== 'string' || definition.description.trim() === '') {
62
+ diagnostics.push(diagnostic('invalid-description', 'description must be a non-empty string.', 'description', 'error'));
63
+ }
64
+ else if (definition.description.length > 500) {
65
+ diagnostics.push(diagnostic('description-budget', 'Tool descriptions should stay within 500 characters for current agent clients.', 'description', 'warning'));
66
+ }
67
+ if (definition.title !== undefined && typeof definition.title !== 'string') {
68
+ diagnostics.push(diagnostic('invalid-title', 'title must be a string when provided.', 'title', 'error'));
69
+ }
70
+ if (typeof definition.execute !== 'function') {
71
+ diagnostics.push(diagnostic('invalid-execute', 'execute must be a function.', 'execute', 'error'));
72
+ }
73
+ if (definition.inputSchema !== undefined &&
74
+ (definition.inputSchema === null ||
75
+ typeof definition.inputSchema !== 'object' ||
76
+ Array.isArray(definition.inputSchema))) {
77
+ diagnostics.push(diagnostic('invalid-input-schema', 'inputSchema must be a JSON Schema object when provided.', 'inputSchema', 'error'));
78
+ }
79
+ else if (definition.inputSchema !== undefined) {
80
+ try {
81
+ const serialized = JSON.stringify(definition.inputSchema);
82
+ if (serialized === undefined)
83
+ throw new TypeError('Schema serialized to undefined.');
84
+ inspectParameterDescriptions(definition.inputSchema, 'inputSchema', diagnostics);
85
+ }
86
+ catch {
87
+ diagnostics.push(diagnostic('invalid-input-schema', 'inputSchema must be JSON serializable.', 'inputSchema', 'error'));
88
+ }
89
+ }
90
+ inspectAnnotations(definition.annotations, diagnostics);
91
+ return Object.freeze(diagnostics);
92
+ }
93
+ export function defineTool(definition) {
94
+ const diagnostics = inspectToolDefinition(definition);
95
+ const errors = diagnostics.filter((entry) => entry.severity === 'error');
96
+ if (errors.length > 0) {
97
+ throw new TypeError(errors.map((entry) => `${entry.path}: ${entry.message}`).join('\n'));
98
+ }
99
+ const tool = {
100
+ ...definition,
101
+ ...(definition.inputSchema === undefined
102
+ ? {}
103
+ : { inputSchema: deepFreeze(cloneSchema(definition.inputSchema)) }),
104
+ ...(definition.annotations === undefined
105
+ ? {}
106
+ : { annotations: Object.freeze({ ...definition.annotations }) }),
107
+ };
108
+ Object.defineProperty(tool, DEFINED_TOOL, {
109
+ enumerable: false,
110
+ value: true,
111
+ });
112
+ return Object.freeze(tool);
113
+ }
114
+ export function isDefinedTool(value) {
115
+ return Boolean(value && typeof value === 'object' && value[DEFINED_TOOL] === true);
116
+ }
117
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const SITEVERB_WEBMCP_VERSION = "0.1.0-rc.0";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,eAAe,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const SITEVERB_WEBMCP_VERSION = '0.1.0-rc.0';
2
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,YAAY,CAAC"}
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "@siteverb/webmcp",
3
+ "version": "0.1.0-rc.0",
4
+ "description": "Native-first WebMCP tools with stable identity, lifecycle control, and production-safe instrumentation.",
5
+ "type": "module",
6
+ "sideEffects": false,
7
+ "files": [
8
+ "dist",
9
+ "README.md"
10
+ ],
11
+ "exports": {
12
+ ".": {
13
+ "types": "./dist/index.d.ts",
14
+ "import": "./dist/index.js"
15
+ },
16
+ "./testing": {
17
+ "types": "./dist/testing/index.d.ts",
18
+ "import": "./dist/testing/index.js"
19
+ },
20
+ "./evals": {
21
+ "types": "./dist/evals/index.d.ts",
22
+ "import": "./dist/evals/index.js"
23
+ },
24
+ "./browser": {
25
+ "types": "./dist/index.d.ts",
26
+ "import": "./dist/browser.js"
27
+ },
28
+ "./package.json": "./package.json"
29
+ },
30
+ "main": "./dist/index.js",
31
+ "types": "./dist/index.d.ts",
32
+ "engines": {
33
+ "node": ">=22"
34
+ },
35
+ "scripts": {
36
+ "build": "tsc -p tsconfig.build.json && esbuild src/index.ts --bundle --format=esm --platform=browser --target=es2022 --outfile=dist/browser.js",
37
+ "package:check": "publint && attw --pack . --profile esm-only",
38
+ "test": "vitest run",
39
+ "typecheck": "tsc -p tsconfig.json --noEmit"
40
+ },
41
+ "keywords": [
42
+ "webmcp",
43
+ "browser-agents",
44
+ "ai-agents",
45
+ "tool-calling"
46
+ ],
47
+ "license": "Apache-2.0",
48
+ "repository": {
49
+ "type": "git",
50
+ "url": "git+https://github.com/siteverb/siteverb.git",
51
+ "directory": "packages/webmcp"
52
+ },
53
+ "publishConfig": {
54
+ "access": "public",
55
+ "provenance": true
56
+ }
57
+ }