Skip to content

Commit bc9ac7a

Browse files
committed
fix: add chat surface endpoints setup for handling incoming messages
1 parent f566049 commit bc9ac7a

2 files changed

Lines changed: 39 additions & 0 deletions

File tree

endpoints/chatSurfaces.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import type {
2+
IAdminForthEndpointHandlerInput,
3+
IHttpServer,
4+
} from "adminforth";
5+
import type { ChatSurfaceEndpointsContext } from "./context.js";
6+
7+
export function setupChatSurfaceEndpoints(ctx: ChatSurfaceEndpointsContext, server: IHttpServer) {
8+
for (const adapter of ctx.options.chatSurfaceAdapters ?? []) {
9+
server.endpoint({
10+
method: "POST",
11+
noAuth: true,
12+
path: `/agent/surface/${adapter.name}/webhook`,
13+
handler: async (endpointInput: IAdminForthEndpointHandlerInput) => {
14+
const surfaceContext = {
15+
body: endpointInput.body,
16+
headers: endpointInput.headers,
17+
abortSignal: endpointInput.abortSignal,
18+
rawRequest: endpointInput._raw_express_req,
19+
rawResponse: endpointInput._raw_express_res,
20+
};
21+
22+
const incoming = await adapter.parseIncomingMessage(surfaceContext);
23+
if (!incoming) return { ok: true };
24+
25+
const sink = await adapter.createEventSink(surfaceContext, incoming);
26+
27+
try {
28+
await ctx.handleChatSurfaceMessage(adapter, incoming, sink);
29+
} finally {
30+
await sink.close?.();
31+
}
32+
33+
return { ok: true };
34+
},
35+
});
36+
}
37+
}

index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import { AdminForthCheckpointSaver } from "./agent/checkpointer.js";
1313
import { appendCustomSystemPrompt, buildAgentSystemPrompt, DEFAULT_AGENT_SYSTEM_PROMPT} from "./agent/systemPrompt.js";
1414
import { setupCoreEndpoints } from "./endpoints/core.js";
1515
import { setupSessionEndpoints } from "./endpoints/sessions.js";
16+
import { setupChatSurfaceEndpoints } from "./endpoints/chatSurfaces.js";
1617
import type { AgentEndpointsContext } from "./endpoints/context.js";
1718
import { AgentSessionStore } from "./sessionStore.js";
1819
import { ChatSurfaceService } from "./chatSurfaceService.js";
@@ -155,5 +156,6 @@ export default class AdminForthAgentPlugin extends AdminForthPlugin {
155156

156157
setupCoreEndpoints(endpointContext, server);
157158
setupSessionEndpoints(endpointContext, server);
159+
setupChatSurfaceEndpoints(endpointContext, server);
158160
}
159161
}

0 commit comments

Comments
 (0)