diff --git a/.DS_Store b/.DS_Store index d520fa8..b9de3d4 100644 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/README.md b/README.md index 3ed2b01..1c0e98d 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,9 @@ # What -This extension provides a `HumanAgent_Chat` MCP tool that forces AI assistants to communicate through a human agent instead of giving direct responses. When an AI uses this tool, it opens a chat session where humans can respond in real-time. +This extension provides VSCode Github Copilot Aagent a `HumanAgent_Chat` MCP tool that forces AI assistants to communicate through a human agent instead of giving direct responses. When an AI uses this tool, it opens a chat session where humans can respond in real-time. ## Why -The AI Agent is encouraged to discuss with you before running off to do its own thing - if its part way through iterating through on a problem it can stop and ask you a question - it reduces requests considerably, helps avoid runaway agent, allows you to manage multiple VSCode agents working in multiple workspaces from one web page. Allows you to append useful reminders to each response. +The AI Agent is encouraged to discuss with you before running off to do its own thing - if its part way through iterating through on a problem it can stop and ask you a question - it reduces requests considerably, helps avoid runaway agent, allows you to manage multiple VSCode agents working in multiple workspaces from one web page. Allows you to append useful reminders to each response. + ## How it works Just install it and its ready to go. diff --git a/ToDo.md b/ToDo.md new file mode 100644 index 0000000..e69de29 diff --git a/package.json b/package.json index 0ff4351..ac6288a 100644 --- a/package.json +++ b/package.json @@ -57,6 +57,11 @@ "command": "humanagent-mcp.restartServer", "title": "Restart MCP Server", "icon": "$(debug-restart)" + }, + { + "command": "humanagent-mcp.reportIssue", + "title": "Report Issue / Suggestion", + "icon": "$(github)" } ], "viewsContainers": { @@ -109,6 +114,11 @@ "command": "humanagent-mcp.configureMcp", "when": "view == humanagent-mcp.chatSessions", "group": "navigation" + }, + { + "command": "humanagent-mcp.reportIssue", + "when": "view == humanagent-mcp.chatSessions", + "group": "navigation" } ] }, diff --git a/response-debug.txt b/response-debug.txt new file mode 100644 index 0000000..741291a --- /dev/null +++ b/response-debug.txt @@ -0,0 +1,139 @@ +2025-10-26T07:49:18.344Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761464948033 +2025-10-26T07:49:59.917Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761464966618 +2025-10-26T08:11:00.236Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761466230989 +2025-10-26T08:11:18.528Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761466267040 +2025-10-26T08:12:00.250Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761466304326 +2025-10-26T08:13:56.309Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761466326170 +2025-10-26T08:26:07.026Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761467146049 +2025-10-26T08:27:36.491Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761467252427 +2025-10-26T08:28:09.158Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761467286148 +2025-10-26T08:33:11.032Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761467552778 +2025-10-26T08:33:22.023Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761467596772 +2025-10-26T08:33:52.256Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761467608599 +2025-10-26T08:34:15.410Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761467647417 +2025-10-26T08:34:25.019Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761467659576 +2025-10-26T08:37:05.862Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761467780335 +2025-10-26T08:37:55.983Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761467835070 +2025-10-26T08:38:44.800Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761467884334 +2025-10-26T08:40:02.021Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761467942756 +2025-10-26T08:40:50.019Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761468012507 +2025-10-26T08:43:28.483Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761468081187 +2025-10-26T08:47:24.591Z - RESPONSE ENDPOINT CALLED - RequestID: 9-1761468244847 +2025-10-26T08:48:05.020Z - RESPONSE ENDPOINT CALLED - RequestID: 10-1761468482843 +2025-10-26T08:51:37.524Z - RESPONSE ENDPOINT CALLED - RequestID: 11-1761468508258 +2025-10-26T08:52:25.728Z - RESPONSE ENDPOINT CALLED - RequestID: 12-1761468709089 +2025-10-26T08:53:02.931Z - RESPONSE ENDPOINT CALLED - RequestID: 13-1761468766261 +2025-10-27T00:10:54.117Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761523819925 +2025-10-27T00:11:31.561Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761523862253 +2025-10-27T00:11:54.491Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761523898795 +2025-10-27T00:13:02.786Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761523922253 +2025-10-27T00:17:43.510Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761523994045 +2025-10-27T00:19:25.372Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761524276979 +2025-10-27T22:00:53.290Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761602278383 +2025-10-27T22:01:53.672Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761602466179 +2025-10-27T22:08:23.192Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761602520990 +2025-10-27T22:14:41.232Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761603262389 +2025-10-27T22:16:41.443Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761603306811 +2025-10-27T22:18:03.880Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761603414140 +2025-10-27T22:20:26.540Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761467668933 +2025-10-27T22:29:08.803Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761603501106 +2025-10-27T22:41:16.394Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761604823177 +2025-10-27T22:42:08.602Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761604887974 +2025-10-27T22:48:55.763Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761605295442 +2025-10-27T22:49:38.593Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761605345034 +2025-10-27T22:58:20.212Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761605495336 +2025-10-27T23:00:24.133Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761606004477 +2025-10-27T23:05:29.355Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761606200895 +2025-10-27T23:13:54.806Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761606750076 +2025-10-27T23:25:55.659Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761606933258 +2025-10-27T23:28:53.759Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761607722451 +2025-10-27T23:31:02.884Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761607771955 +2025-10-29T22:08:51.550Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761775711055 +2025-10-29T22:10:45.713Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761775812472 +2025-10-29T22:13:04.243Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761775947542 +2025-10-29T23:12:15.875Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761779463670 +2025-10-29T23:13:27.617Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761779549127 +2025-10-29T23:33:47.313Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761780821752 +2025-10-29T23:34:29.979Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761780845474 +2025-10-29T23:36:36.815Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761780894871 +2025-10-29T23:38:24.677Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761781029563 +2025-10-29T23:42:30.453Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761781323718 +2025-10-29T23:43:37.433Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761781360699 +2025-10-29T23:45:30.702Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761781430386 +2025-10-29T23:46:03.796Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761781546760 +2025-10-29T23:46:27.952Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761781582523 +2025-10-29T23:47:36.822Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761781609685 +2025-10-29T23:48:05.596Z - RESPONSE ENDPOINT CALLED - RequestID: 9-1761781674964 +2025-10-29T23:49:42.434Z - RESPONSE ENDPOINT CALLED - RequestID: 10-1761781720450 +2025-10-29T23:56:17.165Z - RESPONSE ENDPOINT CALLED - RequestID: 11-1761781796258 +2025-10-30T00:01:09.984Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761781183448 +2025-10-30T00:02:40.733Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761782549653 +2025-10-30T00:05:14.179Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761782673032 +2025-10-30T00:07:41.932Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761782767355 +2025-10-30T00:09:53.261Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761782910460 +2025-10-30T00:13:28.972Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761783023538 +2025-10-30T00:14:22.217Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761783222739 +2025-10-30T00:15:34.149Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761783281577 +2025-10-30T00:16:18.949Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761783355796 +2025-10-30T00:16:46.857Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761783397375 +2025-10-30T02:15:50.497Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761790528610 +2025-10-30T02:19:00.348Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761790562860 +2025-10-30T02:20:32.179Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761790754049 +2025-10-30T02:21:39.956Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761790843761 +2025-10-30T02:22:50.506Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761790946752 +2025-10-30T02:24:22.900Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761790985682 +2025-10-30T02:24:49.820Z - RESPONSE ENDPOINT CALLED - RequestID: 9-1761791076055 +2025-10-30T02:28:00.924Z - RESPONSE ENDPOINT CALLED - RequestID: 10-1761791142419 +2025-10-30T02:36:13.666Z - RESPONSE ENDPOINT CALLED - RequestID: 11-1761791291422 +2025-10-30T02:38:38.942Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761791876595 +2025-10-30T02:41:06.782Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761791972951 +2025-10-30T02:41:52.950Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761792078907 +2025-10-30T02:44:14.777Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761792164512 +2025-10-30T02:45:23.000Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761792265042 +2025-10-30T02:45:48.243Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761792335869 +2025-10-30T02:50:59.486Z - RESPONSE ENDPOINT CALLED - RequestID: 9-1761792378519 +2025-10-30T02:51:42.071Z - RESPONSE ENDPOINT CALLED - RequestID: 10-1761792670559 +2025-10-30T02:58:38.025Z - RESPONSE ENDPOINT CALLED - RequestID: 11-1761792712788 +2025-10-30T03:05:58.268Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761793530739 +2025-10-30T03:06:05.669Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761793559318 +2025-10-30T03:07:18.766Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761793571722 +2025-10-30T03:08:09.228Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761793649505 +2025-10-30T03:08:47.128Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761793700860 +2025-10-30T03:10:03.768Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761793780508 +2025-10-30T03:39:38.041Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761793817339 +2025-10-30T03:41:40.344Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761795682638 +2025-10-30T03:42:46.668Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761795762693 +2025-10-30T05:55:15.870Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761803701848 +2025-10-30T05:56:59.441Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761803750435 +2025-10-30T05:58:42.521Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761803904725 +2025-10-30T06:01:07.826Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761804045404 +2025-10-30T06:03:04.775Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761804091683 +2025-10-30T06:04:24.767Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761804200588 +2025-10-30T06:06:58.423Z - RESPONSE ENDPOINT CALLED - RequestID: 9-1761804413263 +2025-10-30T06:08:15.486Z - RESPONSE ENDPOINT CALLED - RequestID: 10-1761804432302 +2025-10-30T07:53:40.986Z - RESPONSE ENDPOINT CALLED - RequestID: 11-1761804513257 +2025-11-01T05:43:31.326Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761975594153 +2025-11-01T05:44:44.593Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761975840128 +2025-11-01T05:46:02.578Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761975893720 +2025-11-01T05:47:37.974Z - RESPONSE ENDPOINT CALLED - RequestID: 6-1761975979159 +2025-11-01T05:50:07.604Z - RESPONSE ENDPOINT CALLED - RequestID: 7-1761976084383 +2025-11-01T05:50:33.266Z - RESPONSE ENDPOINT CALLED - RequestID: 8-1761976220601 +2025-11-01T05:52:01.162Z - RESPONSE ENDPOINT CALLED - RequestID: 9-1761976255666 +2025-11-01T05:52:26.671Z - RESPONSE ENDPOINT CALLED - RequestID: 10-1761976331258 +2025-11-01T05:54:50.299Z - RESPONSE ENDPOINT CALLED - RequestID: 11-1761976401710 +2025-11-01T05:55:50.730Z - RESPONSE ENDPOINT CALLED - RequestID: 12-1761976536259 +2025-11-01T05:59:28.737Z - RESPONSE ENDPOINT CALLED - RequestID: 13-1761976601581 +2025-11-01T06:02:55.748Z - RESPONSE ENDPOINT CALLED - RequestID: 14-1761976783362 +2025-11-01T06:05:12.686Z - RESPONSE ENDPOINT CALLED - RequestID: 15-1761976992302 +2025-11-01T06:06:43.466Z - RESPONSE ENDPOINT CALLED - RequestID: 16-1761977126251 +2025-11-01T06:07:09.303Z - RESPONSE ENDPOINT CALLED - RequestID: 17-1761977217241 +2025-11-01T06:14:01.310Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761810848278 +2025-11-01T06:16:20.555Z - RESPONSE ENDPOINT CALLED - RequestID: 18-1761977721440 +2025-11-01T06:19:04.852Z - RESPONSE ENDPOINT CALLED - RequestID: 19-1761977834967 +2025-11-01T06:21:41.067Z - RESPONSE ENDPOINT CALLED - RequestID: 20-1761978045835 +2025-11-01T06:23:52.033Z - RESPONSE ENDPOINT CALLED - RequestID: 21-1761978196631 +2025-11-01T06:30:21.617Z - RESPONSE ENDPOINT CALLED - RequestID: 22-1761978302689 +2025-11-01T06:31:20.292Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761978674936 +2025-11-01T06:33:25.208Z - RESPONSE ENDPOINT CALLED - RequestID: 4-1761978797111 +2025-11-01T06:33:43.539Z - RESPONSE ENDPOINT CALLED - RequestID: 5-1761978813120 +2025-11-01T06:36:51.786Z - RESPONSE ENDPOINT CALLED - RequestID: 3-1761978865123 diff --git a/src/extension.ts b/src/extension.ts index 37de389..1740be5 100644 --- a/src/extension.ts +++ b/src/extension.ts @@ -57,17 +57,22 @@ function getWorkspaceSessionId(context: vscode.ExtensionContext): string { const workspaceRoot = vscode.workspace.workspaceFolders?.[0]?.uri.fsPath; const workspaceKey = workspaceRoot ? `workspace-${crypto.createHash('md5').update(workspaceRoot).digest('hex')}` : 'no-workspace'; + // Check if running in Extension Development Host + const isDevHost = context.extensionMode === vscode.ExtensionMode.Development; + const devSuffix = isDevHost ? '-dev' : ''; + const stateKey = `sessionId-${workspaceKey}${devSuffix}`; + // Try to get existing session ID from global state - let sessionId = context.globalState.get(`sessionId-${workspaceKey}`); + let sessionId = context.globalState.get(stateKey); if (!sessionId) { // Generate new UUID-based session ID - sessionId = `session-${crypto.randomUUID()}`; + sessionId = `session-${crypto.randomUUID()}${devSuffix}`; // Store it persistently - context.globalState.update(`sessionId-${workspaceKey}`, sessionId); - console.log(`Generated new workspace session ID: ${sessionId} for ${workspaceKey}`); + context.globalState.update(stateKey, sessionId); + console.log(`Generated new workspace session ID: ${sessionId} for ${workspaceKey}${isDevHost ? ' (dev host)' : ''}`); } else { - console.log(`Retrieved existing workspace session ID: ${sessionId} for ${workspaceKey}`); + console.log(`Retrieved existing workspace session ID: ${sessionId} for ${workspaceKey}${isDevHost ? ' (dev host)' : ''}`); } return sessionId; @@ -328,6 +333,11 @@ export async function activate(context: vscode.ExtensionContext) { } }); + // Register report issue command + const reportIssueCommand = vscode.commands.registerCommand('humanagent-mcp.reportIssue', () => { + vscode.env.openExternal(vscode.Uri.parse('https://github.com/benharper/HumanAgent-MCP/issues')); + }); + // Add all disposables to context context.subscriptions.push( treeView, @@ -338,7 +348,8 @@ export async function activate(context: vscode.ExtensionContext) { startServerCommand, stopServerCommand, restartServerCommand, - configureMcpCommand + configureMcpCommand, + reportIssueCommand ); // Show welcome message diff --git a/src/mcp/server.ts b/src/mcp/server.ts index e5f78c4..b868db9 100644 --- a/src/mcp/server.ts +++ b/src/mcp/server.ts @@ -301,8 +301,8 @@ export class McpServer extends EventEmitter { }, timeout: { type: 'number', - description: 'Timeout in seconds to wait for human response (default: 300)', - default: 300 + description: 'Timeout in seconds to wait for human response (default: 600)', + default: 600 } }, required: ['message'] @@ -1230,6 +1230,18 @@ export class McpServer extends EventEmitter { border-bottom: 2px solid var(--vscode-button-background); } + .tab.has-new-message { + background-color: var(--vscode-button-background); + color: var(--vscode-button-foreground); + position: relative; + } + + .tab.has-new-message::after { + content: '💬'; + margin-left: 6px; + font-size: 12px; + } + .content { flex: 1; display: flex; @@ -1403,6 +1415,10 @@ export class McpServer extends EventEmitter { // Update active tab document.querySelectorAll('.tab').forEach(tab => { tab.classList.toggle('active', tab.dataset.session === sessionId); + // Remove new message indicator when switching to that tab + if (tab.dataset.session === sessionId) { + tab.classList.remove('has-new-message'); + } }); // Update active chat container @@ -1412,6 +1428,17 @@ export class McpServer extends EventEmitter { activeSessionId = sessionId; } + + // Function to highlight tabs with new messages + function highlightTabWithNewMessage(sessionId) { + // Only highlight if it's not the currently active session + if (sessionId !== activeSessionId) { + const tab = document.querySelector(\`[data-session="\${sessionId}"].tab\`); + if (tab && !tab.classList.contains('active')) { + tab.classList.add('has-new-message'); + } + } + } // Message sending document.addEventListener('click', (e) => { @@ -1706,8 +1733,12 @@ export class McpServer extends EventEmitter { // Handle different types of updates if (data.type === 'chat_message' && data.sessionId && data.message) { addMessageToUI(data.sessionId, data.message.sender, data.message.content, data.message.source, data.message.timestamp); + // Highlight tab if not currently active + highlightTabWithNewMessage(data.sessionId); } else if (data.type === 'message' && data.sessionId) { addMessageToUI(data.sessionId, data.role || 'assistant', data.content, null, null); + // Highlight tab if not currently active + highlightTabWithNewMessage(data.sessionId); } else if (data.type === 'request-state-change' && data.data) { // Handle request state changes for input control console.log('Web interface received request-state-change:', data.data); diff --git a/src/webview/chatWebviewProvider.ts b/src/webview/chatWebviewProvider.ts index e2b8c2d..85a0d28 100644 --- a/src/webview/chatWebviewProvider.ts +++ b/src/webview/chatWebviewProvider.ts @@ -82,11 +82,6 @@ export class ChatWebviewProvider implements vscode.WebviewViewProvider { // AI messages are now handled by SSE events - no need to store locally this.updateWebview(); - // Play notification sound if enabled - if (this.notificationSettings.enableSound) { - await this.playNotificationSound(); - } - // Trigger flashing animation if enabled if (this.notificationSettings.enableFlashing) { this.triggerFlashingBorder(); @@ -153,10 +148,7 @@ export class ChatWebviewProvider implements vscode.WebviewViewProvider { vscode.commands.executeCommand('humanagent-mcp.showStatus'); break; case 'playNotificationSound': - // Play sound from extension side (Node.js) when webview requests it - if (this.notificationSettings.enableSound) { - await this.playNotificationSound(); - } + // Sound removed - only play on AI tool calls break; case 'sessionNameUpdated': // Handle session name update from SSE event @@ -896,9 +888,8 @@ export class ChatWebviewProvider implements vscode.WebviewViewProvider { document.body.classList.remove('flashing'); }, 2000); } else if (message.type === 'playSound') { - // Play notification sound - console.log('Playing notification sound...'); - playNotificationBeep(); + // Sound removed - only play on AI tool calls + console.log('Sound trigger removed - only playing on AI tool calls'); } else if (message.command === 'updateOverrideFileExists') { // Update override file existence and refresh cog menu window.overrideFileExists = message.exists; @@ -1053,8 +1044,7 @@ export class ChatWebviewProvider implements vscode.WebviewViewProvider { } } - // Play notification - playNotificationBeep(); + // Sound removed - only play on AI tool calls // Flash border document.body.classList.add('flashing'); @@ -1097,10 +1087,7 @@ export class ChatWebviewProvider implements vscode.WebviewViewProvider { // Use unified addMessageToUI function addMessageToUI(message); - // Play notification for assistant messages - if (message.sender === 'agent') { - playNotificationBeep(); - } + // Sound removed - only play on AI tool calls } }