






















@@ -9,6 +9,7 @@ import {
99isValidControlUiChatMessageMaxWidth,
1010normalizeControlUiChatMessageMaxWidth,
1111} from "./control-ui-css.js";
12+import type { GatewayRemoteConfig } from "./types.gateway.js";
1213import { SilentReplyPolicyConfigSchema } from "./zod-schema.agent-defaults.js";
1314import { ToolsSchema } from "./zod-schema.agent-runtime.js";
1415import { AgentsSchema, AudioSchema, BindingsSchema, BroadcastSchema } from "./zod-schema.agents.js";
@@ -50,6 +51,24 @@ const NodeHostSchema = z
5051.strict()
5152.optional();
525354+type ConfigSchemaShape<T extends object> = {
55+[Key in keyof T]-?: z.ZodType<T[Key]>;
56+};
57+58+const GatewayRemoteSchemaShape = {
59+enabled: z.boolean().optional(),
60+url: z.string().optional(),
61+transport: z.union([z.literal("ssh"), z.literal("direct")]).optional(),
62+remotePort: z.number().int().min(1).max(65_535).optional(),
63+token: SecretInputSchema.optional().register(sensitive),
64+password: SecretInputSchema.optional().register(sensitive),
65+tlsFingerprint: z.string().optional(),
66+sshTarget: z.string().optional(),
67+sshIdentity: z.string().optional(),
68+} satisfies ConfigSchemaShape<GatewayRemoteConfig>;
69+70+const GatewayRemoteConfigSchema = z.object(GatewayRemoteSchemaShape).strict().optional();
71+5372const LegacyCanvasHostSchema = z
5473.object({
5574enabled: z.boolean().optional(),
@@ -959,18 +978,7 @@ export const OpenClawSchema = z
959978})
960979.strict()
961980.optional(),
962-remote: z
963-.object({
964-url: z.string().optional(),
965-transport: z.union([z.literal("ssh"), z.literal("direct")]).optional(),
966-token: SecretInputSchema.optional().register(sensitive),
967-password: SecretInputSchema.optional().register(sensitive),
968-tlsFingerprint: z.string().optional(),
969-sshTarget: z.string().optional(),
970-sshIdentity: z.string().optional(),
971-})
972-.strict()
973-.optional(),
981+remote: GatewayRemoteConfigSchema,
974982reload: z
975983.object({
976984mode: z
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。