safari-pilot 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 (143) hide show
  1. package/.claude-plugin/plugin.json +35 -0
  2. package/.mcp.json +11 -0
  3. package/LICENSE +21 -0
  4. package/README.md +324 -0
  5. package/bin/.gitkeep +0 -0
  6. package/bin/Safari Pilot.app/Contents/CodeResources +0 -0
  7. package/bin/Safari Pilot.app/Contents/Info.plist +58 -0
  8. package/bin/Safari Pilot.app/Contents/MacOS/Safari Pilot +0 -0
  9. package/bin/Safari Pilot.app/Contents/PkgInfo +1 -0
  10. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Info.plist +55 -0
  11. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/MacOS/Safari Pilot Extension +0 -0
  12. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/background.js +294 -0
  13. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/content-isolated.js +80 -0
  14. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/content-main.js +310 -0
  15. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/icons/icon-128.png +0 -0
  16. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/icons/icon-48.png +0 -0
  17. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/icons/icon-96.png +0 -0
  18. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/Resources/manifest.json +39 -0
  19. package/bin/Safari Pilot.app/Contents/PlugIns/Safari Pilot Extension.appex/Contents/_CodeSignature/CodeResources +194 -0
  20. package/bin/Safari Pilot.app/Contents/Resources/AppIcon.icns +0 -0
  21. package/bin/Safari Pilot.app/Contents/Resources/Assets.car +0 -0
  22. package/bin/Safari Pilot.app/Contents/Resources/Base.lproj/Main.html +19 -0
  23. package/bin/Safari Pilot.app/Contents/Resources/Base.lproj/Main.storyboardc/Info.plist +0 -0
  24. package/bin/Safari Pilot.app/Contents/Resources/Base.lproj/Main.storyboardc/MainMenu.nib +0 -0
  25. package/bin/Safari Pilot.app/Contents/Resources/Base.lproj/Main.storyboardc/NSWindowController-B8D-0N-5wS.nib +0 -0
  26. package/bin/Safari Pilot.app/Contents/Resources/Base.lproj/Main.storyboardc/XfG-lQ-9wD-view-m2S-Jp-Qdl.nib +0 -0
  27. package/bin/Safari Pilot.app/Contents/Resources/Icon.png +0 -0
  28. package/bin/Safari Pilot.app/Contents/Resources/Script.js +22 -0
  29. package/bin/Safari Pilot.app/Contents/Resources/Style.css +45 -0
  30. package/bin/Safari Pilot.app/Contents/_CodeSignature/CodeResources +236 -0
  31. package/bin/Safari Pilot.zip +0 -0
  32. package/bin/SafariPilotd +0 -0
  33. package/dist/engine-selector.d.ts +10 -0
  34. package/dist/engine-selector.js +55 -0
  35. package/dist/engine-selector.js.map +1 -0
  36. package/dist/engines/applescript.d.ts +53 -0
  37. package/dist/engines/applescript.js +290 -0
  38. package/dist/engines/applescript.js.map +1 -0
  39. package/dist/engines/daemon.d.ts +19 -0
  40. package/dist/engines/daemon.js +187 -0
  41. package/dist/engines/daemon.js.map +1 -0
  42. package/dist/engines/engine.d.ts +15 -0
  43. package/dist/engines/engine.js +42 -0
  44. package/dist/engines/engine.js.map +1 -0
  45. package/dist/engines/extension.d.ts +34 -0
  46. package/dist/engines/extension.js +66 -0
  47. package/dist/engines/extension.js.map +1 -0
  48. package/dist/errors.d.ts +128 -0
  49. package/dist/errors.js +250 -0
  50. package/dist/errors.js.map +1 -0
  51. package/dist/index.d.ts +2 -0
  52. package/dist/index.js +11 -0
  53. package/dist/index.js.map +1 -0
  54. package/dist/security/audit-log.d.ts +23 -0
  55. package/dist/security/audit-log.js +68 -0
  56. package/dist/security/audit-log.js.map +1 -0
  57. package/dist/security/circuit-breaker.d.ts +29 -0
  58. package/dist/security/circuit-breaker.js +114 -0
  59. package/dist/security/circuit-breaker.js.map +1 -0
  60. package/dist/security/domain-policy.d.ts +29 -0
  61. package/dist/security/domain-policy.js +96 -0
  62. package/dist/security/domain-policy.js.map +1 -0
  63. package/dist/security/human-approval.d.ts +20 -0
  64. package/dist/security/human-approval.js +150 -0
  65. package/dist/security/human-approval.js.map +1 -0
  66. package/dist/security/idpi-scanner.d.ts +20 -0
  67. package/dist/security/idpi-scanner.js +102 -0
  68. package/dist/security/idpi-scanner.js.map +1 -0
  69. package/dist/security/kill-switch.d.ts +51 -0
  70. package/dist/security/kill-switch.js +103 -0
  71. package/dist/security/kill-switch.js.map +1 -0
  72. package/dist/security/rate-limiter.d.ts +30 -0
  73. package/dist/security/rate-limiter.js +70 -0
  74. package/dist/security/rate-limiter.js.map +1 -0
  75. package/dist/security/screenshot-redaction.d.ts +42 -0
  76. package/dist/security/screenshot-redaction.js +134 -0
  77. package/dist/security/screenshot-redaction.js.map +1 -0
  78. package/dist/security/tab-ownership.d.ts +46 -0
  79. package/dist/security/tab-ownership.js +85 -0
  80. package/dist/security/tab-ownership.js.map +1 -0
  81. package/dist/server.d.ts +53 -0
  82. package/dist/server.js +347 -0
  83. package/dist/server.js.map +1 -0
  84. package/dist/tools/clipboard.d.ts +15 -0
  85. package/dist/tools/clipboard.js +128 -0
  86. package/dist/tools/clipboard.js.map +1 -0
  87. package/dist/tools/compound.d.ts +68 -0
  88. package/dist/tools/compound.js +491 -0
  89. package/dist/tools/compound.js.map +1 -0
  90. package/dist/tools/extraction.d.ts +26 -0
  91. package/dist/tools/extraction.js +414 -0
  92. package/dist/tools/extraction.js.map +1 -0
  93. package/dist/tools/frames.d.ts +22 -0
  94. package/dist/tools/frames.js +165 -0
  95. package/dist/tools/frames.js.map +1 -0
  96. package/dist/tools/interaction.d.ts +30 -0
  97. package/dist/tools/interaction.js +651 -0
  98. package/dist/tools/interaction.js.map +1 -0
  99. package/dist/tools/navigation.d.ts +41 -0
  100. package/dist/tools/navigation.js +316 -0
  101. package/dist/tools/navigation.js.map +1 -0
  102. package/dist/tools/network.d.ts +27 -0
  103. package/dist/tools/network.js +721 -0
  104. package/dist/tools/network.js.map +1 -0
  105. package/dist/tools/performance.d.ts +16 -0
  106. package/dist/tools/performance.js +240 -0
  107. package/dist/tools/performance.js.map +1 -0
  108. package/dist/tools/permissions.d.ts +25 -0
  109. package/dist/tools/permissions.js +308 -0
  110. package/dist/tools/permissions.js.map +1 -0
  111. package/dist/tools/service-workers.d.ts +15 -0
  112. package/dist/tools/service-workers.js +136 -0
  113. package/dist/tools/service-workers.js.map +1 -0
  114. package/dist/tools/shadow.d.ts +21 -0
  115. package/dist/tools/shadow.js +126 -0
  116. package/dist/tools/shadow.js.map +1 -0
  117. package/dist/tools/storage.d.ts +30 -0
  118. package/dist/tools/storage.js +679 -0
  119. package/dist/tools/storage.js.map +1 -0
  120. package/dist/tools/structured-extraction.d.ts +22 -0
  121. package/dist/tools/structured-extraction.js +433 -0
  122. package/dist/tools/structured-extraction.js.map +1 -0
  123. package/dist/tools/wait.d.ts +18 -0
  124. package/dist/tools/wait.js +182 -0
  125. package/dist/tools/wait.js.map +1 -0
  126. package/dist/types.d.ts +85 -0
  127. package/dist/types.js +2 -0
  128. package/dist/types.js.map +1 -0
  129. package/extension/background.js +294 -0
  130. package/extension/content-isolated.js +80 -0
  131. package/extension/content-main.js +310 -0
  132. package/extension/icons/icon-128.png +0 -0
  133. package/extension/icons/icon-48.png +0 -0
  134. package/extension/icons/icon-96.png +0 -0
  135. package/extension/manifest.json +39 -0
  136. package/hooks/session-end.sh +67 -0
  137. package/hooks/session-start.sh +66 -0
  138. package/package.json +46 -0
  139. package/scripts/build-extension.sh +135 -0
  140. package/scripts/postinstall.sh +91 -0
  141. package/scripts/preuninstall.sh +25 -0
  142. package/scripts/update-daemon.sh +62 -0
  143. package/skills/safari-pilot/SKILL.md +157 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../src/tools/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { ToolResponse, ToolRequirements } from '../types.js';
