feat: enhance host API authentication handling and add regression tests
This commit is contained in:
80
electron/gateway/rpc-dispatch.ts
Normal file
80
electron/gateway/rpc-dispatch.ts
Normal file
@@ -0,0 +1,80 @@
|
||||
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),
|
||||
};
|
||||
default:
|
||||
return { handled: false };
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user