@napster-corp/webmcp-toolkit 1.0.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 (48) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +531 -0
  3. package/bin/webmcp-toolkit.mjs +81 -0
  4. package/dist/debug.d.ts +5 -0
  5. package/dist/debug.d.ts.map +1 -0
  6. package/dist/debug.js +26 -0
  7. package/dist/debug.js.map +1 -0
  8. package/dist/dev-panel.d.ts +22 -0
  9. package/dist/dev-panel.d.ts.map +1 -0
  10. package/dist/dev-panel.js +1046 -0
  11. package/dist/dev-panel.js.map +1 -0
  12. package/dist/index.d.ts +6 -0
  13. package/dist/index.d.ts.map +1 -0
  14. package/dist/index.js +36 -0
  15. package/dist/index.js.map +1 -0
  16. package/dist/model-context.d.ts +13 -0
  17. package/dist/model-context.d.ts.map +1 -0
  18. package/dist/model-context.js +28 -0
  19. package/dist/model-context.js.map +1 -0
  20. package/dist/resources.d.ts +15 -0
  21. package/dist/resources.d.ts.map +1 -0
  22. package/dist/resources.js +179 -0
  23. package/dist/resources.js.map +1 -0
  24. package/dist/tiers.d.ts +31 -0
  25. package/dist/tiers.d.ts.map +1 -0
  26. package/dist/tiers.js +107 -0
  27. package/dist/tiers.js.map +1 -0
  28. package/dist/types.d.ts +145 -0
  29. package/dist/types.d.ts.map +1 -0
  30. package/dist/types.js +9 -0
  31. package/dist/types.js.map +1 -0
  32. package/hooks/post-commit +17 -0
  33. package/package.json +86 -0
  34. package/skills/add-edge-mcp-dev-panel/SKILL.md +206 -0
  35. package/skills/plan-capabilities-and-state/SKILL.md +168 -0
  36. package/skills/setup-edge-mcp/SKILL.md +546 -0
  37. package/skills/sync-webmcp-tools/SKILL.md +26 -0
  38. package/src/debug.ts +26 -0
  39. package/src/dev-panel.ts +1318 -0
  40. package/src/index.ts +66 -0
  41. package/src/model-context.ts +31 -0
  42. package/src/resources.ts +207 -0
  43. package/src/tiers.ts +132 -0
  44. package/src/types.ts +177 -0
  45. package/tools/generate-capabilities.mjs +266 -0
  46. package/tools/install-hook.mjs +81 -0
  47. package/tools/runners/anthropic.mjs +75 -0
  48. package/tools/runners/copilot.mjs +63 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dev-panel.js","sourceRoot":"","sources":["../src/dev-panel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { getModelContext, getModelContextWithResources, isBrowserEnvironment, } from './model-context.js';
