@ticktockbent/charlotte 0.3.0 → 0.4.1

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/CHANGELOG.md +34 -0
  2. package/README.md +45 -29
  3. package/dist/browser/page-manager.d.ts +21 -0
  4. package/dist/browser/page-manager.d.ts.map +1 -1
  5. package/dist/browser/page-manager.js +81 -24
  6. package/dist/browser/page-manager.js.map +1 -1
  7. package/dist/cli.d.ts +12 -0
  8. package/dist/cli.d.ts.map +1 -0
  9. package/dist/cli.js +40 -0
  10. package/dist/cli.js.map +1 -0
  11. package/dist/dev/dev-mode-state.d.ts +3 -0
  12. package/dist/dev/dev-mode-state.d.ts.map +1 -1
  13. package/dist/dev/dev-mode-state.js +5 -0
  14. package/dist/dev/dev-mode-state.js.map +1 -1
  15. package/dist/dev/static-server.d.ts +1 -0
  16. package/dist/dev/static-server.d.ts.map +1 -1
  17. package/dist/dev/static-server.js +9 -2
  18. package/dist/dev/static-server.js.map +1 -1
  19. package/dist/index.js +16 -4
  20. package/dist/index.js.map +1 -1
  21. package/dist/renderer/content-extractor.d.ts.map +1 -1
  22. package/dist/renderer/content-extractor.js +10 -4
  23. package/dist/renderer/content-extractor.js.map +1 -1
  24. package/dist/renderer/renderer-pipeline.d.ts.map +1 -1
  25. package/dist/renderer/renderer-pipeline.js +4 -1
  26. package/dist/renderer/renderer-pipeline.js.map +1 -1
  27. package/dist/server.d.ts +11 -1
  28. package/dist/server.d.ts.map +1 -1
  29. package/dist/server.js +51 -13
  30. package/dist/server.js.map +1 -1
  31. package/dist/tools/dev-mode.d.ts +2 -2
  32. package/dist/tools/dev-mode.d.ts.map +1 -1
  33. package/dist/tools/dev-mode.js +5 -3
  34. package/dist/tools/dev-mode.js.map +1 -1
  35. package/dist/tools/dialog.d.ts +2 -1
  36. package/dist/tools/dialog.d.ts.map +1 -1
  37. package/dist/tools/dialog.js +3 -1
  38. package/dist/tools/dialog.js.map +1 -1
  39. package/dist/tools/evaluate.d.ts +2 -2
  40. package/dist/tools/evaluate.d.ts.map +1 -1
  41. package/dist/tools/evaluate.js +53 -39
  42. package/dist/tools/evaluate.js.map +1 -1
  43. package/dist/tools/interaction.d.ts +2 -1
  44. package/dist/tools/interaction.d.ts.map +1 -1
  45. package/dist/tools/interaction.js +178 -26
  46. package/dist/tools/interaction.js.map +1 -1
  47. package/dist/tools/meta-tool.d.ts +14 -0
  48. package/dist/tools/meta-tool.d.ts.map +1 -0
  49. package/dist/tools/meta-tool.js +123 -0
  50. package/dist/tools/meta-tool.js.map +1 -0
  51. package/dist/tools/monitoring.d.ts +4 -0
  52. package/dist/tools/monitoring.d.ts.map +1 -0
  53. package/dist/tools/monitoring.js +129 -0
  54. package/dist/tools/monitoring.js.map +1 -0
  55. package/dist/tools/navigation.d.ts +2 -1
  56. package/dist/tools/navigation.d.ts.map +1 -1
  57. package/dist/tools/navigation.js +6 -4
  58. package/dist/tools/navigation.js.map +1 -1
  59. package/dist/tools/observation.d.ts +2 -1
  60. package/dist/tools/observation.d.ts.map +1 -1
  61. package/dist/tools/observation.js +102 -10
  62. package/dist/tools/observation.js.map +1 -1
  63. package/dist/tools/session.d.ts +2 -1
  64. package/dist/tools/session.d.ts.map +1 -1
  65. package/dist/tools/session.js +13 -11
  66. package/dist/tools/session.js.map +1 -1
  67. package/dist/tools/tool-groups.d.ts +42 -0
  68. package/dist/tools/tool-groups.d.ts.map +1 -0
  69. package/dist/tools/tool-groups.js +251 -0
  70. package/dist/tools/tool-groups.js.map +1 -0
  71. package/dist/types/config.d.ts +2 -0
  72. package/dist/types/config.d.ts.map +1 -1
  73. package/dist/types/config.js +1 -0
  74. package/dist/types/config.js.map +1 -1
  75. package/dist/types/element-id.d.ts.map +1 -1
  76. package/dist/types/element-id.js +1 -0
  77. package/dist/types/element-id.js.map +1 -1
  78. package/dist/types/page-representation.d.ts +1 -0
  79. package/dist/types/page-representation.d.ts.map +1 -1
  80. package/dist/utils/wait.js +1 -1
  81. package/dist/utils/wait.js.map +1 -1
  82. package/package.json +1 -1
