@ticktockbent/charlotte 0.1.3 → 0.2.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/CHANGELOG.md +21 -0
- package/README.md +86 -19
- package/dist/renderer/interactive-extractor.d.ts +2 -1
- package/dist/renderer/interactive-extractor.d.ts.map +1 -1
- package/dist/renderer/interactive-extractor.js +30 -24
- package/dist/renderer/interactive-extractor.js.map +1 -1
- package/dist/renderer/renderer-pipeline.d.ts +1 -0
- package/dist/renderer/renderer-pipeline.d.ts.map +1 -1
- package/dist/renderer/renderer-pipeline.js +37 -5
- package/dist/renderer/renderer-pipeline.js.map +1 -1
- package/dist/tools/navigation.d.ts.map +1 -1
- package/dist/tools/navigation.js +25 -11
- package/dist/tools/navigation.js.map +1 -1
- package/dist/tools/observation.js +2 -2
- package/dist/tools/observation.js.map +1 -1
- package/dist/tools/tool-helpers.d.ts +1 -0
- package/dist/tools/tool-helpers.d.ts.map +1 -1
- package/dist/tools/tool-helpers.js +50 -2
- package/dist/tools/tool-helpers.js.map +1 -1
- package/dist/types/page-representation.d.ts +9 -2
- package/dist/types/page-representation.d.ts.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,27 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to Charlotte will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [0.2.0] - 2026-02-22
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- **Compact response format** — Responses are now dramatically smaller, reducing context window consumption by 50-99% depending on the page. Charlotte's `navigate` returns 336 characters for Hacker News vs Playwright MCP's 61,230.
|
|
10
|
+
- **Interactive summary for minimal detail** — Navigation tools now return interactive element counts grouped by landmark region instead of listing every element individually. Wikipedia's minimal response dropped from 711K to 7.7K characters.
|
|
11
|
+
- **Default state stripping** — Interactive elements no longer include redundant default state fields (`enabled: true`, `visible: true`, `focused: false`). Only non-default values are serialized.
|
|
12
|
+
- **Compact JSON serialization** — All tool responses use compact JSON with empty fields stripped.
|
|
13
|
+
- **Navigation defaults to minimal** — `navigate`, `back`, `forward`, and `reload` now return minimal detail by default. Pass `detail: "summary"` or `detail: "full"` for more context.
|
|
14
|
+
- **Updated tool descriptions** — `navigate` and `observe` descriptions now guide agents through the minimal-then-find workflow.
|
|
15
|
+
|
|
16
|
+
### Removed
|
|
17
|
+
|
|
18
|
+
- Removed unused `alerts` field from page representation.
|
|
19
|
+
|
|
20
|
+
## [0.1.3] - 2026-02-22
|
|
21
|
+
|
|
22
|
+
### Added
|
|
23
|
+
|
|
24
|
+
- Benchmark suite for comparing Charlotte against Playwright MCP across real websites.
|
|
25
|
+
|
|
5
26
|
## [0.1.2] - 2026-02-22
|
|
6
27
|
|
|
7
28
|
### Changed
|
package/README.md
CHANGED
|
@@ -4,13 +4,47 @@
|
|
|
4
4
|
|
|
5
5
|
Charlotte is an MCP server that renders web pages into structured, agent-readable representations using headless Chromium. It exposes the browser's semantic understanding — accessibility tree, layout geometry, interactive elements — to AI agents via [Model Context Protocol](https://modelcontextprotocol.io/) tools, enabling navigation, observation, and interaction without vision models or brittle selectors.
|
|
6
6
|
|
|
7
|
+
## Why Charlotte?
|
|
8
|
+
|
|
9
|
+
Most browser MCP servers dump the entire accessibility tree on every call — a flat text blob that can exceed a million characters on content-heavy pages. Agents pay for all of it whether they need it or not.
|
|
10
|
+
|
|
11
|
+
Charlotte takes a different approach. It decomposes each page into a typed, structured representation — landmarks, headings, interactive elements, forms, content summaries — and lets agents control how much they receive with three detail levels. When an agent navigates to a new page, it gets a compact orientation (336 characters for Hacker News) instead of the full element dump (61,000+ characters). When it needs specifics, it asks for them.
|
|
12
|
+
|
|
13
|
+
### Benchmarks
|
|
14
|
+
|
|
15
|
+
Charlotte v0.2.0 vs Playwright MCP, measured by characters returned per tool call on real websites:
|
|
16
|
+
|
|
17
|
+
**Navigation** (first contact with a page):
|
|
18
|
+
|
|
19
|
+
| Site | Charlotte `navigate` | Playwright `browser_navigate` |
|
|
20
|
+
|:---|---:|---:|
|
|
21
|
+
| example.com | 612 | 817 |
|
|
22
|
+
| Wikipedia (AI article) | 7,667 | 1,040,636 |
|
|
23
|
+
| Hacker News | 336 | 61,230 |
|
|
24
|
+
| GitHub repo | 3,185 | 80,297 |
|
|
25
|
+
|
|
26
|
+
Charlotte's `navigate` returns minimal detail by default — landmarks, headings, and interactive element counts grouped by page region. Enough to orient, not enough to overwhelm. On Wikipedia, that's **135x smaller** than Playwright's response.
|
|
27
|
+
|
|
28
|
+
**Observation** (when the agent needs full detail):
|
|
29
|
+
|
|
30
|
+
| Site | Charlotte `observe` | Playwright `browser_snapshot` |
|
|
31
|
+
|:---|---:|---:|
|
|
32
|
+
| example.com | 612 | 498 |
|
|
33
|
+
| Wikipedia (AI article) | 521,127 | 1,040,878 |
|
|
34
|
+
| Hacker News | 30,781 | 61,143 |
|
|
35
|
+
| GitHub repo | 37,628 | 80,190 |
|
|
36
|
+
|
|
37
|
+
Even at full summary detail, Charlotte's structured format is **~2x smaller** than Playwright's raw accessibility dump — while providing typed metadata, form structures, and content summaries that a flat tree doesn't.
|
|
38
|
+
|
|
39
|
+
**The workflow difference:** Playwright agents receive 61K+ characters every time they look at Hacker News, whether they're reading headlines or looking for a login button. Charlotte agents get 336 characters on arrival, call `find({ type: "link", text: "login" })` to get exactly what they need, and never pay for the rest.
|
|
40
|
+
|
|
7
41
|
## How It Works
|
|
8
42
|
|
|
9
43
|
Charlotte maintains a persistent headless Chromium session and acts as a translation layer between the visual web and the agent's text-native reasoning. Every page is decomposed into a structured representation:
|
|
10
44
|
|
|
11
45
|
```
|
|
12
46
|
┌─────────────┐ MCP Protocol ┌──────────────────┐
|
|
13
|
-
│ AI Agent
|
|
47
|
+
│ AI Agent │<────────────────────>│ Charlotte │
|
|
14
48
|
└─────────────┘ │ │
|
|
15
49
|
│ ┌────────────┐ │
|
|
16
50
|
│ │ Renderer │ │
|
|
@@ -49,7 +83,7 @@ Agents receive landmarks, headings, interactive elements with typed metadata, bo
|
|
|
49
83
|
|
|
50
84
|
### Installation
|
|
51
85
|
|
|
52
|
-
Charlotte is published on npm as [`@ticktockbent/charlotte`](https://www.npmjs.com/package/@ticktockbent/charlotte):
|
|
86
|
+
Charlotte is listed on the [MCP Registry](https://registry.modelcontextprotocol.io) as `io.github.TickTockBent/charlotte` and published on npm as [`@ticktockbent/charlotte`](https://www.npmjs.com/package/@ticktockbent/charlotte):
|
|
53
87
|
|
|
54
88
|
```bash
|
|
55
89
|
npm install -g @ticktockbent/charlotte
|
|
@@ -116,15 +150,19 @@ Once connected, an agent can use Charlotte's tools:
|
|
|
116
150
|
|
|
117
151
|
```
|
|
118
152
|
navigate({ url: "https://example.com" })
|
|
119
|
-
|
|
120
|
-
|
|
153
|
+
// → 612 chars: landmarks, headings, interactive element counts
|
|
154
|
+
|
|
155
|
+
find({ type: "link", text: "More information" })
|
|
156
|
+
// → just the matching element with its ID
|
|
157
|
+
|
|
121
158
|
click({ element_id: "lnk-a3f1" })
|
|
122
159
|
```
|
|
123
160
|
|
|
124
161
|
### Fill out a form
|
|
125
162
|
|
|
126
163
|
```
|
|
127
|
-
|
|
164
|
+
navigate({ url: "https://httpbin.org/forms/post" })
|
|
165
|
+
find({ type: "text_input" })
|
|
128
166
|
type({ element_id: "inp-c7e2", text: "hello@example.com" })
|
|
129
167
|
select({ element_id: "sel-e8a3", value: "option-2" })
|
|
130
168
|
submit({ form_id: "frm-b1d4" })
|
|
@@ -141,22 +179,44 @@ dev_inject({ css: "body { font-size: 18px; }" })
|
|
|
141
179
|
|
|
142
180
|
## Page Representation
|
|
143
181
|
|
|
144
|
-
Charlotte returns structured representations
|
|
182
|
+
Charlotte returns structured representations with three detail levels that let agents control how much context they consume:
|
|
183
|
+
|
|
184
|
+
### Minimal (default for `navigate`)
|
|
185
|
+
|
|
186
|
+
Landmarks, headings, and interactive element counts grouped by page region. Designed for orientation — "what's on this page?" — without listing every element.
|
|
187
|
+
|
|
188
|
+
```json
|
|
189
|
+
{
|
|
190
|
+
"url": "https://news.ycombinator.com",
|
|
191
|
+
"title": "Hacker News",
|
|
192
|
+
"viewport": { "width": 1280, "height": 720 },
|
|
193
|
+
"structure": {
|
|
194
|
+
"headings": [{ "level": 1, "text": "Hacker News", "id": "h-a1b2" }]
|
|
195
|
+
},
|
|
196
|
+
"interactive_summary": {
|
|
197
|
+
"total": 93,
|
|
198
|
+
"by_landmark": {
|
|
199
|
+
"(page root)": { "link": 91, "text_input": 1, "button": 1 }
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
### Summary (default for `observe`)
|
|
206
|
+
|
|
207
|
+
Full interactive element list with typed metadata, form structures, and content summaries.
|
|
145
208
|
|
|
146
209
|
```json
|
|
147
210
|
{
|
|
148
211
|
"url": "https://example.com/dashboard",
|
|
149
212
|
"title": "Dashboard",
|
|
150
213
|
"viewport": { "width": 1280, "height": 720 },
|
|
151
|
-
"snapshot_id": 1,
|
|
152
214
|
"structure": {
|
|
153
215
|
"landmarks": [
|
|
154
216
|
{ "role": "banner", "label": "Site header", "bounds": { "x": 0, "y": 0, "w": 1280, "h": 64 } },
|
|
155
217
|
{ "role": "main", "label": "Content", "bounds": { "x": 240, "y": 64, "w": 1040, "h": 656 } }
|
|
156
218
|
],
|
|
157
|
-
"headings": [
|
|
158
|
-
{ "level": 1, "text": "Dashboard", "id": "h-1" }
|
|
159
|
-
],
|
|
219
|
+
"headings": [{ "level": 1, "text": "Dashboard", "id": "h-1a2b" }],
|
|
160
220
|
"content_summary": "main: 2 headings, 5 links, 1 form"
|
|
161
221
|
},
|
|
162
222
|
"interactive": [
|
|
@@ -165,19 +225,26 @@ Charlotte returns structured representations optimized for token efficiency:
|
|
|
165
225
|
"type": "button",
|
|
166
226
|
"label": "Create Project",
|
|
167
227
|
"bounds": { "x": 960, "y": 80, "w": 160, "h": 40 },
|
|
168
|
-
"state": {
|
|
228
|
+
"state": {}
|
|
169
229
|
}
|
|
170
230
|
],
|
|
171
|
-
"forms": []
|
|
172
|
-
"alerts": [],
|
|
173
|
-
"errors": { "console": [], "network": [] }
|
|
231
|
+
"forms": []
|
|
174
232
|
}
|
|
175
233
|
```
|
|
176
234
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
235
|
+
### Full
|
|
236
|
+
|
|
237
|
+
Everything in summary, plus all visible text content on the page.
|
|
238
|
+
|
|
239
|
+
## Detail Levels
|
|
240
|
+
|
|
241
|
+
| Level | Tokens | Use case |
|
|
242
|
+
|:---|:---|:---|
|
|
243
|
+
| `minimal` | ~50-200 | Orientation after navigation. What regions exist? How many interactive elements? |
|
|
244
|
+
| `summary` | ~500-5000 | Working with the page. Full element list, form structures, content summaries. |
|
|
245
|
+
| `full` | variable | Reading page content. All visible text included. |
|
|
246
|
+
|
|
247
|
+
Navigation tools default to `minimal`. The `observe` tool defaults to `summary`. Both accept an optional `detail` parameter to override.
|
|
181
248
|
|
|
182
249
|
## Element IDs
|
|
183
250
|
|
|
@@ -189,7 +256,7 @@ lnk-d4b9 (link) sel-e8a3 (select)
|
|
|
189
256
|
chk-f1a2 (checkbox) frm-b1d4 (form)
|
|
190
257
|
```
|
|
191
258
|
|
|
192
|
-
IDs survive unrelated DOM changes and element reordering within the same container.
|
|
259
|
+
IDs survive unrelated DOM changes and element reordering within the same container. When an agent navigates at minimal detail (no individual element IDs), it uses `find` to locate elements by text, type, or spatial proximity — the returned elements include IDs ready for interaction.
|
|
193
260
|
|
|
194
261
|
## Development
|
|
195
262
|
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ParsedAXNode } from "./accessibility-extractor.js";
|
|
2
2
|
import type { ElementIdGenerator } from "./element-id-generator.js";
|
|
3
|
-
import type { Bounds, InteractiveElement, FormRepresentation } from "../types/page-representation.js";
|
|
3
|
+
import type { Bounds, InteractiveElement, InteractiveElementType, FormRepresentation } from "../types/page-representation.js";
|
|
4
|
+
export declare const ROLE_TO_ELEMENT_TYPE: Record<string, InteractiveElementType>;
|
|
4
5
|
interface ExtractionResult {
|
|
5
6
|
elements: InteractiveElement[];
|
|
6
7
|
forms: FormRepresentation[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-extractor.d.ts","sourceRoot":"","sources":["../../src/renderer/interactive-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,KAAK,EACV,MAAM,EACN,kBAAkB,
|
|
1
|
+
{"version":3,"file":"interactive-extractor.d.ts","sourceRoot":"","sources":["../../src/renderer/interactive-extractor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAGpE,OAAO,KAAK,EACV,MAAM,EACN,kBAAkB,EAClB,sBAAsB,EAEtB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AAEzC,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAiBvE,CAAC;AAsCF,UAAU,gBAAgB;IACxB,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC/B,KAAK,EAAE,kBAAkB,EAAE,CAAC;CAC7B;AAED,qBAAa,oBAAoB;IAC/B,0BAA0B,CACxB,SAAS,EAAE,YAAY,EAAE,EACzB,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,WAAW,EAAE,kBAAkB,GAC9B,gBAAgB;IA8FnB,OAAO,CAAC,wBAAwB;CA8DjC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { isInteractiveRole } from "./accessibility-extractor.js";
|
|
2
2
|
import { computeDOMPathSignature } from "./dom-path.js";
|
|
3
|
-
|
|
4
|
-
const ROLE_TO_ELEMENT_TYPE = {
|
|
3
|
+
export const ROLE_TO_ELEMENT_TYPE = {
|
|
5
4
|
button: "button",
|
|
6
5
|
link: "link",
|
|
7
6
|
textbox: "text_input",
|
|
@@ -24,26 +23,32 @@ function mapRoleToElementType(role) {
|
|
|
24
23
|
}
|
|
25
24
|
function extractElementState(node) {
|
|
26
25
|
const props = node.properties;
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
26
|
+
const state = {};
|
|
27
|
+
// Only include non-default values to reduce serialization size.
|
|
28
|
+
// Defaults: enabled=true (omit), visible=true (omit), focused=false (omit)
|
|
29
|
+
if (props["disabled"] === true) {
|
|
30
|
+
state.enabled = false;
|
|
31
|
+
}
|
|
32
|
+
// visible defaults to true; overridden to false by bounds check downstream
|
|
33
|
+
if (props["focused"] === true) {
|
|
34
|
+
state.focused = true;
|
|
35
|
+
}
|
|
36
|
+
if (props["checked"] === "true" || props["checked"] === true || props["checked"] === "mixed") {
|
|
37
|
+
state.checked = true;
|
|
38
|
+
}
|
|
39
|
+
if (props["expanded"] !== undefined) {
|
|
40
|
+
state.expanded = props["expanded"] === true;
|
|
41
|
+
}
|
|
42
|
+
if (props["selected"] !== undefined) {
|
|
43
|
+
state.selected = props["selected"] === true;
|
|
44
|
+
}
|
|
45
|
+
if (props["required"] === true) {
|
|
46
|
+
state.required = true;
|
|
47
|
+
}
|
|
48
|
+
if (props["invalid"] !== undefined && props["invalid"] !== "false") {
|
|
49
|
+
state.invalid = true;
|
|
50
|
+
}
|
|
51
|
+
return state;
|
|
47
52
|
}
|
|
48
53
|
export class InteractiveExtractor {
|
|
49
54
|
extractInteractiveElements(rootNodes, boundsMap, idGenerator) {
|
|
@@ -62,15 +67,16 @@ export class InteractiveExtractor {
|
|
|
62
67
|
bounds = boundsMap.get(node.backendDOMNodeId) ?? null;
|
|
63
68
|
}
|
|
64
69
|
const state = extractElementState(node);
|
|
65
|
-
// If no bounds available, mark as not visible
|
|
70
|
+
// If no bounds available or zero-sized, mark as not visible and null out bounds
|
|
66
71
|
if (!bounds || (bounds.w === 0 && bounds.h === 0)) {
|
|
67
72
|
state.visible = false;
|
|
73
|
+
bounds = null;
|
|
68
74
|
}
|
|
69
75
|
const element = {
|
|
70
76
|
id: elementId,
|
|
71
77
|
type: elementType,
|
|
72
78
|
label: node.name || node.description || "",
|
|
73
|
-
bounds
|
|
79
|
+
bounds,
|
|
74
80
|
state,
|
|
75
81
|
};
|
|
76
82
|
// Add type-specific fields
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interactive-extractor.js","sourceRoot":"","sources":["../../src/renderer/interactive-extractor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"interactive-extractor.js","sourceRoot":"","sources":["../../src/renderer/interactive-extractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-pipeline.d.ts","sourceRoot":"","sources":["../../src/renderer/renderer-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EACV,kBAAkB,
|
|
1
|
+
{"version":3,"file":"renderer-pipeline.d.ts","sourceRoot":"","sources":["../../src/renderer/renderer-pipeline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAMnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D,OAAO,KAAK,EACV,kBAAkB,EAKnB,MAAM,iCAAiC,CAAC;AAGzC,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,WAAW,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,qBAAa,gBAAgB;IAOzB,OAAO,CAAC,iBAAiB;IACzB,OAAO,CAAC,kBAAkB;IAP5B,OAAO,CAAC,sBAAsB,CAAgC;IAC9D,OAAO,CAAC,eAAe,CAAyB;IAChD,OAAO,CAAC,oBAAoB,CAA8B;IAC1D,OAAO,CAAC,gBAAgB,CAA0B;gBAGxC,iBAAiB,EAAE,iBAAiB,EACpC,kBAAkB,EAAE,kBAAkB;IAG1C,MAAM,CACV,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,aAAa,GACrB,OAAO,CAAC,kBAAkB,CAAC;IAgG9B,OAAO,CAAC,yBAAyB;IAwBjC,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,gBAAgB;IAiCxB,OAAO,CAAC,eAAe;IAqCvB,OAAO,CAAC,uBAAuB;IAkC/B,OAAO,CAAC,eAAe;CAOxB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AccessibilityExtractor, isLandmarkRole, isHeadingRole } from "./accessibility-extractor.js";
|
|
1
|
+
import { AccessibilityExtractor, isLandmarkRole, isHeadingRole, isInteractiveRole } from "./accessibility-extractor.js";
|
|
2
2
|
import { LayoutExtractor, ZERO_BOUNDS } from "./layout-extractor.js";
|
|
3
|
-
import { InteractiveExtractor } from "./interactive-extractor.js";
|
|
3
|
+
import { InteractiveExtractor, ROLE_TO_ELEMENT_TYPE } from "./interactive-extractor.js";
|
|
4
4
|
import { ContentExtractor } from "./content-extractor.js";
|
|
5
5
|
import { ElementIdGenerator } from "./element-id-generator.js";
|
|
6
6
|
import { computeDOMPathSignature } from "./dom-path.js";
|
|
@@ -38,7 +38,7 @@ export class RendererPipeline {
|
|
|
38
38
|
// Step 7: Extract interactive elements and forms
|
|
39
39
|
const { elements, forms } = this.interactiveExtractor.extractInteractiveElements(rootNodes, boundsMap, freshIdGenerator);
|
|
40
40
|
// Step 8: Extract content based on detail level
|
|
41
|
-
let contentSummary
|
|
41
|
+
let contentSummary;
|
|
42
42
|
let fullContent;
|
|
43
43
|
if (options.detail !== "minimal") {
|
|
44
44
|
contentSummary = this.contentExtractor.extractSummary(rootNodes);
|
|
@@ -46,6 +46,11 @@ export class RendererPipeline {
|
|
|
46
46
|
if (options.detail === "full") {
|
|
47
47
|
fullContent = this.contentExtractor.extractFullContent(rootNodes);
|
|
48
48
|
}
|
|
49
|
+
// Step 8.5: Generate interactive summary for minimal detail
|
|
50
|
+
let interactiveSummary;
|
|
51
|
+
if (options.detail === "minimal") {
|
|
52
|
+
interactiveSummary = this.buildInteractiveSummary(rootNodes);
|
|
53
|
+
}
|
|
49
54
|
// Step 9: Atomically replace the shared ID generator
|
|
50
55
|
this.elementIdGenerator.replaceWith(freshIdGenerator);
|
|
51
56
|
// Step 10: Get page metadata
|
|
@@ -61,12 +66,12 @@ export class RendererPipeline {
|
|
|
61
66
|
structure: {
|
|
62
67
|
landmarks,
|
|
63
68
|
headings,
|
|
64
|
-
content_summary: contentSummary,
|
|
69
|
+
...(contentSummary !== undefined ? { content_summary: contentSummary } : {}),
|
|
65
70
|
...(fullContent !== undefined ? { full_content: fullContent } : {}),
|
|
66
71
|
},
|
|
67
72
|
interactive: elements,
|
|
68
73
|
forms,
|
|
69
|
-
|
|
74
|
+
...(interactiveSummary ? { interactive_summary: interactiveSummary } : {}),
|
|
70
75
|
errors: {
|
|
71
76
|
console: [],
|
|
72
77
|
network: [],
|
|
@@ -152,6 +157,33 @@ export class RendererPipeline {
|
|
|
152
157
|
}
|
|
153
158
|
return headings;
|
|
154
159
|
}
|
|
160
|
+
buildInteractiveSummary(rootNodes) {
|
|
161
|
+
const PAGE_ROOT_KEY = "(page root)";
|
|
162
|
+
const landmarkCounts = {};
|
|
163
|
+
let total = 0;
|
|
164
|
+
const traverse = (node, currentLandmarkKey) => {
|
|
165
|
+
let landmarkKey = currentLandmarkKey;
|
|
166
|
+
if (isLandmarkRole(node.role)) {
|
|
167
|
+
const label = node.name || node.role;
|
|
168
|
+
landmarkKey = label !== node.role ? `${node.role} (${label})` : node.role;
|
|
169
|
+
}
|
|
170
|
+
if (isInteractiveRole(node.role)) {
|
|
171
|
+
const elementType = ROLE_TO_ELEMENT_TYPE[node.role] ?? "button";
|
|
172
|
+
if (!landmarkCounts[landmarkKey]) {
|
|
173
|
+
landmarkCounts[landmarkKey] = {};
|
|
174
|
+
}
|
|
175
|
+
landmarkCounts[landmarkKey][elementType] = (landmarkCounts[landmarkKey][elementType] ?? 0) + 1;
|
|
176
|
+
total++;
|
|
177
|
+
}
|
|
178
|
+
for (const child of node.children) {
|
|
179
|
+
traverse(child, landmarkKey);
|
|
180
|
+
}
|
|
181
|
+
};
|
|
182
|
+
for (const root of rootNodes) {
|
|
183
|
+
traverse(root, PAGE_ROOT_KEY);
|
|
184
|
+
}
|
|
185
|
+
return { total, by_landmark: landmarkCounts };
|
|
186
|
+
}
|
|
155
187
|
getHeadingLevel(node) {
|
|
156
188
|
const level = node.properties["level"];
|
|
157
189
|
if (typeof level === "number" && level >= 1 && level <= 6) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"renderer-pipeline.js","sourceRoot":"","sources":["../../src/renderer/renderer-pipeline.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"renderer-pipeline.js","sourceRoot":"","sources":["../../src/renderer/renderer-pipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation.d.ts","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAgMN"}
|
package/dist/tools/navigation.js
CHANGED
|
@@ -2,9 +2,13 @@ import { z } from "zod";
|
|
|
2
2
|
import { CharlotteError, CharlotteErrorCode } from "../types/errors.js";
|
|
3
3
|
import { logger } from "../utils/logger.js";
|
|
4
4
|
import { renderActivePage, formatPageResponse, handleToolError, } from "./tool-helpers.js";
|
|
5
|
+
const detailSchema = z
|
|
6
|
+
.enum(["minimal", "summary", "full"])
|
|
7
|
+
.optional()
|
|
8
|
+
.describe('"minimal" (default), "summary" (includes content context), "full" (includes all text content)');
|
|
5
9
|
export function registerNavigationTools(server, deps) {
|
|
6
10
|
server.registerTool("charlotte:navigate", {
|
|
7
|
-
description: "Load a URL in the active page. Returns
|
|
11
|
+
description: "Load a URL in the active page. Returns page representation after navigation. Default minimal detail includes landmarks, headings, and interactive element counts — use charlotte:find to locate specific elements, or pass detail: 'summary' to get the full element list.",
|
|
8
12
|
inputSchema: {
|
|
9
13
|
url: z.string().describe("URL to navigate to"),
|
|
10
14
|
wait_for: z
|
|
@@ -15,8 +19,9 @@ export function registerNavigationTools(server, deps) {
|
|
|
15
19
|
.number()
|
|
16
20
|
.optional()
|
|
17
21
|
.describe("Max wait in ms (default: 30000)"),
|
|
22
|
+
detail: detailSchema,
|
|
18
23
|
},
|
|
19
|
-
}, async ({ url, wait_for, timeout }) => {
|
|
24
|
+
}, async ({ url, wait_for, timeout, detail }) => {
|
|
20
25
|
try {
|
|
21
26
|
await deps.browserManager.ensureConnected();
|
|
22
27
|
const page = deps.pageManager.getActivePage();
|
|
@@ -47,7 +52,8 @@ export function registerNavigationTools(server, deps) {
|
|
|
47
52
|
}
|
|
48
53
|
throw new CharlotteError(CharlotteErrorCode.NAVIGATION_FAILED, `Navigation to '${url}' failed: ${errorMessage}`);
|
|
49
54
|
}
|
|
50
|
-
const
|
|
55
|
+
const detailLevel = detail ?? "minimal";
|
|
56
|
+
const representation = await renderActivePage(deps, { detail: detailLevel, source: "action" });
|
|
51
57
|
return formatPageResponse(representation);
|
|
52
58
|
}
|
|
53
59
|
catch (error) {
|
|
@@ -56,8 +62,10 @@ export function registerNavigationTools(server, deps) {
|
|
|
56
62
|
});
|
|
57
63
|
server.registerTool("charlotte:back", {
|
|
58
64
|
description: "Navigate back in browser history. Returns page representation after navigation.",
|
|
59
|
-
inputSchema: {
|
|
60
|
-
|
|
65
|
+
inputSchema: {
|
|
66
|
+
detail: detailSchema,
|
|
67
|
+
},
|
|
68
|
+
}, async ({ detail }) => {
|
|
61
69
|
try {
|
|
62
70
|
await deps.browserManager.ensureConnected();
|
|
63
71
|
const page = deps.pageManager.getActivePage();
|
|
@@ -69,7 +77,8 @@ export function registerNavigationTools(server, deps) {
|
|
|
69
77
|
if (urlAfterNavigation === urlBeforeNavigation) {
|
|
70
78
|
throw new CharlotteError(CharlotteErrorCode.NAVIGATION_FAILED, "No previous page in history.");
|
|
71
79
|
}
|
|
72
|
-
const
|
|
80
|
+
const detailLevel = detail ?? "minimal";
|
|
81
|
+
const representation = await renderActivePage(deps, { detail: detailLevel, source: "action" });
|
|
73
82
|
return formatPageResponse(representation);
|
|
74
83
|
}
|
|
75
84
|
catch (error) {
|
|
@@ -78,8 +87,10 @@ export function registerNavigationTools(server, deps) {
|
|
|
78
87
|
});
|
|
79
88
|
server.registerTool("charlotte:forward", {
|
|
80
89
|
description: "Navigate forward in browser history. Returns page representation after navigation.",
|
|
81
|
-
inputSchema: {
|
|
82
|
-
|
|
90
|
+
inputSchema: {
|
|
91
|
+
detail: detailSchema,
|
|
92
|
+
},
|
|
93
|
+
}, async ({ detail }) => {
|
|
83
94
|
try {
|
|
84
95
|
await deps.browserManager.ensureConnected();
|
|
85
96
|
const page = deps.pageManager.getActivePage();
|
|
@@ -91,7 +102,8 @@ export function registerNavigationTools(server, deps) {
|
|
|
91
102
|
if (urlAfterNavigation === urlBeforeNavigation) {
|
|
92
103
|
throw new CharlotteError(CharlotteErrorCode.NAVIGATION_FAILED, "No forward page in history.");
|
|
93
104
|
}
|
|
94
|
-
const
|
|
105
|
+
const detailLevel = detail ?? "minimal";
|
|
106
|
+
const representation = await renderActivePage(deps, { detail: detailLevel, source: "action" });
|
|
95
107
|
return formatPageResponse(representation);
|
|
96
108
|
}
|
|
97
109
|
catch (error) {
|
|
@@ -105,8 +117,9 @@ export function registerNavigationTools(server, deps) {
|
|
|
105
117
|
.boolean()
|
|
106
118
|
.optional()
|
|
107
119
|
.describe("Bypass cache (default: false)"),
|
|
120
|
+
detail: detailSchema,
|
|
108
121
|
},
|
|
109
|
-
}, async ({ hard }) => {
|
|
122
|
+
}, async ({ hard, detail }) => {
|
|
110
123
|
try {
|
|
111
124
|
await deps.browserManager.ensureConnected();
|
|
112
125
|
const page = deps.pageManager.getActivePage();
|
|
@@ -125,7 +138,8 @@ export function registerNavigationTools(server, deps) {
|
|
|
125
138
|
else {
|
|
126
139
|
await page.reload({ waitUntil: "load" });
|
|
127
140
|
}
|
|
128
|
-
const
|
|
141
|
+
const detailLevel = detail ?? "minimal";
|
|
142
|
+
const representation = await renderActivePage(deps, { detail: detailLevel, source: "action" });
|
|
129
143
|
return formatPageResponse(representation);
|
|
130
144
|
}
|
|
131
145
|
catch (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,7 +25,7 @@ function isContainedWithin(boundsInner, boundsOuter) {
|
|
|
25
25
|
const NEAR_THRESHOLD_PX = 200;
|
|
26
26
|
export function registerObservationTools(server, deps) {
|
|
27
27
|
server.registerTool("charlotte:observe", {
|
|
28
|
-
description: 'Get current page state without performing any action. Use detail levels to control verbosity: "minimal" for landmarks
|
|
28
|
+
description: 'Get current page state without performing any action. Use detail levels to control verbosity: "minimal" for landmarks, headings, and interactive element counts by landmark (use charlotte:find to get specific elements with actionable IDs, or observe({ detail: "summary" }) to see all elements), "summary" (default) for content summaries and full element list, "full" for all text content.',
|
|
29
29
|
inputSchema: {
|
|
30
30
|
detail: z
|
|
31
31
|
.enum(["minimal", "summary", "full"])
|
|
@@ -265,7 +265,7 @@ export function registerObservationTools(server, deps) {
|
|
|
265
265
|
content: [
|
|
266
266
|
{
|
|
267
267
|
type: "text",
|
|
268
|
-
text: JSON.stringify(diff
|
|
268
|
+
text: JSON.stringify(diff),
|
|
269
269
|
},
|
|
270
270
|
],
|
|
271
271
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAOzD,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,sBAAsB,EACtB,eAAe,GAChB,MAAM,mBAAmB,CAAC;AAE3B;;GAEG;AACH,SAAS,cAAc,CAAC,OAAe,EAAE,OAAe;IACtD,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED;;GAEG;AACH,SAAS,iBAAiB,CAAC,WAAmB,EAAE,WAAmB;IACjE,OAAO,CACL,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC;QAC9B,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC;QAC9D,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,IAAI,WAAW,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,CAC/D,CAAC;AACJ,CAAC;AAED,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAE9B,MAAM,UAAU,wBAAwB,CACtC,MAAiB,EACjB,IAAsB;IAEtB,MAAM,CAAC,YAAY,CACjB,mBAAmB,EACnB;QACE,WAAW,EACT,
|
|
1
|
+
{"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,6 +49,7 @@ export declare function resolveElement(deps: ToolDependencies, elementId: string
|
|
|
49
49
|
export declare function renderAfterAction(deps: ToolDependencies): Promise<PageRepresentation>;
|
|
50
50
|
/**
|
|
51
51
|
* Format a PageRepresentation as an MCP tool response.
|
|
52
|
+
* Uses compact JSON (no indentation) with empty fields stripped.
|
|
52
53
|
*/
|
|
53
54
|
export declare function formatPageResponse(representation: PageRepresentation): {
|
|
54
55
|
content: Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AACpE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAC9E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AACpE,OAAO,EAAE,cAAc,EAAsB,MAAM,oBAAoB,CAAC;AAGxE,MAAM,WAAW,gBAAgB;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,EAAE,WAAW,CAAC;IACzB,gBAAgB,EAAE,gBAAgB,CAAC;IACnC,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,eAAe,CAAC;IACxB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kEAAkE;IAClE,MAAM,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,UAAU,CAAC;IAC3C,2DAA2D;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,gBAAgB,EACtB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,kBAAkB,CAAC,CAyC7B;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAClC,IAAI,EAAE,gBAAgB,EACtB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,CAAC,CA+BhD;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,kBAAkB,CAAC,CAiB7B;
|
|
1
|
+
{"version":3,"file":"tool-helpers.d.ts","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -73,15 +73,63 @@ export async function renderAfterAction(deps) {
|
|
|
73
73
|
}
|
|
74
74
|
return representation;
|
|
75
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* Strip empty/default fields from a PageRepresentation to reduce response size.
|
|
78
|
+
* Returns a cleaned copy — does not mutate the original.
|
|
79
|
+
*/
|
|
80
|
+
function stripEmptyFields(representation) {
|
|
81
|
+
const cleaned = { ...representation };
|
|
82
|
+
// When interactive_summary is present (minimal detail), strip the full
|
|
83
|
+
// interactive array and forms from the serialized output. The internal
|
|
84
|
+
// representation keeps them for find/wait_for/differ.
|
|
85
|
+
if (representation.interactive_summary) {
|
|
86
|
+
delete cleaned.interactive;
|
|
87
|
+
delete cleaned.forms;
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
// Strip empty interactive array
|
|
91
|
+
if (representation.interactive.length === 0) {
|
|
92
|
+
delete cleaned.interactive;
|
|
93
|
+
}
|
|
94
|
+
// Strip empty forms array
|
|
95
|
+
if (representation.forms.length === 0) {
|
|
96
|
+
delete cleaned.forms;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Strip empty errors
|
|
100
|
+
const hasConsoleErrors = representation.errors.console.length > 0;
|
|
101
|
+
const hasNetworkErrors = representation.errors.network.length > 0;
|
|
102
|
+
if (!hasConsoleErrors && !hasNetworkErrors) {
|
|
103
|
+
delete cleaned.errors;
|
|
104
|
+
}
|
|
105
|
+
// Strip empty structure fields
|
|
106
|
+
if (cleaned.structure) {
|
|
107
|
+
const structure = { ...cleaned.structure };
|
|
108
|
+
const originalStructure = representation.structure;
|
|
109
|
+
if (originalStructure.landmarks.length === 0) {
|
|
110
|
+
delete structure.landmarks;
|
|
111
|
+
}
|
|
112
|
+
if (originalStructure.headings.length === 0) {
|
|
113
|
+
delete structure.headings;
|
|
114
|
+
}
|
|
115
|
+
if (!originalStructure.content_summary) {
|
|
116
|
+
delete structure.content_summary;
|
|
117
|
+
}
|
|
118
|
+
cleaned.structure = structure;
|
|
119
|
+
}
|
|
120
|
+
return cleaned;
|
|
121
|
+
}
|
|
76
122
|
/**
|
|
77
123
|
* Format a PageRepresentation as an MCP tool response.
|
|
124
|
+
* Uses compact JSON (no indentation) with empty fields stripped.
|
|
78
125
|
*/
|
|
79
126
|
export function formatPageResponse(representation) {
|
|
127
|
+
const cleaned = stripEmptyFields(representation);
|
|
80
128
|
return {
|
|
81
129
|
content: [
|
|
82
130
|
{
|
|
83
131
|
type: "text",
|
|
84
|
-
text: JSON.stringify(
|
|
132
|
+
text: JSON.stringify(cleaned),
|
|
85
133
|
},
|
|
86
134
|
],
|
|
87
135
|
};
|
|
@@ -94,7 +142,7 @@ export function formatElementsResponse(elements) {
|
|
|
94
142
|
content: [
|
|
95
143
|
{
|
|
96
144
|
type: "text",
|
|
97
|
-
text: JSON.stringify(elements
|
|
145
|
+
text: JSON.stringify(elements),
|
|
98
146
|
},
|
|
99
147
|
],
|
|
100
148
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-helpers.js","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"tool-helpers.js","sourceRoot":"","sources":["../../src/tools/tool-helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,9 +46,16 @@ export interface FormRepresentation {
|
|
|
46
46
|
export interface PageStructure {
|
|
47
47
|
landmarks: Landmark[];
|
|
48
48
|
headings: Heading[];
|
|
49
|
-
content_summary
|
|
49
|
+
content_summary?: string;
|
|
50
50
|
full_content?: string;
|
|
51
51
|
}
|
|
52
|
+
export interface InteractiveSummary {
|
|
53
|
+
total: number;
|
|
54
|
+
/** Counts of interactive element types grouped by containing landmark.
|
|
55
|
+
* Keys match structure.landmarks format: "role (label)" or just "role".
|
|
56
|
+
* "(page root)" for elements not inside any landmark. */
|
|
57
|
+
by_landmark: Record<string, Record<string, number>>;
|
|
58
|
+
}
|
|
52
59
|
export interface ReloadEvent {
|
|
53
60
|
trigger: "file_change";
|
|
54
61
|
files_changed: string[];
|
|
@@ -66,7 +73,6 @@ export interface PageRepresentation {
|
|
|
66
73
|
structure: PageStructure;
|
|
67
74
|
interactive: InteractiveElement[];
|
|
68
75
|
forms: FormRepresentation[];
|
|
69
|
-
alerts: string[];
|
|
70
76
|
errors: {
|
|
71
77
|
console: Array<{
|
|
72
78
|
level: string;
|
|
@@ -78,6 +84,7 @@ export interface PageRepresentation {
|
|
|
78
84
|
statusText: string;
|
|
79
85
|
}>;
|
|
80
86
|
};
|
|
87
|
+
interactive_summary?: InteractiveSummary;
|
|
81
88
|
reload_event?: ReloadEvent;
|
|
82
89
|
delta?: import("./snapshot.js").SnapshotDiff;
|
|
83
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"page-representation.d.ts","sourceRoot":"","sources":["../../src/types/page-representation.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,MAAM;IACrB,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACtB,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,sBAAsB,GAC9B,QAAQ,GACR,MAAM,GACN,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,OAAO,GACP,QAAQ,GACR,UAAU,GACV,YAAY,GACZ,OAAO,GACP,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,sBAAsB,CAAC;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,QAAQ,EAAE,OAAO,EAAE,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"page-representation.d.ts","sourceRoot":"","sources":["../../src/types/page-representation.ts"],"names":[],"mappings":"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"}
|