fix(ci): resync generated baselines and line runtime seam

This commit is contained in:
Vincent Koc
2026-03-22 19:53:12 -07:00
parent dbeac0763c
commit ac0fd26e16
45 changed files with 274 additions and 409 deletions

View File

@@ -1,3 +1,5 @@
import type { OpenClawConfig } from "../config/config.js";
import { coerceSecretRef, resolveSecretInputRef } from "../config/types.secrets.js";
import {
buildAnthropicVertexProvider,
buildKimiCodingProvider,
@@ -12,8 +14,6 @@ import {
XIAOMI_DEFAULT_MODEL_ID,
buildXiaomiProvider,
} from "../plugin-sdk/provider-catalog.js";
import type { OpenClawConfig } from "../config/config.js";
import { coerceSecretRef, resolveSecretInputRef } from "../config/types.secrets.js";
import { isRecord } from "../utils.js";
import { normalizeOptionalSecretInput } from "../utils/normalize-secret-input.js";
import { hasAnthropicVertexAvailableAuth } from "./anthropic-vertex-provider.js";

View File

@@ -7,10 +7,6 @@ import {
estimateTokens,
SessionManager,
} from "@mariozechner/pi-coding-agent";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramReactionLevel,
} from "../../plugin-sdk/telegram.js";
import { resolveHeartbeatPrompt } from "../../auto-reply/heartbeat.js";
import type { ReasoningLevel, ThinkLevel } from "../../auto-reply/thinking.js";
import { resolveChannelCapabilities } from "../../config/channel-capabilities.js";
@@ -24,6 +20,10 @@ import { getMachineDisplayName } from "../../infra/machine-name.js";
import { generateSecureToken } from "../../infra/secure-random.js";
import { getMemorySearchManager } from "../../memory/index.js";
import { resolveSignalReactionLevel } from "../../plugin-sdk/signal.js";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramReactionLevel,
} from "../../plugin-sdk/telegram.js";
import { getGlobalHookRunner } from "../../plugins/hook-runner-global.js";
import { prepareProviderRuntimeAuth } from "../../plugins/provider-runtime.js";
import { type enqueueCommand, enqueueCommandInLane } from "../../process/command-queue.js";

View File

