fix: allow large workflow exclusion lists
Some checks failed
Lint / build (20) (push) Has been cancelled
Playwright Tests / test (push) Has been cancelled

This commit is contained in:
Your Name 2026-04-23 13:29:47 +08:00
parent 3101f5966d
commit 85c0f2c096
2 changed files with 10 additions and 5 deletions

View File

@ -31,6 +31,7 @@ import {
normalizeAgentSecondaryTypeConfig,
} from "@/lib/agents/secondary-type-config";
import {
AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX,
AGENT_WORKFLOW_UI_CONFIG_KEY,
AGENT_WORKFLOW_PROMPT_FRAGMENT_MAX_LENGTH,
defaultAgentWorkflowUiConfig,
@ -922,7 +923,10 @@ const agentWorkflowOptionSchema: z.ZodTypeAny = z.lazy(() =>
.max(AGENT_WORKFLOW_PROMPT_FRAGMENT_MAX_LENGTH)
.nullable()
.optional(),
blockedOptionKeys: z.array(z.string().trim().min(1).max(64)).max(100).optional(),
blockedOptionKeys: z
.array(z.string().trim().min(1).max(64))
.max(AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX)
.optional(),
specialModuleEnabled: z.boolean().optional(),
specialModuleExclusionEnabled: z.boolean().optional(),
specialModuleAllowedOptionKeys: z

View File

@ -16,6 +16,7 @@ export const AGENT_WORKFLOW_UI_CONFIG_KEY = "agent_workflow_ui_config";
export const AGENT_WORKFLOW_MAX_TREE_DEPTH = 8;
export const AGENT_WORKFLOW_MAX_OPTION_DEPTH = 100;
export const AGENT_WORKFLOW_PROMPT_FRAGMENT_MAX_LENGTH = 20_000;
export const AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX = 5000;
const AGENT_WORKFLOW_SPECIAL_MODULE_ALLOWED_KEYS_MAX = 5000;
export const defaultAgentWorkflowCategoryLabels: AgentWorkflowCategoryLabels = {
firstCategory: "品牌",
@ -56,7 +57,7 @@ function cloneOption(
promptFragment: option.promptFragment || "",
blockedOptionKeys: Array.from(new Set((option.blockedOptionKeys || []).filter(Boolean))).slice(
0,
100
AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX
),
specialModuleEnabled: Boolean(option.specialModuleEnabled),
specialModuleExclusionEnabled: Boolean(option.specialModuleExclusionEnabled),
@ -547,7 +548,7 @@ function sanitizeBlockedOptionTree(
(blockedKey) => blockedKey !== option.key && validKeys.has(blockedKey)
)
)
).slice(0, 100),
).slice(0, AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX),
children: sanitizeBlockedOptionTree(option.children || [], validKeys),
}));
}
@ -967,8 +968,8 @@ export function normalizeAgentWorkflowUiConfig(value: unknown): AgentWorkflowUiC
),
promptFragment,
blockedOptionKeys: hasRawBlockedOptionKeys
? normalizeKeyList(optionRecord.blockedOptionKeys, 100)
: normalizeKeyList(defaultOption?.blockedOptionKeys, 100),
? normalizeKeyList(optionRecord.blockedOptionKeys, AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX)
: normalizeKeyList(defaultOption?.blockedOptionKeys, AGENT_WORKFLOW_BLOCKED_OPTION_KEYS_MAX),
specialModuleEnabled: normalizeBoolean(
optionRecord.specialModuleEnabled,
defaultOption?.specialModuleEnabled ?? false