mirror of
https://github.com/wassname/HumanAgent-MCP.git
synced 2026-09-09 11:14:27 +08:00
Add tab notification features and timeout improvements
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -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
|
||||
+17
-6
@@ -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<string>(`sessionId-${workspaceKey}`);
|
||||
let sessionId = context.globalState.get<string>(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
|
||||
|
||||
+33
-2
@@ -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);
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user