+17
-2
@@ -9,10 +9,16 @@ import type { CDPTarget, CDPVersion, NavigateResult, ScreenshotResult, EvaluateResult, CometState } from "./types.js"; | ||
| private maxReconnectAttempts; | ||
| private isReconnecting; | ||
| private lastSuccessfulOperation; | ||
| get isConnected(): boolean; | ||
| get currentState(): CometState; | ||
| /** | ||
| * Auto-reconnect wrapper for operations | ||
| * Check if the connection is still alive | ||
| */ | ||
| private isConnectionAlive; | ||
| /** | ||
| * Auto-reconnect wrapper for operations with improved error handling | ||
| */ | ||
| private withAutoReconnect; | ||
| /** | ||
| * Reconnect to the last connected tab | ||
| * Reconnect to the last connected tab with improved retry logic | ||
| */ | ||
@@ -43,3 +49,12 @@ reconnect(): Promise<string>; | ||
| /** | ||
| * Check if Comet process is running (regardless of debug port) | ||
| */ | ||
| private isCometProcessRunning; | ||
| /** | ||
| * Kill any running Comet process | ||
| */ | ||
| private killComet; | ||
| /** | ||
| * Start Comet browser with remote debugging enabled | ||
| * Automatically restarts Comet if it's running without debug port | ||
| */ | ||
@@ -46,0 +61,0 @@ startComet(port?: number): Promise<string>; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cdp-client.d.ts","sourceRoot":"","sources":["../src/cdp-client.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"cdp-client.d.ts","sourceRoot":"","sources":["../src/cdp-client.ts"],"names":[],"mappings":"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"} |
+171
-27
@@ -15,3 +15,5 @@ // CDP Client wrapper for Comet browser control | ||
| reconnectAttempts = 0; | ||
| maxReconnectAttempts = 3; | ||
| maxReconnectAttempts = 5; | ||
| isReconnecting = false; | ||
| lastSuccessfulOperation = Date.now(); | ||
| get isConnected() { | ||
@@ -24,17 +26,60 @@ return this.state.connected && this.client !== null; | ||
| /** | ||
| * Auto-reconnect wrapper for operations | ||
| * Check if the connection is still alive | ||
| */ | ||
| async isConnectionAlive() { | ||
| if (!this.client) | ||
| return false; | ||
| try { | ||
| await this.client.Runtime.evaluate({ expression: '1' }); | ||
| return true; | ||
| } | ||
| catch { | ||
| return false; | ||
| } | ||
| } | ||
| /** | ||
| * Auto-reconnect wrapper for operations with improved error handling | ||
| */ | ||
| async withAutoReconnect(operation) { | ||
| // If already reconnecting, wait for it to complete | ||
| if (this.isReconnecting) { | ||
| await new Promise(resolve => setTimeout(resolve, 1000)); | ||
| } | ||
| try { | ||
| return await operation(); | ||
| const result = await operation(); | ||
| this.lastSuccessfulOperation = Date.now(); | ||
| this.reconnectAttempts = 0; // Reset on success | ||
| return result; | ||
| } | ||
| catch (error) { | ||
| const errorMessage = error instanceof Error ? error.message : String(error); | ||
| if (errorMessage.includes('WebSocket') || errorMessage.includes('CLOSED') || errorMessage.includes('not open')) { | ||
| if (this.reconnectAttempts < this.maxReconnectAttempts) { | ||
| this.reconnectAttempts++; | ||
| console.log(`Connection lost, attempting reconnect (${this.reconnectAttempts}/${this.maxReconnectAttempts})...`); | ||
| // Connection-related errors that warrant reconnection | ||
| const connectionErrors = [ | ||
| 'WebSocket', | ||
| 'CLOSED', | ||
| 'not open', | ||
| 'disconnected', | ||
| 'ECONNREFUSED', | ||
| 'ECONNRESET', | ||
| 'Protocol error', | ||
| 'Target closed', | ||
| 'Session closed' | ||
| ]; | ||
| const isConnectionError = connectionErrors.some(e => errorMessage.includes(e)); | ||
| if (isConnectionError && this.reconnectAttempts < this.maxReconnectAttempts) { | ||
| this.reconnectAttempts++; | ||
| this.isReconnecting = true; | ||
| try { | ||
| // Wait a bit before reconnecting (exponential backoff) | ||
| const delay = Math.min(1000 * Math.pow(2, this.reconnectAttempts - 1), 5000); | ||
| await new Promise(resolve => setTimeout(resolve, delay)); | ||
| await this.reconnect(); | ||
| this.isReconnecting = false; | ||
| // Retry the operation | ||
| return await operation(); | ||
| } | ||
| catch (reconnectError) { | ||
| this.isReconnecting = false; | ||
| throw reconnectError; | ||
| } | ||
| } | ||
@@ -45,11 +90,38 @@ throw error; | ||
| /** | ||
| * Reconnect to the last connected tab | ||
| * Reconnect to the last connected tab with improved retry logic | ||
| */ | ||
| async reconnect() { | ||
| // Cleanup old connection | ||
| if (this.client) { | ||
| try { | ||
| await this.client.close(); | ||
| } | ||
| catch { | ||
| // Ignore close errors | ||
| } | ||
| } | ||
| this.state.connected = false; | ||
| this.client = null; | ||
| // Try to reconnect to the last target or find a suitable one | ||
| // Verify Comet is still running | ||
| try { | ||
| await this.getVersion(); | ||
| } | ||
| catch { | ||
| // Comet might have crashed, try to restart | ||
| try { | ||
| await this.startComet(this.state.port); | ||
| await new Promise(resolve => setTimeout(resolve, 2000)); | ||
| } | ||
| catch { | ||
| throw new Error('Cannot connect to Comet. Please ensure Comet is running with --remote-debugging-port=9222'); | ||
| } | ||
| } | ||
| // Try to reconnect to the last target | ||
| if (this.lastTargetId) { | ||
| try { | ||
| return await this.connect(this.lastTargetId); | ||
| const targets = await this.listTargets(); | ||
| const lastTarget = targets.find(t => t.id === this.lastTargetId); | ||
| if (lastTarget) { | ||
| return await this.connect(this.lastTargetId); | ||
| } | ||
| } | ||
@@ -60,7 +132,8 @@ catch { | ||
| } | ||
| // Find the best target to connect to | ||
| // Find the best target to connect to (prioritize main Perplexity tab) | ||
| const targets = await this.listTargets(); | ||
| const perplexityTab = targets.find(t => t.type === 'page' && t.url.includes('perplexity.ai') && !t.url.includes('sidecar')); | ||
| const sidecarTab = targets.find(t => t.type === 'page' && t.url.includes('sidecar')); | ||
| const target = perplexityTab || sidecarTab || targets.find(t => t.type === 'page'); | ||
| const anyPage = targets.find(t => t.type === 'page' && t.url !== 'about:blank'); | ||
| const target = perplexityTab || sidecarTab || anyPage; | ||
| if (target) { | ||
@@ -131,14 +204,52 @@ return await this.connect(target.id); | ||
| /** | ||
| * Check if Comet process is running (regardless of debug port) | ||
| */ | ||
| async isCometProcessRunning() { | ||
| return new Promise((resolve) => { | ||
| const check = spawn('pgrep', ['-f', 'Comet.app']); | ||
| check.on('close', (code) => { | ||
| resolve(code === 0); | ||
| }); | ||
| }); | ||
| } | ||
| /** | ||
| * Kill any running Comet process | ||
| */ | ||
| async killComet() { | ||
| return new Promise((resolve) => { | ||
| const kill = spawn('pkill', ['-f', 'Comet.app']); | ||
| kill.on('close', () => { | ||
| // Wait a bit for process to fully terminate | ||
| setTimeout(resolve, 1000); | ||
| }); | ||
| }); | ||
| } | ||
| /** | ||
| * Start Comet browser with remote debugging enabled | ||
| * Automatically restarts Comet if it's running without debug port | ||
| */ | ||
| async startComet(port = DEFAULT_PORT) { | ||
| this.state.port = port; | ||
| // Check if Comet is already running with debugging | ||
| // Check if Comet is already running WITH debugging enabled | ||
| try { | ||
| const version = await this.getVersion(); | ||
| return `Comet already running: ${version.Browser}`; | ||
| const controller = new AbortController(); | ||
| const timeoutId = setTimeout(() => controller.abort(), 2000); | ||
| const response = await fetch(`http://localhost:${port}/json/version`, { | ||
| signal: controller.signal | ||
| }); | ||
| clearTimeout(timeoutId); | ||
| if (response.ok) { | ||
| const version = await response.json(); | ||
| return `Comet already running with debug port: ${version.Browser}`; | ||
| } | ||
| } | ||
| catch { | ||
| // Not running, start it | ||
| // Debug port not available, check if Comet is running without it | ||
| const isRunning = await this.isCometProcessRunning(); | ||
| if (isRunning) { | ||
| // Comet is running but without debug port - restart it | ||
| await this.killComet(); | ||
| } | ||
| } | ||
| // Start Comet with debugging enabled | ||
| return new Promise((resolve, reject) => { | ||
@@ -153,3 +264,3 @@ this.cometProcess = spawn(COMET_PATH, [ | ||
| // Wait for Comet to start | ||
| const maxAttempts = 30; | ||
| const maxAttempts = 40; // 20 seconds total | ||
| let attempts = 0; | ||
@@ -159,15 +270,25 @@ const checkReady = async () => { | ||
| try { | ||
| const version = await this.getVersion(); | ||
| resolve(`Comet started: ${version.Browser}`); | ||
| const controller = new AbortController(); | ||
| const timeoutId = setTimeout(() => controller.abort(), 2000); | ||
| const response = await fetch(`http://localhost:${port}/json/version`, { | ||
| signal: controller.signal | ||
| }); | ||
| clearTimeout(timeoutId); | ||
| if (response.ok) { | ||
| const version = await response.json(); | ||
| resolve(`Comet started with debug port ${port}: ${version.Browser}`); | ||
| return; | ||
| } | ||
| } | ||
| catch { | ||
| if (attempts < maxAttempts) { | ||
| setTimeout(checkReady, 500); | ||
| } | ||
| else { | ||
| reject(new Error("Timeout waiting for Comet to start")); | ||
| } | ||
| // Keep trying | ||
| } | ||
| if (attempts < maxAttempts) { | ||
| setTimeout(checkReady, 500); | ||
| } | ||
| else { | ||
| reject(new Error(`Timeout waiting for Comet to start. Please try manually: /Applications/Comet.app/Contents/MacOS/Comet --remote-debugging-port=${port}`)); | ||
| } | ||
| }; | ||
| setTimeout(checkReady, 1000); | ||
| setTimeout(checkReady, 1500); | ||
| }); | ||
@@ -216,2 +337,25 @@ } | ||
| ]); | ||
| // Set actual window size (1440x900) to ensure consistent UI | ||
| try { | ||
| // Get window ID and set bounds | ||
| const { windowId } = await this.client.Browser.getWindowForTarget({ targetId }); | ||
| await this.client.Browser.setWindowBounds({ | ||
| windowId, | ||
| bounds: { width: 1440, height: 900, windowState: 'normal' }, | ||
| }); | ||
| } | ||
| catch (e) { | ||
| // Fallback to emulation if Browser API fails | ||
| try { | ||
| await this.client.Emulation.setDeviceMetricsOverride({ | ||
| width: 1440, | ||
| height: 900, | ||
| deviceScaleFactor: 1, | ||
| mobile: false, | ||
| }); | ||
| } | ||
| catch { | ||
| // Continue anyway | ||
| } | ||
| } | ||
| this.state.connected = true; | ||
@@ -411,3 +555,3 @@ this.state.activeTabId = targetId; | ||
| async newTab(url) { | ||
| const response = await fetch(`http://localhost:${this.state.port}/json/new${url ? `?${url}` : ""}`); | ||
| const response = await fetch(`http://localhost:${this.state.port}/json/new${url ? `?${url}` : ""}`, { method: 'PUT' }); | ||
| if (!response.ok) { | ||
@@ -414,0 +558,0 @@ throw new Error(`Failed to create new tab: ${response.status}`); |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"cdp-client.js","sourceRoot":"","sources":["../src/cdp-client.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"cdp-client.js","sourceRoot":"","sources":["../src/cdp-client.ts"],"names":[],"mappings":"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"} |
@@ -22,3 +22,3 @@ import type { CometAIResponse } from "./types.js"; | ||
| /** | ||
| * Submit the current prompt | ||
| * Submit the current prompt - tries multiple strategies | ||
| */ | ||
@@ -48,4 +48,3 @@ private submitPrompt; | ||
| * Get current agent status and progress (for polling) | ||
| * Improved: Checks for stop button visibility, handles sidecar vs main tab, | ||
| * extracts response from current task context | ||
| * Gets fresh data each time, extracts URL from actual browsing tab | ||
| */ | ||
@@ -52,0 +51,0 @@ getAgentStatus(): Promise<{ |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"comet-ai.d.ts","sourceRoot":"","sources":["../src/comet-ai.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAoClD,qBAAa,OAAO;IAClB,OAAO,CAAC,gBAAgB,CAAc;IAEtC;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY9D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAwBF;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CjD;;OAEG;YACW,YAAY;IAoC1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAsDxE;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAS5E;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAwB3C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB3C;;;;OAIG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;QACzC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAmJF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CA0BpC;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"} | ||
| {"version":3,"file":"comet-ai.d.ts","sourceRoot":"","sources":["../src/comet-ai.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAoClD,qBAAa,OAAO;IAClB,OAAO,CAAC,gBAAgB,CAAc;IAEtC;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAY9D;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC;QAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;QAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;IAwBF;;OAEG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CjD;;OAEG;YACW,YAAY;IAwH1B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;IAKnC;;OAEG;IACG,eAAe,CAAC,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAsDxE;;OAEG;IACG,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAS5E;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,MAAM,CAAC;IAwB3C;;OAEG;IACG,iBAAiB,IAAI,OAAO,CAAC,OAAO,CAAC;IAgB3C;;;OAGG;IACG,cAAc,IAAI,OAAO,CAAC;QAC9B,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,WAAW,CAAC;QACzC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,WAAW,EAAE,MAAM,CAAC;QACpB,QAAQ,EAAE,MAAM,CAAC;QACjB,aAAa,EAAE,OAAO,CAAC;QACvB,gBAAgB,EAAE,MAAM,CAAC;KAC1B,CAAC;IAwJF;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,OAAO,CAAC;CA0BpC;AAED,eAAO,MAAM,OAAO,SAAgB,CAAC"} |
+187
-102
@@ -115,37 +115,118 @@ // Comet AI interaction module | ||
| /** | ||
| * Submit the current prompt | ||
| * Submit the current prompt - tries multiple strategies | ||
| */ | ||
| async submitPrompt() { | ||
| // Find and click submit button (Perplexity uses an arrow button) | ||
| const result = await cometClient.evaluate(` | ||
| // Wait a moment for the UI to register the input | ||
| await new Promise(resolve => setTimeout(resolve, 200)); | ||
| // Strategy 1: Try clicking the submit button with various selectors | ||
| const clickResult = await cometClient.evaluate(` | ||
| (() => { | ||
| // Try various submit button patterns | ||
| // Common submit button selectors for Perplexity | ||
| const selectors = [ | ||
| 'button[aria-label*="Submit"]', | ||
| 'button[aria-label*="Send"]', | ||
| 'button[aria-label*="Ask"]', | ||
| 'button[type="submit"]', | ||
| // Perplexity specific - arrow button near input | ||
| 'button:has(svg path[d*="M12"])', // Arrow icon paths often start with M12 | ||
| 'button:has(svg[class*="arrow"])', | ||
| 'button:has(svg[class*="send"])', | ||
| ]; | ||
| for (const sel of selectors) { | ||
| const btn = document.querySelector(sel); | ||
| if (btn) { | ||
| btn.click(); | ||
| return { clicked: true, selector: sel }; | ||
| try { | ||
| const btn = document.querySelector(sel); | ||
| if (btn && !btn.disabled && btn.offsetParent !== null) { | ||
| btn.click(); | ||
| return { clicked: true, selector: sel, method: 'direct' }; | ||
| } | ||
| } catch (e) { | ||
| // :has() might not be supported, continue | ||
| } | ||
| } | ||
| // Try finding button with arrow SVG (common pattern) | ||
| const buttons = document.querySelectorAll('button'); | ||
| for (const btn of buttons) { | ||
| if (btn.querySelector('svg') && btn.closest('[class*="input"], [class*="search"]')) { | ||
| btn.click(); | ||
| return { clicked: true, selector: 'svg button' }; | ||
| // Strategy 2: Find the submit button - rightmost button with arrow/send icon | ||
| const inputEl = document.querySelector('[contenteditable="true"]') || | ||
| document.querySelector('textarea'); | ||
| if (inputEl) { | ||
| const inputRect = inputEl.getBoundingClientRect(); | ||
| let parent = inputEl.parentElement; | ||
| let candidates = []; | ||
| for (let i = 0; i < 4 && parent; i++) { | ||
| const btns = parent.querySelectorAll('button:not([disabled])'); | ||
| for (const btn of btns) { | ||
| const btnRect = btn.getBoundingClientRect(); | ||
| const ariaLabel = (btn.getAttribute('aria-label') || '').toLowerCase(); | ||
| const btnText = (btn.textContent || '').toLowerCase(); | ||
| // Skip: mode buttons, source/attach buttons, voice buttons | ||
| if (ariaLabel.includes('search') || ariaLabel.includes('research') || | ||
| ariaLabel.includes('labs') || ariaLabel.includes('learn') || | ||
| ariaLabel.includes('mode') || ariaLabel.includes('source') || | ||
| ariaLabel.includes('attach') || ariaLabel.includes('add') || | ||
| ariaLabel.includes('voice') || ariaLabel.includes('micro') || | ||
| ariaLabel.includes('record') || btnText === '+') { | ||
| continue; | ||
| } | ||
| // Must have SVG and be visible and to the right of input | ||
| if (btn.querySelector('svg') && btn.offsetParent !== null && | ||
| btnRect.left > inputRect.left && btnRect.width > 0) { | ||
| candidates.push({ btn, right: btnRect.right }); | ||
| } | ||
| } | ||
| parent = parent.parentElement; | ||
| } | ||
| // Click the rightmost candidate (submit is usually rightmost) | ||
| if (candidates.length > 0) { | ||
| candidates.sort((a, b) => b.right - a.right); | ||
| candidates[0].btn.click(); | ||
| return { clicked: true, selector: 'rightmost-button', method: 'traversal' }; | ||
| } | ||
| } | ||
| return { clicked: false }; | ||
| })() | ||
| `); | ||
| const clicked = result.result.value?.clicked; | ||
| if (!clicked) { | ||
| // Fallback: press Enter | ||
| const clicked = clickResult.result.value?.clicked; | ||
| if (clicked) { | ||
| // Wait briefly to ensure click was processed | ||
| await new Promise(resolve => setTimeout(resolve, 100)); | ||
| return; | ||
| } | ||
| // Strategy 4: Use keyboard shortcuts | ||
| // First, ensure input is focused | ||
| await cometClient.evaluate(` | ||
| (() => { | ||
| const el = document.querySelector('[contenteditable="true"]') || | ||
| document.querySelector('textarea'); | ||
| if (el) el.focus(); | ||
| })() | ||
| `); | ||
| // Try Cmd/Ctrl + Enter (common submit shortcut) | ||
| try { | ||
| await cometClient.pressKey("Enter"); | ||
| await new Promise(resolve => setTimeout(resolve, 100)); | ||
| } | ||
| catch { | ||
| // Fallback: dispatch keyboard event directly | ||
| await cometClient.evaluate(` | ||
| (() => { | ||
| const el = document.querySelector('[contenteditable="true"]') || | ||
| document.querySelector('textarea'); | ||
| if (el) { | ||
| el.dispatchEvent(new KeyboardEvent('keydown', { | ||
| key: 'Enter', | ||
| code: 'Enter', | ||
| keyCode: 13, | ||
| which: 13, | ||
| bubbles: true, | ||
| cancelable: true | ||
| })); | ||
| } | ||
| })() | ||
| `); | ||
| } | ||
| } | ||
@@ -263,120 +344,128 @@ /** | ||
| * Get current agent status and progress (for polling) | ||
| * Improved: Checks for stop button visibility, handles sidecar vs main tab, | ||
| * extracts response from current task context | ||
| * Gets fresh data each time, extracts URL from actual browsing tab | ||
| */ | ||
| async getAgentStatus() { | ||
| // First try to connect to sidecar tab for agent status | ||
| // Get the actual browsing URL from the agent's tab (not from text parsing) | ||
| let agentBrowsingUrl = ''; | ||
| try { | ||
| const tabs = await cometClient.listTabsCategorized(); | ||
| if (tabs.sidecar) { | ||
| await cometClient.connect(tabs.sidecar.id); | ||
| if (tabs.agentBrowsing) { | ||
| agentBrowsingUrl = tabs.agentBrowsing.url; | ||
| } | ||
| } | ||
| catch { | ||
| // Continue with current connection | ||
| // Continue without URL | ||
| } | ||
| // Get status from the current Perplexity page | ||
| const result = await cometClient.safeEvaluate(` | ||
| (() => { | ||
| // Force fresh read | ||
| const body = document.body.innerText; | ||
| // CRITICAL: Check for ACTIVE stop button (square icon) - most reliable indicator of working state | ||
| const stopButton = document.querySelector('button svg rect, button[aria-label*="Stop"]'); | ||
| const hasActiveStopButton = stopButton !== null && | ||
| stopButton.closest('button')?.offsetParent !== null; // Check if visible | ||
| // Check for ACTIVE stop button - multiple detection methods | ||
| let hasActiveStopButton = false; | ||
| const stopButtons = document.querySelectorAll('button'); | ||
| for (const btn of stopButtons) { | ||
| const rect = btn.querySelector('rect'); // Square icon | ||
| const ariaLabel = (btn.getAttribute('aria-label') || '').toLowerCase(); | ||
| if ((rect || ariaLabel.includes('stop')) && | ||
| btn.offsetParent !== null && !btn.disabled) { | ||
| hasActiveStopButton = true; | ||
| break; | ||
| } | ||
| } | ||
| // Check for "Add details to this task" input - indicates agent mode is active and accepting input | ||
| const hasTaskInput = body.includes('Add details to this task'); | ||
| // Check for animated loading indicators | ||
| const hasLoadingSpinner = document.querySelector('[class*="animate-spin"], [class*="animate-pulse"], .spinner') !== null; | ||
| // Check for completion indicators in the LATEST response section only | ||
| // Look for the response area that's NOT in the sidebar/history | ||
| const mainContent = document.querySelector('main, [role="main"], .content'); | ||
| const mainText = mainContent ? mainContent.innerText : body; | ||
| // Check if response has "N steps completed" - indicates agent task finished | ||
| const stepsCompletedMatch = mainText.match(/(\\d+) steps completed/); | ||
| // Check for completion indicators | ||
| const stepsCompletedMatch = body.match(/(\\d+) steps? completed/i); | ||
| const hasStepsCompleted = stepsCompletedMatch !== null; | ||
| // Check for "Finished" marker that appears after agent completes | ||
| const finishedMarkers = document.querySelectorAll('*'); | ||
| let hasFinishedMarker = false; | ||
| for (const el of finishedMarkers) { | ||
| if (el.textContent === 'Finished' && el.offsetParent !== null) { | ||
| hasFinishedMarker = true; | ||
| break; | ||
| } | ||
| } | ||
| // Check for "Finished" or "Reviewed N sources" | ||
| const hasFinishedMarker = body.includes('Finished') && !hasActiveStopButton; | ||
| const hasReviewedSources = /Reviewed \\d+ sources?/i.test(body); | ||
| // "Reviewed N sources" without active stop button means completed | ||
| const hasReviewedSources = /Reviewed \\d+ sources/.test(mainText); | ||
| // Working indicators - only valid if stop button is present | ||
| const workingIndicators = [ | ||
| // Working indicators | ||
| const workingPatterns = [ | ||
| 'Working…', 'Working...', 'Searching', 'Reviewing sources', | ||
| 'Preparing to assist', 'Clicking', 'Typing:', 'Navigating' | ||
| 'Preparing to assist', 'Clicking', 'Typing:', 'Navigating to', | ||
| 'Reading', 'Analyzing' | ||
| ]; | ||
| const hasWorkingText = workingIndicators.some(indicator => mainText.includes(indicator)); | ||
| const hasWorkingText = workingPatterns.some(p => body.includes(p)); | ||
| // Determine status with priority: | ||
| // 1. If stop button is visible AND clickable -> working | ||
| // 2. If "N steps completed" visible -> completed | ||
| // 3. If working text but no stop button -> likely completed (stop button removed) | ||
| // 4. If task input visible but nothing else -> idle (waiting for input) | ||
| // Status determination | ||
| let status = 'idle'; | ||
| if (hasActiveStopButton || (hasWorkingText && hasTaskInput && !hasStepsCompleted)) { | ||
| if (hasActiveStopButton || hasLoadingSpinner) { | ||
| status = 'working'; | ||
| } else if (hasStepsCompleted || hasFinishedMarker || (hasReviewedSources && !hasActiveStopButton)) { | ||
| } else if (hasStepsCompleted || hasFinishedMarker) { | ||
| status = 'completed'; | ||
| } else if (hasTaskInput) { | ||
| status = 'idle'; | ||
| } else if (hasReviewedSources && !hasWorkingText) { | ||
| status = 'completed'; | ||
| } else if (hasWorkingText) { | ||
| status = 'working'; | ||
| } | ||
| // Extract agent steps from the page | ||
| // Extract agent steps | ||
| const steps = []; | ||
| const stepPatterns = [ | ||
| /Preparing to assist[^\\n]*/g, | ||
| /I can see[^\\n]*/g, | ||
| /Good,[^\\n]*/g, | ||
| /Clicking[^\\n]*/g, | ||
| /Typing:[^\\n]*/g, | ||
| /Navigating[^\\n]*/g, | ||
| /It seems[^\\n]*/g, | ||
| /Let me[^\\n]*/g, | ||
| /I need to[^\\n]*/g, | ||
| /I'll[^\\n]*/g | ||
| /Reading[^\\n]*/g, | ||
| /Searching[^\\n]*/g, | ||
| /Found[^\\n]*/g | ||
| ]; | ||
| for (const pattern of stepPatterns) { | ||
| const matches = mainText.match(pattern); | ||
| if (matches) steps.push(...matches.map(s => s.trim().substring(0, 100))); | ||
| const matches = body.match(pattern); | ||
| if (matches) { | ||
| steps.push(...matches.map(s => s.trim().substring(0, 100))); | ||
| } | ||
| } | ||
| // Current step is the last meaningful one | ||
| const currentStep = steps.length > 0 ? steps[steps.length - 1] : ''; | ||
| // Extract response - find the LATEST answer content | ||
| // Extract response for completed status | ||
| let response = ''; | ||
| if (status === 'completed') { | ||
| // Find main prose blocks (they have "inline" in class, not sub-elements) | ||
| const mainProseEls = Array.from(document.querySelectorAll('[class*="prose"]')) | ||
| .filter(el => el.className.includes('inline')); | ||
| // Strategy 1: Look for prose elements (main answer content) | ||
| // Take the LAST one - most recent answer in conversation | ||
| const proseEls = document.querySelectorAll('[class*="prose"]'); | ||
| for (let i = proseEls.length - 1; i >= 0; i--) { | ||
| const text = proseEls[i].innerText.trim(); | ||
| if (text.length > 5 && !text.startsWith('Related')) { | ||
| response = text; | ||
| break; | ||
| } | ||
| } | ||
| // Get the last main prose element which should be the current response | ||
| if (mainProseEls.length > 0) { | ||
| const lastProse = mainProseEls[mainProseEls.length - 1]; | ||
| response = lastProse.innerText; | ||
| // Strategy 2: Look for answer section by structure | ||
| if (!response) { | ||
| // Find the main content area after "Reviewed X sources" | ||
| const reviewedMatch = body.match(/Reviewed \\d+ sources?/); | ||
| if (reviewedMatch) { | ||
| const startIdx = body.indexOf(reviewedMatch[0]) + reviewedMatch[0].length; | ||
| const endMarkers = ['Related', 'Ask a follow-up', 'Ask anything', 'Share', 'Copy']; | ||
| let endIdx = body.length; | ||
| for (const marker of endMarkers) { | ||
| const idx = body.indexOf(marker, startIdx); | ||
| if (idx > startIdx && idx < endIdx) endIdx = idx; | ||
| } | ||
| response = body.substring(startIdx, endIdx).trim(); | ||
| } | ||
| } | ||
| // If still empty or too short, try to extract from main content after completion markers | ||
| if (!response || response.length < 50) { | ||
| const completionIndex = mainText.indexOf('steps completed'); | ||
| if (completionIndex > -1) { | ||
| // Find the response section after "N steps completed" | ||
| const afterCompletion = mainText.substring(completionIndex); | ||
| // Extract until we hit "Related" or "Ask a follow-up" or end | ||
| const endMarkers = ['Related', 'Ask a follow-up', 'Ask anything']; | ||
| let endIndex = afterCompletion.length; | ||
| // Strategy 3: Fallback - extract after completion marker | ||
| if (!response || response.length < 5) { | ||
| const completionIdx = body.indexOf('steps completed'); | ||
| if (completionIdx > -1) { | ||
| const afterCompletion = body.substring(completionIdx + 15); | ||
| const endMarkers = ['Related', 'Ask a follow-up', 'Ask anything', 'Sources']; | ||
| let endIdx = afterCompletion.length; | ||
| for (const marker of endMarkers) { | ||
| const idx = afterCompletion.indexOf(marker); | ||
| if (idx > 0 && idx < endIndex) endIndex = idx; | ||
| if (idx > 0 && idx < endIdx) endIdx = idx; | ||
| } | ||
| response = afterCompletion.substring(15, endIndex).trim(); | ||
| response = afterCompletion.substring(0, endIdx).trim(); | ||
| } | ||
@@ -386,20 +475,16 @@ } | ||
| // Get the URL the agent is currently browsing (from screenshots or context) | ||
| let agentBrowsingUrl = ''; | ||
| const urlMatch = mainText.match(/https?:\\/\\/[^\\s\\n]+/); | ||
| if (urlMatch) { | ||
| agentBrowsingUrl = urlMatch[0]; | ||
| } | ||
| return { | ||
| status, | ||
| steps: [...new Set(steps)].slice(-5), // Dedupe and get last 5 | ||
| steps: [...new Set(steps)].slice(-5), | ||
| currentStep, | ||
| response: response.substring(0, 2000), | ||
| hasStopButton: hasActiveStopButton || hasTaskInput, | ||
| agentBrowsingUrl | ||
| response: response.substring(0, 3000), | ||
| hasStopButton: hasActiveStopButton | ||
| }; | ||
| })() | ||
| `); | ||
| return result.result.value; | ||
| const evalResult = result.result.value; | ||
| return { | ||
| ...evalResult, | ||
| agentBrowsingUrl, // From actual tab, not text parsing | ||
| }; | ||
| } | ||
@@ -406,0 +491,0 @@ /** |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"comet-ai.js","sourceRoot":"","sources":["../src/comet-ai.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"comet-ai.js","sourceRoot":"","sources":["../src/comet-ai.ts"],"names":[],"mappings":"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"} |
+170
-27
@@ -18,7 +18,26 @@ #!/usr/bin/env node | ||
| name: "comet_ask", | ||
| description: "Send a prompt to Comet/Perplexity (non-blocking). Use comet_poll to check progress.", | ||
| description: `Send a prompt to Comet/Perplexity and wait for the complete response (blocking). | ||
| WHEN TO USE COMET vs other tools: | ||
| - USE COMET for: tasks requiring real browser interaction (login walls, dynamic content, multi-step navigation, filling forms, clicking buttons, scraping live data from specific sites) | ||
| - USE COMET for: deep research that benefits from Perplexity's agentic browsing (comparing multiple sources, following links, comprehensive analysis) | ||
| - USE regular WebSearch/WebFetch for: simple factual queries, quick lookups, static content | ||
| IMPORTANT - Comet is for DOING, not just ASKING: | ||
| - DON'T ask "how to" questions → use WebSearch instead | ||
| - DO ask Comet to perform actions: "Go to X and do Y" | ||
| - Bad: "How do I generate a P8 key in App Store Connect?" | ||
| - Good: "Take over the browser, go to App Store Connect, navigate to In-App Purchase keys section" | ||
| PROMPTING TIPS: | ||
| - Give context and goals, not step-by-step instructions | ||
| - Example: "Research the pricing models of top 3 auth providers for a B2B SaaS" (good) | ||
| - Example: "Go to auth0.com, click pricing, then go to clerk.dev..." (less effective) | ||
| - Comet will figure out the best browsing strategy`, | ||
| inputSchema: { | ||
| type: "object", | ||
| properties: { | ||
| prompt: { type: "string", description: "Question or task for Comet" }, | ||
| prompt: { type: "string", description: "Question or task for Comet - focus on goals and context" }, | ||
| timeout: { type: "number", description: "Max wait time in ms (default: 300000 = 5 min)" }, | ||
| newChat: { type: "boolean", description: "Start a fresh conversation (default: false)" }, | ||
| }, | ||
@@ -65,32 +84,109 @@ required: ["prompt"], | ||
| case "comet_connect": { | ||
| // Auto-start Comet if not running | ||
| try { | ||
| await cometClient.getVersion(); | ||
| } | ||
| catch { | ||
| await cometClient.startComet(9222); | ||
| } | ||
| // Connect to Perplexity tab | ||
| // Auto-start Comet with debug port (will restart if running without it) | ||
| const startResult = await cometClient.startComet(9222); | ||
| // Get all tabs and clean up - close all except one | ||
| const targets = await cometClient.listTargets(); | ||
| const perplexityTab = targets.find(t => t.type === 'page' && t.url.includes('perplexity.ai')); | ||
| if (perplexityTab) { | ||
| const result = await cometClient.connect(perplexityTab.id); | ||
| return { content: [{ type: "text", text: result }] }; | ||
| const pageTabs = targets.filter(t => t.type === 'page'); | ||
| // Close extra tabs, keep only one | ||
| if (pageTabs.length > 1) { | ||
| for (let i = 1; i < pageTabs.length; i++) { | ||
| try { | ||
| await cometClient.closeTab(pageTabs[i].id); | ||
| } | ||
| catch { /* ignore */ } | ||
| } | ||
| } | ||
| // No Perplexity tab, connect to any page | ||
| const anyPage = targets.find(t => t.type === 'page'); | ||
| // Get fresh tab list | ||
| const freshTargets = await cometClient.listTargets(); | ||
| const anyPage = freshTargets.find(t => t.type === 'page'); | ||
| if (anyPage) { | ||
| await cometClient.connect(anyPage.id); | ||
| // Always navigate to Perplexity home for clean state | ||
| await cometClient.navigate("https://www.perplexity.ai/", true); | ||
| return { content: [{ type: "text", text: "Connected and navigated to Perplexity" }] }; | ||
| await new Promise(resolve => setTimeout(resolve, 1500)); | ||
| return { content: [{ type: "text", text: `${startResult}\nConnected to Perplexity (cleaned ${pageTabs.length - 1} old tabs)` }] }; | ||
| } | ||
| return { content: [{ type: "text", text: "Connected to Comet" }] }; | ||
| // No tabs at all - create a new one | ||
| const newTab = await cometClient.newTab("https://www.perplexity.ai/"); | ||
| await new Promise(resolve => setTimeout(resolve, 2000)); // Wait for page load | ||
| await cometClient.connect(newTab.id); | ||
| return { content: [{ type: "text", text: `${startResult}\nCreated new tab and navigated to Perplexity` }] }; | ||
| } | ||
| case "comet_ask": { | ||
| const prompt = args?.prompt; | ||
| const result = await cometAI.sendPrompt(prompt); | ||
| const timeout = args?.timeout || 300000; // Default 5 minutes | ||
| const newChat = args?.newChat || false; | ||
| // Start fresh conversation if requested, or navigate if not on Perplexity | ||
| const state = cometClient.currentState; | ||
| const isOnPerplexity = state.currentUrl?.includes('perplexity.ai'); | ||
| if (newChat || !isOnPerplexity) { | ||
| await cometClient.navigate("https://www.perplexity.ai/", true); | ||
| await new Promise(resolve => setTimeout(resolve, 1500)); // Wait for page load | ||
| } | ||
| // Send the prompt | ||
| await cometAI.sendPrompt(prompt); | ||
| // Wait for completion with polling - log progress to stderr in real-time | ||
| const startTime = Date.now(); | ||
| const progressLog = []; | ||
| const seenSteps = new Set(); | ||
| let lastUrl = ''; | ||
| let sawWorkingState = false; // Track if we've seen task actually start | ||
| const log = (msg) => { | ||
| const elapsed = Math.round((Date.now() - startTime) / 1000); | ||
| const line = `[comet ${elapsed}s] ${msg}`; | ||
| console.error(line); // stderr won't interfere with MCP protocol | ||
| progressLog.push(line); | ||
| }; | ||
| log('🚀 Task started'); | ||
| while (Date.now() - startTime < timeout) { | ||
| await new Promise(resolve => setTimeout(resolve, 2000)); // Poll every 2s | ||
| const status = await cometAI.getAgentStatus(); | ||
| // Log new steps we haven't seen | ||
| for (const step of status.steps) { | ||
| if (!seenSteps.has(step)) { | ||
| seenSteps.add(step); | ||
| log(`📋 ${step}`); | ||
| } | ||
| } | ||
| // Log URL changes during agentic browsing | ||
| if (status.agentBrowsingUrl && status.agentBrowsingUrl !== lastUrl) { | ||
| lastUrl = status.agentBrowsingUrl; | ||
| log(`🌐 ${lastUrl}`); | ||
| } | ||
| // Track if task has actually started (working state) | ||
| if (status.status === 'working') { | ||
| if (!sawWorkingState) { | ||
| sawWorkingState = true; | ||
| log('⚙️ Task processing...'); | ||
| } | ||
| if (status.currentStep && !progressLog[progressLog.length - 1]?.includes(status.currentStep)) { | ||
| log(`⏳ ${status.currentStep}`); | ||
| } | ||
| } | ||
| // Only accept "completed" if we've seen the task actually start | ||
| // This prevents returning stale responses from previous queries | ||
| if (status.status === 'completed' && sawWorkingState) { | ||
| log('✅ Task completed'); | ||
| let output = status.response || 'Task completed (no response text extracted)'; | ||
| return { content: [{ type: "text", text: output }] }; | ||
| } | ||
| // If still showing "completed" but we haven't seen "working" yet, | ||
| // it's the old response - wait for new task to start | ||
| if (status.status === 'completed' && !sawWorkingState) { | ||
| // Check if it's been too long without seeing working state (maybe simple query) | ||
| const elapsed = Date.now() - startTime; | ||
| if (elapsed > 10000) { | ||
| // After 10s, if still showing completed, accept it | ||
| log('✅ Task completed (quick response)'); | ||
| let output = status.response || 'Task completed (no response text extracted)'; | ||
| return { content: [{ type: "text", text: output }] }; | ||
| } | ||
| } | ||
| } | ||
| // Timeout | ||
| log('⏰ Timeout'); | ||
| return { | ||
| content: [{ | ||
| type: "text", | ||
| text: `${result}\n\nUse comet_poll to check progress.`, | ||
| text: `Timeout after ${timeout / 1000}s.\n\nProgress:\n${progressLog.join('\n')}\n\nUse comet_poll to check if still working.`, | ||
| }], | ||
@@ -140,12 +236,20 @@ }; | ||
| (() => { | ||
| // Try button group first (wide screen) | ||
| const modes = ['Search', 'Research', 'Labs', 'Learn']; | ||
| let activeMode = 'search'; | ||
| for (const mode of modes) { | ||
| const btn = document.querySelector('button[aria-label="' + mode + '"]'); | ||
| if (btn && btn.getAttribute('data-state') === 'checked') { | ||
| activeMode = mode.toLowerCase(); | ||
| break; | ||
| return mode.toLowerCase(); | ||
| } | ||
| } | ||
| return activeMode; | ||
| // Try dropdown (narrow screen) - look for the mode selector button | ||
| const dropdownBtn = document.querySelector('button[class*="gap"]'); | ||
| if (dropdownBtn) { | ||
| const text = dropdownBtn.innerText.toLowerCase(); | ||
| if (text.includes('search')) return 'search'; | ||
| if (text.includes('research')) return 'research'; | ||
| if (text.includes('labs')) return 'labs'; | ||
| if (text.includes('learn')) return 'learn'; | ||
| } | ||
| return 'search'; | ||
| })() | ||
@@ -186,14 +290,53 @@ `); | ||
| } | ||
| // Click the mode button | ||
| // Try both UI patterns: button group (wide) and dropdown (narrow) | ||
| const result = await cometClient.evaluate(` | ||
| (() => { | ||
| // Strategy 1: Direct button (wide screen) | ||
| const btn = document.querySelector('button[aria-label="${ariaLabel}"]'); | ||
| if (btn) { | ||
| btn.click(); | ||
| return { success: true }; | ||
| return { success: true, method: 'button' }; | ||
| } | ||
| return { success: false, error: "Button not found" }; | ||
| // Strategy 2: Dropdown menu (narrow screen) | ||
| // Find and click the dropdown trigger (button with current mode text) | ||
| const allButtons = document.querySelectorAll('button'); | ||
| for (const b of allButtons) { | ||
| const text = b.innerText.toLowerCase(); | ||
| if ((text.includes('search') || text.includes('research') || | ||
| text.includes('labs') || text.includes('learn')) && | ||
| b.querySelector('svg')) { | ||
| b.click(); | ||
| return { success: true, method: 'dropdown-open', needsSelect: true }; | ||
| } | ||
| } | ||
| return { success: false, error: "Mode selector not found" }; | ||
| })() | ||
| `); | ||
| const clickResult = result.result.value; | ||
| if (clickResult.success && clickResult.needsSelect) { | ||
| // Wait for dropdown to open, then select the mode | ||
| await new Promise(resolve => setTimeout(resolve, 300)); | ||
| const selectResult = await cometClient.evaluate(` | ||
| (() => { | ||
| // Look for dropdown menu items | ||
| const items = document.querySelectorAll('[role="menuitem"], [role="option"], button'); | ||
| for (const item of items) { | ||
| if (item.innerText.toLowerCase().includes('${mode}')) { | ||
| item.click(); | ||
| return { success: true }; | ||
| } | ||
| } | ||
| return { success: false, error: "Mode option not found in dropdown" }; | ||
| })() | ||
| `); | ||
| const selectRes = selectResult.result.value; | ||
| if (selectRes.success) { | ||
| return { content: [{ type: "text", text: `Switched to ${mode} mode` }] }; | ||
| } | ||
| else { | ||
| return { content: [{ type: "text", text: `Failed: ${selectRes.error}` }], isError: true }; | ||
| } | ||
| } | ||
| if (clickResult.success) { | ||
@@ -200,0 +343,0 @@ return { content: [{ type: "text", text: `Switched to ${mode} mode` }] }; |
@@ -1,1 +0,1 @@ | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} | ||
| {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"} |
+1
-1
| { | ||
| "name": "comet-mcp", | ||
| "version": "2.0.0", | ||
| "version": "2.1.0", | ||
| "description": "MCP Server that gives Claude Code superpowers with Perplexity Comet browser - agentic web browsing, deep research, and real-time monitoring", | ||
@@ -5,0 +5,0 @@ "type": "module", |
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
114713
29.67%1759
27.28%4
100%9
28.57%