@mcp-b/smart-dom-reader 0.0.0-beta-20260221154800

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.
@@ -0,0 +1,472 @@
1
+ //#region src/types.d.ts
2
+ type ExtractionMode = 'interactive' | 'full' | 'structure' | 'content';
3
+ interface ElementSelector {
4
+ css: string;
5
+ xpath: string;
6
+ textBased?: string;
7
+ dataTestId?: string;
8
+ ariaLabel?: string;
9
+ candidates?: ElementSelectorCandidate[];
10
+ }
11
+ interface ElementSelectorCandidate {
12
+ type: 'id' | 'data-testid' | 'role-aria' | 'name' | 'class-path' | 'css-path' | 'xpath' | 'text';
13
+ value: string;
14
+ score: number;
15
+ }
16
+ interface ElementContext {
17
+ nearestForm?: string;
18
+ nearestSection?: string;
19
+ nearestMain?: string;
20
+ nearestNav?: string;
21
+ parentChain: string[];
22
+ }
23
+ interface ElementInteraction {
24
+ click?: boolean;
25
+ change?: boolean;
26
+ submit?: boolean;
27
+ nav?: boolean;
28
+ disabled?: boolean;
29
+ hidden?: boolean;
30
+ role?: string;
31
+ form?: string;
32
+ }
33
+ interface ExtractedElement {
34
+ tag: string;
35
+ text: string;
36
+ selector: ElementSelector;
37
+ attributes: Record<string, string>;
38
+ context: ElementContext;
39
+ interaction: ElementInteraction;
40
+ children?: ExtractedElement[];
41
+ }
42
+ interface FormInfo {
43
+ selector: string;
44
+ action?: string;
45
+ method?: string;
46
+ inputs: ExtractedElement[];
47
+ buttons: ExtractedElement[];
48
+ }
49
+ interface PageLandmarks {
50
+ navigation: string[];
51
+ main: string[];
52
+ forms: string[];
53
+ headers: string[];
54
+ footers: string[];
55
+ articles: string[];
56
+ sections: string[];
57
+ }
58
+ interface PageState {
59
+ url: string;
60
+ title: string;
61
+ hasErrors: boolean;
62
+ isLoading: boolean;
63
+ hasModals: boolean;
64
+ hasFocus?: string;
65
+ }
66
+ interface SmartDOMResult {
67
+ mode: ExtractionMode;
68
+ timestamp: number;
69
+ page: PageState;
70
+ landmarks: PageLandmarks;
71
+ interactive: {
72
+ buttons: ExtractedElement[];
73
+ links: ExtractedElement[];
74
+ inputs: ExtractedElement[];
75
+ forms: FormInfo[];
76
+ clickable: ExtractedElement[];
77
+ };
78
+ semantic?: {
79
+ headings: ExtractedElement[];
80
+ images: ExtractedElement[];
81
+ tables: ExtractedElement[];
82
+ lists: ExtractedElement[];
83
+ articles: ExtractedElement[];
84
+ };
85
+ metadata?: {
86
+ totalElements: number;
87
+ extractedElements: number;
88
+ mainContent?: string;
89
+ language?: string;
90
+ };
91
+ }
92
+ interface FilterOptions {
93
+ includeSelectors?: string[];
94
+ excludeSelectors?: string[];
95
+ textContains?: string[];
96
+ textMatches?: RegExp[];
97
+ hasAttributes?: string[];
98
+ attributeValues?: Record<string, string | RegExp>;
99
+ tags?: string[];
100
+ interactionTypes?: Array<keyof ElementInteraction>;
101
+ withinSelectors?: string[];
102
+ nearText?: string;
103
+ }
104
+ interface ExtractionOptions {
105
+ mode: ExtractionMode;
106
+ maxDepth?: number;
107
+ includeHidden?: boolean;
108
+ includeShadowDOM?: boolean;
109
+ includeIframes?: boolean;
110
+ viewportOnly?: boolean;
111
+ mainContentOnly?: boolean;
112
+ customSelectors?: string[];
113
+ attributeTruncateLength?: number;
114
+ dataAttributeTruncateLength?: number;
115
+ textTruncateLength?: number;
116
+ filter?: FilterOptions;
117
+ }
118
+ interface RegionInfo {
119
+ selector: string;
120
+ label?: string;
121
+ role?: string;
122
+ interactiveCount: number;
123
+ hasForm?: boolean;
124
+ hasList?: boolean;
125
+ hasTable?: boolean;
126
+ hasMedia?: boolean;
127
+ buttonCount?: number;
128
+ linkCount?: number;
129
+ inputCount?: number;
130
+ textPreview?: string;
131
+ }
132
+ interface StructuralOverview {
133
+ regions: {
134
+ header?: RegionInfo;
135
+ navigation?: RegionInfo[];
136
+ main?: RegionInfo;
137
+ sidebar?: RegionInfo[];
138
+ footer?: RegionInfo;
139
+ modals?: RegionInfo[];
140
+ sections?: RegionInfo[];
141
+ };
142
+ forms: Array<{
143
+ selector: string;
144
+ location: string;
145
+ inputCount: number;
146
+ purpose?: string;
147
+ }>;
148
+ summary: {
149
+ totalInteractive: number;
150
+ totalForms: number;
151
+ totalSections: number;
152
+ hasModals: boolean;
153
+ hasErrors: boolean;
154
+ isLoading: boolean;
155
+ mainContentSelector?: string;
156
+ };
157
+ suggestions?: string[];
158
+ }
159
+ interface ContentExtractionOptions {
160
+ includeHeadings?: boolean;
161
+ includeLists?: boolean;
162
+ includeTables?: boolean;
163
+ includeMedia?: boolean;
164
+ preserveFormatting?: boolean;
165
+ maxTextLength?: number;
166
+ }
167
+ interface ExtractedContent {
168
+ selector: string;
169
+ text: {
170
+ headings?: Array<{
171
+ level: number;
172
+ text: string;
173
+ }>;
174
+ paragraphs?: string[];
175
+ lists?: Array<{
176
+ type: 'ul' | 'ol';
177
+ items: string[];
178
+ }>;
179
+ };
180
+ tables?: Array<{
181
+ headers: string[];
182
+ rows: string[][];
183
+ }>;
184
+ media?: Array<{
185
+ type: 'img' | 'video' | 'audio';
186
+ alt?: string;
187
+ src?: string;
188
+ }>;
189
+ metadata: {
190
+ wordCount: number;
191
+ hasInteractive: boolean;
192
+ };
193
+ }
194
+ //#endregion
195
+ //#region src/markdown-formatter.d.ts
196
+ type MarkdownDetailLevel = 'summary' | 'region' | 'deep';
197
+ interface MarkdownFormatOptions {
198
+ detail?: MarkdownDetailLevel;
199
+ maxTextLength?: number;
200
+ maxElements?: number;
201
+ }
202
+ type PageMeta = {
203
+ title?: string;
204
+ url?: string;
205
+ };
206
+ declare class MarkdownFormatter {
207
+ static structure(overview: StructuralOverview, _opts?: MarkdownFormatOptions, meta?: PageMeta): string;
208
+ static region(result: SmartDOMResult, opts?: MarkdownFormatOptions, meta?: PageMeta): string;
209
+ static content(content: ExtractedContent, opts?: MarkdownFormatOptions, meta?: PageMeta): string;
210
+ }
211
+ //#endregion
212
+ //#region src/bundle-types.d.ts
213
+ type ExtractionMethod = 'extractStructure' | 'extractRegion' | 'extractContent' | 'extractInteractive' | 'extractFull';
214
+ interface BaseExtractionArgs {
215
+ frameSelector?: string;
216
+ formatOptions?: MarkdownFormatOptions;
217
+ }
218
+ interface ExtractStructureArgs extends BaseExtractionArgs {
219
+ selector?: string;
220
+ }
221
+ interface ExtractRegionArgs extends BaseExtractionArgs {
222
+ selector: string;
223
+ mode?: 'interactive' | 'full';
224
+ options?: Partial<ExtractionOptions>;
225
+ }
226
+ interface ExtractContentArgs extends BaseExtractionArgs {
227
+ selector: string;
228
+ options?: ContentExtractionOptions;
229
+ }
230
+ interface ExtractInteractiveArgs extends BaseExtractionArgs {
231
+ selector?: string;
232
+ options?: Partial<ExtractionOptions>;
233
+ }
234
+ interface ExtractFullArgs extends BaseExtractionArgs {
235
+ selector?: string;
236
+ options?: Partial<ExtractionOptions>;
237
+ }
238
+ type ExtractionArgs = {
239
+ extractStructure: ExtractStructureArgs;
240
+ extractRegion: ExtractRegionArgs;
241
+ extractContent: ExtractContentArgs;
242
+ extractInteractive: ExtractInteractiveArgs;
243
+ extractFull: ExtractFullArgs;
244
+ };
245
+ interface ExtractionError {
246
+ error: string;
247
+ }
248
+ type ExtractionResult = string | ExtractionError;
249
+ interface SmartDOMReaderBundle {
250
+ executeExtraction<M extends ExtractionMethod>(method: M, args: ExtractionArgs[M]): ExtractionResult;
251
+ }
252
+ declare global {
253
+ interface Window {
254
+ SmartDOMReaderBundle: SmartDOMReaderBundle;
255
+ }
256
+ }
257
+ //# sourceMappingURL=bundle-types.d.ts.map
258
+ //#endregion
259
+ //#region src/content-detection.d.ts
260
+ declare class ContentDetection {
261
+ /**
262
+ * Find the main content area of a page
263
+ * Inspired by dom-to-semantic-markdown's approach
264
+ */
265
+ static findMainContent(doc: Document): Element;
266
+ /**
267
+ * Detect main content using scoring algorithm
268
+ */
269
+ private static detectMainContent;
270
+ /**
271
+ * Collect content candidates
272
+ */
273
+ private static collectCandidates;
274
+ /**
275
+ * Calculate content score for an element
276
+ */
277
+ static calculateContentScore(element: Element): number;
278
+ /**
279
+ * Calculate link density in an element
280
+ */
281
+ private static calculateLinkDensity;
282
+ /**
283
+ * Check if an element is likely navigation
284
+ */
285
+ static isNavigation(element: Element): boolean;
286
+ /**
287
+ * Check if element is likely supplementary content
288
+ */
289
+ static isSupplementary(element: Element): boolean;
290
+ /**
291
+ * Detect page landmarks
292
+ */
293
+ static detectLandmarks(doc: Document): Record<string, Element[]>;
294
+ }
295
+ //#endregion
296
+ //#region src/progressive.d.ts
297
+ type SmartDomReaderCtor = new (options?: Partial<ExtractionOptions>) => SmartDOMReader;
298
+ declare class ProgressiveExtractor {
299
+ /**
300
+ * Step 1: Extract high-level structural overview
301
+ * This provides a "map" of the page for the AI to understand structure
302
+ */
303
+ static extractStructure(root: Document | Element): StructuralOverview;
304
+ /**
305
+ * Step 2: Extract detailed information from a specific region
306
+ */
307
+ static extractRegion(selector: string, doc: Document, options?: Partial<ExtractionOptions>, smartDomReaderCtor?: SmartDomReaderCtor): SmartDOMResult | null;
308
+ /**
309
+ * Step 3: Extract readable content from a region
310
+ */
311
+ static extractContent(selector: string, doc: Document, options?: ContentExtractionOptions): ExtractedContent | null;
312
+ /**
313
+ * Analyze a region and extract summary information
314
+ */
315
+ private static analyzeRegion;
316
+ /**
317
+ * Extract overview of forms on the page
318
+ */
319
+ private static extractFormOverview;
320
+ /**
321
+ * Calculate summary statistics
322
+ */
323
+ private static calculateSummary;
324
+ /**
325
+ * Generate AI-friendly suggestions
326
+ */
327
+ private static generateSuggestions;
328
+ /**
329
+ * Get text content with optional truncation
330
+ */
331
+ private static getTextContent;
332
+ }
333
+ //#endregion
334
+ //#region src/selectors.d.ts
335
+ declare class SelectorGenerator {
336
+ /**
337
+ * Generate multiple selector strategies for an element
338
+ */
339
+ static generateSelectors(element: Element): ElementSelector;
340
+ /**
341
+ * Generate a unique CSS selector for an element
342
+ */
343
+ private static generateCSSSelector;
344
+ /**
345
+ * Generate XPath for an element
346
+ */
347
+ private static generateXPath;
348
+ /**
349
+ * Generate a text-based selector for buttons and links
350
+ */
351
+ private static generateTextBasedSelector;
352
+ /**
353
+ * Get data-testid or similar attributes
354
+ */
355
+ private static getDataTestId;
356
+ /**
357
+ * Check if an ID is unique in the document
358
+ */
359
+ private static isUniqueId;
360
+ /**
361
+ * Check if a selector is unique within a container
362
+ */
363
+ private static isUniqueSelector;
364
+ private static isUniqueSelectorSafe;
365
+ /**
366
+ * Get meaningful classes (filtering out utility classes)
367
+ */
368
+ private static getMeaningfulClasses;
369
+ /**
370
+ * Optimize the selector path by removing unnecessary parts
371
+ */
372
+ private static optimizePath;
373
+ /**
374
+ * Get a human-readable path description
375
+ */
376
+ static getContextPath(element: Element): string[];
377
+ }
378
+ //#endregion
379
+ //#region src/index.d.ts
380
+ /**
381
+ * Smart DOM Reader - Full Extraction Approach
382
+ *
383
+ * This class provides complete DOM extraction in a single pass.
384
+ * Use this when you need all information upfront and have sufficient
385
+ * token budget for processing the complete output.
386
+ *
387
+ * Features:
388
+ * - Single-pass extraction of all elements
389
+ * - Two modes: 'interactive' (UI elements) or 'full' (includes content)
390
+ * - Efficient for automation and testing scenarios
391
+ * - Returns complete structured data immediately
392
+ */
393
+ declare class SmartDOMReader {
394
+ private options;
395
+ constructor(options?: Partial<ExtractionOptions>);
396
+ /**
397
+ * Main extraction method - extracts all data in one pass
398
+ * @param rootElement The document or element to extract from
399
+ * @param runtimeOptions Options to override constructor options
400
+ */
401
+ extract(rootElement?: Document | Element, runtimeOptions?: Partial<ExtractionOptions>): SmartDOMResult;
402
+ /**
403
+ * Extract page state information
404
+ */
405
+ private extractPageState;
406
+ /**
407
+ * Extract page landmarks
408
+ */
409
+ private extractLandmarks;
410
+ /**
411
+ * Convert elements to selector strings
412
+ */
413
+ private elementsToSelectors;
414
+ /**
415
+ * Extract interactive elements
416
+ */
417
+ private extractInteractiveElements;
418
+ /**
419
+ * Extract form information
420
+ */
421
+ private extractForms;
422
+ /**
423
+ * Extract semantic elements (full mode only)
424
+ */
425
+ private extractSemanticElements;
426
+ /**
427
+ * Extract metadata
428
+ */
429
+ private extractMetadata;
430
+ /**
431
+ * Check if element should be included based on options
432
+ */
433
+ private shouldIncludeElement;
434
+ /**
435
+ * Detect errors on the page
436
+ */
437
+ private detectErrors;
438
+ /**
439
+ * Detect if page is loading
440
+ */
441
+ private detectLoading;
442
+ /**
443
+ * Detect modal dialogs
444
+ */
445
+ private detectModals;
446
+ /**
447
+ * Get currently focused element
448
+ */
449
+ private getFocusedElement;
450
+ /**
451
+ * Quick extraction for interactive elements only
452
+ * @param doc The document to extract from
453
+ * @param options Extraction options
454
+ */
455
+ static extractInteractive(doc: Document, options?: Partial<ExtractionOptions>): SmartDOMResult;
456
+ /**
457
+ * Quick extraction for full content
458
+ * @param doc The document to extract from
459
+ * @param options Extraction options
460
+ */
461
+ static extractFull(doc: Document, options?: Partial<ExtractionOptions>): SmartDOMResult;
462
+ /**
463
+ * Extract from a specific element
464
+ * @param element The element to extract from
465
+ * @param mode The extraction mode
466
+ * @param options Additional options
467
+ */
468
+ static extractFromElement(element: Element, mode?: ExtractionMode, options?: Partial<ExtractionOptions>): SmartDOMResult;
469
+ }
470
+ //#endregion
471
+ export { ContentDetection, ContentExtractionOptions, ElementContext, ElementInteraction, ElementSelector, ElementSelectorCandidate, type ExtractContentArgs, type ExtractFullArgs, type ExtractInteractiveArgs, type ExtractRegionArgs, type ExtractStructureArgs, ExtractedContent, ExtractedElement, type ExtractionArgs, type ExtractionMethod, ExtractionMode, ExtractionOptions, type ExtractionResult, FilterOptions, FormInfo, type MarkdownFormatOptions, MarkdownFormatter, PageLandmarks, PageState, ProgressiveExtractor, RegionInfo, SelectorGenerator, SmartDOMReader, SmartDOMReader as default, SmartDOMResult, StructuralOverview };
472
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","names":[],"sources":["../src/types.ts","../src/markdown-formatter.ts","../src/bundle-types.ts","../src/content-detection.ts","../src/progressive.ts","../src/selectors.ts","../src/index.ts"],"sourcesContent":[],"mappings":"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"}