@nexface/tools 0.1.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 (82) hide show
  1. package/dist/browser/controller.d.ts +30 -0
  2. package/dist/browser/controller.js +783 -0
  3. package/dist/browser/controller.js.map +1 -0
  4. package/dist/browser/dom.d.ts +43 -0
  5. package/dist/browser/dom.js +438 -0
  6. package/dist/browser/dom.js.map +1 -0
  7. package/dist/browser/feedback.d.ts +4 -0
  8. package/dist/browser/feedback.js +5 -0
  9. package/dist/browser/feedback.js.map +1 -0
  10. package/dist/browser/locator.d.ts +19 -0
  11. package/dist/browser/locator.js +277 -0
  12. package/dist/browser/locator.js.map +1 -0
  13. package/dist/browser/prompt.d.ts +5 -0
  14. package/dist/browser/prompt.generated.d.ts +1 -0
  15. package/dist/browser/prompt.generated.js +50 -0
  16. package/dist/browser/prompt.generated.js.map +1 -0
  17. package/dist/browser/prompt.js +9 -0
  18. package/dist/browser/prompt.js.map +1 -0
  19. package/dist/browser/snapshot.d.ts +7 -0
  20. package/dist/browser/snapshot.js +424 -0
  21. package/dist/browser/snapshot.js.map +1 -0
  22. package/dist/browser/toolset.d.ts +35 -0
  23. package/dist/browser/toolset.js +383 -0
  24. package/dist/browser/toolset.js.map +1 -0
  25. package/dist/browser/types.d.ts +129 -0
  26. package/dist/browser/types.js +2 -0
  27. package/dist/browser/types.js.map +1 -0
  28. package/dist/browser/worker-runner.d.ts +11 -0
  29. package/dist/browser/worker-runner.js +400 -0
  30. package/dist/browser/worker-runner.js.map +1 -0
  31. package/dist/definition.d.ts +16 -0
  32. package/dist/definition.js +72 -0
  33. package/dist/definition.js.map +1 -0
  34. package/dist/index.d.ts +7 -0
  35. package/dist/index.js +4 -0
  36. package/dist/index.js.map +1 -0
  37. package/dist/internal-react.d.ts +12 -0
  38. package/dist/internal-react.js +23 -0
  39. package/dist/internal-react.js.map +1 -0
  40. package/dist/internal-types.d.ts +11 -0
  41. package/dist/internal-types.js +2 -0
  42. package/dist/internal-types.js.map +1 -0
  43. package/dist/internal.d.ts +9 -0
  44. package/dist/internal.js +5 -0
  45. package/dist/internal.js.map +1 -0
  46. package/dist/react.d.ts +25 -0
  47. package/dist/react.js +258 -0
  48. package/dist/react.js.map +1 -0
  49. package/dist/runtime.d.ts +93 -0
  50. package/dist/runtime.js +492 -0
  51. package/dist/runtime.js.map +1 -0
  52. package/dist/schema.d.ts +2 -0
  53. package/dist/schema.js +46 -0
  54. package/dist/schema.js.map +1 -0
  55. package/dist/types.d.ts +80 -0
  56. package/dist/types.js +2 -0
  57. package/dist/types.js.map +1 -0
  58. package/dist/webmcp.d.ts +2 -0
  59. package/dist/webmcp.js +73 -0
  60. package/dist/webmcp.js.map +1 -0
  61. package/package.json +26 -0
  62. package/src/browser/controller.ts +984 -0
  63. package/src/browser/dom.ts +507 -0
  64. package/src/browser/feedback.ts +5 -0
  65. package/src/browser/locator.ts +383 -0
  66. package/src/browser/prompt.generated.ts +50 -0
  67. package/src/browser/prompt.ts +10 -0
  68. package/src/browser/snapshot.ts +542 -0
  69. package/src/browser/toolset.ts +522 -0
  70. package/src/browser/types.ts +172 -0
  71. package/src/browser/worker-runner.ts +468 -0
  72. package/src/definition.ts +115 -0
  73. package/src/index.ts +35 -0
  74. package/src/internal-react.tsx +62 -0
  75. package/src/internal-types.ts +12 -0
  76. package/src/internal.ts +36 -0
  77. package/src/react.tsx +397 -0
  78. package/src/runtime.ts +722 -0
  79. package/src/schema.ts +52 -0
  80. package/src/types.ts +123 -0
  81. package/src/webmcp.ts +102 -0
  82. package/tsconfig.json +8 -0