2
+ import type { AppleScriptEngine } from '../engines/applescript.js';
3
+ export interface ToolDefinition {
4
+ name: string;
5
+ description: string;
6
+ inputSchema: Record<string, unknown>;
7
+ requirements: ToolRequirements;
8
+ }
9
+ type Handler = (params: Record<string, unknown>) => Promise<ToolResponse>;
10
+ export declare class StructuredExtractionTools {
11
+ private readonly engine;
12
+ constructor(engine: AppleScriptEngine);
13
+ getDefinitions(): ToolDefinition[];
14
+ getHandler(name: string): Handler;
15
+ private handleSmartScrape;
16
+ private handleExtractTables;
17
+ private handleExtractLinks;
18
+ private handleExtractImages;
19
+ private handleExtractMetadata;
20
+ private makeResponse;
21
+ }
22
+ export {};
@@ -0,0 +1,433 @@
1
+ export class StructuredExtractionTools {
2
+ engine;
3
+ constructor(engine) {
4
+ this.engine = engine;
5
+ }
6
+ // ── Public API ──────────────────────────────────────────────────────────────
7
+ getDefinitions() {
8
+ return [
9
+ {
10
+ name: 'safari_smart_scrape',
11
+ description: 'Schema-based structured extraction. Walks the DOM heuristically to match fields described ' +
12
+ 'in a JSON schema — label→input pairs, heading→content pairs, table headers→rows — and returns ' +
13
+ 'a structured JSON object matching the schema shape. Ideal for extracting form data, article ' +
14
+ 'content, product details, or any repeating page structure.',
15
+ inputSchema: {
16
+ type: 'object',
17
+ properties: {
18
+ tabUrl: { type: 'string', description: 'Current URL of the tab' },
19
+ schema: {
20
+ type: 'object',
21
+ description: 'JSON Schema describing the desired output shape. Each property name is matched ' +
22
+ 'heuristically against DOM labels, headings, and table headers.',
23
+ },
24
+ scope: {
25
+ type: 'string',
26
+ description: 'CSS selector to limit extraction scope (default: full page body)',
27
+ },
28
+ },
29
+ required: ['tabUrl', 'schema'],
30
+ },
31
+ requirements: {},
32
+ },
33
+ {
34
+ name: 'safari_extract_tables',
35
+ description: 'Extract all HTML tables on the page as structured JSON. Each table is returned with its ' +
36
+ 'headers (from <th> elements) and rows (from <td> elements). Specify a CSS selector to ' +
37
+ 'target a particular table.',
38
+ inputSchema: {
39
+ type: 'object',
40
+ properties: {
41
+ tabUrl: { type: 'string', description: 'Current URL of the tab' },
42
+ selector: {
43
+ type: 'string',
44
+ description: 'CSS selector to target a specific table (default: all tables on the page)',
45
+ },
46
+ },
47
+ required: ['tabUrl'],
48
+ },
49
+ requirements: {},
50
+ },
51
+ {
52
+ name: 'safari_extract_links',
53
+ description: 'Extract all hyperlinks from the page with their href, link text, and surrounding context ' +
54
+ '(parent heading or paragraph). Optionally filter to internal-only, external-only, or all links.',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ tabUrl: { type: 'string', description: 'Current URL of the tab' },
59
+ filter: {
60
+ type: 'string',
61
+ enum: ['all', 'internal', 'external'],
62
+ description: 'Filter links by origin relative to current page (default: all)',
63
+ default: 'all',
64
+ },
65
+ },
66
+ required: ['tabUrl'],
67
+ },
68
+ requirements: {},
69
+ },
70
+ {
71
+ name: 'safari_extract_images',
72
+ description: 'Extract all images on the page with their src, alt text, and rendered/natural dimensions. ' +
73
+ 'Optionally filter by minimum rendered width or height to skip decorative or tiny images.',
74
+ inputSchema: {
75
+ type: 'object',
76
+ properties: {
77
+ tabUrl: { type: 'string', description: 'Current URL of the tab' },
78
+ minWidth: {
79
+ type: 'number',
80
+ description: 'Minimum rendered width in pixels to include (default: 0)',
81
+ default: 0,
82
+ },
83
+ minHeight: {
84
+ type: 'number',
85
+ description: 'Minimum rendered height in pixels to include (default: 0)',
86
+ default: 0,
87
+ },
88
+ },
89
+ required: ['tabUrl'],
90
+ },
91
+ requirements: {},
92
+ },
93
+ {
94
+ name: 'safari_extract_metadata',
95
+ description: 'Extract page metadata: <title>, <meta> tags (description, keywords, author), ' +
96
+ 'Open Graph (og:*), Twitter Cards (twitter:*), JSON-LD structured data, and canonical URL.',
97
+ inputSchema: {
98
+ type: 'object',
99
+ properties: {
100
+ tabUrl: { type: 'string', description: 'Current URL of the tab' },
101
+ },
102
+ required: ['tabUrl'],
103
+ },
104
+ requirements: {},
105
+ },
106
+ ];
107
+ }
108
+ getHandler(name) {
109
+ switch (name) {
110
+ case 'safari_smart_scrape':
111
+ return (p) => this.handleSmartScrape(p);
112
+ case 'safari_extract_tables':
113
+ return (p) => this.handleExtractTables(p);
114
+ case 'safari_extract_links':
115
+ return (p) => this.handleExtractLinks(p);
116
+ case 'safari_extract_images':
117
+ return (p) => this.handleExtractImages(p);
118
+ case 'safari_extract_metadata':
119
+ return (p) => this.handleExtractMetadata(p);
120
+ default:
121
+ throw new Error(`StructuredExtractionTools: unknown tool "${name}"`);
122
+ }
123
+ }
124
+ // ── Handlers ────────────────────────────────────────────────────────────────
125
+ async handleSmartScrape(params) {
126
+ const start = Date.now();
127
+ const tabUrl = params['tabUrl'];
128
+ const schema = params['schema'];
129
+ const scope = params['scope'];
130
+ const schemaJson = JSON.stringify(schema);
131
+ const escapedScope = scope ? scope.replace(/'/g, "\\'") : '';
132
+ const js = `
133
+ var schema = ${schemaJson};
134
+ var scopeSel = '${escapedScope}';
135
+ var root = scopeSel ? document.querySelector(scopeSel) : document.body;
136
+ if (!root) throw Object.assign(new Error('Scope element not found'), { name: 'ELEMENT_NOT_FOUND' });
137
+
138
+ function normalise(str) {
139
+ return String(str || '').toLowerCase().replace(/[^a-z0-9]/g, '');
140
+ }
141
+
142
+ function findValueForField(fieldName) {
143
+ var key = normalise(fieldName);
144
+
145
+ // 1. label→input pairs
146
+ var labels = root.querySelectorAll('label');
147
+ for (var i = 0; i < labels.length; i++) {
148
+ var lbl = labels[i];
149
+ if (normalise(lbl.textContent) === key || normalise(lbl.textContent).indexOf(key) !== -1) {
150
+ var forId = lbl.getAttribute('for');
151
+ if (forId) {
152
+ var inp = document.getElementById(forId);
153
+ if (inp) return inp.value || inp.textContent || inp.getAttribute('placeholder') || null;
154
+ }
155
+ var nested = lbl.querySelector('input, select, textarea');
156
+ if (nested) return nested.value || null;
157
+ }
158
+ }
159
+
160
+ // 2. heading→sibling content pairs
161
+ var headings = root.querySelectorAll('h1,h2,h3,h4,h5,h6');
162
+ for (var h = 0; h < headings.length; h++) {
163
+ var hEl = headings[h];
164
+ if (normalise(hEl.textContent).indexOf(key) !== -1) {
165
+ var next = hEl.nextElementSibling;
166
+ if (next) return (next.innerText || next.textContent || '').trim().slice(0, 500);
167
+ }
168
+ }
169
+
170
+ // 3. definition lists (dt→dd)
171
+ var dts = root.querySelectorAll('dt');
172
+ for (var d = 0; d < dts.length; d++) {
173
+ var dt = dts[d];
174
+ if (normalise(dt.textContent).indexOf(key) !== -1) {
175
+ var dd = dt.nextElementSibling;
176
+ if (dd && dd.tagName === 'DD') return (dd.innerText || dd.textContent || '').trim();
177
+ }
178
+ }
179
+
180
+ // 4. table headers (th cell) → adjacent td in same row
181
+ var rows = root.querySelectorAll('tr');
182
+ for (var r = 0; r < rows.length; r++) {
183
+ var row = rows[r];
184
+ var cells = row.querySelectorAll('th, td');
185
+ for (var c = 0; c < cells.length; c++) {
186
+ if (cells[c].tagName === 'TH' && normalise(cells[c].textContent).indexOf(key) !== -1) {
187
+ var td = cells[c + 1];
188
+ if (td) return (td.innerText || td.textContent || '').trim();
189
+ }
190
+ }
191
+ }
192
+
193
+ // 5. meta tags / data attributes
194
+ var metaEl = document.querySelector('meta[name="' + fieldName.toLowerCase() + '"]');
195
+ if (metaEl) return metaEl.getAttribute('content');
196
+
197
+ return null;
198
+ }
199
+
200
+ var result = {};
201
+ var props = schema.properties || schema;
202
+ Object.keys(props).forEach(function(field) {
203
+ result[field] = findValueForField(field);
204
+ });
205
+
206
+ return { data: result, fieldsExtracted: Object.keys(result).length };
207
+ `;
208
+ const result = await this.engine.executeJsInTab(tabUrl, js);
209
+ if (!result.ok)
210
+ throw new Error(result.error?.message ?? 'Smart scrape failed');
211
+ return this.makeResponse(result.value ? JSON.parse(result.value) : {}, Date.now() - start);
212
+ }
213
+ async handleExtractTables(params) {
214
+ const start = Date.now();
215
+ const tabUrl = params['tabUrl'];
216
+ const selector = params['selector'];
217
+ const escapedSelector = selector ? selector.replace(/'/g, "\\'") : '';
218
+ const js = `
219
+ var tables = ${selector ? `document.querySelectorAll('${escapedSelector}')` : 'document.querySelectorAll("table")'};
220
+ var result = [];
221
+
222
+ for (var t = 0; t < tables.length; t++) {
223
+ var table = tables[t];
224
+ var headers = [];
225
+ var rows = [];
226
+
227
+ // Read headers from thead > tr > th, or first row of th elements
228
+ var thEls = table.querySelectorAll('thead th');
229
+ if (thEls.length === 0) thEls = table.querySelectorAll('tr:first-child th');
230
+ for (var h = 0; h < thEls.length; h++) {
231
+ headers.push((thEls[h].innerText || thEls[h].textContent || '').trim());
232
+ }
233
+
234
+ // Read data rows — skip header row if headers came from th in first row
235
+ var trEls = table.querySelectorAll(headers.length > 0 ? 'tbody tr' : 'tr');
236
+ if (trEls.length === 0 && headers.length > 0) {
237
+ // No tbody — get all rows after first
238
+ var allRows = table.querySelectorAll('tr');
239
+ for (var ri = 1; ri < allRows.length; ri++) {
240
+ var cells = allRows[ri].querySelectorAll('td');
241
+ if (cells.length > 0) {
242
+ var row = [];
243
+ for (var ci = 0; ci < cells.length; ci++) {
244
+ row.push((cells[ci].innerText || cells[ci].textContent || '').trim());
245
+ }
246
+ rows.push(row);
247
+ }
248
+ }
249
+ } else {
250
+ for (var ri2 = 0; ri2 < trEls.length; ri2++) {
251
+ var cells2 = trEls[ri2].querySelectorAll('td');
252
+ if (cells2.length > 0) {
253
+ var row2 = [];
254
+ for (var ci2 = 0; ci2 < cells2.length; ci2++) {
255
+ row2.push((cells2[ci2].innerText || cells2[ci2].textContent || '').trim());
256
+ }
257
+ rows.push(row2);
258
+ }
259
+ }
260
+ }
261
+
262
+ result.push({ headers: headers, rows: rows });
263
+ }
264
+
265
+ return { tables: result, count: result.length };
266
+ `;
267
+ const result = await this.engine.executeJsInTab(tabUrl, js);
268
+ if (!result.ok)
269
+ throw new Error(result.error?.message ?? 'Extract tables failed');
270
+ return this.makeResponse(result.value ? JSON.parse(result.value) : { tables: [], count: 0 }, Date.now() - start);
271
+ }
272
+ async handleExtractLinks(params) {
273
+ const start = Date.now();
274
+ const tabUrl = params['tabUrl'];
275
+ const filter = params['filter'] ?? 'all';
276
+ const js = `
277
+ var filterMode = '${filter}';
278
+ var pageOrigin = location.origin;
279
+ var anchors = document.querySelectorAll('a[href]');
280
+ var links = [];
281
+
282
+ for (var i = 0; i < anchors.length; i++) {
283
+ var a = anchors[i];
284
+ var href = a.href || '';
285
+ var text = (a.innerText || a.textContent || '').trim().slice(0, 200);
286
+
287
+ // Determine internal vs external
288
+ var isInternal = false;
289
+ try {
290
+ isInternal = new URL(href).origin === pageOrigin;
291
+ } catch (e) {
292
+ // relative or non-standard href
293
+ isInternal = !href.startsWith('http') || href.startsWith(pageOrigin);
294
+ }
295
+
296
+ if (filterMode === 'internal' && !isInternal) continue;
297
+ if (filterMode === 'external' && isInternal) continue;
298
+
299
+ // Find surrounding context: nearest heading or paragraph ancestor
300
+ var context = '';
301
+ var node = a.parentElement;
302
+ while (node && node !== document.body) {
303
+ var tag = node.tagName ? node.tagName.toUpperCase() : '';
304
+ if (/^H[1-6]$/.test(tag) || tag === 'P' || tag === 'LI') {
305
+ context = (node.innerText || node.textContent || '').trim().slice(0, 200);
306
+ break;
307
+ }
308
+ node = node.parentElement;
309
+ }
310
+
311
+ links.push({
312
+ href: href,
313
+ text: text,
314
+ context: context,
315
+ internal: isInternal,
316
+ });
317
+ }
318
+
319
+ return { links: links, count: links.length };
320
+ `;
321
+ const result = await this.engine.executeJsInTab(tabUrl, js);
322
+ if (!result.ok)
323
+ throw new Error(result.error?.message ?? 'Extract links failed');
324
+ return this.makeResponse(result.value ? JSON.parse(result.value) : { links: [], count: 0 }, Date.now() - start);
325
+ }
326
+ async handleExtractImages(params) {
327
+ const start = Date.now();
328
+ const tabUrl = params['tabUrl'];
329
+ const minWidth = typeof params['minWidth'] === 'number' ? params['minWidth'] : 0;
330
+ const minHeight = typeof params['minHeight'] === 'number' ? params['minHeight'] : 0;
331
+ const js = `
332
+ var minW = ${minWidth};
333
+ var minH = ${minHeight};
334
+ var imgs = document.querySelectorAll('img');
335
+ var images = [];
336
+
337
+ for (var i = 0; i < imgs.length; i++) {
338
+ var img = imgs[i];
339
+ var w = img.width || img.offsetWidth || 0;
340
+ var h = img.height || img.offsetHeight || 0;
341
+ if (w < minW || h < minH) continue;
342
+
343
+ images.push({
344
+ src: img.src || img.getAttribute('src') || '',
345
+ alt: img.alt || '',
346
+ width: w,
347
+ height: h,
348
+ naturalWidth: img.naturalWidth || 0,
349
+ naturalHeight: img.naturalHeight || 0,
350
+ });
351
+ }
352
+
353
+ return { images: images, count: images.length };
354
+ `;
355
+ const result = await this.engine.executeJsInTab(tabUrl, js);
356
+ if (!result.ok)
357
+ throw new Error(result.error?.message ?? 'Extract images failed');
358
+ return this.makeResponse(result.value ? JSON.parse(result.value) : { images: [], count: 0 }, Date.now() - start);
359
+ }
360
+ async handleExtractMetadata(params) {
361
+ const start = Date.now();
362
+ const tabUrl = params['tabUrl'];
363
+ const js = `
364
+ function getMeta(name) {
365
+ var el = document.querySelector('meta[name="' + name + '"]') ||
366
+ document.querySelector('meta[property="' + name + '"]');
367
+ return el ? el.getAttribute('content') : null;
368
+ }
369
+
370
+ // Standard meta
371
+ var meta = {
372
+ title: document.title || null,
373
+ description: getMeta('description'),
374
+ keywords: getMeta('keywords'),
375
+ author: getMeta('author'),
376
+ robots: getMeta('robots'),
377
+ viewport: getMeta('viewport'),
378
+ };
379
+
380
+ // Canonical URL
381
+ var canonicalEl = document.querySelector('link[rel="canonical"]');
382
+ var canonical = canonicalEl ? canonicalEl.getAttribute('href') : null;
383
+
384
+ // Open Graph
385
+ var og = {};
386
+ var ogMetas = document.querySelectorAll('meta[property^="og:"]');
387
+ for (var i = 0; i < ogMetas.length; i++) {
388
+ var prop = ogMetas[i].getAttribute('property').replace('og:', '');
389
+ og[prop] = ogMetas[i].getAttribute('content');
390
+ }
391
+
392
+ // Twitter Cards
393
+ var twitter = {};
394
+ var twMetas = document.querySelectorAll('meta[name^="twitter:"]');
395
+ for (var j = 0; j < twMetas.length; j++) {
396
+ var name = twMetas[j].getAttribute('name').replace('twitter:', '');
397
+ twitter[name] = twMetas[j].getAttribute('content');
398
+ }
399
+
400
+ // JSON-LD
401
+ var jsonLd = [];
402
+ var ldScripts = document.querySelectorAll('script[type="application/ld+json"]');
403
+ for (var k = 0; k < ldScripts.length; k++) {
404
+ try {
405
+ jsonLd.push(JSON.parse(ldScripts[k].textContent));
406
+ } catch (e) {
407
+ // skip malformed
408
+ }
409
+ }
410
+
411
+ return {
412
+ meta: meta,
413
+ canonical: canonical,
414
+ openGraph: og,
415
+ twitter: twitter,
416
+ jsonLd: jsonLd,
417
+ url: location.href,
418
+ };
419
+ `;
420
+ const result = await this.engine.executeJsInTab(tabUrl, js);
421
+ if (!result.ok)
422
+ throw new Error(result.error?.message ?? 'Extract metadata failed');
423
+ return this.makeResponse(result.value ? JSON.parse(result.value) : {}, Date.now() - start);
424
+ }
425
+ // ── Private helpers ─────────────────────────────────────────────────────────
426
+ makeResponse(data, latencyMs = 0) {
427
+ return {
428
+ content: [{ type: 'text', text: JSON.stringify(data) }],
429
+ metadata: { engine: 'applescript', degraded: false, latencyMs },
430
+ };
431
+ }
432
+ }
433
+ //# sourceMappingURL=structured-extraction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"structured-extraction.js","sourceRoot":"","sources":["../../src/tools/structured-extraction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { ToolResponse } from '../types.js';
2
+ import type { AppleScriptEngine } from '../engines/applescript.js';
3
+ import type { ToolDefinition } from './navigation.js';
4
+ type Handler = (params: Record<string, unknown>) => Promise<ToolResponse>;
5
+ export type WaitCondition = 'selector' | 'selectorHidden' | 'text' | 'textGone' | 'urlMatch' | 'networkidle' | 'function';
6
+ export declare class WaitTools {
7
+ private readonly engine;
8
+ constructor(engine: AppleScriptEngine);
9
+ getDefinitions(): ToolDefinition[];
10
+ getHandler(name: string): Handler;
11
+ private handleWaitFor;
12
+ /**
13
+ * Execute JS in a tab and return the raw boolean/truthy result.
14
+ * Returns false on engine failure or unparseable output.
15
+ */
16
+ private executeJsInTab;
17
+ }
18
+ export {};