diff --git a/src/infra/outbound/outbound-session.ts b/src/infra/outbound/outbound-session.ts index cbe91ae4ddd..d622c21b31c 100644 --- a/src/infra/outbound/outbound-session.ts +++ b/src/infra/outbound/outbound-session.ts @@ -7,9 +7,10 @@ import { resolveStorePath, } from "../../config/sessions/inbound.runtime.js"; import type { OpenClawConfig } from "../../config/types.openclaw.js"; -import { buildAgentSessionKey, type RoutePeer } from "../../routing/resolve-route.js"; +import type { RoutePeer } from "../../routing/resolve-route.js"; import { resolveAgentIdFromSessionKey } from "../../routing/session-key.js"; import { normalizeLowercaseStringOrEmpty } from "../../shared/string-coerce.js"; +import { buildOutboundBaseSessionKey } from "./base-session-key.js"; import type { ResolvedMessagingTarget } from "./target-resolver.js"; export type OutboundSessionRoute = { @@ -76,23 +77,6 @@ function inferPeerKind(params: { return "direct"; } -function buildBaseSessionKey(params: { - cfg: OpenClawConfig; - agentId: string; - channel: ChannelId; - accountId?: string | null; - peer: RoutePeer; -}): string { - return buildAgentSessionKey({ - agentId: params.agentId, - channel: params.channel, - accountId: params.accountId, - peer: params.peer, - dmScope: params.cfg.session?.dmScope ?? "main", - identityLinks: params.cfg.session?.identityLinks, - }); -} - function resolveFallbackSession( params: ResolveOutboundSessionRouteParams, ): OutboundSessionRoute | null { @@ -109,7 +93,7 @@ function resolveFallbackSession( return null; } const peer: RoutePeer = { kind: peerKind, id: peerId }; - const baseSessionKey = buildBaseSessionKey({ + const baseSessionKey = buildOutboundBaseSessionKey({ cfg: params.cfg, agentId: params.agentId, channel: params.channel, diff --git a/src/plugins/web-provider-public-artifacts.explicit.ts b/src/plugins/web-provider-public-artifacts.explicit.ts index db8c87ee13f..7a096d784fa 100644 --- a/src/plugins/web-provider-public-artifacts.explicit.ts +++ b/src/plugins/web-provider-public-artifacts.explicit.ts @@ -107,21 +107,24 @@ function normalizeExplicitBundledPluginIds(pluginIds: readonly string[]): string return [...new Set(pluginIds)].toSorted((left, right) => left.localeCompare(right)); } -export function loadBundledWebSearchProviderEntriesFromDir(params: { +function loadBundledProviderEntriesFromDir(params: { dirName: string; pluginId: string; -}): PluginWebSearchProviderEntry[] | null { + artifactCandidates: readonly string[]; + suffix: string; + isProvider: (value: unknown) => value is TProvider; +}): Array | null { const mod = tryLoadBundledPublicArtifactModule({ dirName: params.dirName, - artifactCandidates: WEB_SEARCH_ARTIFACT_CANDIDATES, + artifactCandidates: params.artifactCandidates, }); if (!mod) { return null; } const providers = collectProviderFactories({ mod, - suffix: "WebSearchProvider", - isProvider: isWebSearchProviderPlugin, + suffix: params.suffix, + isProvider: params.isProvider, }); if (providers.length === 0) { return null; @@ -129,48 +132,43 @@ export function loadBundledWebSearchProviderEntriesFromDir(params: { return providers.map((provider) => Object.assign({}, provider, { pluginId: params.pluginId })); } +export function loadBundledWebSearchProviderEntriesFromDir(params: { + dirName: string; + pluginId: string; +}): PluginWebSearchProviderEntry[] | null { + return loadBundledProviderEntriesFromDir({ + dirName: params.dirName, + pluginId: params.pluginId, + artifactCandidates: WEB_SEARCH_ARTIFACT_CANDIDATES, + suffix: "WebSearchProvider", + isProvider: isWebSearchProviderPlugin, + }); +} + export function loadBundledRuntimeWebSearchProviderEntriesFromDir(params: { dirName: string; pluginId: string; }): PluginWebSearchProviderEntry[] | null { - const mod = tryLoadBundledPublicArtifactModule({ + return loadBundledProviderEntriesFromDir({ dirName: params.dirName, + pluginId: params.pluginId, artifactCandidates: WEB_SEARCH_RUNTIME_ARTIFACT_CANDIDATES, - }); - if (!mod) { - return null; - } - const providers = collectProviderFactories({ - mod, suffix: "WebSearchProvider", isProvider: isWebSearchProviderPlugin, }); - if (providers.length === 0) { - return null; - } - return providers.map((provider) => Object.assign({}, provider, { pluginId: params.pluginId })); } export function loadBundledWebFetchProviderEntriesFromDir(params: { dirName: string; pluginId: string; }): PluginWebFetchProviderEntry[] | null { - const mod = tryLoadBundledPublicArtifactModule({ + return loadBundledProviderEntriesFromDir({ dirName: params.dirName, + pluginId: params.pluginId, artifactCandidates: WEB_FETCH_ARTIFACT_CANDIDATES, - }); - if (!mod) { - return null; - } - const providers = collectProviderFactories({ - mod, suffix: "WebFetchProvider", isProvider: isWebFetchProviderPlugin, }); - if (providers.length === 0) { - return null; - } - return providers.map((provider) => Object.assign({}, provider, { pluginId: params.pluginId })); } export function resolveBundledExplicitWebSearchProvidersFromPublicArtifacts(params: {