@@ -0,0 +1,424 @@
1
+ import { composedChildren, composedParent, computeNameInfo, computeRole, computeState, createIdentity, createScrollableIdentity, findNearestHeadingText, getElementScrollability, isActionableRole, isContextRole, isElementInViewport, isElementRendered, normalizeText, walkComposedElements, } from "./dom.js";
2
+ const DEFAULT_LIMITS = {
3
+ viewportMaxChars: 18_000,
4
+ viewportMaxVisitedNodes: 12_000,
5
+ fullMaxChars: 50_000,
6
+ fullMaxVisitedNodes: 30_000,
7
+ };
8
+ const STRUCTURAL_ROLES = new Set([
9
+ "alert",
10
+ "alertdialog",
11
+ "dialog",
12
+ "form",
13
+ "heading",
14
+ "iframe",
15
+ "list",
16
+ "listbox",
17
+ "menu",
18
+ "navigation",
19
+ "progressbar",
20
+ "region",
21
+ "row",
22
+ "rowgroup",
23
+ "status",
24
+ "table",
25
+ "tooltip",
26
+ "tree",
27
+ "listitem",
28
+ ]);
29
+ const PORTAL_ROLES = new Set([
30
+ "alert",
31
+ "listbox",
32
+ "menu",
33
+ "progressbar",
34
+ "status",
35
+ "tooltip",
36
+ "tree",
37
+ ]);
38
+ const REDUNDANT_WRAPPER_ROLES = new Set(["group", "listitem"]);
39
+ function checkExecution(context) {
40
+ if (!context)
41
+ return;
42
+ context.signal.throwIfAborted();
43
+ if (performance.now() >= context.deadline) {
44
+ throw new DOMException("Snapshot collection exceeded the executeCode deadline.", "TimeoutError");
45
+ }
46
+ }
47
+ function nextAnimationFrame(context) {
48
+ checkExecution(context);
49
+ if (!context) {
50
+ return new Promise((resolve) => requestAnimationFrame(() => resolve()));
51
+ }
52
+ return new Promise((resolve, reject) => {
53
+ let settled = false;
54
+ let frame = 0;
55
+ const remaining = Math.max(0, context.deadline - performance.now());
56
+ const cleanup = () => {
57
+ window.clearTimeout(timer);
58
+ context.signal.removeEventListener("abort", onAbort);
59
+ };
60
+ const finish = (error) => {
61
+ if (settled)
62
+ return;
63
+ settled = true;
64
+ cleanup();
65
+ if (error)
66
+ reject(error);
67
+ else
68
+ resolve();
69
+ };
70
+ const onAbort = () => finish(context.signal.reason instanceof Error
71
+ ? context.signal.reason
72
+ : new DOMException("Execution cancelled.", "AbortError"));
73
+ const timer = window.setTimeout(() => finish(new DOMException("Snapshot collection exceeded the executeCode deadline.", "TimeoutError")), remaining);
74
+ context.signal.addEventListener("abort", onAbort, { once: true });
75
+ frame = requestAnimationFrame(() => finish());
76
+ if (settled && typeof cancelAnimationFrame === "function") {
77
+ cancelAnimationFrame(frame);
78
+ }
79
+ });
80
+ }
81
+ function cachedStyle(element, cache) {
82
+ const existing = cache.get(element);
83
+ if (existing)
84
+ return existing;
85
+ const style = getComputedStyle(element);
86
+ cache.set(element, style);
87
+ return style;
88
+ }
89
+ function cachedRect(element, cache) {
90
+ const existing = cache.get(element);
91
+ if (existing)
92
+ return existing;
93
+ const rect = element.getBoundingClientRect();
94
+ cache.set(element, rect);
95
+ return rect;
96
+ }
97
+ function isTextInScope(node, context) {
98
+ if (!normalizeText(node.data))
99
+ return false;
100
+ const parent = node.parentElement;
101
+ if (!parent)
102
+ return false;
103
+ const style = cachedStyle(parent, context.styles);
104
+ if (!isElementRendered(parent, style))
105
+ return false;
106
+ if (context.scope === "full")
107
+ return true;
108
+ const parentRect = cachedRect(parent, context.rects);
109
+ if (!isElementInViewport(parent, parentRect))
110
+ return false;
111
+ const range = document.createRange();
112
+ range.selectNodeContents(node);
113
+ const rect = range.getBoundingClientRect();
114
+ range.detach();
115
+ return (rect.width > 0 &&
116
+ rect.height > 0 &&
117
+ rect.right > 0 &&
118
+ rect.bottom > 0 &&
119
+ rect.left < window.innerWidth &&
120
+ rect.top < window.innerHeight);
121
+ }
122
+ function isElementInScope(element, context) {
123
+ const style = cachedStyle(element, context.styles);
124
+ if (!isElementRendered(element, style))
125
+ return false;
126
+ if (context.scope === "full") {
127
+ const rect = cachedRect(element, context.rects);
128
+ return rect.width > 0 && rect.height > 0;
129
+ }
130
+ return isElementInViewport(element, cachedRect(element, context.rects));
131
+ }
132
+ function isDescendantOrSelf(element, ancestor) {
133
+ if (element === ancestor)
134
+ return true;
135
+ let current = element;
136
+ while (current) {
137
+ if (current === ancestor)
138
+ return true;
139
+ current = composedParent(current);
140
+ }
141
+ return false;
142
+ }
143
+ function isAllowedByModal(element, context) {
144
+ if (!context.activeModal)
145
+ return true;
146
+ if (isDescendantOrSelf(element, context.activeModal))
147
+ return true;
148
+ for (const root of context.allowedPortalRoots) {
149
+ if (isDescendantOrSelf(element, root))
150
+ return true;
151
+ }
152
+ return false;
153
+ }
154
+ function normalizeNodeChildren(node) {
155
+ const merged = [];
156
+ for (const child of node.children) {
157
+ const previous = merged.at(-1);
158
+ if (child.role === "text" &&
159
+ previous?.role === "text" &&
160
+ !child.element &&
161
+ !previous.element) {
162
+ previous.name = normalizeText(`${previous.name} ${child.name}`);
163
+ previous.normalizedName = previous.name;
164
+ continue;
165
+ }
166
+ merged.push(child);
167
+ }
168
+ const directText = normalizeText(merged
169
+ .filter((child) => child.role === "text")
170
+ .map((child) => child.name)
171
+ .join(" "));
172
+ node.children =
173
+ node.normalizedName &&
174
+ directText &&
175
+ node.normalizedName === directText
176
+ ? merged.filter((child) => child.role !== "text")
177
+ : merged;
178
+ const onlyChild = node.children.length === 1 ? node.children[0] : undefined;
179
+ if (REDUNDANT_WRAPPER_ROLES.has(node.role) &&
180
+ node.nameSource === "content" &&
181
+ !node.actionable &&
182
+ Object.keys(node.state).length === 0 &&
183
+ onlyChild &&
184
+ onlyChild.role !== "text" &&
185
+ node.normalizedName === onlyChild.normalizedName) {
186
+ node.name = "";
187
+ node.normalizedName = "";
188
+ }
189
+ }
190
+ function visitNode(node, context) {
191
+ context.visitedNodes += 1;
192
+ if (context.visitedNodes % 128 === 0)
193
+ checkExecution(context.execution);
194
+ if (context.visitedNodes > context.maxVisitedNodes) {
195
+ context.truncated = true;
196
+ return [];
197
+ }
198
+ if (node instanceof Text) {
199
+ if (!isTextInScope(node, context))
200
+ return [];
201
+ const parent = node.parentElement;
202
+ if (parent && !isAllowedByModal(parent, context))
203
+ return [];
204
+ return [{
205
+ role: "text",
206
+ name: normalizeText(node.data),
207
+ normalizedName: normalizeText(node.data),
208
+ nameSource: "content",
209
+ state: {},
210
+ actionable: false,
211
+ children: [],
212
+ }];
213
+ }
214
+ if (!(node instanceof Element))
215
+ return [];
216
+ const tag = node.tagName.toLowerCase();
217
+ if (["script", "style", "template", "meta", "link", "noscript"].includes(tag)) {
218
+ return [];
219
+ }
220
+ const style = cachedStyle(node, context.styles);
221
+ if (!isElementRendered(node, style))
222
+ return [];
223
+ const children = composedChildren(node).flatMap((child) => visitNode(child, context));
224
+ const inScope = isElementInScope(node, context);
225
+ const allowed = isAllowedByModal(node, context);
226
+ const role = computeRole(node);
227
+ const state = computeState(node);
228
+ const inferredActionable = isActionableRole(role);
229
+ const focusOnlyActionable = role === "actionable" &&
230
+ node instanceof HTMLElement &&
231
+ node.tabIndex >= 0 &&
232
+ node.onclick === null &&
233
+ !node.hasAttribute("onclick") &&
234
+ !node.isContentEditable;
235
+ const scrollable = inScope && (!inferredActionable || focusOnlyActionable)
236
+ ? getElementScrollability(node, style)
237
+ : undefined;
238
+ const actionable = inferredActionable && !scrollable;
239
+ const hasState = Object.keys(state).length > 0;
240
+ const keep = allowed &&
241
+ ((inScope && (actionable || scrollable || STRUCTURAL_ROLES.has(role) || hasState)) ||
242
+ (children.length > 0 && (isContextRole(role) || role === "table" || role === "list")));
243
+ if (!keep)
244
+ return children;
245
+ const computedName = computeNameInfo(node);
246
+ const scrollableName = scrollable && computedName.source === "content"
247
+ ? findNearestHeadingText(node)
248
+ : computedName.value || (scrollable ? findNearestHeadingText(node) : "");
249
+ const renderNode = {
250
+ element: node,
251
+ role: scrollable && (!role || role === "actionable")
252
+ ? "scrollable"
253
+ : role || "group",
254
+ name: scrollableName,
255
+ normalizedName: normalizeText(scrollableName),
256
+ nameSource: computedName.source,
257
+ state,
258
+ actionable,
259
+ ...(scrollable ? { scrollable } : {}),
260
+ children,
261
+ };
262
+ normalizeNodeChildren(renderNode);
263
+ return [renderNode];
264
+ }
265
+ function isVisibleModal(element) {
266
+ const role = computeRole(element);
267
+ const ariaModal = role === "dialog" && element.getAttribute("aria-modal") === "true";
268
+ const alertDialog = role === "alertdialog";
269
+ let nativeModal = false;
270
+ if (element instanceof HTMLDialogElement && element.open) {
271
+ try {
272
+ nativeModal = element.matches(":modal");
273
+ }
274
+ catch {
275
+ nativeModal = element.open;
276
+ }
277
+ }
278
+ return (ariaModal || alertDialog || nativeModal) && isElementInViewport(element);
279
+ }
280
+ function findActiveModal(execution) {
281
+ let activeModal;
282
+ let visited = 0;
283
+ for (const element of walkComposedElements()) {
284
+ visited += 1;
285
+ if (visited % 128 === 0)
286
+ checkExecution(execution);
287
+ if (isVisibleModal(element))
288
+ activeModal = element;
289
+ }
290
+ return activeModal;
291
+ }
292
+ function findPortalRoots(activeModal, execution) {
293
+ const roots = new Set();
294
+ let visited = 0;
295
+ for (const element of walkComposedElements()) {
296
+ visited += 1;
297
+ if (visited % 128 === 0)
298
+ checkExecution(execution);
299
+ if (isDescendantOrSelf(element, activeModal))
300
+ continue;
301
+ const role = computeRole(element);
302
+ if ((PORTAL_ROLES.has(role) || element.hasAttribute("aria-live")) &&
303
+ isElementInViewport(element)) {
304
+ roots.add(element);
305
+ }
306
+ }
307
+ return roots;
308
+ }
309
+ function serializeState(state) {
310
+ const entries = Object.entries(state);
311
+ if (entries.length === 0)
312
+ return "";
313
+ return ` [${entries
314
+ .map(([key, value]) => typeof value === "boolean"
315
+ ? value
316
+ ? key
317
+ : `${key}=false`
318
+ : `${key}=${JSON.stringify(value)}`)
319
+ .join(" ")}]`;
320
+ }
321
+ function serializeScrollability(value) {
322
+ if (!value)
323
+ return "";
324
+ const axis = value.x && value.y ? "xy" : value.y ? "y" : "x";
325
+ const metrics = value.y
326
+ ? `scrollTop=${value.scrollTop} scrollHeight=${value.scrollHeight} clientHeight=${value.clientHeight}`
327
+ : `scrollLeft=${value.scrollLeft} scrollWidth=${value.scrollWidth} clientWidth=${value.clientWidth}`;
328
+ return ` [axis=${axis} ${metrics}]`;
329
+ }
330
+ function renderTree(nodes, context) {
331
+ const renderNode = (node, depth) => {
332
+ if (context.truncated)
333
+ return;
334
+ context.renderedNodes += 1;
335
+ if (context.renderedNodes % 128 === 0) {
336
+ checkExecution(context.execution);
337
+ }
338
+ const indent = " ".repeat(Math.min(depth, 6));
339
+ const name = node.name ? ` ${JSON.stringify(normalizeText(node.name))}` : "";
340
+ const state = serializeState(node.state);
341
+ const scrollability = serializeScrollability(node.scrollable);
342
+ const nextRef = node.actionable || node.scrollable
343
+ ? `@${context.refs.size + 1}`
344
+ : undefined;
345
+ const refText = nextRef ? ` [ref=${nextRef}]` : "";
346
+ const prefix = node.role === "text" ? `${indent}- text:` : `${indent}- ${node.role}`;
347
+ const line = node.role === "text"
348
+ ? `${prefix} ${JSON.stringify(normalizeText(node.name))}`
349
+ : `${prefix}${name}${state}${scrollability}${refText}`;
350
+ const added = line.length + (context.lines.length > 0 ? 1 : 0);
351
+ if (context.usedChars + added > context.maxChars) {
352
+ context.truncated = true;
353
+ return;
354
+ }
355
+ context.lines.push(line);
356
+ context.usedChars += added;
357
+ if (nextRef && node.element) {
358
+ context.refs.set(nextRef, {
359
+ element: node.element,
360
+ identity: node.scrollable
361
+ ? createScrollableIdentity(node.element)
362
+ : createIdentity(node.element),
363
+ kind: node.scrollable ? "scrollable" : "element",
364
+ });
365
+ }
366
+ for (const child of node.children)
367
+ renderNode(child, depth + 1);
368
+ };
369
+ for (const node of nodes)
370
+ renderNode(node, 0);
371
+ }
372
+ export async function createSnapshot(scope = "viewport", limits = {}, execution) {
373
+ await nextAnimationFrame(execution);
374
+ checkExecution(execution);
375
+ const resolvedLimits = { ...DEFAULT_LIMITS, ...limits };
376
+ const activeModal = findActiveModal(execution);
377
+ const walkContext = {
378
+ scope,
379
+ ...(activeModal ? { activeModal } : {}),
380
+ allowedPortalRoots: activeModal
381
+ ? findPortalRoots(activeModal, execution)
382
+ : new Set(),
383
+ styles: new WeakMap(),
384
+ rects: new WeakMap(),
385
+ visitedNodes: 0,
386
+ maxVisitedNodes: scope === "viewport"
387
+ ? resolvedLimits.viewportMaxVisitedNodes
388
+ : resolvedLimits.fullMaxVisitedNodes,
389
+ truncated: false,
390
+ ...(execution ? { execution } : {}),
391
+ };
392
+ const tree = composedChildren(document.body).flatMap((node) => visitNode(node, walkContext));
393
+ const snapshotId = `s-${crypto.randomUUID()}`;
394
+ const registry = {
395
+ snapshotId,
396
+ refs: new Map(),
397
+ };
398
+ const renderContext = {
399
+ refs: registry.refs,
400
+ maxChars: scope === "viewport"
401
+ ? resolvedLimits.viewportMaxChars
402
+ : resolvedLimits.fullMaxChars,
403
+ usedChars: 0,
404
+ lines: [],
405
+ truncated: false,
406
+ renderedNodes: 0,
407
+ ...(execution ? { execution } : {}),
408
+ };
409
+ renderTree(tree, renderContext);
410
+ checkExecution(execution);
411
+ const snapshot = {
412
+ snapshotId,
413
+ scope,
414
+ url: location.href,
415
+ title: document.title,
416
+ content: renderContext.lines.join("\n"),
417
+ truncated: walkContext.truncated || renderContext.truncated,
418
+ };
419
+ return { snapshot, registry };
420
+ }
421
+ export async function getSnapshot(scope = "viewport", limits = {}) {
422
+ return (await createSnapshot(scope, limits)).snapshot;
423
+ }
424
+ //# sourceMappingURL=snapshot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snapshot.js","sourceRoot":"","sources":["../../src/browser/snapshot.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ import type { AgentToolDefinition } from "../types.js";
2
+ import type { ExecutionLimits, SnapshotLimits } from "./types.js";
3
+ export declare const DEFAULT_EXECUTION_LIMITS: ExecutionLimits;
4
+ export interface BrowserToolsOptions {
5
+ limits?: Partial<ExecutionLimits>;
6
+ snapshotLimits?: Partial<SnapshotLimits>;
7
+ }
8
+ export type BrowserToolsConfig = boolean | BrowserToolsOptions;
9
+ export interface BrowserToolHandler {
10
+ definition: AgentToolDefinition<Record<string, unknown>, unknown>;
11
+ execute(input: Record<string, unknown>, context: {
12
+ signal: AbortSignal;
13
+ }): Promise<unknown>;
14
+ }
15
+ export interface BrowserToolset {
16
+ definitions: AgentToolDefinition<Record<string, unknown>, unknown>[];
17
+ handlers: Map<string, BrowserToolHandler>;
18
+ }
19
+ export declare const getSnapshotTool: AgentToolDefinition<Record<string, unknown>, unknown>;
20
+ export declare const executeCodeTool: AgentToolDefinition<Record<string, unknown>, unknown>;
21
+ export interface PageTransitionSettleResult {
22
+ timedOut: boolean;
23
+ urlChanged: boolean;
24
+ mutationObservedAfterUrlChange: boolean;
25
+ }
26
+ export interface PageTransitionTracker {
27
+ waitForSettle(options: {
28
+ deadline: number;
29
+ signal: AbortSignal;
30
+ }): Promise<PageTransitionSettleResult>;
31
+ dispose(): void;
32
+ }
33
+ export declare function startPageTransitionTracker(): PageTransitionTracker;
34
+ export declare function browserToolsAvailable(): boolean;
35
+ export declare function createBrowserToolset(options?: BrowserToolsOptions): BrowserToolset;