2
+ export { registerStatefulTool, getTier, getTierMap } from './tiers.js';
3
+ export { setDebug } from './debug.js';
4
+ export { installResourceExtension, registerResource } from './resources.js';
5
+ export type { ModelContext, ModelContextWithResources, ToolAnnotations, ToolContent, ToolResult, ToolDescriptor, ToolInfo, SideEffect, StatefulToolDescriptor, TierMeta, ResourceDescriptor, ResourceInfo, ResourceUpdate, ResourceExtension, } from './types.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AA+BA,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGvE,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAGtC,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,YAAY,EAEV,YAAY,EACZ,yBAAyB,EACzB,eAAe,EACf,WAAW,EACX,UAAU,EACV,cAAc,EACd,QAAQ,EAER,UAAU,EACV,sBAAsB,EACtB,QAAQ,EAER,kBAAkB,EAClB,YAAY,EACZ,cAAc,EACd,iBAAiB,GAClB,MAAM,YAAY,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,36 @@
1
+ // Public surface of @napster-corp/webmcp-toolkit.
2
+ //
3
+ // Importing this module, in a browser, does two things as an intentional side
4
+ // effect (see package.json `sideEffects`):
5
+ // 1. Guarantees `document.modelContext` exists, via the pinned WebMCP polyfill
6
+ // (a no-op when the browser supports WebMCP natively).
7
+ // 2. Installs the MCP-shaped live-state resource extension onto it.
8
+ //
9
+ // Outside a browser (SSR, workers, edge runtimes) it does nothing and touches no
10
+ // globals. The website developer writes STANDARD WebMCP — `document.modelContext
11
+ // .registerTool(...)` — and never a Napster-specific method. Our value-adds
12
+ // (safety tiers, live state, dev tooling) live off the call site, below.
13
+ import { initializeWebMCPPolyfill } from '@mcp-b/webmcp-polyfill';
14
+ import { getModelContext, isBrowserEnvironment } from './model-context.js';
15
+ import { installResourceExtension } from './resources.js';
16
+ import { debugLog } from './debug.js';
17
+ if (isBrowserEnvironment()) {
18
+ // Guarantee the standard surface. We are the version gatekeeper: the polyfill
19
+ // is pinned exactly in package.json so upstream changes never reach customers
20
+ // untested. No-op when the browser already supports WebMCP natively.
21
+ initializeWebMCPPolyfill();
22
+ const mc = getModelContext();
23
+ if (mc) {
24
+ installResourceExtension(mc);
25
+ debugLog('document.modelContext ready (polyfill) + resource extension installed');
26
+ }
27
+ }
28
+ // ---- Standard-surface adapter (the single swap point) ----
29
+ export { getModelContext, getModelContextWithResources, isBrowserEnvironment, } from './model-context.js';
30
+ // ---- Value-add #1: safety tiers (optional wrapper over standard registerTool) ----
31
+ export { registerStatefulTool, getTier, getTierMap } from './tiers.js';
32
+ // ---- Opt-in flow logging (off by default) ----
33
+ export { setDebug } from './debug.js';
34
+ // ---- Value-add #2: live state (MCP-shaped resource extension) ----
35
+ export { installResourceExtension, registerResource } from './resources.js';
36
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kDAAkD;AAClD,EAAE;AACF,8EAA8E;AAC9E,2CAA2C;AAC3C,iFAAiF;AACjF,4DAA4D;AAC5D,sEAAsE;AACtE,EAAE;AACF,iFAAiF;AACjF,iFAAiF;AACjF,4EAA4E;AAC5E,yEAAyE;AAEzE,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAClE,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,IAAI,oBAAoB,EAAE,EAAE,CAAC;IAC3B,8EAA8E;IAC9E,8EAA8E;IAC9E,qEAAqE;IACrE,wBAAwB,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,eAAe,EAAE,CAAC;IAC7B,IAAI,EAAE,EAAE,CAAC;QACP,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAC7B,QAAQ,CAAC,uEAAuE,CAAC,CAAC;IACpF,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,OAAO,EACL,eAAe,EACf,4BAA4B,EAC5B,oBAAoB,GACrB,MAAM,oBAAoB,CAAC;AAE5B,qFAAqF;AACrF,OAAO,EAAE,oBAAoB,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEvE,iDAAiD;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,qEAAqE;AACrE,OAAO,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ModelContext, ModelContextWithResources } from './types.js';
2
+ /** True only inside a browser-like environment (not SSR / workers / edge). */
3
+ export declare function isBrowserEnvironment(): boolean;
4
+ /**
5
+ * Return the standard `document.modelContext`, falling back to the deprecated
6
+ * `navigator.modelContext` alias. `document` is the canonical surface as of the
7
+ * May 2026 spec change; the navigator getter is retained only for back-compat.
8
+ * Returns `undefined` outside a browser or before the polyfill has installed.
9
+ */
10
+ export declare function getModelContext(): ModelContext | undefined;
11
+ /** Same as {@link getModelContext}, typed to include the toolkit's resource extension. */
12
+ export declare function getModelContextWithResources(): ModelContextWithResources | undefined;
13
+ //# 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":"AAOA,OAAO,KAAK,EAAE,YAAY,EAAE,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAE1E,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,YAAY,GAAG,SAAS,CAK1D;AAED,0FAA0F;AAC1F,wBAAgB,4BAA4B,IAAI,yBAAyB,GAAG,SAAS,CAEpF"}
@@ -0,0 +1,28 @@
1
+ // The single point where the toolkit reads the standard WebMCP surface.
2
+ //
3
+ // Everything else in the package goes through `getModelContext()` and never
4
+ // touches an MCP-B-specific symbol. That keeps the polyfill swappable: replacing
5
+ // `@mcp-b/webmcp-polyfill` with our own implementation later touches only this
6
+ // file and `index.ts` (the init call).
7
+ /** True only inside a browser-like environment (not SSR / workers / edge). */
8
+ export function isBrowserEnvironment() {
9
+ return typeof window !== 'undefined' && typeof document !== 'undefined';
10
+ }
11
+ /**
12
+ * Return the standard `document.modelContext`, falling back to the deprecated
13
+ * `navigator.modelContext` alias. `document` is the canonical surface as of the
14
+ * May 2026 spec change; the navigator getter is retained only for back-compat.
15
+ * Returns `undefined` outside a browser or before the polyfill has installed.
16
+ */
17
+ export function getModelContext() {
18
+ if (!isBrowserEnvironment())
19
+ return undefined;
20
+ const doc = document;
21
+ const nav = navigator;
22
+ return doc.modelContext ?? nav.modelContext;
23
+ }
24
+ /** Same as {@link getModelContext}, typed to include the toolkit's resource extension. */
25
+ export function getModelContextWithResources() {
26
+ return getModelContext();
27
+ }
28
+ //# sourceMappingURL=model-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"model-context.js","sourceRoot":"","sources":["../src/model-context.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,EAAE;AACF,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,uCAAuC;AAIvC,8EAA8E;AAC9E,MAAM,UAAU,oBAAoB;IAClC,OAAO,OAAO,MAAM,KAAK,WAAW,IAAI,OAAO,QAAQ,KAAK,WAAW,CAAC;AAC1E,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,oBAAoB,EAAE;QAAE,OAAO,SAAS,CAAC;IAC9C,MAAM,GAAG,GAAG,QAAsD,CAAC;IACnE,MAAM,GAAG,GAAG,SAAwD,CAAC;IACrE,OAAO,GAAG,CAAC,YAAY,IAAI,GAAG,CAAC,YAAY,CAAC;AAC9C,CAAC;AAED,0FAA0F;AAC1F,MAAM,UAAU,4BAA4B;IAC1C,OAAO,eAAe,EAA2C,CAAC;AACpE,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { ModelContext, ModelContextWithResources, ResourceDescriptor } from './types.js';
2
+ /**
3
+ * Install the resource extension onto a `document.modelContext` object. Safe to
4
+ * call repeatedly: the second call is a no-op. Mutates `mc` in place and returns
5
+ * it typed with the resource surface.
6
+ */
7
+ export declare function installResourceExtension(mc: ModelContext): ModelContextWithResources;
8
+ /**
9
+ * Producer-side convenience: register a live-state resource on
10
+ * `document.modelContext` without casting. Equivalent to
11
+ * `document.modelContext.registerResource(...)` but SSR-safe (a no-op when no
12
+ * model context is present). Returns an unregister function.
13
+ */
14
+ export declare function registerResource<T = unknown>(resource: ResourceDescriptor<T>): () => void;
15
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAcA,OAAO,KAAK,EACV,YAAY,EACZ,yBAAyB,EACzB,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAgBpB;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,YAAY,GAAG,yBAAyB,CA2IpF;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,kBAAkB,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAIzF"}
@@ -0,0 +1,179 @@
1
+ // Live state as an MCP-shaped resource extension on `document.modelContext`.
2
+ //
3
+ // WebMCP is tools-only today, so this is entirely ours. We model it on the real
4
+ // MCP resource pattern (URI identity, list/read/subscribe, an `updated` event)
5
+ // so it reads as a natural extension and converges if/when WebMCP formalizes
6
+ // resources. The methods attach directly onto `document.modelContext` (an
7
+ // `EventTarget`) as an additive Napster surface — state lives on the standard
8
+ // object rather than a separate global.
9
+ //
10
+ // Consumed by the Napster agent over our own path; NOT interoperable with
11
+ // third-party WebMCP agents until the standard adds resources.
12
+ import { getModelContextWithResources } from './model-context.js';
13
+ import { debugLog } from './debug.js';
14
+ /** Marker so we install the extension at most once per modelContext object. */
15
+ const INSTALLED = Symbol.for('napster-webmcp-toolkit/resources-installed');
16
+ const RESOURCE_UPDATED = 'resourceupdated';
17
+ const RESOURCE_LIST_CHANGED = 'resourcelistchanged';
18
+ /**
19
+ * Install the resource extension onto a `document.modelContext` object. Safe to
20
+ * call repeatedly: the second call is a no-op. Mutates `mc` in place and returns
21
+ * it typed with the resource surface.
22
+ */
23
+ export function installResourceExtension(mc) {
24
+ const target = mc;
25
+ if (target[INSTALLED])
26
+ return target;
27
+ // Per-page private registries. `producerUnsubs` holds the teardown for each
28
+ // resource's push source, so we can unwire it on re-register / unregister.
29
+ const registry = new Map();
30
+ const producerUnsubs = new Map();
31
+ function dispatchListChanged() {
32
+ target.dispatchEvent(new Event(RESOURCE_LIST_CHANGED));
33
+ }
34
+ // Read a resource's current value, re-reading the producer's getter. On
35
+ // failure, suppress the update and warn (the next change retries) — one
36
+ // failing resource must not break the channel.
37
+ async function emitUpdate(uri) {
38
+ const resource = registry.get(uri);
39
+ if (!resource)
40
+ return;
41
+ let value;
42
+ try {
43
+ value = await resource.get();
44
+ }
45
+ catch (err) {
46
+ warn(`resource '${uri}' get() threw during update; emission suppressed`, err);
47
+ return;
48
+ }
49
+ const detail = { uri, value };
50
+ target.dispatchEvent(new CustomEvent(RESOURCE_UPDATED, { detail }));
51
+ debugLog(`resource "${uri}" changed →`, value);
52
+ }
53
+ function registerResource(resource) {
54
+ if (!resource || typeof resource.uri !== 'string' || !resource.uri) {
55
+ throw new Error('[webmcp-toolkit] resource requires a non-empty uri');
56
+ }
57
+ if (typeof resource.name !== 'string' || !resource.name) {
58
+ throw new Error(`[webmcp-toolkit] resource '${resource.uri}' requires a non-empty name`);
59
+ }
60
+ if (typeof resource.get !== 'function') {
61
+ throw new Error(`[webmcp-toolkit] resource '${resource.uri}' requires a get() function`);
62
+ }
63
+ // Tear down any prior push subscription for this uri BEFORE installing the
64
+ // new one — re-registering must never leave a stale subscription wired up.
65
+ const priorUnsub = producerUnsubs.get(resource.uri);
66
+ if (priorUnsub) {
67
+ safeCall(priorUnsub);
68
+ producerUnsubs.delete(resource.uri);
69
+ }
70
+ const isNew = !registry.has(resource.uri);
71
+ registry.set(resource.uri, {
72
+ uri: resource.uri,
73
+ name: resource.name,
74
+ description: resource.description,
75
+ mimeType: resource.mimeType,
76
+ get: resource.get,
77
+ });
78
+ if (typeof resource.subscribe === 'function') {
79
+ const unsub = resource.subscribe(() => {
80
+ void emitUpdate(resource.uri);
81
+ });
82
+ if (typeof unsub === 'function') {
83
+ producerUnsubs.set(resource.uri, unsub);
84
+ }
85
+ else {
86
+ warn(`resource '${resource.uri}' subscribe() did not return an unsubscribe function. ` +
87
+ 'The subscription will leak. Return a teardown function from subscribe, or remove ' +
88
+ 'subscribe to make the resource pull-only.');
89
+ }
90
+ }
91
+ if (isNew) {
92
+ dispatchListChanged();
93
+ debugLog(`registered resource "${resource.uri}" (${resource.name})`);
94
+ }
95
+ let unregistered = false;
96
+ return () => {
97
+ if (unregistered)
98
+ return;
99
+ unregistered = true;
100
+ const u = producerUnsubs.get(resource.uri);
101
+ if (u) {
102
+ safeCall(u);
103
+ producerUnsubs.delete(resource.uri);
104
+ }
105
+ if (registry.delete(resource.uri))
106
+ dispatchListChanged();
107
+ };
108
+ }
109
+ function getResources() {
110
+ return Array.from(registry.values(), (r) => ({
111
+ uri: r.uri,
112
+ name: r.name,
113
+ description: r.description,
114
+ mimeType: r.mimeType,
115
+ }));
116
+ }
117
+ async function readResource(uri) {
118
+ const resource = registry.get(uri);
119
+ if (!resource)
120
+ return undefined;
121
+ try {
122
+ return (await resource.get());
123
+ }
124
+ catch (err) {
125
+ warn(`readResource('${uri}') failed; returning undefined`, err);
126
+ return undefined;
127
+ }
128
+ }
129
+ function subscribeResource(uri, handler) {
130
+ const listener = (evt) => {
131
+ const detail = evt.detail;
132
+ if (!detail || detail.uri !== uri)
133
+ return;
134
+ try {
135
+ handler(detail);
136
+ }
137
+ catch (err) {
138
+ // One bad handler must not break the dispatch for others.
139
+ warn(`subscribeResource('${uri}') handler threw`, err);
140
+ }
141
+ };
142
+ target.addEventListener(RESOURCE_UPDATED, listener);
143
+ return () => target.removeEventListener(RESOURCE_UPDATED, listener);
144
+ }
145
+ Object.defineProperties(target, {
146
+ registerResource: { value: registerResource, configurable: true, writable: true },
147
+ getResources: { value: getResources, configurable: true, writable: true },
148
+ readResource: { value: readResource, configurable: true, writable: true },
149
+ subscribeResource: { value: subscribeResource, configurable: true, writable: true },
150
+ [INSTALLED]: { value: true, configurable: true },
151
+ });
152
+ return target;
153
+ }
154
+ /**
155
+ * Producer-side convenience: register a live-state resource on
156
+ * `document.modelContext` without casting. Equivalent to
157
+ * `document.modelContext.registerResource(...)` but SSR-safe (a no-op when no
158
+ * model context is present). Returns an unregister function.
159
+ */
160
+ export function registerResource(resource) {
161
+ const mc = getModelContextWithResources();
162
+ if (!mc || typeof mc.registerResource !== 'function')
163
+ return () => { };
164
+ return mc.registerResource(resource);
165
+ }
166
+ function safeCall(fn) {
167
+ try {
168
+ fn();
169
+ }
170
+ catch {
171
+ /* ignore teardown errors */
172
+ }
173
+ }
174
+ function warn(message, err) {
175
+ const detail = err ? `: ${err instanceof Error ? err.message : String(err)}` : '';
176
+ // eslint-disable-next-line no-console
177
+ console.warn(`[webmcp-toolkit] ${message}${detail}`);
178
+ }
179
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { StatefulToolDescriptor, TierMeta } from './types.js';
2
+ /**
3
+ * Register a STANDARD WebMCP tool and record its safety tier. The tool is a
4
+ * plain `document.modelContext` registration — any WebMCP agent can use it — so
5
+ * there is no lock-in; the only Napster-specific thing is that the tier is
6
+ * remembered for confirmation gating.
7
+ *
8
+ * Returns an unregister function (aborts the tool's registration signal and
9
+ * forgets its tier). In SSR / non-browser environments this is a no-op.
10
+ *
11
+ * @example
12
+ * registerStatefulTool({
13
+ * name: 'cart.checkout',
14
+ * description: 'Place the order for everything in the cart.',
15
+ * inputSchema: { type: 'object', properties: {} },
16
+ * napsterTier: 'irreversible',
17
+ * async execute() {
18
+ * await checkout();
19
+ * return { content: [{ type: 'text', text: 'Order placed.' }] };
20
+ * },
21
+ * });
22
+ */
23
+ export declare function registerStatefulTool(tool: StatefulToolDescriptor): () => void;
24
+ /** Read the safety tier recorded for a tool, or `undefined` if none. */
25
+ export declare function getTier(name: string): TierMeta | undefined;
26
+ /**
27
+ * All recorded tiers (read-only view). Consumers should treat any tool WITHOUT
28
+ * a recorded tier as `reversible` (announce-then-run).
29
+ */
30
+ export declare function getTierMap(): ReadonlyMap<string, TierMeta>;
31
+ //# sourceMappingURL=tiers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiers.d.ts","sourceRoot":"","sources":["../src/tiers.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAEV,sBAAsB,EACtB,QAAQ,EAGT,MAAM,YAAY,CAAC;AAiBpB;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,sBAAsB,GAAG,MAAM,IAAI,CAyD7E;AAED,wEAAwE;AACxE,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAE1D;AAED;;;GAGG;AACH,wBAAgB,UAAU,IAAI,WAAW,CAAC,MAAM,EAAE,QAAQ,CAAC,CAE1D"}
package/dist/tiers.js ADDED
@@ -0,0 +1,107 @@
1
+ // Safety tiers — Napster value-add #1, kept OFF the standard call site.
2
+ //
3
+ // The standard `annotations` object only carries `readOnlyHint` and
4
+ // `untrustedContentHint`. The richer tier (`reversible` vs `irreversible`) plus
5
+ // `idempotent` have no standard field — and the pinned polyfill drops custom
6
+ // annotation keys from `getTools()`, so they cannot ride on the tool. We store
7
+ // them in a toolkit-side registry keyed by tool name instead.
8
+ //
9
+ // Developers who want gating call `registerStatefulTool(...)`, a one-line
10
+ // superset of the standard `registerTool` that ALSO records the tier. Plain
11
+ // `document.modelContext.registerTool(...)` still works and is treated as
12
+ // `reversible` by consumers. The confirmation flow is enforced by the consumer
13
+ // (Web SDK / agent), never by the model: `irreversible` requires explicit user
14
+ // confirmation, `reversible` gets a brief announce, `read` is free.
15
+ import { getModelContext } from './model-context.js';
16
+ import { debugLog } from './debug.js';
17
+ /** Tier metadata keyed by tool name. Read by the dev panel and Web SDK. */
18
+ const tierRegistry = new Map();
19
+ function annotationsForTier(tier, untrustedContent, override) {
20
+ return {
21
+ readOnlyHint: tier === 'read',
22
+ ...(untrustedContent ? { untrustedContentHint: true } : {}),
23
+ ...(override ?? {}),
24
+ };
25
+ }
26
+ /**
27
+ * Register a STANDARD WebMCP tool and record its safety tier. The tool is a
28
+ * plain `document.modelContext` registration — any WebMCP agent can use it — so
29
+ * there is no lock-in; the only Napster-specific thing is that the tier is
30
+ * remembered for confirmation gating.
31
+ *
32
+ * Returns an unregister function (aborts the tool's registration signal and
33
+ * forgets its tier). In SSR / non-browser environments this is a no-op.
34
+ *
35
+ * @example
36
+ * registerStatefulTool({
37
+ * name: 'cart.checkout',
38
+ * description: 'Place the order for everything in the cart.',
39
+ * inputSchema: { type: 'object', properties: {} },
40
+ * napsterTier: 'irreversible',
41
+ * async execute() {
42
+ * await checkout();
43
+ * return { content: [{ type: 'text', text: 'Order placed.' }] };
44
+ * },
45
+ * });
46
+ */
47
+ export function registerStatefulTool(tool) {
48
+ if (!tool || typeof tool.name !== 'string' || !tool.name) {
49
+ throw new Error('[webmcp-toolkit] registerStatefulTool requires a non-empty name');
50
+ }
51
+ if (typeof tool.description !== 'string' || !tool.description) {
52
+ throw new Error(`[webmcp-toolkit] tool '${tool.name}' requires a non-empty description. ` +
53
+ 'The agent reads it to decide when to invoke the tool.');
54
+ }
55
+ if (typeof tool.execute !== 'function') {
56
+ throw new Error(`[webmcp-toolkit] tool '${tool.name}' requires an execute() function`);
57
+ }
58
+ const tier = tool.napsterTier ?? 'reversible';
59
+ const idempotent = tool.idempotent ?? false;
60
+ const mc = getModelContext();
61
+ if (!mc) {
62
+ // SSR / worker / pre-polyfill: nothing to register against. Stay silent and
63
+ // return a no-op unregister, mirroring the standard's SSR-safe behavior.
64
+ return () => { };
65
+ }
66
+ const standardTool = {
67
+ name: tool.name,
68
+ title: tool.title,
69
+ description: tool.description,
70
+ inputSchema: tool.inputSchema,
71
+ annotations: annotationsForTier(tier, tool.untrustedContent ?? false, tool.annotations),
72
+ execute: tool.execute,
73
+ };
74
+ const controller = new AbortController();
75
+ tierRegistry.set(tool.name, {
76
+ tier,
77
+ idempotent,
78
+ requiresConfirmation: tier === 'irreversible',
79
+ });
80
+ // Forget the tier when the registration is aborted, so a removed tool's tier
81
+ // does not ghost in the registry.
82
+ controller.signal.addEventListener('abort', () => tierRegistry.delete(tool.name), {
83
+ once: true,
84
+ });
85
+ void mc.registerTool(standardTool, { signal: controller.signal });
86
+ debugLog(`registered tool "${tool.name}" — tier=${tier}` +
87
+ `${idempotent ? ', idempotent' : ''}, readOnlyHint=${standardTool.annotations?.readOnlyHint ?? false}`);
88
+ let unregistered = false;
89
+ return () => {
90
+ if (unregistered)
91
+ return;
92
+ unregistered = true;
93
+ controller.abort();
94
+ };
95
+ }
96
+ /** Read the safety tier recorded for a tool, or `undefined` if none. */
97
+ export function getTier(name) {
98
+ return tierRegistry.get(name);
99
+ }
100
+ /**
101
+ * All recorded tiers (read-only view). Consumers should treat any tool WITHOUT
102
+ * a recorded tier as `reversible` (announce-then-run).
103
+ */
104
+ export function getTierMap() {
105
+ return tierRegistry;
106
+ }
107
+ //# sourceMappingURL=tiers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tiers.js","sourceRoot":"","sources":["../src/tiers.ts"],"names":[],"mappings":"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"}