- Updated chat message types to include tool statuses. - Enhanced localization files for English, Thai, and Chinese to support new tool status messages. - Modified HomePage and SkillsPage components to handle tool statuses in chat messages. - Implemented tool status merging and updating logic in the chat store. - Added handling for tool status events in the gateway event processing. - Created tests for chat message rendering with tool statuses and skill installation shortcuts. - Improved gateway event dispatching for tool lifecycle events.
89 lines
2.3 KiB
TypeScript
89 lines
2.3 KiB
TypeScript
import { normalizeAgentSessionKey } from '@runtime/lib/models';
|
|
import type { GatewayEvent, GatewayRpcParams } from './types';
|
|
import * as chatHandlers from './handlers/chat';
|
|
import * as providerHandlers from './handlers/provider';
|
|
import * as skillHandlers from './handlers/skills';
|
|
|
|
type GatewayBroadcast = (event: GatewayEvent) => void;
|
|
|
|
export function dispatchGatewayRpcMethod(
|
|
method: string,
|
|
params: unknown,
|
|
broadcast: GatewayBroadcast,
|
|
): { handled: boolean; result?: unknown } {
|
|
switch (method) {
|
|
case 'chat.send':
|
|
return {
|
|
handled: true,
|
|
result: chatHandlers.handleChatSend(
|
|
params as GatewayRpcParams['chat.send'],
|
|
broadcast,
|
|
),
|
|
};
|
|
case 'chat.history':
|
|
return {
|
|
handled: true,
|
|
result: chatHandlers.handleChatHistory(
|
|
params as GatewayRpcParams['chat.history'],
|
|
),
|
|
};
|
|
case 'chat.abort':
|
|
return {
|
|
handled: true,
|
|
result: chatHandlers.handleChatAbort(
|
|
params as GatewayRpcParams['chat.abort'],
|
|
broadcast,
|
|
),
|
|
};
|
|
case 'session.list':
|
|
return {
|
|
handled: true,
|
|
result: chatHandlers.handleSessionList(),
|
|
};
|
|
case 'session.delete': {
|
|
const request = params as GatewayRpcParams['session.delete'];
|
|
if (normalizeAgentSessionKey(request.sessionKey).endsWith(':main')) {
|
|
return {
|
|
handled: true,
|
|
result: { success: false },
|
|
};
|
|
}
|
|
|
|
return {
|
|
handled: true,
|
|
result: chatHandlers.handleSessionDelete(request),
|
|
};
|
|
}
|
|
case 'provider.list':
|
|
return {
|
|
handled: true,
|
|
result: providerHandlers.handleProviderList(),
|
|
};
|
|
case 'provider.getDefault':
|
|
return {
|
|
handled: true,
|
|
result: providerHandlers.handleProviderGetDefault(),
|
|
};
|
|
case 'skills.status':
|
|
return {
|
|
handled: true,
|
|
result: skillHandlers.handleSkillsStatus(),
|
|
};
|
|
case 'skills.update':
|
|
return {
|
|
handled: true,
|
|
result: skillHandlers.handleSkillsUpdate(params),
|
|
};
|
|
case 'skills.install':
|
|
return {
|
|
handled: true,
|
|
result: skillHandlers.handleSkillsInstall(
|
|
params as GatewayRpcParams['skills.install'],
|
|
broadcast,
|
|
),
|
|
};
|
|
default:
|
|
return { handled: false };
|
|
}
|
|
}
|