@ticktockbent/charlotte 0.2.0 → 0.4.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 (87) hide show
  1. package/CHANGELOG.md +37 -0
  2. package/README.md +95 -15
  3. package/dist/browser/page-manager.d.ts +29 -1
  4. package/dist/browser/page-manager.d.ts.map +1 -1
  5. package/dist/browser/page-manager.js +134 -20
  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 +24 -7
  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 +13 -1
  28. package/dist/server.d.ts.map +1 -1
  29. package/dist/server.js +53 -12
  30. package/dist/server.js.map +1 -1
  31. package/dist/state/artifact-store.d.ts +52 -0
  32. package/dist/state/artifact-store.d.ts.map +1 -0
  33. package/dist/state/artifact-store.js +160 -0
  34. package/dist/state/artifact-store.js.map +1 -0
  35. package/dist/tools/dev-mode.d.ts +2 -2
  36. package/dist/tools/dev-mode.d.ts.map +1 -1
  37. package/dist/tools/dev-mode.js +5 -3
  38. package/dist/tools/dev-mode.js.map +1 -1
  39. package/dist/tools/dialog.d.ts +5 -0
  40. package/dist/tools/dialog.d.ts.map +1 -0
  41. package/dist/tools/dialog.js +70 -0
  42. package/dist/tools/dialog.js.map +1 -0
  43. package/dist/tools/evaluate.d.ts +2 -2
  44. package/dist/tools/evaluate.d.ts.map +1 -1
  45. package/dist/tools/evaluate.js +4 -2
  46. package/dist/tools/evaluate.js.map +1 -1
  47. package/dist/tools/interaction.d.ts +2 -1
  48. package/dist/tools/interaction.d.ts.map +1 -1
  49. package/dist/tools/interaction.js +151 -29
  50. package/dist/tools/interaction.js.map +1 -1
  51. package/dist/tools/meta-tool.d.ts +14 -0
  52. package/dist/tools/meta-tool.d.ts.map +1 -0
  53. package/dist/tools/meta-tool.js +123 -0
  54. package/dist/tools/meta-tool.js.map +1 -0
  55. package/dist/tools/monitoring.d.ts +4 -0
  56. package/dist/tools/monitoring.d.ts.map +1 -0
  57. package/dist/tools/monitoring.js +129 -0
  58. package/dist/tools/monitoring.js.map +1 -0
  59. package/dist/tools/navigation.d.ts +2 -1
  60. package/dist/tools/navigation.d.ts.map +1 -1
  61. package/dist/tools/navigation.js +6 -4
  62. package/dist/tools/navigation.js.map +1 -1
  63. package/dist/tools/observation.d.ts +2 -1
  64. package/dist/tools/observation.d.ts.map +1 -1
  65. package/dist/tools/observation.js +151 -12
  66. package/dist/tools/observation.js.map +1 -1
  67. package/dist/tools/session.d.ts +2 -1
  68. package/dist/tools/session.d.ts.map +1 -1
  69. package/dist/tools/session.js +32 -13
  70. package/dist/tools/session.js.map +1 -1
  71. package/dist/tools/tool-groups.d.ts +42 -0
  72. package/dist/tools/tool-groups.d.ts.map +1 -0
  73. package/dist/tools/tool-groups.js +247 -0
  74. package/dist/tools/tool-groups.js.map +1 -0
  75. package/dist/tools/tool-helpers.d.ts +11 -0
  76. package/dist/tools/tool-helpers.d.ts.map +1 -1
  77. package/dist/tools/tool-helpers.js +30 -1
  78. package/dist/tools/tool-helpers.js.map +1 -1
  79. package/dist/types/config.d.ts +6 -0
  80. package/dist/types/config.d.ts.map +1 -1
  81. package/dist/types/config.js +2 -0
  82. package/dist/types/config.js.map +1 -1
  83. package/dist/types/page-representation.d.ts +8 -0
  84. package/dist/types/page-representation.d.ts.map +1 -1
  85. package/dist/utils/wait.js +1 -1
  86. package/dist/utils/wait.js.map +1 -1
  87. package/package.json +1 -1
