diff --git a/extensions/arcee/provider-catalog.ts b/extensions/arcee/provider-catalog.ts index 3b2b5729bd7..4ea840446da 100644 --- a/extensions/arcee/provider-catalog.ts +++ b/extensions/arcee/provider-catalog.ts @@ -4,9 +4,7 @@ import { buildArceeModelDefinition, ARCEE_BASE_URL, ARCEE_MODEL_CATALOG } from " export const OPENROUTER_BASE_URL = "https://openrouter.ai/api/v1"; function normalizeBaseUrl(baseUrl: string | undefined): string { - return String(baseUrl ?? "") - .trim() - .replace(/\/+$/, ""); + return (baseUrl ?? "").trim().replace(/\/+$/, ""); } export function isArceeOpenRouterBaseUrl(baseUrl: string | undefined): boolean { diff --git a/extensions/browser/src/browser/pw-tools-core.interactions.ts b/extensions/browser/src/browser/pw-tools-core.interactions.ts index 133f368b48f..ccf34df5b34 100644 --- a/extensions/browser/src/browser/pw-tools-core.interactions.ts +++ b/extensions/browser/src/browser/pw-tools-core.interactions.ts @@ -668,7 +668,7 @@ export async function typeViaPlaywright(opts: { ssrfPolicy?: SsrFPolicy; }): Promise { const resolved = requireRefOrSelector(opts.ref, opts.selector); - const text = String(opts.text ?? ""); + const text = opts.text ?? ""; const page = await getRestoredPageForTarget(opts); const label = resolved.ref ?? resolved.selector!; const locator = resolved.ref diff --git a/extensions/browser/src/cli/browser-cli-state.ts b/extensions/browser/src/cli/browser-cli-state.ts index 5a688c2486b..78e135ccb1c 100644 --- a/extensions/browser/src/cli/browser-cli-state.ts +++ b/extensions/browser/src/cli/browser-cli-state.ts @@ -115,7 +115,7 @@ export function registerBrowserStateCommands( if (!headersJsonValue) { throw new Error("Missing headers JSON (pass --headers-json or positional JSON argument)"); } - const parsed = JSON.parse(String(headersJsonValue)) as unknown; + const parsed = JSON.parse(headersJsonValue) as unknown; if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) { throw new Error("Headers JSON must be a JSON object"); } diff --git a/extensions/chutes/index.ts b/extensions/chutes/index.ts index c83a282182e..a953882ecda 100644 --- a/extensions/chutes/index.ts +++ b/extensions/chutes/index.ts @@ -24,12 +24,12 @@ async function runChutesOAuth(ctx: ProviderAuthContext): Promise (value?.trim() ? undefined : "Required"), - }), + }) ).trim(); const clientSecret = normalizeOptionalString(process.env.CHUTES_CLIENT_SECRET); diff --git a/extensions/huggingface/models.ts b/extensions/huggingface/models.ts index de52b59f7ef..d362995cb17 100644 --- a/extensions/huggingface/models.ts +++ b/extensions/huggingface/models.ts @@ -73,7 +73,7 @@ export const HUGGINGFACE_MODEL_CATALOG: ModelDefinitionConfig[] = [ ]; export function isHuggingfacePolicyLocked(modelRef: string): boolean { - const ref = String(modelRef).trim(); + const ref = modelRef.trim(); return HUGGINGFACE_POLICY_SUFFIXES.some((suffix) => ref.endsWith(`:${suffix}`) || ref === suffix); } diff --git a/extensions/llm-task/src/llm-task-tool.ts b/extensions/llm-task/src/llm-task-tool.ts index eb3a2e283d0..01e17ddc74d 100644 --- a/extensions/llm-task/src/llm-task-tool.ts +++ b/extensions/llm-task/src/llm-task-tool.ts @@ -124,7 +124,7 @@ export function createLlmTaskTool(api: OpenClawPluginApi) { const modelKey = toModelKey(provider, model); if (!provider || !model || !modelKey) { throw new Error( - `provider/model could not be resolved (provider=${String(provider ?? "")}, model=${String(model ?? "")})`, + `provider/model could not be resolved (provider=${provider ?? ""}, model=${model ?? ""})`, ); } diff --git a/extensions/matrix/src/matrix/accounts.ts b/extensions/matrix/src/matrix/accounts.ts index 343e13e6bd1..48af02ed1d0 100644 --- a/extensions/matrix/src/matrix/accounts.ts +++ b/extensions/matrix/src/matrix/accounts.ts @@ -179,7 +179,7 @@ export function resolveMatrixAccount(params: { userId: authView.userId || "", }) : false; - const configured = hasHomeserver && (hasAccessToken || hasPasswordAuth || Boolean(hasStored)); + const configured = hasHomeserver && (hasAccessToken || hasPasswordAuth || hasStored); return { accountId, enabled, diff --git a/extensions/matrix/src/matrix/monitor/handler.ts b/extensions/matrix/src/matrix/monitor/handler.ts index 009977f1736..d508a613653 100644 --- a/extensions/matrix/src/matrix/monitor/handler.ts +++ b/extensions/matrix/src/matrix/monitor/handler.ts @@ -1245,7 +1245,7 @@ export function createMatrixRoomMessageHandler(params: MatrixMonitorHandlerParam isDirect: isDirectMessage, isGroup: isRoom, isMentionableGroup: isRoom, - requireMention: Boolean(shouldRequireMention), + requireMention: shouldRequireMention, canDetectMention, effectiveWasMentioned: wasMentioned || shouldBypassMention, shouldBypassMention, diff --git a/extensions/matrix/src/outbound.ts b/extensions/matrix/src/outbound.ts index 0adb03ca5ad..f384355524e 100644 --- a/extensions/matrix/src/outbound.ts +++ b/extensions/matrix/src/outbound.ts @@ -62,8 +62,7 @@ export const matrixOutbound: ChannelOutboundAdapter = { }; }, sendPoll: async ({ cfg, to, poll, threadId, accountId }) => { - const resolvedThreadId = - threadId !== undefined && threadId !== null ? String(threadId) : undefined; + const resolvedThreadId = threadId !== undefined && threadId !== null ? threadId : undefined; const result = await sendPollMatrix(to, poll, { cfg, threadId: resolvedThreadId, diff --git a/extensions/msteams/src/channel.ts b/extensions/msteams/src/channel.ts index 7d22395eb2a..613f6a5df3c 100644 --- a/extensions/msteams/src/channel.ts +++ b/extensions/msteams/src/channel.ts @@ -319,10 +319,10 @@ export const msteamsPlugin: ChannelPlugin String(role).trim()).filter(Boolean) + ? graph.roles.map((role) => role.trim()).filter(Boolean) : []; const scopes = Array.isArray(graph.scopes) - ? graph.scopes.map((scope) => String(scope).trim()).filter(Boolean) + ? graph.scopes.map((scope) => scope.trim()).filter(Boolean) : []; const formatPermission = (permission: string) => { const hint = TEAMS_GRAPH_PERMISSION_HINTS[permission]; diff --git a/extensions/msteams/src/monitor-handler/message-handler.ts b/extensions/msteams/src/monitor-handler/message-handler.ts index 8351ac91ff6..ac7988243e9 100644 --- a/extensions/msteams/src/monitor-handler/message-handler.ts +++ b/extensions/msteams/src/monitor-handler/message-handler.ts @@ -513,7 +513,7 @@ export function createMSTeamsMessageHandler(deps: MSTeamsMessageHandlerDeps) { }, policy: { isGroup: !isDirectMessage, - requireMention: Boolean(requireMention), + requireMention, allowTextCommands: false, hasControlCommand: false, commandAuthorized: false, diff --git a/extensions/openrouter/stream.ts b/extensions/openrouter/stream.ts index 27900222175..d0f196d5487 100644 --- a/extensions/openrouter/stream.ts +++ b/extensions/openrouter/stream.ts @@ -16,7 +16,7 @@ function injectOpenRouterRouting( baseStreamFn ?? ((nextModel) => { throw new Error( - `OpenRouter routing wrapper requires an underlying streamFn for ${String(nextModel.id)}.`, + `OpenRouter routing wrapper requires an underlying streamFn for ${nextModel.id}.`, ); }) )( diff --git a/extensions/qa-lab/src/harness-runtime.ts b/extensions/qa-lab/src/harness-runtime.ts index ac3cfc807b6..a1d228702ca 100644 --- a/extensions/qa-lab/src/harness-runtime.ts +++ b/extensions/qa-lab/src/harness-runtime.ts @@ -44,7 +44,7 @@ export function createQaRunnerRuntime(): PluginRuntime { }) { sessions.set(sessionKey, { sessionKey, - body: String(ctx.BodyForAgent ?? ctx.Body ?? ""), + body: ctx.BodyForAgent ?? ctx.Body ?? "", }); }, }, @@ -66,7 +66,7 @@ export function createQaRunnerRuntime(): PluginRuntime { dispatcherOptions: { deliver: (payload: { text: string }) => Promise }; }) { await dispatcherOptions.deliver({ - text: `qa-echo: ${String(ctx.BodyForAgent ?? ctx.Body ?? "")}`, + text: `qa-echo: ${ctx.BodyForAgent ?? ctx.Body ?? ""}`, }); }, }, diff --git a/extensions/qa-lab/src/live-transports/matrix/matrix-live.runtime.ts b/extensions/qa-lab/src/live-transports/matrix/matrix-live.runtime.ts index e75e2ee981e..fdf4ab7bec6 100644 --- a/extensions/qa-lab/src/live-transports/matrix/matrix-live.runtime.ts +++ b/extensions/qa-lab/src/live-transports/matrix/matrix-live.runtime.ts @@ -205,11 +205,11 @@ function isMatrixAccountReady(entry?: { restartPending?: boolean; running?: boolean; }): boolean { - return Boolean( + return ( entry?.running === true && entry.connected === true && entry.restartPending !== true && - (entry.healthState === undefined || entry.healthState === "healthy"), + (entry.healthState === undefined || entry.healthState === "healthy") ); } diff --git a/extensions/qa-lab/src/suite.ts b/extensions/qa-lab/src/suite.ts index d077cbe1055..c662aa0c0cf 100644 --- a/extensions/qa-lab/src/suite.ts +++ b/extensions/qa-lab/src/suite.ts @@ -827,7 +827,7 @@ async function resolveGeneratedImagePath(params: { ); for (let index = requests.length - 1; index >= 0; index -= 1) { const request = requests[index]; - if (!String(request.allInputText ?? "").includes(params.promptSnippet)) { + if (!(request.allInputText ?? "").includes(params.promptSnippet)) { continue; } const mediaPath = extractMediaPathFromText(request.toolOutput); @@ -1055,7 +1055,7 @@ async function runAgentPrompt( const waited = await waitForAgentRun(env, started.runId!, params.timeoutMs ?? 30_000); if (waited.status !== "ok") { throw new Error( - `agent.wait returned ${String(waited.status ?? "unknown")}: ${waited.error ?? "no error"}`, + `agent.wait returned ${waited.status ?? "unknown"}: ${waited.error ?? "no error"}`, ); } return { diff --git a/extensions/slack/src/monitor/message-handler/prepare.ts b/extensions/slack/src/monitor/message-handler/prepare.ts index d1a6e917d39..2a753771514 100644 --- a/extensions/slack/src/monitor/message-handler/prepare.ts +++ b/extensions/slack/src/monitor/message-handler/prepare.ts @@ -508,7 +508,7 @@ export async function prepareSlackMessage(params: { }, policy: { isGroup: isRoom, - requireMention: Boolean(shouldRequireMention), + requireMention: shouldRequireMention, allowedImplicitMentionKinds: ctx.threadRequireExplicitMention ? [] : undefined, allowTextCommands, hasControlCommand: hasControlCommandInMessage, @@ -576,7 +576,7 @@ export async function prepareSlackMessage(params: { isDirect: isDirectMessage, isGroup: isRoomish, isMentionableGroup: isRoom, - requireMention: Boolean(shouldRequireMention), + requireMention: shouldRequireMention, canDetectMention, effectiveWasMentioned, shouldBypassMention: mentionDecision.shouldBypassMention, diff --git a/extensions/slack/src/setup-core.ts b/extensions/slack/src/setup-core.ts index beedcd9cf27..d33f63a42ad 100644 --- a/extensions/slack/src/setup-core.ts +++ b/extensions/slack/src/setup-core.ts @@ -42,7 +42,7 @@ function hasSlackInteractiveRepliesConfig(cfg: OpenClawConfig, accountId: string const capabilities = resolveSlackAccount({ cfg, accountId }).config.capabilities; if (Array.isArray(capabilities)) { return capabilities.some( - (entry) => normalizeLowercaseStringOrEmpty(String(entry)) === "interactivereplies", + (entry) => normalizeLowercaseStringOrEmpty(entry) === "interactivereplies", ); } if (!capabilities || typeof capabilities !== "object") { @@ -61,7 +61,7 @@ function setSlackInteractiveReplies( ? interactiveReplies ? [...new Set([...capabilities, "interactiveReplies"])] : capabilities.filter( - (entry) => normalizeLowercaseStringOrEmpty(String(entry)) !== "interactivereplies", + (entry) => normalizeLowercaseStringOrEmpty(entry) !== "interactivereplies", ) : { ...((capabilities && typeof capabilities === "object" ? capabilities : {}) as Record< diff --git a/extensions/tavily/src/tavily-client.ts b/extensions/tavily/src/tavily-client.ts index 58c1b857fbc..eb1b5310df1 100644 --- a/extensions/tavily/src/tavily-client.ts +++ b/extensions/tavily/src/tavily-client.ts @@ -239,7 +239,7 @@ export async function runTavilyExtract( ...(Array.isArray(r.images) ? { images: (r.images as string[]).map((img) => - wrapExternalContent(String(img), { source: "web_fetch", includeWarning: false }), + wrapExternalContent(img, { source: "web_fetch", includeWarning: false }), ), } : {}), diff --git a/extensions/zalo/src/setup-allow-from.ts b/extensions/zalo/src/setup-allow-from.ts index 9400199bb33..9f0ab6a7b27 100644 --- a/extensions/zalo/src/setup-allow-from.ts +++ b/extensions/zalo/src/setup-allow-from.ts @@ -41,7 +41,7 @@ export async function promptZaloAllowFrom(params: { placeholder: "123456789", initialValue: existingAllowFrom[0] ? String(existingAllowFrom[0]) : undefined, validate: (value) => { - const raw = String(value ?? "").trim(); + const raw = (value ?? "").trim(); if (!raw) { return "Required"; } @@ -51,7 +51,7 @@ export async function promptZaloAllowFrom(params: { return undefined; }, }); - const normalized = String(entry).trim(); + const normalized = entry.trim(); const unique = mergeAllowFromEntries(existingAllowFrom, [normalized]); if (accountId === DEFAULT_ACCOUNT_ID) { diff --git a/extensions/zalo/src/setup-surface.ts b/extensions/zalo/src/setup-surface.ts index a1b5fd320cc..0c3ca81d5e1 100644 --- a/extensions/zalo/src/setup-surface.ts +++ b/extensions/zalo/src/setup-surface.ts @@ -200,13 +200,13 @@ export const zaloSetupWizard: ChannelSetupWizard = { initialValue: Boolean(resolvedAccount.config.webhookUrl), }); if (wantsWebhook) { - const webhookUrl = String( + const webhookUrl = ( await prompter.text({ message: "Webhook URL (https://...) ", initialValue: resolvedAccount.config.webhookUrl, validate: (value) => value?.trim()?.startsWith("https://") ? undefined : "HTTPS URL required", - }), + }) ).trim(); const defaultPath = (() => { try { @@ -259,11 +259,11 @@ export const zaloSetupWizard: ChannelSetupWizard = { webhookSecretResult.action === "set" ? webhookSecretResult.value : resolvedAccount.config.webhookSecret; - const webhookPath = String( + const webhookPath = ( await prompter.text({ message: "Webhook path (optional)", initialValue: resolvedAccount.config.webhookPath ?? defaultPath, - }), + }) ).trim(); next = setZaloUpdateMode( next,