Polls: scope Telegram poll extras to plugin schema
This commit is contained in:
parent
fa73f5aeb5
commit
d8b95d2315
@ -18,7 +18,7 @@ import type { OpenClawConfig } from "../../config/config.js";
|
||||
import { loadConfig } from "../../config/config.js";
|
||||
import { GATEWAY_CLIENT_IDS, GATEWAY_CLIENT_MODES } from "../../gateway/protocol/client-info.js";
|
||||
import { getToolResult, runMessageAction } from "../../infra/outbound/message-action-runner.js";
|
||||
import { POLL_CREATION_PARAM_DEFS, POLL_CREATION_PARAM_NAMES } from "../../poll-params.js";
|
||||
import { POLL_CREATION_PARAM_DEFS, SHARED_POLL_CREATION_PARAM_NAMES } from "../../poll-params.js";
|
||||
import { normalizeAccountId } from "../../routing/session-key.js";
|
||||
import { stripReasoningTagsFromText } from "../../shared/text/reasoning-tags.js";
|
||||
import { normalizeMessageChannel } from "../../utils/message-channel.js";
|
||||
@ -197,11 +197,8 @@ function buildPollSchema() {
|
||||
),
|
||||
),
|
||||
};
|
||||
for (const name of POLL_CREATION_PARAM_NAMES) {
|
||||
for (const name of SHARED_POLL_CREATION_PARAM_NAMES) {
|
||||
const def = POLL_CREATION_PARAM_DEFS[name];
|
||||
if (def.telegramOnly) {
|
||||
continue;
|
||||
}
|
||||
switch (def.kind) {
|
||||
case "string":
|
||||
props[name] = Type.Optional(Type.String());
|
||||
|
||||
@ -153,7 +153,6 @@ export function createSlackMessageToolBlocksSchema(): TSchema {
|
||||
|
||||
export function createTelegramPollExtraToolSchemas(): Record<string, TSchema> {
|
||||
return {
|
||||
pollDurationHours: Type.Optional(Type.Number()),
|
||||
pollDurationSeconds: Type.Optional(Type.Number()),
|
||||
pollAnonymous: Type.Optional(Type.Boolean()),
|
||||
pollPublic: Type.Optional(Type.Boolean()),
|
||||
|
||||
@ -4,22 +4,37 @@ export type PollCreationParamKind = "string" | "stringArray" | "number" | "boole
|
||||
|
||||
export type PollCreationParamDef = {
|
||||
kind: PollCreationParamKind;
|
||||
telegramOnly?: boolean;
|
||||
};
|
||||
|
||||
export const POLL_CREATION_PARAM_DEFS: Record<string, PollCreationParamDef> = {
|
||||
const SHARED_POLL_CREATION_PARAM_DEFS = {
|
||||
pollQuestion: { kind: "string" },
|
||||
pollOption: { kind: "stringArray" },
|
||||
pollDurationHours: { kind: "number" },
|
||||
pollMulti: { kind: "boolean" },
|
||||
pollDurationSeconds: { kind: "number", telegramOnly: true },
|
||||
pollAnonymous: { kind: "boolean", telegramOnly: true },
|
||||
pollPublic: { kind: "boolean", telegramOnly: true },
|
||||
} satisfies Record<string, PollCreationParamDef>;
|
||||
|
||||
const TELEGRAM_POLL_CREATION_PARAM_DEFS = {
|
||||
pollDurationSeconds: { kind: "number" },
|
||||
pollAnonymous: { kind: "boolean" },
|
||||
pollPublic: { kind: "boolean" },
|
||||
} satisfies Record<string, PollCreationParamDef>;
|
||||
|
||||
export const POLL_CREATION_PARAM_DEFS: Record<string, PollCreationParamDef> = {
|
||||
...SHARED_POLL_CREATION_PARAM_DEFS,
|
||||
...TELEGRAM_POLL_CREATION_PARAM_DEFS,
|
||||
};
|
||||
|
||||
export type SharedPollCreationParamName = keyof typeof SHARED_POLL_CREATION_PARAM_DEFS;
|
||||
export type TelegramPollCreationParamName = keyof typeof TELEGRAM_POLL_CREATION_PARAM_DEFS;
|
||||
export type PollCreationParamName = keyof typeof POLL_CREATION_PARAM_DEFS;
|
||||
|
||||
export const POLL_CREATION_PARAM_NAMES = Object.keys(POLL_CREATION_PARAM_DEFS);
|
||||
export const SHARED_POLL_CREATION_PARAM_NAMES = Object.keys(
|
||||
SHARED_POLL_CREATION_PARAM_DEFS,
|
||||
) as SharedPollCreationParamName[];
|
||||
export const TELEGRAM_POLL_CREATION_PARAM_NAMES = Object.keys(
|
||||
TELEGRAM_POLL_CREATION_PARAM_DEFS,
|
||||
) as TelegramPollCreationParamName[];
|
||||
|
||||
function readPollParamRaw(params: Record<string, unknown>, key: string): unknown {
|
||||
return readSnakeCaseParamRaw(params, key);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user