@@ -2,13 +2,20 @@ 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, renderAfterAction, resolveElement, formatPageResponse, handleToolError, } from "./tool-helpers.js";
5
+ /** Maps short modifier names to Puppeteer KeyInput values. */
6
+ const MODIFIER_KEY_MAP = {
7
+ ctrl: "Control",
8
+ shift: "Shift",
9
+ alt: "Alt",
10
+ meta: "Meta",
11
+ };
5
12
  /**
6
13
  * Click an element by backend node ID using CDP to get coordinates,
7
14
  * or more simply by resolving to an XPath/selector and using page.click.
8
15
  *
9
16
  * The most reliable approach: use CDP to get the element's coordinates, then click at those coords.
10
17
  */
11
- async function clickElementByBackendNodeId(page, backendNodeId, clickType = "left") {
18
+ async function clickElementByBackendNodeId(page, backendNodeId, clickType = "left", modifiers = []) {
12
19
  // Get the element's box model to find clickable coordinates
13
20
  const cdpSession = await page.createCDPSession();
14
21
  try {
@@ -25,14 +32,28 @@ async function clickElementByBackendNodeId(page, backendNodeId, clickType = "lef
25
32
  const contentQuad = model.content;
26
33
  const centerX = (contentQuad[0] + contentQuad[2] + contentQuad[4] + contentQuad[6]) / 4;
27
34
  const centerY = (contentQuad[1] + contentQuad[3] + contentQuad[5] + contentQuad[7]) / 4;
28
- if (clickType === "right") {
29
- await page.mouse.click(centerX, centerY, { button: "right" });
35
+ // Hold down modifier keys before the click
36
+ for (const modifier of modifiers) {
37
+ const modifierKey = MODIFIER_KEY_MAP[modifier];
38
+ await page.keyboard.down(modifierKey);
30
39
  }
31
- else if (clickType === "double") {
32
- await page.mouse.click(centerX, centerY, { clickCount: 2 });
40
+ try {
41
+ if (clickType === "right") {
42
+ await page.mouse.click(centerX, centerY, { button: "right" });
43
+ }
44
+ else if (clickType === "double") {
45
+ await page.mouse.click(centerX, centerY, { clickCount: 2 });
46
+ }
47
+ else {
48
+ await page.mouse.click(centerX, centerY);
49
+ }
33
50
  }
34
- else {
35
- await page.mouse.click(centerX, centerY);
51
+ finally {
52
+ // Release modifier keys in reverse order (always release even if click fails)
53
+ for (const modifier of [...modifiers].reverse()) {
54
+ const modifierKey = MODIFIER_KEY_MAP[modifier];
55
+ await page.keyboard.up(modifierKey);
56
+ }
36
57
  }
37
58
  }
38
59
  finally {
@@ -45,9 +66,14 @@ async function clickElementByBackendNodeId(page, backendNodeId, clickType = "lef
45
66
  * Listens for the `framenavigated` CDP event to detect if a click caused navigation.
46
67
  * If navigation is detected within `detectionWindowMs`, waits for the page load event
47
68
  * (up to `loadTimeoutMs`). If no navigation fires, returns after `settleMs`.
69
+ *
70
+ * Also races against dialog events — if the action triggers a JavaScript dialog
71
+ * (alert, confirm, prompt, beforeunload), the action promise will block indefinitely.
72
+ * This function detects that and returns early so the caller can surface `pending_dialog`.
48
73
  */
49
74
  async function waitForPossibleNavigation(page, action, { detectionWindowMs = 500, loadTimeoutMs = 10000, settleMs = 50 } = {}) {
50
75
  let navigationDetected = false;
76
+ let dialogDetected = false;
51
77
  // Listen for navigation start via page event (fires on any navigation)
52
78
  const navigationStartPromise = new Promise((resolve) => {
53
79
  const handler = () => {
@@ -62,9 +88,33 @@ async function waitForPossibleNavigation(page, action, { detectionWindowMs = 500
62
88
  resolve();
63
89
  }, detectionWindowMs);
64
90
  });
65
- // Dispatch the action
66
- await action();
67
- // Wait for either navigation detection or detection window to expire
91
+ // Listen for dialog (blocks the action from completing)
92
+ const dialogPromise = new Promise((resolve) => {
93
+ const handler = () => {
94
+ dialogDetected = true;
95
+ page.off("dialog", handler);
96
+ resolve();
97
+ };
98
+ page.on("dialog", handler);
99
+ // Clean up on timeout — if no dialog fires, we don't need this listener
100
+ setTimeout(() => { page.off("dialog", handler); resolve(); }, detectionWindowMs);
101
+ });
102
+ // Race: action vs dialog
103
+ const actionPromise = action();
104
+ await Promise.race([
105
+ actionPromise.then(() => "action"),
106
+ dialogPromise.then(() => "dialog"),
107
+ ]);
108
+ if (dialogDetected) {
109
+ // Dialog is blocking the action. Don't await actionPromise — it will
110
+ // resolve later when the dialog is handled via charlotte:dialog.
111
+ // Guard against unhandled rejection from the fire-and-forget promise.
112
+ actionPromise.catch(() => {
113
+ logger.debug("Post-dialog action promise rejected (expected)");
114
+ });
115
+ return;
116
+ }
117
+ // Action completed normally — check for navigation
68
118
  await navigationStartPromise;
69
119
  if (navigationDetected) {
70
120
  // Navigation occurred — wait for the page to finish loading
@@ -128,6 +178,50 @@ async function hoverElementByBackendNodeId(page, backendNodeId) {
128
178
  await cdpSession.detach();
129
179
  }
130
180
  }
181
+ /**
182
+ * Get the center coordinates of an element by backend node ID.
183
+ * Scrolls the element into view first.
184
+ */
185
+ async function getElementCenter(page, backendNodeId) {
186
+ const cdpSession = await page.createCDPSession();
187
+ try {
188
+ await cdpSession.send("DOM.scrollIntoViewIfNeeded", { backendNodeId });
189
+ const { model } = await cdpSession.send("DOM.getBoxModel", {
190
+ backendNodeId,
191
+ });
192
+ if (!model) {
193
+ throw new CharlotteError(CharlotteErrorCode.ELEMENT_NOT_FOUND, "Element has no visible box model — it may be hidden or zero-sized.", "Call charlotte:observe to check the element's state.");
194
+ }
195
+ const contentQuad = model.content;
196
+ return {
197
+ x: (contentQuad[0] + contentQuad[2] + contentQuad[4] + contentQuad[6]) / 4,
198
+ y: (contentQuad[1] + contentQuad[3] + contentQuad[5] + contentQuad[7]) / 4,
199
+ };
200
+ }
201
+ finally {
202
+ await cdpSession.detach();
203
+ }
204
+ }
205
+ /**
206
+ * Drag one element to another using mouse primitives.
207
+ * Sequence: move to source → mousedown → move to target → mouseup
208
+ * Includes intermediate move steps and delays to ensure drag events fire reliably.
209
+ */
210
+ async function dragElementToElement(page, sourceBackendNodeId, targetBackendNodeId) {
211
+ const sourceCenter = await getElementCenter(page, sourceBackendNodeId);
212
+ const targetCenter = await getElementCenter(page, targetBackendNodeId);
213
+ // Move to source and press down
214
+ await page.mouse.move(sourceCenter.x, sourceCenter.y);
215
+ await page.mouse.down();
216
+ // Intermediate move to trigger dragstart (some browsers need movement to begin a drag)
217
+ await page.mouse.move(sourceCenter.x + (targetCenter.x - sourceCenter.x) * 0.25, sourceCenter.y + (targetCenter.y - sourceCenter.y) * 0.25, { steps: 5 });
218
+ await new Promise((resolve) => setTimeout(resolve, 50));
219
+ // Move to target
220
+ await page.mouse.move(targetCenter.x, targetCenter.y, { steps: 10 });
221
+ await new Promise((resolve) => setTimeout(resolve, 50));
222
+ // Release
223
+ await page.mouse.up();
224
+ }
131
225
  /**
132
226
  * Type text into an input element. Uses CDP to focus, optionally clears, then types via keyboard.
133
227
  */
@@ -207,8 +301,9 @@ async function submitFormByBackendNodeId(page, backendNodeId) {
207
301
  }
208
302
  }
209
303
  export function registerInteractionTools(server, deps) {
304
+ const tools = {};
210
305
  // ─── charlotte:click ───
211
- server.registerTool("charlotte:click", {
306
+ tools["charlotte:click"] = server.registerTool("charlotte:click", {
212
307
  description: "Click an interactive element on the page. Returns full page representation after the click.",
213
308
  inputSchema: {
214
309
  element_id: z.string().describe("Target element ID from page representation"),
@@ -216,14 +311,23 @@ export function registerInteractionTools(server, deps) {
216
311
  .enum(["left", "right", "double"])
217
312
  .optional()
218
313
  .describe('Click type: "left" (default), "right", "double"'),
314
+ modifiers: z
315
+ .array(z.enum(["ctrl", "shift", "alt", "meta"]))
316
+ .optional()
317
+ .describe('Modifier keys to hold during click: ["ctrl"], ["shift"], ["alt"], ["meta"], or combinations like ["ctrl", "shift"]'),
219
318
  },
220
- }, async ({ element_id, click_type }) => {
319
+ }, async ({ element_id, click_type, modifiers }) => {
221
320
  try {
222
321
  await deps.browserManager.ensureConnected();
223
322
  const { page, backendNodeId } = await resolveElement(deps, element_id);
224
323
  const clickVariant = click_type ?? "left";
225
- logger.info("Clicking element", { element_id, clickType: clickVariant });
226
- await waitForPossibleNavigation(page, () => clickElementByBackendNodeId(page, backendNodeId, clickVariant));
324
+ const activeModifiers = modifiers ?? [];
325
+ logger.info("Clicking element", {
326
+ element_id,
327
+ clickType: clickVariant,
328
+ modifiers: activeModifiers,
329
+ });
330
+ await waitForPossibleNavigation(page, () => clickElementByBackendNodeId(page, backendNodeId, clickVariant, activeModifiers));
227
331
  const representation = await renderAfterAction(deps);
228
332
  return formatPageResponse(representation);
229
333
  }
@@ -232,7 +336,7 @@ export function registerInteractionTools(server, deps) {
232
336
  }
233
337
  });
234
338
  // ─── charlotte:type ───
235
- server.registerTool("charlotte:type", {
339
+ tools["charlotte:type"] = server.registerTool("charlotte:type", {
236
340
  description: "Type text into an input element. Returns full page representation after typing.",
237
341
  inputSchema: {
238
342
  element_id: z.string().describe("Target input element ID"),
@@ -267,7 +371,7 @@ export function registerInteractionTools(server, deps) {
267
371
  }
268
372
  });
269
373
  // ─── charlotte:select ───
270
- server.registerTool("charlotte:select", {
374
+ tools["charlotte:select"] = server.registerTool("charlotte:select", {
271
375
  description: "Select an option in a select/dropdown element. Returns full page representation after selection.",
272
376
  inputSchema: {
273
377
  element_id: z.string().describe("Target select element ID"),
@@ -287,7 +391,7 @@ export function registerInteractionTools(server, deps) {
287
391
  }
288
392
  });
289
393
  // ─── charlotte:toggle ───
290
- server.registerTool("charlotte:toggle", {
394
+ tools["charlotte:toggle"] = server.registerTool("charlotte:toggle", {
291
395
  description: "Toggle a checkbox or switch element. Returns full page representation after toggle.",
292
396
  inputSchema: {
293
397
  element_id: z.string().describe("Target checkbox or switch element ID"),
@@ -308,7 +412,7 @@ export function registerInteractionTools(server, deps) {
308
412
  }
309
413
  });
310
414
  // ─── charlotte:submit ───
311
- server.registerTool("charlotte:submit", {
415
+ tools["charlotte:submit"] = server.registerTool("charlotte:submit", {
312
416
  description: "Submit a form. Can submit by form ID or by clicking its submit button. Returns full page representation after submission.",
313
417
  inputSchema: {
314
418
  form_id: z.string().describe("Form ID from page representation"),
@@ -349,7 +453,7 @@ export function registerInteractionTools(server, deps) {
349
453
  }
350
454
  });
351
455
  // ─── charlotte:scroll ───
352
- server.registerTool("charlotte:scroll", {
456
+ tools["charlotte:scroll"] = server.registerTool("charlotte:scroll", {
353
457
  description: "Scroll the page or a specific container. Returns full page representation after scrolling.",
354
458
  inputSchema: {
355
459
  direction: z
@@ -447,7 +551,7 @@ export function registerInteractionTools(server, deps) {
447
551
  }
448
552
  });
449
553
  // ─── charlotte:hover ───
450
- server.registerTool("charlotte:hover", {
554
+ tools["charlotte:hover"] = server.registerTool("charlotte:hover", {
451
555
  description: "Hover over an element to trigger hover states. Returns full page representation after hover.",
452
556
  inputSchema: {
453
557
  element_id: z.string().describe("Target element ID"),
@@ -465,8 +569,31 @@ export function registerInteractionTools(server, deps) {
465
569
  return handleToolError(error);
466
570
  }
467
571
  });
572
+ // ─── charlotte:drag ───
573
+ tools["charlotte:drag"] = server.registerTool("charlotte:drag", {
574
+ description: "Drag an element to another element. Uses mouse primitives to simulate drag-and-drop. Returns full page representation after the drag.",
575
+ inputSchema: {
576
+ source_id: z.string().describe("Element ID of the drag source"),
577
+ target_id: z.string().describe("Element ID of the drop target"),
578
+ },
579
+ }, async ({ source_id, target_id }) => {
580
+ try {
581
+ await deps.browserManager.ensureConnected();
582
+ const { page, backendNodeId: sourceNodeId } = await resolveElement(deps, source_id);
583
+ const { backendNodeId: targetNodeId } = await resolveElement(deps, target_id);
584
+ logger.info("Dragging element", { source_id, target_id });
585
+ await dragElementToElement(page, sourceNodeId, targetNodeId);
586
+ // Brief settle for DOM updates after drop
587
+ await new Promise((resolve) => setTimeout(resolve, 100));
588
+ const representation = await renderAfterAction(deps);
589
+ return formatPageResponse(representation);
590
+ }
591
+ catch (error) {
592
+ return handleToolError(error);
593
+ }
594
+ });
468
595
  // ─── charlotte:key ───
469
- server.registerTool("charlotte:key", {
596
+ tools["charlotte:key"] = server.registerTool("charlotte:key", {
470
597
  description: 'Press a keyboard key, optionally with modifiers. Returns full page representation after keypress.',
471
598
  inputSchema: {
472
599
  key: z
@@ -504,7 +631,7 @@ export function registerInteractionTools(server, deps) {
504
631
  }
505
632
  });
506
633
  // ─── charlotte:wait_for ───
507
- server.registerTool("charlotte:wait_for", {
634
+ tools["charlotte:wait_for"] = server.registerTool("charlotte:wait_for", {
508
635
  description: "Wait for a condition to be met on the page. Returns page representation when the condition is satisfied, or a TIMEOUT error.",
509
636
  inputSchema: {
510
637
  element_id: z
@@ -574,13 +701,8 @@ export function registerInteractionTools(server, deps) {
574
701
  return handleToolError(error);
575
702
  }
576
703
  });
704
+ return tools;
577
705
  }
578
- const MODIFIER_KEY_MAP = {
579
- ctrl: "Control",
580
- shift: "Shift",
581
- alt: "Alt",
582
- meta: "Meta",
583
- };
584
706
  /**
585
707
  * Poll for complex wait_for conditions that may involve element state checks.
586
708
  */
@@ -614,7 +736,7 @@ async function pollWaitForCondition(deps, page, condition, timeoutMs) {
614
736
  if (allSatisfied && condition.js) {
615
737
  try {
616
738
  const jsResult = await page.evaluate((expression) => {
617
- return !!eval(expression);
739
+ return !!new Function('return ' + expression)();
618
740
  }, condition.js);
619
741
  if (!jsResult)
620
742
  allSatisfied = false;
@@ -1 +1 @@
1
- {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/tools/interaction.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"interaction.js","sourceRoot":"","sources":["../../src/tools/interaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * The charlotte:tools meta-tool for runtime tool group management.
3
+ *
4
+ * Always registered regardless of profile. Allows agents to discover
5
+ * available groups and enable/disable them at runtime.
6
+ */
7
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
8
+ import type { RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js";
9
+ export type ToolRegistry = Record<string, RegisteredTool>;
10
+ /**
11
+ * Register the charlotte:tools meta-tool.
12
+ */
13
+ export declare function registerMetaTool(server: McpServer, registry: ToolRegistry): RegisteredTool;
14
+ //# sourceMappingURL=meta-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-tool.d.ts","sourceRoot":"","sources":["../../src/tools/meta-tool.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAQ9E,MAAM,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;AAiC1D;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,SAAS,EACjB,QAAQ,EAAE,YAAY,GACrB,cAAc,CAwGhB"}
@@ -0,0 +1,123 @@
1
+ /**
2
+ * The charlotte:tools meta-tool for runtime tool group management.
3
+ *
4
+ * Always registered regardless of profile. Allows agents to discover
5
+ * available groups and enable/disable them at runtime.
6
+ */
7
+ import { z } from "zod";
8
+ import { TOOL_GROUPS, ALL_GROUP_NAMES, GROUP_DESCRIPTIONS, } from "./tool-groups.js";
9
+ function getGroupStatus(registry) {
10
+ const status = {};
11
+ for (const groupName of ALL_GROUP_NAMES) {
12
+ const toolNames = TOOL_GROUPS[groupName];
13
+ const enabledCount = toolNames.filter((name) => registry[name]?.enabled === true).length;
14
+ status[groupName] = {
15
+ enabled: enabledCount === toolNames.length,
16
+ enabled_count: enabledCount,
17
+ total_count: toolNames.length,
18
+ tools: [...toolNames],
19
+ description: GROUP_DESCRIPTIONS[groupName],
20
+ };
21
+ }
22
+ return status;
23
+ }
24
+ /**
25
+ * Register the charlotte:tools meta-tool.
26
+ */
27
+ export function registerMetaTool(server, registry) {
28
+ return server.registerTool("charlotte:tools", {
29
+ description: "Manage Charlotte tool visibility. Lists available tool groups and their " +
30
+ "status. Use 'enable' or 'disable' to control which tools are loaded. " +
31
+ "Disabled tools don't appear in the tool list — enable a group to access its tools. " +
32
+ "Groups: 'interaction' for form filling, clicking, and drag-and-drop. " +
33
+ "'session' for cookie/auth management, tab switching, viewport, and network. " +
34
+ "'dev_mode' for local development serving and audits. " +
35
+ "'evaluate' for JavaScript execution. " +
36
+ "'monitoring' for console and network request logs. " +
37
+ "'dialog' for JavaScript dialog handling.",
38
+ inputSchema: {
39
+ action: z
40
+ .enum(["list", "enable", "disable"])
41
+ .optional()
42
+ .describe('"list" (default) — show all groups and status. "enable"/"disable" — toggle a group.'),
43
+ group: z
44
+ .enum(ALL_GROUP_NAMES)
45
+ .optional()
46
+ .describe("Tool group to enable or disable"),
47
+ },
48
+ }, async ({ action, group }) => {
49
+ const effectiveAction = action ?? "list";
50
+ if ((effectiveAction === "enable" || effectiveAction === "disable") && !group) {
51
+ return {
52
+ content: [
53
+ {
54
+ type: "text",
55
+ text: JSON.stringify({
56
+ error: "group is required for enable/disable actions",
57
+ }),
58
+ },
59
+ ],
60
+ isError: true,
61
+ };
62
+ }
63
+ if (effectiveAction === "enable" && group) {
64
+ const toolNames = TOOL_GROUPS[group];
65
+ let enabled = 0;
66
+ for (const name of toolNames) {
67
+ const tool = registry[name];
68
+ if (tool && !tool.enabled) {
69
+ tool.enable();
70
+ enabled++;
71
+ }
72
+ }
73
+ return {
74
+ content: [
75
+ {
76
+ type: "text",
77
+ text: JSON.stringify({
78
+ action: "enable",
79
+ group,
80
+ tools_enabled: enabled,
81
+ tools: [...toolNames],
82
+ }),
83
+ },
84
+ ],
85
+ };
86
+ }
87
+ if (effectiveAction === "disable" && group) {
88
+ const toolNames = TOOL_GROUPS[group];
89
+ let disabled = 0;
90
+ for (const name of toolNames) {
91
+ const tool = registry[name];
92
+ if (tool?.enabled) {
93
+ tool.disable();
94
+ disabled++;
95
+ }
96
+ }
97
+ return {
98
+ content: [
99
+ {
100
+ type: "text",
101
+ text: JSON.stringify({
102
+ action: "disable",
103
+ group,
104
+ tools_disabled: disabled,
105
+ tools: [...toolNames],
106
+ }),
107
+ },
108
+ ],
109
+ };
110
+ }
111
+ // Default: list
112
+ const status = getGroupStatus(registry);
113
+ return {
114
+ content: [
115
+ {
116
+ type: "text",
117
+ text: JSON.stringify({ groups: status }),
118
+ },
119
+ ],
120
+ };
121
+ });
122
+ }
123
+ //# sourceMappingURL=meta-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"meta-tool.js","sourceRoot":"","sources":["../../src/tools/meta-tool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { McpServer, RegisteredTool } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import type { ToolDependencies } from "./tool-helpers.js";
3
+ export declare function registerMonitoringTools(server: McpServer, deps: ToolDependencies): Record<string, RegisteredTool>;
4
+ //# sourceMappingURL=monitoring.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"monitoring.d.ts","sourceRoot":"","sources":["../../src/tools/monitoring.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,yCAAyC,CAAC;AAEzF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAG1D,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,gBAAgB,GACrB,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAgKhC"}