@@ -0,0 +1,129 @@
1
+ import { z } from "zod";
2
+ import { logger } from "../utils/logger.js";
3
+ import { handleToolError } from "./tool-helpers.js";
4
+ export function registerMonitoringTools(server, deps) {
5
+ const tools = {};
6
+ // ─── charlotte:console ───
7
+ tools["charlotte:console"] = server.registerTool("charlotte:console", {
8
+ description: "Retrieve console messages from the active page. Returns messages at all severity levels (log, info, warning, error, debug, etc.) with timestamps. Useful for debugging JavaScript behavior.",
9
+ inputSchema: {
10
+ level: z
11
+ .enum(["all", "log", "info", "warn", "error", "debug"])
12
+ .optional()
13
+ .describe('Filter by log level. "all" (default) returns every message.'),
14
+ clear: z
15
+ .boolean()
16
+ .optional()
17
+ .describe("Clear the message buffer after retrieval (default: false)."),
18
+ },
19
+ }, async ({ level, clear }) => {
20
+ try {
21
+ await deps.browserManager.ensureConnected();
22
+ const filterLevel = level ?? "all";
23
+ const messages = deps.pageManager.getConsoleMessages(filterLevel);
24
+ logger.info("Retrieving console messages", {
25
+ level: filterLevel,
26
+ count: messages.length,
27
+ clear,
28
+ });
29
+ if (clear) {
30
+ deps.pageManager.clearConsoleMessages();
31
+ }
32
+ return {
33
+ content: [
34
+ {
35
+ type: "text",
36
+ text: JSON.stringify({
37
+ messages,
38
+ count: messages.length,
39
+ level: filterLevel,
40
+ cleared: clear ?? false,
41
+ }),
42
+ },
43
+ ],
44
+ };
45
+ }
46
+ catch (error) {
47
+ return handleToolError(error);
48
+ }
49
+ });
50
+ // ─── charlotte:requests ───
51
+ tools["charlotte:requests"] = server.registerTool("charlotte:requests", {
52
+ description: "Retrieve network request history from the active page. Returns all HTTP requests with method, status, resource type, and timestamps. Useful for debugging API calls and resource loading.",
53
+ inputSchema: {
54
+ url_pattern: z
55
+ .string()
56
+ .optional()
57
+ .describe("Filter requests by URL substring match (case-insensitive)."),
58
+ resource_type: z
59
+ .enum([
60
+ "document",
61
+ "stylesheet",
62
+ "image",
63
+ "media",
64
+ "font",
65
+ "script",
66
+ "texttrack",
67
+ "xhr",
68
+ "fetch",
69
+ "eventsource",
70
+ "websocket",
71
+ "manifest",
72
+ "other",
73
+ ])
74
+ .optional()
75
+ .describe("Filter by resource type (e.g. \"fetch\", \"xhr\", \"document\")."),
76
+ status_min: z
77
+ .number()
78
+ .optional()
79
+ .describe("Minimum HTTP status code to include (e.g. 400 for errors only)."),
80
+ clear: z
81
+ .boolean()
82
+ .optional()
83
+ .describe("Clear the request buffer after retrieval (default: false)."),
84
+ },
85
+ }, async ({ url_pattern, resource_type, status_min, clear }) => {
86
+ try {
87
+ await deps.browserManager.ensureConnected();
88
+ let requests = deps.pageManager.getNetworkRequests();
89
+ if (url_pattern) {
90
+ const lowerPattern = url_pattern.toLowerCase();
91
+ requests = requests.filter((r) => r.url.toLowerCase().includes(lowerPattern));
92
+ }
93
+ if (resource_type) {
94
+ requests = requests.filter((r) => r.resourceType === resource_type);
95
+ }
96
+ if (status_min !== undefined) {
97
+ requests = requests.filter((r) => r.status >= status_min);
98
+ }
99
+ logger.info("Retrieving network requests", {
100
+ total: deps.pageManager.getNetworkRequests().length,
101
+ filtered: requests.length,
102
+ url_pattern,
103
+ resource_type,
104
+ status_min,
105
+ clear,
106
+ });
107
+ if (clear) {
108
+ deps.pageManager.clearNetworkRequests();
109
+ }
110
+ return {
111
+ content: [
112
+ {
113
+ type: "text",
114
+ text: JSON.stringify({
115
+ requests,
116
+ count: requests.length,
117
+ cleared: clear ?? false,
118
+ }),
119
+ },
120
+ ],
121
+ };
122
+ }
123
+ catch (error) {
124
+ return handleToolError(error);
125
+ }
126
+ });
127
+ return tools;
128
+ }
129
+ //# sourceMappingURL=monitoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring.js","sourceRoot":"","sources":["../../src/tools/monitoring.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js";
2
3
  import type { ToolDependencies } from "./tool-helpers.js";
