feat: implement OpenClaw process owner and runtime path utilities
- Add OpenClawProcessOwner class to manage the lifecycle of the OpenClaw process. - Introduce utility functions for managing OpenClaw runtime paths. - Update session store to normalize agent session keys and migrate existing keys. - Refactor main process to handle local provider API routing through a new dispatch function. - Enhance token usage writer to utilize a new session key parsing function. - Create agents management store to handle agent data and interactions. - Update chat store to integrate agent selection and session management. - Introduce AgentsSection component for displaying agent information in the UI. - Refactor HomePage to support agent selection and display current agent. - Update routing to reflect new agents page structure.
This commit is contained in:
49
electron/api/routes/gateway.ts
Normal file
49
electron/api/routes/gateway.ts
Normal file
@@ -0,0 +1,49 @@
|
||||
import type { HostApiContext } from '../context';
|
||||
import type { NormalizedHostApiRequest } from '../route-utils';
|
||||
import { fail, ok } from '../route-utils';
|
||||
|
||||
export async function handleGatewayRoutes(
|
||||
request: NormalizedHostApiRequest,
|
||||
ctx: HostApiContext,
|
||||
) {
|
||||
const { pathname, method } = request;
|
||||
|
||||
if (pathname === '/api/app/gateway-info' && method === 'GET') {
|
||||
const status = ctx.gatewayManager.getStatus();
|
||||
return ok({
|
||||
transport: 'ipc-bridge',
|
||||
rpcChannel: 'gateway:rpc',
|
||||
eventChannel: 'gateway:event',
|
||||
...status,
|
||||
});
|
||||
}
|
||||
|
||||
if (pathname === '/api/gateway/status' && method === 'GET') {
|
||||
return ok(ctx.gatewayManager.getStatus());
|
||||
}
|
||||
|
||||
if (pathname === '/api/gateway/health' && method === 'GET') {
|
||||
return ok(await ctx.gatewayManager.checkHealth());
|
||||
}
|
||||
|
||||
if (pathname === '/api/gateway/start' && method === 'POST') {
|
||||
await ctx.gatewayManager.start();
|
||||
return ok({ success: true });
|
||||
}
|
||||
|
||||
if (pathname === '/api/gateway/stop' && method === 'POST') {
|
||||
await ctx.gatewayManager.stop();
|
||||
return ok({ success: true });
|
||||
}
|
||||
|
||||
if (pathname === '/api/gateway/restart' && method === 'POST') {
|
||||
try {
|
||||
await ctx.gatewayManager.restart();
|
||||
return ok({ success: true });
|
||||
} catch (error) {
|
||||
return fail(500, error instanceof Error ? error.message : String(error));
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
Reference in New Issue
Block a user