From a82df52753d9c5985a0bf4d681c6ea74e9cfe095 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 7 Mar 2026 16:37:47 +0000 Subject: [PATCH] refactor(extensions): share secret input schema builder --- extensions/bluebubbles/src/secret-input.ts | 20 +++++++------------ extensions/feishu/src/secret-input.ts | 20 +++++++------------ extensions/matrix/src/secret-input.ts | 20 +++++++------------ extensions/mattermost/src/secret-input.ts | 20 +++++++------------ extensions/nextcloud-talk/src/secret-input.ts | 20 +++++++------------ extensions/zalo/src/secret-input.ts | 20 +++++++------------ src/plugin-sdk/bluebubbles.ts | 1 + src/plugin-sdk/feishu.ts | 1 + src/plugin-sdk/matrix.ts | 1 + src/plugin-sdk/mattermost.ts | 1 + src/plugin-sdk/nextcloud-talk.ts | 1 + src/plugin-sdk/secret-input-schema.ts | 12 +++++++++++ src/plugin-sdk/zalo.ts | 1 + 13 files changed, 60 insertions(+), 78 deletions(-) create mode 100644 src/plugin-sdk/secret-input-schema.ts diff --git a/extensions/bluebubbles/src/secret-input.ts b/extensions/bluebubbles/src/secret-input.ts index 8a5530f46..a5aa73ebd 100644 --- a/extensions/bluebubbles/src/secret-input.ts +++ b/extensions/bluebubbles/src/secret-input.ts @@ -1,19 +1,13 @@ import { + buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString, } from "openclaw/plugin-sdk/bluebubbles"; -import { z } from "zod"; -export { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString }; - -export function buildSecretInputSchema() { - return z.union([ - z.string(), - z.object({ - source: z.enum(["env", "file", "exec"]), - provider: z.string().min(1), - id: z.string().min(1), - }), - ]); -} +export { + buildSecretInputSchema, + hasConfiguredSecretInput, + normalizeResolvedSecretInputString, + normalizeSecretInputString, +}; diff --git a/extensions/feishu/src/secret-input.ts b/extensions/feishu/src/secret-input.ts index a2c2f517f..37dda74f2 100644 --- a/extensions/feishu/src/secret-input.ts +++ b/extensions/feishu/src/secret-input.ts @@ -1,19 +1,13 @@ import { + buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString, } from "openclaw/plugin-sdk/feishu"; -import { z } from "zod"; -export { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString }; - -export function buildSecretInputSchema() { - return z.union([ - z.string(), - z.object({ - source: z.enum(["env", "file", "exec"]), - provider: z.string().min(1), - id: z.string().min(1), - }), - ]); -} +export { + buildSecretInputSchema, + hasConfiguredSecretInput, + normalizeResolvedSecretInputString, + normalizeSecretInputString, +}; diff --git a/extensions/matrix/src/secret-input.ts b/extensions/matrix/src/secret-input.ts index a5de12147..c08275734 100644 --- a/extensions/matrix/src/secret-input.ts +++ b/extensions/matrix/src/secret-input.ts @@ -1,19 +1,13 @@ import { + buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString, } from "openclaw/plugin-sdk/matrix"; -import { z } from "zod"; -export { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString }; - -export function buildSecretInputSchema() { - return z.union([ - z.string(), - z.object({ - source: z.enum(["env", "file", "exec"]), - provider: z.string().min(1), - id: z.string().min(1), - }), - ]); -} +export { + buildSecretInputSchema, + hasConfiguredSecretInput, + normalizeResolvedSecretInputString, + normalizeSecretInputString, +}; diff --git a/extensions/mattermost/src/secret-input.ts b/extensions/mattermost/src/secret-input.ts index 017109424..576f5b9fc 100644 --- a/extensions/mattermost/src/secret-input.ts +++ b/extensions/mattermost/src/secret-input.ts @@ -1,19 +1,13 @@ import { + buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString, } from "openclaw/plugin-sdk/mattermost"; -import { z } from "zod"; -export { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString }; - -export function buildSecretInputSchema() { - return z.union([ - z.string(), - z.object({ - source: z.enum(["env", "file", "exec"]), - provider: z.string().min(1), - id: z.string().min(1), - }), - ]); -} +export { + buildSecretInputSchema, + hasConfiguredSecretInput, + normalizeResolvedSecretInputString, + normalizeSecretInputString, +}; diff --git a/extensions/nextcloud-talk/src/secret-input.ts b/extensions/nextcloud-talk/src/secret-input.ts index f51a0ad68..d26cb8e4e 100644 --- a/extensions/nextcloud-talk/src/secret-input.ts +++ b/extensions/nextcloud-talk/src/secret-input.ts @@ -1,19 +1,13 @@ import { + buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString, } from "openclaw/plugin-sdk/nextcloud-talk"; -import { z } from "zod"; -export { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString }; - -export function buildSecretInputSchema() { - return z.union([ - z.string(), - z.object({ - source: z.enum(["env", "file", "exec"]), - provider: z.string().min(1), - id: z.string().min(1), - }), - ]); -} +export { + buildSecretInputSchema, + hasConfiguredSecretInput, + normalizeResolvedSecretInputString, + normalizeSecretInputString, +}; diff --git a/extensions/zalo/src/secret-input.ts b/extensions/zalo/src/secret-input.ts index 702548454..bf218d1e4 100644 --- a/extensions/zalo/src/secret-input.ts +++ b/extensions/zalo/src/secret-input.ts @@ -1,19 +1,13 @@ import { + buildSecretInputSchema, hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString, } from "openclaw/plugin-sdk/zalo"; -import { z } from "zod"; -export { hasConfiguredSecretInput, normalizeResolvedSecretInputString, normalizeSecretInputString }; - -export function buildSecretInputSchema() { - return z.union([ - z.string(), - z.object({ - source: z.enum(["env", "file", "exec"]), - provider: z.string().min(1), - id: z.string().min(1), - }), - ]); -} +export { + buildSecretInputSchema, + hasConfiguredSecretInput, + normalizeResolvedSecretInputString, + normalizeSecretInputString, +}; diff --git a/src/plugin-sdk/bluebubbles.ts b/src/plugin-sdk/bluebubbles.ts index 8489d4cb8..bb67d5687 100644 --- a/src/plugin-sdk/bluebubbles.ts +++ b/src/plugin-sdk/bluebubbles.ts @@ -61,6 +61,7 @@ export { normalizeResolvedSecretInputString, normalizeSecretInputString, } from "../config/types.secrets.js"; +export { buildSecretInputSchema } from "./secret-input-schema.js"; export { ToolPolicySchema } from "../config/zod-schema.agent-runtime.js"; export { MarkdownConfigSchema } from "../config/zod-schema.core.js"; export type { ParsedChatTarget } from "../imessage/target-parsing-helpers.js"; diff --git a/src/plugin-sdk/feishu.ts b/src/plugin-sdk/feishu.ts index 300daefc9..360623d9e 100644 --- a/src/plugin-sdk/feishu.ts +++ b/src/plugin-sdk/feishu.ts @@ -43,6 +43,7 @@ export { normalizeResolvedSecretInputString, normalizeSecretInputString, } from "../config/types.secrets.js"; +export { buildSecretInputSchema } from "./secret-input-schema.js"; export { createDedupeCache } from "../infra/dedupe.js"; export { installRequestBodyLimitGuard } from "../infra/http-body.js"; export { fetchWithSsrFGuard } from "../infra/net/fetch-guard.js"; diff --git a/src/plugin-sdk/matrix.ts b/src/plugin-sdk/matrix.ts index 63712fc8d..b029062e2 100644 --- a/src/plugin-sdk/matrix.ts +++ b/src/plugin-sdk/matrix.ts @@ -73,6 +73,7 @@ export { normalizeResolvedSecretInputString, normalizeSecretInputString, } from "../config/types.secrets.js"; +export { buildSecretInputSchema } from "./secret-input-schema.js"; export { ToolPolicySchema } from "../config/zod-schema.agent-runtime.js"; export { MarkdownConfigSchema } from "../config/zod-schema.core.js"; export { fetchWithSsrFGuard } from "../infra/net/fetch-guard.js"; diff --git a/src/plugin-sdk/mattermost.ts b/src/plugin-sdk/mattermost.ts index 12c18efea..9ad22e602 100644 --- a/src/plugin-sdk/mattermost.ts +++ b/src/plugin-sdk/mattermost.ts @@ -63,6 +63,7 @@ export { normalizeResolvedSecretInputString, normalizeSecretInputString, } from "../config/types.secrets.js"; +export { buildSecretInputSchema } from "./secret-input-schema.js"; export { BlockStreamingCoalesceSchema, DmPolicySchema, diff --git a/src/plugin-sdk/nextcloud-talk.ts b/src/plugin-sdk/nextcloud-talk.ts index 14d633a4c..03116a786 100644 --- a/src/plugin-sdk/nextcloud-talk.ts +++ b/src/plugin-sdk/nextcloud-talk.ts @@ -51,6 +51,7 @@ export { normalizeResolvedSecretInputString, normalizeSecretInputString, } from "../config/types.secrets.js"; +export { buildSecretInputSchema } from "./secret-input-schema.js"; export { ToolPolicySchema } from "../config/zod-schema.agent-runtime.js"; export { BlockStreamingCoalesceSchema, diff --git a/src/plugin-sdk/secret-input-schema.ts b/src/plugin-sdk/secret-input-schema.ts new file mode 100644 index 000000000..d5eb3a076 --- /dev/null +++ b/src/plugin-sdk/secret-input-schema.ts @@ -0,0 +1,12 @@ +import { z } from "zod"; + +export function buildSecretInputSchema() { + return z.union([ + z.string(), + z.object({ + source: z.enum(["env", "file", "exec"]), + provider: z.string().min(1), + id: z.string().min(1), + }), + ]); +} diff --git a/src/plugin-sdk/zalo.ts b/src/plugin-sdk/zalo.ts index 440cffd0d..852c6f17f 100644 --- a/src/plugin-sdk/zalo.ts +++ b/src/plugin-sdk/zalo.ts @@ -48,6 +48,7 @@ export { normalizeResolvedSecretInputString, normalizeSecretInputString, } from "../config/types.secrets.js"; +export { buildSecretInputSchema } from "./secret-input-schema.js"; export { MarkdownConfigSchema } from "../config/zod-schema.core.js"; export { createDedupeCache } from "../infra/dedupe.js"; export { emptyPluginConfigSchema } from "../plugins/config-schema.js";