@@ -7,10 +7,6 @@ import {
DefaultResourceLoader,
SessionManager,
} from "@mariozechner/pi-coding-agent";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramReactionLevel,
} from "../../../plugin-sdk/telegram.js";
import { resolveHeartbeatPrompt } from "../../../auto-reply/heartbeat.js";
import { resolveChannelCapabilities } from "../../../config/channel-capabilities.js";
import type { OpenClawConfig } from "../../../config/config.js";
@@ -21,6 +17,10 @@ import {
} from "../../../infra/net/undici-global-dispatcher.js";
import { MAX_IMAGE_BYTES } from "../../../media/constants.js";
import { resolveSignalReactionLevel } from "../../../plugin-sdk/signal.js";
import {
resolveTelegramInlineButtonsScope,
resolveTelegramReactionLevel,
} from "../../../plugin-sdk/telegram.js";
import { getGlobalHookRunner } from "../../../plugins/hook-runner-global.js";
import type {
PluginHookAgentContext,

View File

@@ -49,9 +49,8 @@ import type { FollowupRun } from "./queue.js";
import { createBlockReplyDeliveryHandler } from "./reply-delivery.js";
import type { TypingSignaler } from "./typing-mode.js";
let replyMediaPathsRuntimePromise: Promise<
typeof import("./reply-media-paths.runtime.js")
> | null = null;
let replyMediaPathsRuntimePromise: Promise<typeof import("./reply-media-paths.runtime.js")> | null =
null;
function loadReplyMediaPathsRuntime() {
replyMediaPathsRuntimePromise ??= import("./reply-media-paths.runtime.js");

View File

@@ -66,11 +66,11 @@ let usageCostRuntimePromise: Promise<typeof import("./usage-cost.runtime.js")> |
let contextTokensRuntimePromise: Promise<
typeof import("../../agents/context-tokens.runtime.js")
> | null = null;
let replyMediaPathsRuntimePromise: Promise<
typeof import("./reply-media-paths.runtime.js")
> | null = null;
let sessionStoreRuntimePromise: Promise<typeof import("../../config/sessions/store.runtime.js")> | null =
let replyMediaPathsRuntimePromise: Promise<typeof import("./reply-media-paths.runtime.js")> | null =
null;
let sessionStoreRuntimePromise: Promise<
typeof import("../../config/sessions/store.runtime.js")
> | null = null;
function loadPiEmbeddedQueueRuntime() {
piEmbeddedQueueRuntimePromise ??= import("../../agents/pi-embedded-queue.runtime.js");

View File

@@ -7,6 +7,11 @@ import {
createThreadBindingManager as createDiscordThreadBindingManager,
} from "../../../../extensions/discord/runtime-api.js";
import { createFeishuThreadBindingManager } from "../../../../extensions/feishu/api.js";
import {
resolveDefaultLineAccountId,
resolveLineAccount,
listLineAccountIds,
} from "../../../../extensions/line/runtime-api.js";
import {
createMatrixThreadBindingManager,
resetMatrixThreadBindingsForTests,
@@ -19,11 +24,6 @@ import {
type SessionBindingCapabilities,
type SessionBindingRecord,
} from "../../../infra/outbound/session-binding-service.js";
import {
resolveDefaultLineAccountId,
resolveLineAccount,
listLineAccountIds,
} from "../../../../extensions/line/runtime-api.js";
import {
bundledChannelPlugins,
bundledChannelRuntimeSetters,

View File

@@ -1,3 +1,8 @@
import { resolveCommandSecretRefsViaGateway } from "../../../cli/command-secret-gateway.js";
import { getChannelsCommandSecretTargetIds } from "../../../cli/command-secret-targets.js";
import type { OpenClawConfig } from "../../../config/config.js";
import type { TelegramNetworkConfig } from "../../../config/types.telegram.js";
import { resolveTelegramAccount } from "../../../plugin-sdk/account-resolution.js";
import {
isNumericTelegramUserId,
normalizeTelegramAllowFromEntry,
@@ -5,11 +10,6 @@ import {
listTelegramAccountIds,
lookupTelegramChatId,
} from "../../../plugin-sdk/telegram.js";
import { resolveCommandSecretRefsViaGateway } from "../../../cli/command-secret-gateway.js";
import { getChannelsCommandSecretTargetIds } from "../../../cli/command-secret-targets.js";
import type { OpenClawConfig } from "../../../config/config.js";
import type { TelegramNetworkConfig } from "../../../config/types.telegram.js";
import { resolveTelegramAccount } from "../../../plugin-sdk/account-resolution.js";
import { describeUnknownError } from "../../../secrets/shared.js";
import { sanitizeForLog } from "../../../terminal/ansi.js";
import { hasAllowFromEntries } from "../shared/allowlist.js";

View File

@@ -3,8 +3,8 @@ import { parseTelegramTarget } from "../../../extensions/telegram/src/targets.js
import { telegramOutbound, whatsappOutbound } from "../../../test/channel-outbounds.js";
import type { ChannelOutboundAdapter } from "../../channels/plugins/types.js";
import type { OpenClawConfig } from "../../config/config.js";
import { isWhatsAppGroupJid, normalizeWhatsAppTarget } from "../../plugin-sdk/whatsapp-shared.js";
import type { SessionEntry } from "../../config/sessions/types.js";
import { isWhatsAppGroupJid, normalizeWhatsAppTarget } from "../../plugin-sdk/whatsapp-shared.js";
import { setActivePluginRegistry } from "../../plugins/runtime.js";
import { createOutboundTestPlugin, createTestRegistry } from "../../test-utils/channel-plugins.js";
import {

View File

@@ -165,12 +165,10 @@ describe("applyMediaUnderstanding echo transcript", () => {
}));
vi.doMock("./provider-registry.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("./provider-registry.js")>();
const { deepgramMediaUnderstandingProvider } = await import(
"../../extensions/deepgram/media-understanding-provider.js"
);
const { groqMediaUnderstandingProvider } = await import(
"../../extensions/groq/media-understanding-provider.js"
);
const { deepgramMediaUnderstandingProvider } =
await import("../../extensions/deepgram/media-understanding-provider.js");
const { groqMediaUnderstandingProvider } =
await import("../../extensions/groq/media-understanding-provider.js");
return {
...actual,
buildMediaUnderstandingRegistry: (

View File

@@ -248,12 +248,10 @@ describe("applyMediaUnderstanding", () => {
}));
vi.doMock("./provider-registry.js", async (importOriginal) => {
const actual = await importOriginal<typeof import("./provider-registry.js")>();
const { deepgramMediaUnderstandingProvider } = await import(
"../../extensions/deepgram/media-understanding-provider.js"
);
const { groqMediaUnderstandingProvider } = await import(
"../../extensions/groq/media-understanding-provider.js"
);
const { deepgramMediaUnderstandingProvider } =
await import("../../extensions/deepgram/media-understanding-provider.js");
const { groqMediaUnderstandingProvider } =
await import("../../extensions/groq/media-understanding-provider.js");
return {
...actual,
buildMediaUnderstandingRegistry: (

View File

@@ -1,6 +1,6 @@
import { describe, expect, it } from "vitest";
import { isTruthyEnvValue } from "../infra/env.js";
import { transcribeDeepgramAudio } from "../../extensions/deepgram/audio.js";
import { isTruthyEnvValue } from "../infra/env.js";
const DEEPGRAM_KEY = process.env.DEEPGRAM_API_KEY ?? "";
const DEEPGRAM_MODEL = process.env.DEEPGRAM_MODEL?.trim() || "nova-3";

View File

@@ -1,10 +1,10 @@
import { describe, expect, it } from "vitest";
import { transcribeDeepgramAudio } from "../../extensions/deepgram/audio.js";
import {
createAuthCaptureJsonFetch,
createRequestCaptureJsonFetch,
installPinnedHostnameTestHooks,
} from "./audio.test-helpers.js";
import { transcribeDeepgramAudio } from "../../extensions/deepgram/audio.js";
installPinnedHostnameTestHooks();

View File

@@ -1,7 +1,4 @@
import {
createLazyRuntimeMethodBinder,
createLazyRuntimeModule,
} from "../shared/lazy-runtime.js";
import { createLazyRuntimeMethodBinder, createLazyRuntimeModule } from "../shared/lazy-runtime.js";
const loadImageRuntime = createLazyRuntimeModule(() => import("./image.js"));
const bindImageRuntime = createLazyRuntimeMethodBinder(loadImageRuntime);

View File

@@ -1,11 +1,11 @@
import path from "node:path";
import type { AudioTranscriptionRequest, AudioTranscriptionResult } from "./types.js";
import {
assertOkOrThrowHttpError,
normalizeBaseUrl,
postTranscriptionRequest,
requireTranscriptionText,
} from "./shared.js";
import type { AudioTranscriptionRequest, AudioTranscriptionResult } from "./types.js";
type OpenAiCompatibleAudioParams = AudioTranscriptionRequest & {
defaultBaseUrl: string;

View File

@@ -1,7 +1,10 @@
import { afterEach, describe, expect, it } from "vitest";
import { createEmptyPluginRegistry } from "../plugins/registry.js";
import { setActivePluginRegistry } from "../plugins/runtime.js";
import { buildMediaUnderstandingRegistry, getMediaUnderstandingProvider } from "./provider-registry.js";
import {
buildMediaUnderstandingRegistry,
getMediaUnderstandingProvider,
} from "./provider-registry.js";
describe("media-understanding provider registry", () => {
afterEach(() => {

View File

@@ -1,11 +1,11 @@
import { normalizeProviderId } from "../agents/model-selection.js";
import type { OpenClawConfig } from "../config/config.js";
import { loadOpenClawPlugins } from "../plugins/loader.js";
import { getActivePluginRegistry } from "../plugins/runtime.js";
import {
deepgramMediaUnderstandingProvider,
groqMediaUnderstandingProvider,
} from "../plugin-sdk/media-understanding.js";
import { loadOpenClawPlugins } from "../plugins/loader.js";
import { getActivePluginRegistry } from "../plugins/runtime.js";
import type { MediaUnderstandingProvider } from "./types.js";
const PROVIDERS: MediaUnderstandingProvider[] = [

View File

@@ -25,8 +25,8 @@ import {
} from "./defaults.js";
import { MediaUnderstandingSkipError } from "./errors.js";
import { fileExists } from "./fs.js";
import { extractGeminiResponse } from "./output-extract.js";
import { describeImageWithModel } from "./image.js";
import { extractGeminiResponse } from "./output-extract.js";
import { getMediaUnderstandingProvider, normalizeMediaProviderId } from "./provider-registry.js";
import { resolveMaxBytes, resolveMaxChars, resolvePrompt, resolveTimeoutMs } from "./resolve.js";
import type {

View File

@@ -7,3 +7,15 @@ export * from "../../extensions/line/src/bot-message-context.js";
export * from "../../extensions/line/src/bot.js";
export * from "../../extensions/line/src/download.js";
export * from "../../extensions/line/src/monitor.js";
export { probeLineBot } from "../../extensions/line/src/probe.js";
export {
createQuickReplyItems,
pushFlexMessage,
pushLocationMessage,
pushMessageLine,
pushMessagesLine,
pushTemplateMessage,
pushTextMessageWithQuickReplies,
sendMessageLine,
} from "../../extensions/line/src/send.js";
export { buildTemplateMessageFromPayload } from "../../extensions/line/src/template-messages.js";

View File

@@ -33,7 +33,11 @@ export {
resolveLineAccount,
} from "../../extensions/line/api.js";
export { LineConfigSchema } from "../../extensions/line/api.js";
export type { LineChannelData, LineConfig, ResolvedLineAccount } from "../../extensions/line/api.js";
export type {
LineChannelData,
LineConfig,
ResolvedLineAccount,
} from "../../extensions/line/api.js";
export type { LineProbeResult } from "../../extensions/line/api.js";
export {
createActionCard,

View File

@@ -1,13 +1,13 @@
import { resolveOpenClawAgentDir } from "../agents/agent-paths.js";
import { upsertAuthProfile } from "../agents/auth-profiles.js";
import type { SecretInput } from "../config/types.secrets.js";
import { KILOCODE_DEFAULT_MODEL_REF } from "./provider-model-kilocode.js";
import {
buildApiKeyCredential,
type ApiKeyStorageOptions,
writeOAuthCredentials,
type WriteOAuthCredentialsOptions,
} from "./provider-auth-helpers.js";
import { KILOCODE_DEFAULT_MODEL_REF } from "./provider-model-kilocode.js";
const resolveAuthAgentDir = (agentDir?: string) => agentDir ?? resolveOpenClawAgentDir();

View File

@@ -48,23 +48,6 @@ import {
updateLastRoute,
} from "../../config/sessions.js";
import { getChannelActivity, recordChannelActivity } from "../../infra/channel-activity.js";
import {
listLineAccountIds,
normalizeAccountId as normalizeLineAccountId,
resolveDefaultLineAccountId,
resolveLineAccount,
buildTemplateMessageFromPayload,
createQuickReplyItems,
pushFlexMessage,
pushLocationMessage,
pushMessageLine,
pushMessagesLine,
pushTemplateMessage,
pushTextMessageWithQuickReplies,
monitorLineProvider,
probeLineBot,
sendMessageLine,
} from "../../../extensions/line/runtime-api.js";
import { convertMarkdownTables } from "../../markdown/tables.js";
import { fetchRemoteMedia } from "../../media/fetch.js";
import { saveMediaBuffer } from "../../media/store.js";
@@ -73,6 +56,25 @@ import {
readChannelAllowFromStore,
upsertChannelPairingRequest,
} from "../../pairing/pairing-store.js";
import {
buildTemplateMessageFromPayload,
createQuickReplyItems,
monitorLineProvider,
probeLineBot,
pushFlexMessage,
pushLocationMessage,
pushMessageLine,
pushMessagesLine,
pushTemplateMessage,
pushTextMessageWithQuickReplies,
sendMessageLine,
} from "../../plugin-sdk/line-runtime.js";
import {
listLineAccountIds,
normalizeAccountId as normalizeLineAccountId,
resolveDefaultLineAccountId,
resolveLineAccount,
} from "../../plugin-sdk/line.js";
import { buildAgentSessionKey, resolveAgentRoute } from "../../routing/resolve-route.js";
import { createRuntimeDiscord } from "./runtime-discord.js";
import { createRuntimeIMessage } from "./runtime-imessage.js";

View File

@@ -8,4 +8,4 @@ export {
pushTemplateMessage,
pushTextMessageWithQuickReplies,
sendMessageLine,
} from "../../../extensions/line/runtime-api.js";
} from "../../plugin-sdk/line-runtime.js";

View File

@@ -227,28 +227,20 @@ export type PluginRuntimeChannel = {
createLoginTool: typeof import("./runtime-whatsapp-login-tool.js").createRuntimeWhatsAppLoginTool;
};
line: {
listLineAccountIds: typeof import("../../../extensions/line/runtime-api.js").listLineAccountIds;
resolveDefaultLineAccountId: typeof import(
"../../../extensions/line/runtime-api.js"
).resolveDefaultLineAccountId;
resolveLineAccount: typeof import("../../../extensions/line/runtime-api.js").resolveLineAccount;
normalizeAccountId: typeof import("../../../extensions/line/runtime-api.js").normalizeAccountId;
probeLineBot: typeof import("../../../extensions/line/runtime-api.js").probeLineBot;
sendMessageLine: typeof import("../../../extensions/line/runtime-api.js").sendMessageLine;
pushMessageLine: typeof import("../../../extensions/line/runtime-api.js").pushMessageLine;
pushMessagesLine: typeof import("../../../extensions/line/runtime-api.js").pushMessagesLine;
pushFlexMessage: typeof import("../../../extensions/line/runtime-api.js").pushFlexMessage;
pushTemplateMessage: typeof import("../../../extensions/line/runtime-api.js").pushTemplateMessage;
pushLocationMessage: typeof import("../../../extensions/line/runtime-api.js").pushLocationMessage;
pushTextMessageWithQuickReplies: typeof import(
"../../../extensions/line/runtime-api.js"
).pushTextMessageWithQuickReplies;
createQuickReplyItems: typeof import(
"../../../extensions/line/runtime-api.js"
).createQuickReplyItems;
buildTemplateMessageFromPayload: typeof import(
"../../../extensions/line/runtime-api.js"
).buildTemplateMessageFromPayload;
monitorLineProvider: typeof import("../../../extensions/line/runtime-api.js").monitorLineProvider;
listLineAccountIds: typeof import("../../plugin-sdk/line.js").listLineAccountIds;
resolveDefaultLineAccountId: typeof import("../../plugin-sdk/line.js").resolveDefaultLineAccountId;
resolveLineAccount: typeof import("../../plugin-sdk/line.js").resolveLineAccount;
normalizeAccountId: typeof import("../../plugin-sdk/line.js").normalizeAccountId;
probeLineBot: typeof import("../../plugin-sdk/line-runtime.js").probeLineBot;
sendMessageLine: typeof import("../../plugin-sdk/line-runtime.js").sendMessageLine;
pushMessageLine: typeof import("../../plugin-sdk/line-runtime.js").pushMessageLine;
pushMessagesLine: typeof import("../../plugin-sdk/line-runtime.js").pushMessagesLine;
pushFlexMessage: typeof import("../../plugin-sdk/line-runtime.js").pushFlexMessage;
pushTemplateMessage: typeof import("../../plugin-sdk/line-runtime.js").pushTemplateMessage;
pushLocationMessage: typeof import("../../plugin-sdk/line-runtime.js").pushLocationMessage;
pushTextMessageWithQuickReplies: typeof import("../../plugin-sdk/line-runtime.js").pushTextMessageWithQuickReplies;
createQuickReplyItems: typeof import("../../plugin-sdk/line-runtime.js").createQuickReplyItems;
buildTemplateMessageFromPayload: typeof import("../../plugin-sdk/line-runtime.js").buildTemplateMessageFromPayload;
monitorLineProvider: typeof import("../../plugin-sdk/line-runtime.js").monitorLineProvider;
};
};

View File

@@ -1,12 +1,12 @@
import type { OpenClawConfig } from "../config/config.js";
import { loadOpenClawPlugins } from "../plugins/loader.js";
import { getActivePluginRegistry } from "../plugins/runtime.js";
import type { SpeechProviderPlugin } from "../plugins/types.js";
import {
buildElevenLabsSpeechProvider,
buildMicrosoftSpeechProvider,
buildOpenAISpeechProvider,
} from "../plugin-sdk/speech.js";
import { loadOpenClawPlugins } from "../plugins/loader.js";
import { getActivePluginRegistry } from "../plugins/runtime.js";
import type { SpeechProviderPlugin } from "../plugins/types.js";
import type { SpeechProviderId } from "./provider-types.js";
const BUILTIN_SPEECH_PROVIDER_BUILDERS = [

View File

@@ -24,11 +24,11 @@ import type {
} from "../config/types.tts.js";
import { logVerbose } from "../globals.js";
import { resolvePreferredOpenClawTmpDir } from "../infra/tmp-openclaw-dir.js";
import { stripMarkdown } from "../shared/text/strip-markdown.js";
import {
OPENAI_DEFAULT_TTS_MODEL as DEFAULT_OPENAI_MODEL,
OPENAI_DEFAULT_TTS_VOICE as DEFAULT_OPENAI_VOICE,
} from "../plugins/provider-model-defaults.js";
import { stripMarkdown } from "../shared/text/strip-markdown.js";
import { CONFIG_DIR, resolveUserPath } from "../utils.js";
import {
getSpeechProvider,