@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.
- package/README.md +163 -0
- package/dist/browser.js +841 -0
- package/dist/client.d.ts +3 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +320 -0
- package/dist/client.js.map +1 -0
- package/dist/evals/index.d.ts +13 -0
- package/dist/evals/index.d.ts.map +1 -0
- package/dist/evals/index.js +20 -0
- package/dist/evals/index.js.map +1 -0
- package/dist/fingerprint.d.ts +3 -0
- package/dist/fingerprint.d.ts.map +1 -0
- package/dist/fingerprint.js +33 -0
- package/dist/fingerprint.js.map +1 -0
- package/dist/id.d.ts +2 -0
- package/dist/id.d.ts.map +1 -0
- package/dist/id.js +15 -0
- package/dist/id.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +6 -0
- package/dist/index.js.map +1 -0
- package/dist/src/client.d.ts +3 -0
- package/dist/src/client.d.ts.map +1 -0
- package/dist/src/client.js +292 -0
- package/dist/src/client.js.map +1 -0
- package/dist/src/evals/index.d.ts +13 -0
- package/dist/src/evals/index.d.ts.map +1 -0
- package/dist/src/evals/index.js +20 -0
- package/dist/src/evals/index.js.map +1 -0
- package/dist/src/fingerprint.d.ts +3 -0
- package/dist/src/fingerprint.d.ts.map +1 -0
- package/dist/src/fingerprint.js +27 -0
- package/dist/src/fingerprint.js.map +1 -0
- package/dist/src/index.d.ts +9 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/telemetry.d.ts +21 -0
- package/dist/src/telemetry.d.ts.map +1 -0
- package/dist/src/telemetry.js +218 -0
- package/dist/src/telemetry.js.map +1 -0
- package/dist/src/testing/index.d.ts +3 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +2 -0
- package/dist/src/testing/index.js.map +1 -0
- package/dist/src/testing/memory.d.ts +17 -0
- package/dist/src/testing/memory.d.ts.map +1 -0
- package/dist/src/testing/memory.js +72 -0
- package/dist/src/testing/memory.js.map +1 -0
- package/dist/src/transport.d.ts +8 -0
- package/dist/src/transport.d.ts.map +1 -0
- package/dist/src/transport.js +29 -0
- package/dist/src/transport.js.map +1 -0
- package/dist/src/types.d.ts +185 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +2 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/validation.d.ts +5 -0
- package/dist/src/validation.d.ts.map +1 -0
- package/dist/src/validation.js +119 -0
- package/dist/src/validation.js.map +1 -0
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +2 -0
- package/dist/src/version.js.map +1 -0
- package/dist/telemetry.d.ts +21 -0
- package/dist/telemetry.d.ts.map +1 -0
- package/dist/telemetry.js +276 -0
- package/dist/telemetry.js.map +1 -0
- package/dist/testing/index.d.ts +3 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +2 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/memory.d.ts +17 -0
- package/dist/testing/memory.d.ts.map +1 -0
- package/dist/testing/memory.js +72 -0
- package/dist/testing/memory.js.map +1 -0
- package/dist/transport.d.ts +7 -0
- package/dist/transport.d.ts.map +1 -0
- package/dist/transport.js +55 -0
- package/dist/transport.js.map +1 -0
- package/dist/types.d.ts +189 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/validation.d.ts +5 -0
- package/dist/validation.d.ts.map +1 -0
- package/dist/validation.js +117 -0
- package/dist/validation.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +2 -0
- package/dist/version.js.map +1 -0
- package/package.json +57 -0
|
@@ -0,0 +1,218 @@
|
|
|
1
|
+
import { createFetchTelemetryTransport } from './transport.js';
|
|
2
|
+
import { SITEVERB_WEBMCP_VERSION } from './version.js';
|
|
3
|
+
function randomId() {
|
|
4
|
+
if (typeof globalThis.crypto?.randomUUID === 'function')
|
|
5
|
+
return globalThis.crypto.randomUUID();
|
|
6
|
+
const bytes = new Uint8Array(16);
|
|
7
|
+
globalThis.crypto?.getRandomValues?.(bytes);
|
|
8
|
+
return Array.from(bytes, (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
9
|
+
}
|
|
10
|
+
function resolveSessionId(siteId) {
|
|
11
|
+
const key = `__siteverb_session:${siteId}`;
|
|
12
|
+
try {
|
|
13
|
+
const existing = globalThis.sessionStorage?.getItem(key);
|
|
14
|
+
if (existing)
|
|
15
|
+
return existing;
|
|
16
|
+
const created = randomId();
|
|
17
|
+
globalThis.sessionStorage?.setItem(key, created);
|
|
18
|
+
return created;
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return randomId();
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
function resolveRouteTemplate(route) {
|
|
25
|
+
try {
|
|
26
|
+
return typeof route === 'function' ? route() : route;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
function positiveInteger(value, fallback, name) {
|
|
33
|
+
if (value === undefined)
|
|
34
|
+
return fallback;
|
|
35
|
+
if (!Number.isSafeInteger(value) || value <= 0) {
|
|
36
|
+
throw new TypeError(`${name} must be a positive integer.`);
|
|
37
|
+
}
|
|
38
|
+
return value;
|
|
39
|
+
}
|
|
40
|
+
function report(options, diagnostic) {
|
|
41
|
+
try {
|
|
42
|
+
options.onDiagnostic?.(diagnostic);
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
// Diagnostics must never alter application behavior.
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function disabledManager() {
|
|
49
|
+
return Object.freeze({
|
|
50
|
+
enabled: false,
|
|
51
|
+
emit: () => undefined,
|
|
52
|
+
flush: async () => undefined,
|
|
53
|
+
nextSequence: () => 0,
|
|
54
|
+
status: () => ({ droppedEvents: 0, enabled: false, pendingEvents: 0 }),
|
|
55
|
+
dispose: () => undefined,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
export function createTelemetryManager(options, webmcpSupported) {
|
|
59
|
+
if (!options.telemetry)
|
|
60
|
+
return disabledManager();
|
|
61
|
+
const siteId = options.siteId;
|
|
62
|
+
if (!siteId)
|
|
63
|
+
throw new TypeError('siteId is required when telemetry is enabled.');
|
|
64
|
+
const telemetry = options.telemetry;
|
|
65
|
+
const transport = telemetry.transport ??
|
|
66
|
+
(telemetry.endpoint
|
|
67
|
+
? createFetchTelemetryTransport({ endpoint: telemetry.endpoint })
|
|
68
|
+
: (() => {
|
|
69
|
+
throw new TypeError('telemetry requires either a transport or endpoint.');
|
|
70
|
+
})());
|
|
71
|
+
const flushIntervalMs = positiveInteger(telemetry.flushIntervalMs, 5_000, 'telemetry.flushIntervalMs');
|
|
72
|
+
const maxBatchSize = positiveInteger(telemetry.maxBatchSize, 20, 'telemetry.maxBatchSize');
|
|
73
|
+
const maxQueueSize = positiveInteger(telemetry.maxQueueSize, 1_000, 'telemetry.maxQueueSize');
|
|
74
|
+
if (maxBatchSize > maxQueueSize) {
|
|
75
|
+
throw new TypeError('telemetry.maxBatchSize cannot exceed telemetry.maxQueueSize.');
|
|
76
|
+
}
|
|
77
|
+
const pageSessionId = resolveSessionId(siteId);
|
|
78
|
+
let queue = [];
|
|
79
|
+
let pendingBatch;
|
|
80
|
+
let inFlight;
|
|
81
|
+
let timer;
|
|
82
|
+
let disposed = false;
|
|
83
|
+
let droppedEvents = 0;
|
|
84
|
+
let eventIndex = 0;
|
|
85
|
+
let sequenceIndex = 0;
|
|
86
|
+
const schedule = () => {
|
|
87
|
+
if (disposed || timer || (queue.length === 0 && !pendingBatch))
|
|
88
|
+
return;
|
|
89
|
+
timer = setTimeout(() => {
|
|
90
|
+
timer = undefined;
|
|
91
|
+
void flush('interval');
|
|
92
|
+
}, flushIntervalMs);
|
|
93
|
+
};
|
|
94
|
+
const emit = (event, fields = {}) => {
|
|
95
|
+
if (disposed)
|
|
96
|
+
return;
|
|
97
|
+
if (queue.length + (pendingBatch?.events.length ?? 0) >= maxQueueSize) {
|
|
98
|
+
droppedEvents += 1;
|
|
99
|
+
report(options, {
|
|
100
|
+
code: 'telemetry-dropped',
|
|
101
|
+
message: 'A Siteverb telemetry event was dropped because the bounded queue is full.',
|
|
102
|
+
severity: 'warning',
|
|
103
|
+
});
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
const routeTemplate = resolveRouteTemplate(options.routeTemplate);
|
|
107
|
+
queue.push(Object.freeze({
|
|
108
|
+
dataClass: 'production',
|
|
109
|
+
event,
|
|
110
|
+
eventId: randomId(),
|
|
111
|
+
eventIndex: eventIndex++,
|
|
112
|
+
occurredAt: new Date().toISOString(),
|
|
113
|
+
pageSessionId,
|
|
114
|
+
...(options.environment === undefined ? {} : { environment: options.environment }),
|
|
115
|
+
...(options.release === undefined ? {} : { release: options.release }),
|
|
116
|
+
...(routeTemplate === undefined ? {} : { routeTemplate }),
|
|
117
|
+
...fields,
|
|
118
|
+
}));
|
|
119
|
+
if (queue.length >= maxBatchSize)
|
|
120
|
+
void flush('size');
|
|
121
|
+
else
|
|
122
|
+
schedule();
|
|
123
|
+
};
|
|
124
|
+
const flush = async (reason = 'manual') => {
|
|
125
|
+
if (timer) {
|
|
126
|
+
clearTimeout(timer);
|
|
127
|
+
timer = undefined;
|
|
128
|
+
}
|
|
129
|
+
if (inFlight) {
|
|
130
|
+
await inFlight;
|
|
131
|
+
if (queue.length > 0)
|
|
132
|
+
return flush(reason);
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
if (!pendingBatch && queue.length === 0)
|
|
136
|
+
return;
|
|
137
|
+
const batch = pendingBatch ??
|
|
138
|
+
Object.freeze({
|
|
139
|
+
batchId: randomId(),
|
|
140
|
+
events: Object.freeze(queue.splice(0, maxBatchSize)),
|
|
141
|
+
protocolVersion: 1,
|
|
142
|
+
sdkVersion: SITEVERB_WEBMCP_VERSION,
|
|
143
|
+
sentAt: new Date().toISOString(),
|
|
144
|
+
siteId,
|
|
145
|
+
});
|
|
146
|
+
pendingBatch = batch;
|
|
147
|
+
inFlight = Promise.resolve()
|
|
148
|
+
.then(() => transport.send(batch, reason))
|
|
149
|
+
.then(() => {
|
|
150
|
+
if (pendingBatch?.batchId === batch.batchId)
|
|
151
|
+
pendingBatch = undefined;
|
|
152
|
+
})
|
|
153
|
+
.catch((cause) => {
|
|
154
|
+
report(options, {
|
|
155
|
+
cause,
|
|
156
|
+
code: 'telemetry-send-failed',
|
|
157
|
+
message: 'Siteverb could not deliver a telemetry batch; the same batch will be retried.',
|
|
158
|
+
severity: 'warning',
|
|
159
|
+
});
|
|
160
|
+
throw cause;
|
|
161
|
+
})
|
|
162
|
+
.finally(() => {
|
|
163
|
+
inFlight = undefined;
|
|
164
|
+
schedule();
|
|
165
|
+
});
|
|
166
|
+
return inFlight;
|
|
167
|
+
};
|
|
168
|
+
const lifecycleFlush = () => {
|
|
169
|
+
void flush('lifecycle').catch(() => undefined);
|
|
170
|
+
};
|
|
171
|
+
const visibilityFlush = () => {
|
|
172
|
+
if (typeof document !== 'undefined' && document.visibilityState === 'hidden')
|
|
173
|
+
lifecycleFlush();
|
|
174
|
+
};
|
|
175
|
+
globalThis.addEventListener?.('pagehide', lifecycleFlush);
|
|
176
|
+
globalThis.document?.addEventListener?.('visibilitychange', visibilityFlush);
|
|
177
|
+
const manager = {
|
|
178
|
+
enabled: true,
|
|
179
|
+
emit,
|
|
180
|
+
flush,
|
|
181
|
+
nextSequence: () => sequenceIndex++,
|
|
182
|
+
status: () => ({
|
|
183
|
+
droppedEvents,
|
|
184
|
+
enabled: true,
|
|
185
|
+
pendingEvents: queue.length + (pendingBatch?.events.length ?? 0),
|
|
186
|
+
}),
|
|
187
|
+
dispose: () => {
|
|
188
|
+
if (disposed)
|
|
189
|
+
return;
|
|
190
|
+
disposed = true;
|
|
191
|
+
if (timer)
|
|
192
|
+
clearTimeout(timer);
|
|
193
|
+
timer = undefined;
|
|
194
|
+
globalThis.removeEventListener?.('pagehide', lifecycleFlush);
|
|
195
|
+
globalThis.document?.removeEventListener?.('visibilitychange', visibilityFlush);
|
|
196
|
+
lifecycleFlush();
|
|
197
|
+
},
|
|
198
|
+
};
|
|
199
|
+
emit('surface_loaded', { webmcpSupported });
|
|
200
|
+
return Object.freeze(manager);
|
|
201
|
+
}
|
|
202
|
+
export function classifyTelemetryError(error, signal) {
|
|
203
|
+
if (signal.aborted || (error instanceof DOMException && error.name === 'AbortError'))
|
|
204
|
+
return 'abort';
|
|
205
|
+
const name = error instanceof Error ? error.name.toLowerCase() : '';
|
|
206
|
+
if (name.includes('timeout'))
|
|
207
|
+
return 'timeout';
|
|
208
|
+
if (name.includes('network'))
|
|
209
|
+
return 'network';
|
|
210
|
+
if (name.includes('notfound') || name.includes('not_found'))
|
|
211
|
+
return 'not-found';
|
|
212
|
+
if (name.includes('permission') || name.includes('notallowed'))
|
|
213
|
+
return 'permission';
|
|
214
|
+
if (name.includes('validation') || error instanceof TypeError)
|
|
215
|
+
return 'validation';
|
|
216
|
+
return 'unknown';
|
|
217
|
+
}
|
|
218
|
+
//# sourceMappingURL=telemetry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"telemetry.js","sourceRoot":"","sources":["../../src/telemetry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,aAAa,CAAC;AACrB,YAAY,EAAE,kBAAkB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/testing/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,8BAA8B,GAC/B,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { NativeModelContext, NativeModelContextTool, NativeRegisteredTool, TelemetryBatch, TelemetryFlushReason, TelemetryTransport } from '../types.js';
|
|
2
|
+
export interface MemoryModelContext extends NativeModelContext {
|
|
3
|
+
readonly registrations: ReadonlyMap<string, NativeModelContextTool>;
|
|
4
|
+
addUninstrumentedTool(tool: NativeRegisteredTool): void;
|
|
5
|
+
executeTool(name: string, input?: Record<string, unknown>, options?: {
|
|
6
|
+
readonly signal?: AbortSignal;
|
|
7
|
+
}): Promise<unknown>;
|
|
8
|
+
}
|
|
9
|
+
export declare function createMemoryModelContext(): MemoryModelContext;
|
|
10
|
+
export interface MemoryTelemetryTransport extends TelemetryTransport {
|
|
11
|
+
readonly batches: readonly TelemetryBatch[];
|
|
12
|
+
readonly reasons: readonly TelemetryFlushReason[];
|
|
13
|
+
failWith(error: unknown): void;
|
|
14
|
+
recover(): void;
|
|
15
|
+
}
|
|
16
|
+
export declare function createMemoryTelemetryTransport(): MemoryTelemetryTransport;
|
|
17
|
+
//# sourceMappingURL=memory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../../src/testing/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EAEtB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,kBAAmB,SAAQ,kBAAkB;IAC5D,QAAQ,CAAC,aAAa,EAAE,WAAW,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;IACpE,qBAAqB,CAAC,IAAI,EAAE,oBAAoB,GAAG,IAAI,CAAC;IACxD,WAAW,CACT,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAA;KAAE,GAC1C,OAAO,CAAC,OAAO,CAAC,CAAC;CACrB;AAED,wBAAgB,wBAAwB,IAAI,kBAAkB,CAoD7D;AAED,MAAM,WAAW,wBAAyB,SAAQ,kBAAkB;IAClE,QAAQ,CAAC,OAAO,EAAE,SAAS,cAAc,EAAE,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,SAAS,oBAAoB,EAAE,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,CAAC;IAC/B,OAAO,IAAI,IAAI,CAAC;CACjB;AAED,wBAAgB,8BAA8B,IAAI,wBAAwB,CAoBzE"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
export function createMemoryModelContext() {
|
|
2
|
+
const registrations = new Map();
|
|
3
|
+
const uninstrumented = new Map();
|
|
4
|
+
return {
|
|
5
|
+
registrations,
|
|
6
|
+
async registerTool(tool, options) {
|
|
7
|
+
if (registrations.has(tool.name) || uninstrumented.has(tool.name)) {
|
|
8
|
+
throw new DOMException(`Tool "${tool.name}" is already registered.`, 'InvalidStateError');
|
|
9
|
+
}
|
|
10
|
+
if (options?.signal?.aborted)
|
|
11
|
+
throw options.signal.reason;
|
|
12
|
+
registrations.set(tool.name, tool);
|
|
13
|
+
options?.signal?.addEventListener('abort', () => registrations.delete(tool.name), {
|
|
14
|
+
once: true,
|
|
15
|
+
});
|
|
16
|
+
},
|
|
17
|
+
async getTools() {
|
|
18
|
+
return [
|
|
19
|
+
...Array.from(registrations.values(), (tool) => ({
|
|
20
|
+
name: tool.name,
|
|
21
|
+
title: tool.title ?? '',
|
|
22
|
+
description: tool.description,
|
|
23
|
+
...(tool.inputSchema === undefined ? {} : { inputSchema: tool.inputSchema }),
|
|
24
|
+
...(tool.annotations === undefined ? {} : { annotations: tool.annotations }),
|
|
25
|
+
})),
|
|
26
|
+
...uninstrumented.values(),
|
|
27
|
+
].sort((left, right) => left.name.localeCompare(right.name));
|
|
28
|
+
},
|
|
29
|
+
addUninstrumentedTool(tool) {
|
|
30
|
+
uninstrumented.set(tool.name, tool);
|
|
31
|
+
},
|
|
32
|
+
async executeTool(name, input = {}, options = {}) {
|
|
33
|
+
const tool = registrations.get(name);
|
|
34
|
+
if (!tool)
|
|
35
|
+
throw new DOMException(`Tool "${name}" was not found.`, 'NotFoundError');
|
|
36
|
+
const controller = new AbortController();
|
|
37
|
+
const onAbort = () => controller.abort(options.signal?.reason);
|
|
38
|
+
if (options.signal?.aborted)
|
|
39
|
+
onAbort();
|
|
40
|
+
else
|
|
41
|
+
options.signal?.addEventListener('abort', onAbort, { once: true });
|
|
42
|
+
try {
|
|
43
|
+
return await tool.execute(input, { signal: controller.signal });
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
options.signal?.removeEventListener('abort', onAbort);
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
export function createMemoryTelemetryTransport() {
|
|
52
|
+
const batches = [];
|
|
53
|
+
const reasons = [];
|
|
54
|
+
let failure;
|
|
55
|
+
return {
|
|
56
|
+
batches,
|
|
57
|
+
reasons,
|
|
58
|
+
send(batch, reason) {
|
|
59
|
+
if (failure !== undefined)
|
|
60
|
+
throw failure;
|
|
61
|
+
batches.push(batch);
|
|
62
|
+
reasons.push(reason);
|
|
63
|
+
},
|
|
64
|
+
failWith(error) {
|
|
65
|
+
failure = error;
|
|
66
|
+
},
|
|
67
|
+
recover() {
|
|
68
|
+
failure = undefined;
|
|
69
|
+
},
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=memory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"memory.js","sourceRoot":"","sources":["../../../src/testing/memory.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TelemetryTransport } from './types.js';
|
|
2
|
+
export interface FetchTelemetryTransportOptions {
|
|
3
|
+
readonly endpoint: string;
|
|
4
|
+
readonly fetch?: typeof globalThis.fetch;
|
|
5
|
+
readonly sendBeacon?: Navigator['sendBeacon'];
|
|
6
|
+
}
|
|
7
|
+
export declare function createFetchTelemetryTransport(options: FetchTelemetryTransportOptions): TelemetryTransport;
|
|
8
|
+
//# sourceMappingURL=transport.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.d.ts","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAwC,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAE3F,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IACzC,QAAQ,CAAC,UAAU,CAAC,EAAE,SAAS,CAAC,YAAY,CAAC,CAAC;CAC/C;AAED,wBAAgB,6BAA6B,CAC3C,OAAO,EAAE,8BAA8B,GACtC,kBAAkB,CA+BpB"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export function createFetchTelemetryTransport(options) {
|
|
2
|
+
if (typeof options.endpoint !== 'string' || options.endpoint.trim() === '') {
|
|
3
|
+
throw new TypeError('A non-empty telemetry endpoint is required.');
|
|
4
|
+
}
|
|
5
|
+
const fetcher = options.fetch ?? globalThis.fetch?.bind(globalThis);
|
|
6
|
+
const beacon = options.sendBeacon ??
|
|
7
|
+
(typeof navigator === 'undefined' ? undefined : navigator.sendBeacon?.bind(navigator));
|
|
8
|
+
return Object.freeze({
|
|
9
|
+
async send(batch, reason) {
|
|
10
|
+
const body = JSON.stringify(batch);
|
|
11
|
+
if (reason === 'lifecycle' &&
|
|
12
|
+
beacon?.(options.endpoint, new Blob([body], { type: 'application/json' }))) {
|
|
13
|
+
return;
|
|
14
|
+
}
|
|
15
|
+
if (!fetcher)
|
|
16
|
+
throw new Error('fetch is unavailable for the telemetry transport.');
|
|
17
|
+
const response = await fetcher(options.endpoint, {
|
|
18
|
+
body,
|
|
19
|
+
credentials: 'omit',
|
|
20
|
+
headers: { 'content-type': 'application/json' },
|
|
21
|
+
keepalive: true,
|
|
22
|
+
method: 'POST',
|
|
23
|
+
});
|
|
24
|
+
if (!response.ok)
|
|
25
|
+
throw new Error(`Telemetry endpoint returned HTTP ${response.status}.`);
|
|
26
|
+
},
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=transport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transport.js","sourceRoot":"","sources":["../../src/transport.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,6BAA6B,CAC3C,OAAuC;IAEvC,IAAI,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QAC3E,MAAM,IAAI,SAAS,CAAC,6CAA6C,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IACpE,MAAM,MAAM,GACV,OAAO,CAAC,UAAU;QAClB,CAAC,OAAO,SAAS,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;IAEzF,OAAO,MAAM,CAAC,MAAM,CAAC;QACnB,KAAK,CAAC,IAAI,CAAC,KAAqB,EAAE,MAA4B;YAC5D,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACnC,IACE,MAAM,KAAK,WAAW;gBACtB,MAAM,EAAE,CAAC,OAAO,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,kBAAkB,EAAE,CAAC,CAAC,EAC1E,CAAC;gBACD,OAAO;YACT,CAAC;YACD,IAAI,CAAC,OAAO;gBAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;YAEnF,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,EAAE;gBAC/C,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,185 @@
|
|
|
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-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_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 transport?: TelemetryTransport;
|
|
178
|
+
}
|
|
179
|
+
export interface TelemetryStatus {
|
|
180
|
+
readonly droppedEvents: number;
|
|
181
|
+
readonly enabled: boolean;
|
|
182
|
+
readonly pendingEvents: number;
|
|
183
|
+
}
|
|
184
|
+
export {};
|
|
185
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -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,CAAC,UAAU,EAAE,sBAAsB,GAAG,SAAS,cAAc,EAAE,CAuGnG;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,CAM1E"}
|