3
- export declare function registerNavigationTools(server: McpServer, deps: ToolDependencies): void;
4
+ export declare function registerNavigationTools(server: McpServer, deps: ToolDependencies): Record<string, RegisteredTool>;
4
5
  //# sourceMappingURL=navigation.d.ts.map
@@ -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;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CAgMN"}
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,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAc1D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAoMhC"}
@@ -7,7 +7,8 @@ const detailSchema = z
7
7
  .optional()
8
8
  .describe('"minimal" (default), "summary" (includes content context), "full" (includes all text content)');
9
9
  export function registerNavigationTools(server, deps) {
10
- server.registerTool("charlotte:navigate", {
10
+ const tools = {};
11
+ tools["charlotte:navigate"] = server.registerTool("charlotte:navigate", {
11
12
  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.",
12
13
  inputSchema: {
13
14
  url: z.string().describe("URL to navigate to"),
@@ -60,7 +61,7 @@ export function registerNavigationTools(server, deps) {
60
61
  return handleToolError(error);
61
62
  }
62
63
  });
63
- server.registerTool("charlotte:back", {
64
+ tools["charlotte:back"] = server.registerTool("charlotte:back", {
64
65
  description: "Navigate back in browser history. Returns page representation after navigation.",
65
66
  inputSchema: {
66
67
  detail: detailSchema,
@@ -85,7 +86,7 @@ export function registerNavigationTools(server, deps) {
85
86
  return handleToolError(error);
86
87
  }
87
88
  });
88
- server.registerTool("charlotte:forward", {
89
+ tools["charlotte:forward"] = server.registerTool("charlotte:forward", {
89
90
  description: "Navigate forward in browser history. Returns page representation after navigation.",
90
91
  inputSchema: {
91
92
  detail: detailSchema,
@@ -110,7 +111,7 @@ export function registerNavigationTools(server, deps) {
110
111
  return handleToolError(error);
111
112
  }
112
113
  });
113
- server.registerTool("charlotte:reload", {
114
+ tools["charlotte:reload"] = server.registerTool("charlotte:reload", {
114
115
  description: "Reload the current page. Returns page representation after reload.",
115
116
  inputSchema: {
116
117
  hard: z
@@ -146,5 +147,6 @@ export function registerNavigationTools(server, deps) {
146
147
  return handleToolError(error);
147
148
  }
148
149
  });
150
+ return tools;
149
151
  }
150
152
  //# sourceMappingURL=navigation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"navigation.js","sourceRoot":"","sources":["../../src/tools/navigation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import type { ToolDependencies } from "./tool-helpers.js";
3
- export declare function registerObservationTools(server: McpServer, deps: ToolDependencies): void;
3
+ import type { RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js";
4
+ export declare function registerObservationTools(server: McpServer, deps: ToolDependencies): Record<string, RegisteredTool>;
4
5
  //# sourceMappingURL=observation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAKzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAsC1D,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CA2gBN"}
1
+ {"version":3,"file":"observation.d.ts","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAK1D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAmI9E,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAmiBhC"}
@@ -3,6 +3,79 @@ import { logger } from "../utils/logger.js";
3
3
  import { CharlotteError, CharlotteErrorCode } from "../types/errors.js";
4
4
  import { diffRepresentations } from "../state/differ.js";
5
5
  import { renderActivePage, resolveElement, formatPageResponse, formatElementsResponse, handleToolError, } from "./tool-helpers.js";
6
+ /**
7
+ * Query the DOM by CSS selector and register matched elements with
8
+ * the ElementIdGenerator so their IDs work with interaction tools.
9
+ */
10
+ async function findBySelector(page, deps, selector) {
11
+ const cdpSession = await page.createCDPSession();
12
+ try {
13
+ // Get the document root
14
+ const { root } = await cdpSession.send("DOM.getDocument", { depth: 0 });
15
+ // Query all matching nodes
16
+ const { nodeIds } = await cdpSession.send("DOM.querySelectorAll", {
17
+ nodeId: root.nodeId,
18
+ selector,
19
+ });
20
+ const results = [];
21
+ for (const nodeId of nodeIds) {
22
+ try {
23
+ // Get node details including backendNodeId
24
+ const { node } = await cdpSession.send("DOM.describeNode", { nodeId });
25
+ const backendNodeId = node.backendNodeId;
26
+ const tag = node.nodeName.toLowerCase();
27
+ // Get text content via Runtime
28
+ const { object } = await cdpSession.send("DOM.resolveNode", { nodeId });
29
+ let textContent = "";
30
+ if (object?.objectId) {
31
+ const textResult = await cdpSession.send("Runtime.callFunctionOn", {
32
+ objectId: object.objectId,
33
+ functionDeclaration: `function() { return (this.textContent || '').trim().substring(0, 100); }`,
34
+ returnByValue: true,
35
+ });
36
+ textContent = textResult.result?.value ?? "";
37
+ }
38
+ // Get bounds via box model
39
+ let bounds = null;
40
+ try {
41
+ const { model } = await cdpSession.send("DOM.getBoxModel", { backendNodeId });
42
+ if (model) {
43
+ const contentQuad = model.content;
44
+ const minX = Math.min(contentQuad[0], contentQuad[2], contentQuad[4], contentQuad[6]);
45
+ const minY = Math.min(contentQuad[1], contentQuad[3], contentQuad[5], contentQuad[7]);
46
+ const maxX = Math.max(contentQuad[0], contentQuad[2], contentQuad[4], contentQuad[6]);
47
+ const maxY = Math.max(contentQuad[1], contentQuad[3], contentQuad[5], contentQuad[7]);
48
+ bounds = { x: minX, y: minY, w: maxX - minX, h: maxY - minY };
49
+ }
50
+ }
51
+ catch {
52
+ // Element may be hidden or zero-sized — leave bounds as null
53
+ }
54
+ // Register with ElementIdGenerator so the ID works with click, hover, drag, etc.
55
+ const elementId = deps.elementIdGenerator.generateId("dom_element", tag, textContent.substring(0, 50), {
56
+ nearestLandmarkRole: null,
57
+ nearestLandmarkLabel: null,
58
+ nearestLabelledContainer: null,
59
+ siblingIndex: results.length,
60
+ }, backendNodeId);
61
+ results.push({
62
+ id: elementId,
63
+ tag,
64
+ text: textContent,
65
+ bounds,
66
+ });
67
+ }
68
+ catch {
69
+ // Skip nodes that can't be described (e.g. pseudo-elements)
70
+ continue;
71
+ }
72
+ }
73
+ return results;
74
+ }
75
+ finally {
76
+ await cdpSession.detach();
77
+ }
78
+ }
6
79
  /**
7
80
  * Compute Euclidean distance between the centers of two bounding boxes.
8
81
  */
@@ -24,7 +97,8 @@ function isContainedWithin(boundsInner, boundsOuter) {
24
97
  }
25
98
  const NEAR_THRESHOLD_PX = 200;
26
99
  export function registerObservationTools(server, deps) {
27
- server.registerTool("charlotte:observe", {
100
+ const tools = {};
101
+ tools["charlotte:observe"] = server.registerTool("charlotte:observe", {
28
102
  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
103
  inputSchema: {
30
104
  detail: z
@@ -57,8 +131,8 @@ export function registerObservationTools(server, deps) {
57
131
  return handleToolError(error);
58
132
  }
59
133
  });
60
- server.registerTool("charlotte:find", {
61
- description: "Search for elements matching criteria. Filters interactive elements by text, role, type, or spatial proximity.",
134
+ tools["charlotte:find"] = server.registerTool("charlotte:find", {
135
+ description: "Search for elements matching criteria. Filters interactive elements by text, role, type, or spatial proximity. Use the selector parameter to find DOM elements by CSS selector — this reaches elements not in the accessibility tree (custom widgets, non-semantic divs). Selector results return Charlotte element IDs usable with click, hover, drag, etc.",
62
136
  inputSchema: {
63
137
  text: z
64
138
  .string()
@@ -77,11 +151,28 @@ export function registerObservationTools(server, deps) {
77
151
  .string()
78
152
  .optional()
79
153
  .describe("Element ID — find elements geometrically contained within this one's bounds"),
154
+ selector: z
155
+ .string()
156
+ .optional()
157
+ .describe("CSS selector to query the DOM directly. Returns elements that may not be in the accessibility tree. Results include Charlotte element IDs for use with interaction tools."),
80
158
  },
81
- }, async ({ text, role, type, near, within }) => {
159
+ }, async ({ text, role, type, near, within, selector }) => {
82
160
  try {
83
161
  await deps.browserManager.ensureConnected();
84
- logger.info("Finding elements", { text, role, type, near, within });
162
+ logger.info("Finding elements", { text, role, type, near, within, selector });
163
+ // CSS selector mode: query DOM directly, bypass accessibility tree
164
+ if (selector) {
165
+ const page = deps.pageManager.getActivePage();
166
+ const domElements = await findBySelector(page, deps, selector);
167
+ return {
168
+ content: [
169
+ {
170
+ type: "text",
171
+ text: JSON.stringify(domElements),
172
+ },
173
+ ],
174
+ };
175
+ }
85
176
  // Render the page to get current elements
86
177
  const representation = await renderActivePage(deps, { detail: "minimal" });
87
178
  let matchingElements = [...representation.interactive];
@@ -160,7 +251,7 @@ export function registerObservationTools(server, deps) {
160
251
  return handleToolError(error);
161
252
  }
162
253
  });
163
- server.registerTool("charlotte:screenshot", {
254
+ tools["charlotte:screenshot"] = server.registerTool("charlotte:screenshot", {
164
255
  description: "Capture a visual screenshot. Fallback for when structured representation isn't sufficient (complex visualizations, canvas elements, images). Use save: true to persist as a file artifact that can be referenced later.",
165
256
  inputSchema: {
166
257
  selector: z
@@ -250,7 +341,7 @@ export function registerObservationTools(server, deps) {
250
341
  }
251
342
  });
252
343
  // ─── charlotte:screenshots ───
253
- server.registerTool("charlotte:screenshots", {
344
+ tools["charlotte:screenshots"] = server.registerTool("charlotte:screenshots", {
254
345
  description: "List all saved screenshot artifacts. Returns metadata for each saved screenshot including ID, filename, page URL, and timestamp.",
255
346
  inputSchema: {},
256
347
  }, async () => {
@@ -283,7 +374,7 @@ export function registerObservationTools(server, deps) {
283
374
  }
284
375
  });
285
376
  // ─── charlotte:screenshot_get ───
286
- server.registerTool("charlotte:screenshot_get", {
377
+ tools["charlotte:screenshot_get"] = server.registerTool("charlotte:screenshot_get", {
287
378
  description: "Retrieve a previously saved screenshot artifact by its ID. Returns the image data and metadata.",
288
379
  inputSchema: {
289
380
  id: z.string().describe("Screenshot artifact ID (e.g. ss-20260224103000-a1b2c3)"),
@@ -329,7 +420,7 @@ export function registerObservationTools(server, deps) {
329
420
  }
330
421
  });
331
422
  // ─── charlotte:screenshot_delete ───
332
- server.registerTool("charlotte:screenshot_delete", {
423
+ tools["charlotte:screenshot_delete"] = server.registerTool("charlotte:screenshot_delete", {
333
424
  description: "Delete a saved screenshot artifact by its ID. Removes the file from disk.",
334
425
  inputSchema: {
335
426
  id: z.string().describe("Screenshot artifact ID to delete"),
@@ -358,7 +449,7 @@ export function registerObservationTools(server, deps) {
358
449
  }
359
450
  });
360
451
  // ─── charlotte:diff ───
361
- server.registerTool("charlotte:diff", {
452
+ tools["charlotte:diff"] = server.registerTool("charlotte:diff", {
362
453
  description: "Compare current page state to a previous snapshot. Returns structural diff showing added, removed, moved, and changed elements.",
363
454
  inputSchema: {
364
455
  snapshot_id: z
@@ -411,5 +502,6 @@ export function registerObservationTools(server, deps) {
411
502
  return handleToolError(error);
412
503
  }
413
504
  });
505
+ return tools;
414
506
  }
415
507
  //# sourceMappingURL=observation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/tools/observation.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js";
2
3
  import type { ToolDependencies } from "./tool-helpers.js";
3
- export declare function registerSessionTools(server: McpServer, deps: ToolDependencies): void;
4
+ export declare function registerSessionTools(server: McpServer, deps: ToolDependencies): Record<string, RegisteredTool>;
4
5
  //# sourceMappingURL=session.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAoB1D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,IAAI,CA4jBN"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/tools/session.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAoB1D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgkBhC"}
@@ -14,8 +14,9 @@ const CookieSchema = z.object({
14
14
  .describe("SameSite attribute"),
15
15
  });
16
16
  export function registerSessionTools(server, deps) {
17
+ const tools = {};
17
18
  // ─── charlotte:get_cookies ───
18
- server.registerTool("charlotte:get_cookies", {
19
+ tools["charlotte:get_cookies"] = server.registerTool("charlotte:get_cookies", {
19
20
  description: "Get cookies for the active page. Optionally filter by URL(s). Returns cookie name, value, domain, path, and flags.",
20
21
  inputSchema: {
21
22
  urls: z
@@ -57,7 +58,7 @@ export function registerSessionTools(server, deps) {
57
58
  }
58
59
  });
59
60
  // ─── charlotte:clear_cookies ───
60
- server.registerTool("charlotte:clear_cookies", {
61
+ tools["charlotte:clear_cookies"] = server.registerTool("charlotte:clear_cookies", {
61
62
  description: "Clear cookies from the browser. Optionally filter by name(s) to remove specific cookies. Without a filter, clears all cookies for the current page.",
62
63
  inputSchema: {
63
64
  names: z
@@ -93,7 +94,7 @@ export function registerSessionTools(server, deps) {
93
94
  }
94
95
  });
95
96
  // ─── charlotte:set_cookies ───
96
- server.registerTool("charlotte:set_cookies", {
97
+ tools["charlotte:set_cookies"] = server.registerTool("charlotte:set_cookies", {
97
98
  description: "Set cookies on the active page. Cookies persist for subsequent navigations within matching domains.",
98
99
  inputSchema: {
99
100
  cookies: z
@@ -137,7 +138,7 @@ export function registerSessionTools(server, deps) {
137
138
  }
138
139
  });
139
140
  // ─── charlotte:set_headers ───
140
- server.registerTool("charlotte:set_headers", {
141
+ tools["charlotte:set_headers"] = server.registerTool("charlotte:set_headers", {
141
142
  description: "Set extra HTTP headers for subsequent requests. Headers persist for all navigations on the active page.",
142
143
  inputSchema: {
143
144
  headers: z
@@ -169,7 +170,7 @@ export function registerSessionTools(server, deps) {
169
170
  }
170
171
  });
171
172
  // ─── charlotte:configure ───
172
- server.registerTool("charlotte:configure", {
173
+ tools["charlotte:configure"] = server.registerTool("charlotte:configure", {
173
174
  description: "Configure Charlotte runtime settings. Changes take effect immediately.",
174
175
  inputSchema: {
175
176
  snapshot_depth: z
@@ -228,7 +229,7 @@ export function registerSessionTools(server, deps) {
228
229
  }
229
230
  });
230
231
  // ─── charlotte:tabs ───
231
- server.registerTool("charlotte:tabs", {
232
+ tools["charlotte:tabs"] = server.registerTool("charlotte:tabs", {
232
233
  description: "List all open browser tabs with their URLs, titles, and active status.",
233
234
  inputSchema: {},
234
235
  }, async () => {
@@ -249,7 +250,7 @@ export function registerSessionTools(server, deps) {
249
250
  }
250
251
  });
251
252
  // ─── charlotte:tab_open ───
252
- server.registerTool("charlotte:tab_open", {
253
+ tools["charlotte:tab_open"] = server.registerTool("charlotte:tab_open", {
253
254
  description: "Open a new browser tab. Optionally navigate to a URL. The new tab becomes the active tab.",
254
255
  inputSchema: {
255
256
  url: z
@@ -282,7 +283,7 @@ export function registerSessionTools(server, deps) {
282
283
  }
283
284
  });
284
285
  // ─── charlotte:tab_switch ───
285
- server.registerTool("charlotte:tab_switch", {
286
+ tools["charlotte:tab_switch"] = server.registerTool("charlotte:tab_switch", {
286
287
  description: "Switch to a different browser tab by its tab ID. Returns the page representation of the activated tab.",
287
288
  inputSchema: {
288
289
  tab_id: z.string().describe("ID of the tab to switch to"),
@@ -302,7 +303,7 @@ export function registerSessionTools(server, deps) {
302
303
  }
303
304
  });
304
305
  // ─── charlotte:tab_close ───
305
- server.registerTool("charlotte:tab_close", {
306
+ tools["charlotte:tab_close"] = server.registerTool("charlotte:tab_close", {
306
307
  description: "Close a browser tab by its ID. If the closed tab was active, switches to the first remaining tab.",
307
308
  inputSchema: {
308
309
  tab_id: z.string().describe("ID of the tab to close"),
@@ -336,7 +337,7 @@ export function registerSessionTools(server, deps) {
336
337
  tablet: { width: 768, height: 1024 },
337
338
  desktop: { width: 1280, height: 720 },
338
339
  };
339
- server.registerTool("charlotte:viewport", {
340
+ tools["charlotte:viewport"] = server.registerTool("charlotte:viewport", {
340
341
  description: "Change the browser viewport dimensions. Use a device preset or specify custom width/height. Returns page representation at the new viewport size.",
341
342
  inputSchema: {
342
343
  width: z
@@ -416,7 +417,7 @@ export function registerSessionTools(server, deps) {
416
417
  latency: 0,
417
418
  },
418
419
  };
419
- server.registerTool("charlotte:network", {
420
+ tools["charlotte:network"] = server.registerTool("charlotte:network", {
420
421
  description: "Configure network conditions for the active page. Set throttling presets, block URL patterns, or enable request logging.",
421
422
  inputSchema: {
422
423
  throttle: z
@@ -463,5 +464,6 @@ export function registerSessionTools(server, deps) {
463
464
  return handleToolError(error);
464
465
  }
465
466
  });
467
+ return tools;
466
468
  }
467
469
  //# sourceMappingURL=session.js.map