


























@@ -23,6 +23,7 @@ import {
2323validateChatAbortParams,
2424validateChatHistoryParams,
2525validateChatInjectParams,
26+validateChatMetadataParams,
2627validateChatMessageGetParams,
2728validateChatSendParams,
2829} from "../../../packages/gateway-protocol/src/index.js";
@@ -211,6 +212,62 @@ type PreRegisteredAgentRun = {
211212212213type ChatHistoryMethod = "chat.history" | "chat.startup";
213214215+async function handleChatMetadataRequest({
216+ params,
217+ respond,
218+ context,
219+}: GatewayRequestHandlerOptions): Promise<void> {
220+if (!validateChatMetadataParams(params)) {
221+respond(
222+false,
223+undefined,
224+errorShape(
225+ErrorCodes.INVALID_REQUEST,
226+`invalid chat.metadata params: ${formatValidationErrors(validateChatMetadataParams.errors)}`,
227+),
228+);
229+return;
230+}
231+const metadataParams = params;
232+const cfg = context.getRuntimeConfig();
233+const requestedAgentId =
234+typeof metadataParams.agentId === "string" && metadataParams.agentId.trim()
235+ ? normalizeAgentId(metadataParams.agentId)
236+ : resolveDefaultAgentId(cfg);
237+if (!listAgentIds(cfg).includes(requestedAgentId)) {
238+respond(
239+false,
240+undefined,
241+errorShape(ErrorCodes.INVALID_REQUEST, `Unknown agent id "${metadataParams.agentId}"`),
242+);
243+return;
244+}
245+try {
246+const [{ buildModelsListResult }, { buildCommandsListResult }] = await Promise.all([
247+import("./models-list-result.js"),
248+import("./commands-list-result.js"),
249+]);
250+const [models, commands] = await Promise.all([
251+buildModelsListResult({
252+ context,
253+agentId: requestedAgentId,
254+params: { view: "configured" },
255+}),
256+Promise.resolve(
257+buildCommandsListResult({
258+ cfg,
259+agentId: requestedAgentId,
260+includeArgs: true,
261+scope: "text",
262+}),
263+),
264+]);
265+respond(true, { ...models, ...commands });
266+} catch (err) {
267+respond(false, undefined, errorShape(ErrorCodes.UNAVAILABLE, String(err)));
268+}
269+}
270+214271function normalizeUnknownText(value: unknown): string | undefined {
215272return typeof value === "string" ? normalizeOptionalText(value) : undefined;
216273}
@@ -2610,6 +2667,7 @@ export const chatHandlers: GatewayRequestHandlers = {
26102667"chat.startup": async (opts) => {
26112668await handleChatHistoryRequest({ ...opts, method: "chat.startup", includeAgentsList: true });
26122669},
2670+"chat.metadata": handleChatMetadataRequest,
26132671"chat.message.get": async ({ params, respond, context }) => {
26142672if (!validateChatMessageGetParams(params)) {
26152673respond(
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。