💬 Commit message: Update 2026-02-11 04:13:54, 13 files, 595 lines

📁 Files changed: 13
📝 Lines changed: 595

  • PLAN.md
  • TODO.md
  • browser.d.ts
  • browser.d.ts.map
  • browser.js
  • browser.js.map
  • mcp.js
  • mcp.js.map
  • types.d.ts
  • types.d.ts.map
  • browser.ts
  • mcp.ts
  • types.ts
This commit is contained in:
Adam Ladachowski
2026-02-11 04:13:54 +01:00
parent dd26376833
commit 5a7466b67d
13 changed files with 421 additions and 218 deletions
+31
View File
@@ -6,6 +6,7 @@ export class ClaudeBrowser {
context = null;
page = null;
options;
consoleMessages = [];
constructor(options = {}) {
this.options = {
headless: options.headless ?? true,
@@ -22,6 +23,18 @@ export class ClaudeBrowser {
},
});
this.page = await this.context.newPage();
this.setupConsoleListener(this.page);
}
setupConsoleListener(page) {
page.on('console', (msg) => {
const location = msg.location();
this.consoleMessages.push({
level: msg.type(),
text: msg.text(),
timestamp: Date.now(),
location: location.url ? `${location.url}:${location.lineNumber}` : undefined,
});
});
}
async close() {
if (this.browser) {
@@ -113,11 +126,25 @@ export class ClaudeBrowser {
throw new Error('Browser not launched. Call launch() first.');
}
this.page = await this.context.newPage();
this.setupConsoleListener(this.page);
}
async eval(script) {
const page = this.ensurePage();
return page.evaluate(script);
}
getConsole(level, clear = false) {
let messages = this.consoleMessages;
if (level && level !== 'all') {
messages = messages.filter((m) => m.level === level);
}
if (clear) {
this.consoleMessages = [];
}
return messages;
}
clearConsole() {
this.consoleMessages = [];
}
async executeCommand(cmd) {
try {
switch (cmd.cmd) {
@@ -177,6 +204,10 @@ export class ClaudeBrowser {
const result = await this.eval(cmd.script);
return { ok: true, result };
}
case 'console': {
const messages = this.getConsole(cmd.level, cmd.clear);
return { ok: true, count: messages.length, messages };
}
case 'favicon': {
const result = await image.createFavicon(cmd.input, cmd.outputDir);
return { ok: true, files: result.files, outputDir: result.outputDir };