diff --git a/docs/plugins/architecture.md b/docs/plugins/architecture.md index be0fc317128..1a130085773 100644 --- a/docs/plugins/architecture.md +++ b/docs/plugins/architecture.md @@ -923,10 +923,8 @@ Notes: Use SDK subpaths instead of the monolithic `openclaw/plugin-sdk` import when authoring plugins: -- `openclaw/plugin-sdk/core` for the smallest generic plugin-facing contract. - It also carries small assembly helpers such as - `definePluginEntry`, `defineChannelPluginEntry`, `defineSetupPluginEntry`, - and `createChannelPluginBase` for bundled or third-party plugin entry wiring. +- `openclaw/plugin-sdk/plugin-entry` for plugin registration primitives. +- `openclaw/plugin-sdk/core` for the generic shared plugin-facing contract. - Domain subpaths such as `openclaw/plugin-sdk/channel-config-helpers`, `openclaw/plugin-sdk/channel-config-schema`, `openclaw/plugin-sdk/channel-policy`, @@ -939,12 +937,9 @@ authoring plugins: `openclaw/plugin-sdk/runtime-store`, and `openclaw/plugin-sdk/directory-runtime` for shared runtime/config helpers. - Narrow channel-core subpaths such as `openclaw/plugin-sdk/discord-core`, - `openclaw/plugin-sdk/telegram-core`, `openclaw/plugin-sdk/whatsapp-core`, - and `openclaw/plugin-sdk/line-core` for channel-specific primitives that - should stay smaller than the full channel helper barrels. -- `openclaw/plugin-sdk/compat` remains as a legacy migration surface for older - external plugins. Bundled plugins should not use it, and non-test imports emit - a one-time deprecation warning outside test environments. + `openclaw/plugin-sdk/telegram-core`, and `openclaw/plugin-sdk/whatsapp-core` + for channel-specific primitives that should stay smaller than the full + channel helper barrels. - Bundled extension internals remain private. External plugins should use only `openclaw/plugin-sdk/*` subpaths. OpenClaw core/test code may use the repo public entry points under `extensions//index.js`, `api.js`, `runtime-api.js`, @@ -958,31 +953,18 @@ authoring plugins: - `openclaw/plugin-sdk/telegram` for Telegram channel plugin types and shared channel-facing helpers. Built-in Telegram implementation internals stay private to the bundled extension. - `openclaw/plugin-sdk/discord` for Discord channel plugin types and shared channel-facing helpers. Built-in Discord implementation internals stay private to the bundled extension. - `openclaw/plugin-sdk/slack` for Slack channel plugin types and shared channel-facing helpers. Built-in Slack implementation internals stay private to the bundled extension. -- `openclaw/plugin-sdk/signal` for Signal channel plugin types and shared channel-facing helpers. Built-in Signal implementation internals stay private to the bundled extension. - `openclaw/plugin-sdk/imessage` for iMessage channel plugin types and shared channel-facing helpers. Built-in iMessage implementation internals stay private to the bundled extension. - `openclaw/plugin-sdk/whatsapp` for WhatsApp channel plugin types and shared channel-facing helpers. Built-in WhatsApp implementation internals stay private to the bundled extension. -- `openclaw/plugin-sdk/line` for LINE channel plugins. -- `openclaw/plugin-sdk/msteams` for the bundled Microsoft Teams plugin surface. -- Additional bundled extension-specific subpaths remain available where OpenClaw - intentionally exposes extension-facing helpers: - `openclaw/plugin-sdk/acpx`, `openclaw/plugin-sdk/bluebubbles`, - `openclaw/plugin-sdk/feishu`, `openclaw/plugin-sdk/googlechat`, - `openclaw/plugin-sdk/irc`, `openclaw/plugin-sdk/lobster`, - `openclaw/plugin-sdk/matrix`, - `openclaw/plugin-sdk/mattermost`, `openclaw/plugin-sdk/memory-core`, - `openclaw/plugin-sdk/minimax-portal-auth`, - `openclaw/plugin-sdk/nextcloud-talk`, `openclaw/plugin-sdk/nostr`, - `openclaw/plugin-sdk/synology-chat`, `openclaw/plugin-sdk/test-utils`, - `openclaw/plugin-sdk/tlon`, `openclaw/plugin-sdk/twitch`, - `openclaw/plugin-sdk/voice-call`, - `openclaw/plugin-sdk/zalo`, and `openclaw/plugin-sdk/zalouser`. +- `openclaw/plugin-sdk/bluebubbles` remains public because it carries a small + focused helper surface that is shared intentionally. Compatibility note: -- `openclaw/plugin-sdk` remains supported for existing external plugins. -- New and migrated bundled plugins should use channel or extension-specific - subpaths; use `core` plus explicit domain subpaths for generic surfaces, and - treat `compat` as migration-only. +- Avoid the root `openclaw/plugin-sdk` barrel for new code. +- Bundled extension-specific helper barrels are not stable by default. If a + helper is only needed by a bundled extension, keep it behind the extension's + local `api.js` or `runtime-api.js` seam instead of promoting it into + `openclaw/plugin-sdk/`. - Capability-specific subpaths such as `image-generation`, `media-understanding`, and `speech` exist because bundled/native plugins use them today. Their presence does not by itself mean every exported helper is a diff --git a/docs/plugins/building-extensions.md b/docs/plugins/building-extensions.md index 768b48a14a8..dc9bc9ea829 100644 --- a/docs/plugins/building-extensions.md +++ b/docs/plugins/building-extensions.md @@ -89,7 +89,7 @@ For provider plugins, use `definePluginEntry` instead. ## Step 3: Import from focused subpaths -The plugin SDK exposes 70+ focused subpaths. Always import from specific +The plugin SDK exposes many focused subpaths. Always import from specific subpaths rather than the monolithic root: ```typescript diff --git a/extensions/acpx/runtime-api.ts b/extensions/acpx/runtime-api.ts index 8d1d125f226..9a019cdd0e6 100644 --- a/extensions/acpx/runtime-api.ts +++ b/extensions/acpx/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/acpx"; +export * from "../../src/plugin-sdk/acpx.js"; diff --git a/extensions/acpx/src/service.test.ts b/extensions/acpx/src/service.test.ts index a4572bf2c90..e348dde100e 100644 --- a/extensions/acpx/src/service.test.ts +++ b/extensions/acpx/src/service.test.ts @@ -1,4 +1,3 @@ -import type { AcpRuntime, OpenClawPluginServiceContext } from "openclaw/plugin-sdk/acpx"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { AcpRuntimeError } from "../../../src/acp/runtime/errors.js"; import { @@ -6,6 +5,7 @@ import { getAcpRuntimeBackend, requireAcpRuntimeBackend, } from "../../../src/acp/runtime/registry.js"; +import type { AcpRuntime, OpenClawPluginServiceContext } from "../runtime-api.js"; import { ACPX_BUNDLED_BIN, ACPX_PINNED_VERSION } from "./config.js"; import { createAcpxRuntimeService } from "./service.js"; diff --git a/extensions/copilot-proxy/runtime-api.ts b/extensions/copilot-proxy/runtime-api.ts index 849136c6efb..9f59e519281 100644 --- a/extensions/copilot-proxy/runtime-api.ts +++ b/extensions/copilot-proxy/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/copilot-proxy"; +export * from "../../src/plugin-sdk/copilot-proxy.js"; diff --git a/extensions/device-pair/api.ts b/extensions/device-pair/api.ts index 299ad90f05d..137cd4b89ba 100644 --- a/extensions/device-pair/api.ts +++ b/extensions/device-pair/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/device-pair"; +export * from "../../src/plugin-sdk/device-pair.js"; diff --git a/extensions/diagnostics-otel/api.ts b/extensions/diagnostics-otel/api.ts index 01d7aed8989..077ad45965f 100644 --- a/extensions/diagnostics-otel/api.ts +++ b/extensions/diagnostics-otel/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/diagnostics-otel"; +export * from "../../src/plugin-sdk/diagnostics-otel.js"; diff --git a/extensions/diffs/api.ts b/extensions/diffs/api.ts index e6fbaf9022a..a200daea1fd 100644 --- a/extensions/diffs/api.ts +++ b/extensions/diffs/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/diffs"; +export * from "../../src/plugin-sdk/diffs.js"; diff --git a/extensions/feishu/index.test.ts b/extensions/feishu/index.test.ts index 90de46ff6ab..85b8518faf2 100644 --- a/extensions/feishu/index.test.ts +++ b/extensions/feishu/index.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawPluginApi } from "openclaw/plugin-sdk/feishu"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawPluginApi } from "./runtime-api.js"; const registerFeishuDocToolsMock = vi.hoisted(() => vi.fn()); const registerFeishuChatToolsMock = vi.hoisted(() => vi.fn()); diff --git a/extensions/feishu/runtime-api.ts b/extensions/feishu/runtime-api.ts index 1257d4a7f00..72e50339b1f 100644 --- a/extensions/feishu/runtime-api.ts +++ b/extensions/feishu/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/feishu"; +export * from "../../src/plugin-sdk/feishu.js"; diff --git a/extensions/feishu/src/bot.test.ts b/extensions/feishu/src/bot.test.ts index 0995632e3a1..0d6ae54e05d 100644 --- a/extensions/feishu/src/bot.test.ts +++ b/extensions/feishu/src/bot.test.ts @@ -1,6 +1,6 @@ -import type { ClawdbotConfig, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { createPluginRuntimeMock } from "../../../test/helpers/extensions/plugin-runtime-mock.js"; +import type { ClawdbotConfig, PluginRuntime, RuntimeEnv } from "../runtime-api.js"; import type { FeishuMessageEvent } from "./bot.js"; import { buildBroadcastSessionKey, diff --git a/extensions/feishu/src/channel.test.ts b/extensions/feishu/src/channel.test.ts index df105f81919..28dfd8dda0d 100644 --- a/extensions/feishu/src/channel.test.ts +++ b/extensions/feishu/src/channel.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; const probeFeishuMock = vi.hoisted(() => vi.fn()); const createFeishuClientMock = vi.hoisted(() => vi.fn()); diff --git a/extensions/feishu/src/directory.test.ts b/extensions/feishu/src/directory.test.ts index 805f2f006e9..c9854bb9c1e 100644 --- a/extensions/feishu/src/directory.test.ts +++ b/extensions/feishu/src/directory.test.ts @@ -1,5 +1,5 @@ -import type { ClawdbotConfig } from "openclaw/plugin-sdk/feishu"; import { describe, expect, it, vi } from "vitest"; +import type { ClawdbotConfig } from "../runtime-api.js"; const resolveFeishuAccountMock = vi.hoisted(() => vi.fn()); const createFeishuClientMock = vi.hoisted(() => vi.fn()); diff --git a/extensions/feishu/src/docx.account-selection.test.ts b/extensions/feishu/src/docx.account-selection.test.ts index 1f11e290815..6ac1b9dbfa5 100644 --- a/extensions/feishu/src/docx.account-selection.test.ts +++ b/extensions/feishu/src/docx.account-selection.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawPluginApi } from "openclaw/plugin-sdk/feishu"; import { describe, expect, test, vi } from "vitest"; +import type { OpenClawPluginApi } from "../runtime-api.js"; import { registerFeishuDocTools } from "./docx.js"; import { createToolFactoryHarness } from "./tool-factory-test-harness.js"; diff --git a/extensions/feishu/src/monitor.bot-menu.test.ts b/extensions/feishu/src/monitor.bot-menu.test.ts index 988e04d80ca..5bcba5716d4 100644 --- a/extensions/feishu/src/monitor.bot-menu.test.ts +++ b/extensions/feishu/src/monitor.bot-menu.test.ts @@ -1,4 +1,3 @@ -import type { ClawdbotConfig, RuntimeEnv } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { hasControlCommand } from "../../../src/auto-reply/command-detection.js"; import { @@ -6,6 +5,7 @@ import { resolveInboundDebounceMs, } from "../../../src/auto-reply/inbound-debounce.js"; import { createPluginRuntimeMock } from "../../../test/helpers/extensions/plugin-runtime-mock.js"; +import type { ClawdbotConfig, RuntimeEnv } from "../runtime-api.js"; import { monitorSingleAccount } from "./monitor.account.js"; import { setFeishuRuntime } from "./runtime.js"; import type { ResolvedFeishuAccount } from "./types.js"; diff --git a/extensions/feishu/src/monitor.reaction.lifecycle.test.ts b/extensions/feishu/src/monitor.reaction.lifecycle.test.ts index f48bb3e68e7..2648ff1b8de 100644 --- a/extensions/feishu/src/monitor.reaction.lifecycle.test.ts +++ b/extensions/feishu/src/monitor.reaction.lifecycle.test.ts @@ -1,5 +1,5 @@ -import type { ClawdbotConfig } from "openclaw/plugin-sdk/feishu"; import { describe, expect, it } from "vitest"; +import type { ClawdbotConfig } from "../runtime-api.js"; import { resolveReactionSyntheticEvent, type FeishuReactionCreatedEvent, diff --git a/extensions/feishu/src/monitor.reaction.test.ts b/extensions/feishu/src/monitor.reaction.test.ts index 048aed2247e..5765577441f 100644 --- a/extensions/feishu/src/monitor.reaction.test.ts +++ b/extensions/feishu/src/monitor.reaction.test.ts @@ -1,4 +1,3 @@ -import type { ClawdbotConfig, RuntimeEnv } from "openclaw/plugin-sdk/feishu"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { hasControlCommand } from "../../../src/auto-reply/command-detection.js"; import { @@ -6,6 +5,7 @@ import { resolveInboundDebounceMs, } from "../../../src/auto-reply/inbound-debounce.js"; import { createPluginRuntimeMock } from "../../../test/helpers/extensions/plugin-runtime-mock.js"; +import type { ClawdbotConfig, RuntimeEnv } from "../runtime-api.js"; import { parseFeishuMessageEvent, type FeishuMessageEvent } from "./bot.js"; import * as dedup from "./dedup.js"; import { monitorSingleAccount } from "./monitor.account.js"; diff --git a/extensions/feishu/src/monitor.startup.test.ts b/extensions/feishu/src/monitor.startup.test.ts index 96dbd52b8ef..601df225263 100644 --- a/extensions/feishu/src/monitor.startup.test.ts +++ b/extensions/feishu/src/monitor.startup.test.ts @@ -1,5 +1,5 @@ -import type { ClawdbotConfig } from "openclaw/plugin-sdk/feishu"; import { afterEach, describe, expect, it, vi } from "vitest"; +import type { ClawdbotConfig } from "../runtime-api.js"; import { monitorFeishuProvider, stopFeishuMonitor } from "./monitor.js"; const probeFeishuMock = vi.hoisted(() => vi.fn()); diff --git a/extensions/feishu/src/send-target.test.ts b/extensions/feishu/src/send-target.test.ts index b4f5f81ae09..d435d95267a 100644 --- a/extensions/feishu/src/send-target.test.ts +++ b/extensions/feishu/src/send-target.test.ts @@ -1,5 +1,5 @@ -import type { ClawdbotConfig } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { ClawdbotConfig } from "../runtime-api.js"; import { resolveFeishuSendTarget } from "./send-target.js"; const resolveFeishuAccountMock = vi.hoisted(() => vi.fn()); diff --git a/extensions/feishu/src/send.test.ts b/extensions/feishu/src/send.test.ts index ecad7a6332e..a7af456068d 100644 --- a/extensions/feishu/src/send.test.ts +++ b/extensions/feishu/src/send.test.ts @@ -1,5 +1,5 @@ -import type { ClawdbotConfig } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { ClawdbotConfig } from "../runtime-api.js"; import { buildStructuredCard, editMessageFeishu, diff --git a/extensions/feishu/src/setup-status.test.ts b/extensions/feishu/src/setup-status.test.ts index e145bf8a753..6f1a877814e 100644 --- a/extensions/feishu/src/setup-status.test.ts +++ b/extensions/feishu/src/setup-status.test.ts @@ -1,6 +1,6 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/feishu"; import { describe, expect, it } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; +import type { OpenClawConfig } from "../runtime-api.js"; import { feishuPlugin } from "./channel.js"; const feishuConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/feishu/src/subagent-hooks.test.ts b/extensions/feishu/src/subagent-hooks.test.ts index 87450b10265..f46b8073488 100644 --- a/extensions/feishu/src/subagent-hooks.test.ts +++ b/extensions/feishu/src/subagent-hooks.test.ts @@ -1,9 +1,9 @@ -import type { OpenClawPluginApi } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { getRequiredHookHandler, registerHookHandlersForTest, } from "../../../test/helpers/extensions/subagent-hooks.js"; +import type { OpenClawPluginApi } from "../runtime-api.js"; import { registerFeishuSubagentHooks } from "./subagent-hooks.js"; import { __testing as threadBindingTesting, diff --git a/extensions/feishu/src/tool-account-routing.test.ts b/extensions/feishu/src/tool-account-routing.test.ts index b5697676493..6cc9172de3e 100644 --- a/extensions/feishu/src/tool-account-routing.test.ts +++ b/extensions/feishu/src/tool-account-routing.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawPluginApi } from "openclaw/plugin-sdk/feishu"; import { beforeEach, describe, expect, test, vi } from "vitest"; +import type { OpenClawPluginApi } from "../runtime-api.js"; import { registerFeishuBitableTools } from "./bitable.js"; import { registerFeishuDriveTools } from "./drive.js"; import { registerFeishuPermTools } from "./perm.js"; diff --git a/extensions/google/runtime-api.ts b/extensions/google/runtime-api.ts index 7deb5b38f92..60e25c7303e 100644 --- a/extensions/google/runtime-api.ts +++ b/extensions/google/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/google"; +export * from "../../src/plugin-sdk/google.js"; diff --git a/extensions/googlechat/runtime-api.ts b/extensions/googlechat/runtime-api.ts index 9eecea28139..324abaf11c4 100644 --- a/extensions/googlechat/runtime-api.ts +++ b/extensions/googlechat/runtime-api.ts @@ -1,4 +1,4 @@ // Private runtime barrel for the bundled Google Chat extension. // Keep this barrel thin and aligned with the curated plugin-sdk/googlechat surface. -export * from "openclaw/plugin-sdk/googlechat"; +export * from "../../src/plugin-sdk/googlechat.js"; diff --git a/extensions/googlechat/src/accounts.test.ts b/extensions/googlechat/src/accounts.test.ts index 18256688971..95f85fbf604 100644 --- a/extensions/googlechat/src/accounts.test.ts +++ b/extensions/googlechat/src/accounts.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/googlechat"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; import { resolveGoogleChatAccount } from "./accounts.js"; describe("resolveGoogleChatAccount", () => { diff --git a/extensions/googlechat/src/channel.directory.test.ts b/extensions/googlechat/src/channel.directory.test.ts index 7dbf68a0934..d7b78059dfe 100644 --- a/extensions/googlechat/src/channel.directory.test.ts +++ b/extensions/googlechat/src/channel.directory.test.ts @@ -1,9 +1,9 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/googlechat"; import { describe, expect, it } from "vitest"; import { createDirectoryTestRuntime, expectDirectorySurface, } from "../../../test/helpers/extensions/directory.ts"; +import type { OpenClawConfig } from "../runtime-api.js"; import { googlechatPlugin } from "./channel.js"; describe("googlechat directory", () => { diff --git a/extensions/googlechat/src/channel.outbound.test.ts b/extensions/googlechat/src/channel.outbound.test.ts index b936a5e3139..a3cbcd20d38 100644 --- a/extensions/googlechat/src/channel.outbound.test.ts +++ b/extensions/googlechat/src/channel.outbound.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig, PluginRuntime } from "openclaw/plugin-sdk/googlechat"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, PluginRuntime } from "../runtime-api.js"; const uploadGoogleChatAttachmentMock = vi.hoisted(() => vi.fn()); const sendGoogleChatMessageMock = vi.hoisted(() => vi.fn()); diff --git a/extensions/googlechat/src/channel.startup.test.ts b/extensions/googlechat/src/channel.startup.test.ts index e65aa444314..76700e543ad 100644 --- a/extensions/googlechat/src/channel.startup.test.ts +++ b/extensions/googlechat/src/channel.startup.test.ts @@ -1,10 +1,10 @@ -import type { ChannelAccountSnapshot } from "openclaw/plugin-sdk/googlechat"; import { afterEach, describe, expect, it, vi } from "vitest"; import { abortStartedAccount, expectPendingUntilAbort, startAccountAndTrackLifecycle, } from "../../../test/helpers/extensions/start-account-lifecycle.js"; +import type { ChannelAccountSnapshot } from "../runtime-api.js"; import type { ResolvedGoogleChatAccount } from "./accounts.js"; const hoisted = vi.hoisted(() => ({ diff --git a/extensions/googlechat/src/monitor.webhook-routing.test.ts b/extensions/googlechat/src/monitor.webhook-routing.test.ts index f5e7c69ef8a..3f1800919a7 100644 --- a/extensions/googlechat/src/monitor.webhook-routing.test.ts +++ b/extensions/googlechat/src/monitor.webhook-routing.test.ts @@ -1,10 +1,10 @@ import { EventEmitter } from "node:events"; import type { IncomingMessage } from "node:http"; -import type { OpenClawConfig, PluginRuntime } from "openclaw/plugin-sdk/googlechat"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createEmptyPluginRegistry } from "../../../src/plugins/registry.js"; import { setActivePluginRegistry } from "../../../src/plugins/runtime.js"; import { createMockServerResponse } from "../../../test/helpers/extensions/mock-http-response.js"; +import type { OpenClawConfig, PluginRuntime } from "../runtime-api.js"; import type { ResolvedGoogleChatAccount } from "./accounts.js"; import { verifyGoogleChatRequest } from "./auth.js"; import { handleGoogleChatWebhookRequest, registerGoogleChatWebhookTarget } from "./monitor.js"; diff --git a/extensions/googlechat/src/resolve-target.test.ts b/extensions/googlechat/src/resolve-target.test.ts index 97ce8ae489a..e2e382af056 100644 --- a/extensions/googlechat/src/resolve-target.test.ts +++ b/extensions/googlechat/src/resolve-target.test.ts @@ -6,7 +6,7 @@ const runtimeMocks = vi.hoisted(() => ({ fetchRemoteMedia: vi.fn(), })); -vi.mock("openclaw/plugin-sdk/googlechat", () => ({ +vi.mock("../runtime-api.js", () => ({ getChatChannelMeta: () => ({ id: "googlechat", label: "Google Chat" }), missingTargetError: (provider: string, hint: string) => new Error(`Delivering to ${provider} requires target ${hint}`), @@ -76,7 +76,7 @@ vi.mock("./targets.js", () => ({ resolveGoogleChatOutboundSpace: vi.fn(), })); -import { resolveChannelMediaMaxBytes } from "openclaw/plugin-sdk/googlechat"; +import { resolveChannelMediaMaxBytes } from "../runtime-api.js"; import { resolveGoogleChatAccount } from "./accounts.js"; import { sendGoogleChatMessage, uploadGoogleChatAttachment } from "./api.js"; import { googlechatPlugin } from "./channel.js"; diff --git a/extensions/googlechat/src/setup-surface.test.ts b/extensions/googlechat/src/setup-surface.test.ts index 15d77a46605..9570bb1848b 100644 --- a/extensions/googlechat/src/setup-surface.test.ts +++ b/extensions/googlechat/src/setup-surface.test.ts @@ -1,4 +1,3 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/googlechat"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; @@ -6,6 +5,7 @@ import { createTestWizardPrompter, type WizardPrompter, } from "../../../test/helpers/extensions/setup-wizard.js"; +import type { OpenClawConfig } from "../runtime-api.js"; import { googlechatPlugin } from "./channel.js"; const googlechatConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/irc/src/runtime-api.ts b/extensions/irc/src/runtime-api.ts index 93214aeda45..e5540f4fe4e 100644 --- a/extensions/irc/src/runtime-api.ts +++ b/extensions/irc/src/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/irc"; +export * from "../../../src/plugin-sdk/irc.js"; diff --git a/extensions/irc/src/setup-surface.test.ts b/extensions/irc/src/setup-surface.test.ts index 5741a90ad96..56b9687f593 100644 --- a/extensions/irc/src/setup-surface.test.ts +++ b/extensions/irc/src/setup-surface.test.ts @@ -1,4 +1,3 @@ -import type { RuntimeEnv } from "openclaw/plugin-sdk/irc"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; @@ -7,6 +6,7 @@ import { type WizardPrompter, } from "../../../test/helpers/extensions/setup-wizard.js"; import { ircPlugin } from "./channel.js"; +import type { RuntimeEnv } from "./runtime-api.js"; import type { CoreConfig } from "./types.js"; const ircConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/line/api.ts b/extensions/line/api.ts index 5fdc62bdfb4..4c0731ecc1a 100644 --- a/extensions/line/api.ts +++ b/extensions/line/api.ts @@ -1,2 +1,2 @@ -export * from "openclaw/plugin-sdk/line"; +export * from "../../src/plugin-sdk/line.js"; export * from "./setup-api.js"; diff --git a/extensions/line/runtime-api.ts b/extensions/line/runtime-api.ts index af6082ba155..e3f5c9368b0 100644 --- a/extensions/line/runtime-api.ts +++ b/extensions/line/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/line-core"; +export * from "../../src/plugin-sdk/line-core.js"; diff --git a/extensions/line/src/channel.logout.test.ts b/extensions/line/src/channel.logout.test.ts index 4f474032dc9..0b3dd9a9517 100644 --- a/extensions/line/src/channel.logout.test.ts +++ b/extensions/line/src/channel.logout.test.ts @@ -1,6 +1,6 @@ -import type { OpenClawConfig, PluginRuntime, ResolvedLineAccount } from "openclaw/plugin-sdk/line"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; +import type { OpenClawConfig, PluginRuntime, ResolvedLineAccount } from "../api.js"; import { linePlugin } from "./channel.js"; import { setLineRuntime } from "./runtime.js"; diff --git a/extensions/line/src/channel.sendPayload.test.ts b/extensions/line/src/channel.sendPayload.test.ts index 95dd8e2d4ce..470b582dfc6 100644 --- a/extensions/line/src/channel.sendPayload.test.ts +++ b/extensions/line/src/channel.sendPayload.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig, PluginRuntime } from "openclaw/plugin-sdk/line"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, PluginRuntime } from "../api.js"; import { linePlugin } from "./channel.js"; import { setLineRuntime } from "./runtime.js"; diff --git a/extensions/line/src/channel.startup.test.ts b/extensions/line/src/channel.startup.test.ts index 9f1e10cd6fc..000b94ee471 100644 --- a/extensions/line/src/channel.startup.test.ts +++ b/extensions/line/src/channel.startup.test.ts @@ -1,12 +1,12 @@ +import { describe, expect, it, vi } from "vitest"; +import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; import type { ChannelGatewayContext, ChannelAccountSnapshot, OpenClawConfig, PluginRuntime, ResolvedLineAccount, -} from "openclaw/plugin-sdk/line"; -import { describe, expect, it, vi } from "vitest"; -import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; +} from "../api.js"; import { linePlugin } from "./channel.js"; import { setLineRuntime } from "./runtime.js"; diff --git a/extensions/line/src/setup-surface.test.ts b/extensions/line/src/setup-surface.test.ts index 3c2e6bc05e4..b613a16bba4 100644 --- a/extensions/line/src/setup-surface.test.ts +++ b/extensions/line/src/setup-surface.test.ts @@ -1,4 +1,3 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/line"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { @@ -11,6 +10,7 @@ import { createTestWizardPrompter, type WizardPrompter, } from "../../../test/helpers/extensions/setup-wizard.js"; +import type { OpenClawConfig } from "../api.js"; import { lineSetupAdapter, lineSetupWizard } from "./setup-surface.js"; const lineConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/llm-task/api.ts b/extensions/llm-task/api.ts index 8eebdd06e0b..25e5e13d5ca 100644 --- a/extensions/llm-task/api.ts +++ b/extensions/llm-task/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/llm-task"; +export * from "../../src/plugin-sdk/llm-task.js"; diff --git a/extensions/lobster/runtime-api.ts b/extensions/lobster/runtime-api.ts index 7ab2351b77d..24898e04cf5 100644 --- a/extensions/lobster/runtime-api.ts +++ b/extensions/lobster/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/lobster"; +export * from "../../src/plugin-sdk/lobster.js"; diff --git a/extensions/matrix/runtime-api.ts b/extensions/matrix/runtime-api.ts index 449f580d8bd..04dc8efe2cd 100644 --- a/extensions/matrix/runtime-api.ts +++ b/extensions/matrix/runtime-api.ts @@ -1,74 +1 @@ -export { - GROUP_POLICY_BLOCKED_LABEL, - MarkdownConfigSchema, - PAIRING_APPROVED_MESSAGE, - ToolPolicySchema, - buildChannelConfigSchema, - buildChannelKeyCandidates, - buildProbeChannelStatusSummary, - buildSecretInputSchema, - collectStatusIssuesFromLastError, - compileAllowlist, - createActionGate, - createReplyPrefixOptions, - createScopedPairingAccess, - createTypingCallbacks, - dispatchReplyFromConfigWithSettledDispatcher, - evaluateGroupRouteAccessForPolicy, - fetchWithSsrFGuard, - formatAllowlistMatchMeta, - formatLocationText, - hasConfiguredSecretInput, - issuePairingChallenge, - jsonResult, - logInboundDrop, - logTypingFailure, - mergeAllowlist, - normalizeResolvedSecretInputString, - normalizeSecretInputString, - normalizeStringEntries, - readNumberParam, - readReactionParams, - readStoreAllowFromForDmPolicy, - readStringParam, - resolveAllowlistProviderRuntimeGroupPolicy, - resolveChannelEntryMatch, - resolveCompiledAllowlistMatch, - resolveControlCommandGate, - resolveDefaultGroupPolicy, - resolveDmGroupAccessWithLists, - resolveInboundSessionEnvelopeContext, - resolveRuntimeEnv, - resolveSenderScopedGroupPolicy, - runPluginCommandWithTimeout, - summarizeMapping, - toLocationContext, - warnMissingProviderGroupPolicyFallbackOnce, - DEFAULT_ACCOUNT_ID, -} from "openclaw/plugin-sdk/matrix"; -export { createAccountListHelpers } from "openclaw/plugin-sdk/account-helpers"; -export type { - AllowlistMatch, - BaseProbeResult, - ChannelDirectoryEntry, - ChannelGroupContext, - ChannelMessageActionAdapter, - ChannelMessageActionContext, - ChannelMessageActionName, - ChannelOutboundAdapter, - ChannelPlugin, - ChannelResolveKind, - ChannelResolveResult, - ChannelToolSend, - DmPolicy, - GroupPolicy, - GroupToolPolicyConfig, - MarkdownTableMode, - NormalizedLocation, - PluginRuntime, - PollInput, - ReplyPayload, - RuntimeEnv, - RuntimeLogger, - SecretInput, -} from "openclaw/plugin-sdk/matrix"; +export * from "../../src/plugin-sdk/matrix.js"; diff --git a/extensions/matrix/src/channel.directory.test.ts b/extensions/matrix/src/channel.directory.test.ts index ced16d90638..ca0f25e7e77 100644 --- a/extensions/matrix/src/channel.directory.test.ts +++ b/extensions/matrix/src/channel.directory.test.ts @@ -1,6 +1,6 @@ -import type { PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/matrix"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; +import type { PluginRuntime, RuntimeEnv } from "../runtime-api.js"; import { matrixPlugin } from "./channel.js"; import { setMatrixRuntime } from "./runtime.js"; import { createMatrixBotSdkMock } from "./test-mocks.js"; diff --git a/extensions/matrix/src/matrix/monitor/events.test.ts b/extensions/matrix/src/matrix/monitor/events.test.ts index 6dac0db59fc..73e96835ea3 100644 --- a/extensions/matrix/src/matrix/monitor/events.test.ts +++ b/extensions/matrix/src/matrix/monitor/events.test.ts @@ -1,6 +1,6 @@ import type { MatrixClient } from "@vector-im/matrix-bot-sdk"; -import type { PluginRuntime, RuntimeLogger } from "openclaw/plugin-sdk/matrix"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { PluginRuntime, RuntimeLogger } from "../../../runtime-api.js"; import type { MatrixAuth } from "../client.js"; import { registerMatrixMonitorEvents } from "./events.js"; import type { MatrixRawEvent } from "./types.js"; diff --git a/extensions/matrix/src/matrix/monitor/handler.body-for-agent.test.ts b/extensions/matrix/src/matrix/monitor/handler.body-for-agent.test.ts index 5926b032f58..91ade71e41b 100644 --- a/extensions/matrix/src/matrix/monitor/handler.body-for-agent.test.ts +++ b/extensions/matrix/src/matrix/monitor/handler.body-for-agent.test.ts @@ -1,6 +1,6 @@ import type { MatrixClient } from "@vector-im/matrix-bot-sdk"; -import type { PluginRuntime, RuntimeEnv, RuntimeLogger } from "openclaw/plugin-sdk/matrix"; import { describe, expect, it, vi } from "vitest"; +import type { PluginRuntime, RuntimeEnv, RuntimeLogger } from "../../../runtime-api.js"; import { createMatrixRoomMessageHandler, resolveMatrixBaseRouteSession, diff --git a/extensions/matrix/src/matrix/monitor/media.test.ts b/extensions/matrix/src/matrix/monitor/media.test.ts index a3803108af2..a142893ef44 100644 --- a/extensions/matrix/src/matrix/monitor/media.test.ts +++ b/extensions/matrix/src/matrix/monitor/media.test.ts @@ -1,5 +1,5 @@ -import type { PluginRuntime } from "openclaw/plugin-sdk/matrix"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { PluginRuntime } from "../../../runtime-api.js"; import { setMatrixRuntime } from "../../runtime.js"; import { downloadMatrixMedia } from "./media.js"; diff --git a/extensions/matrix/src/matrix/monitor/replies.test.ts b/extensions/matrix/src/matrix/monitor/replies.test.ts index 838f955abdf..cc458dc9fe5 100644 --- a/extensions/matrix/src/matrix/monitor/replies.test.ts +++ b/extensions/matrix/src/matrix/monitor/replies.test.ts @@ -1,6 +1,6 @@ import type { MatrixClient } from "@vector-im/matrix-bot-sdk"; -import type { PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/matrix"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { PluginRuntime, RuntimeEnv } from "../../../runtime-api.js"; const sendMessageMatrixMock = vi.hoisted(() => vi.fn().mockResolvedValue({ messageId: "mx-1" })); diff --git a/extensions/matrix/src/matrix/send.test.ts b/extensions/matrix/src/matrix/send.test.ts index 2bf21023909..3833113a981 100644 --- a/extensions/matrix/src/matrix/send.test.ts +++ b/extensions/matrix/src/matrix/send.test.ts @@ -1,5 +1,5 @@ -import type { PluginRuntime } from "openclaw/plugin-sdk/matrix"; import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest"; +import type { PluginRuntime } from "../../runtime-api.js"; import { setMatrixRuntime } from "../runtime.js"; import { createMatrixBotSdkMock } from "../test-mocks.js"; diff --git a/extensions/matrix/src/outbound.test.ts b/extensions/matrix/src/outbound.test.ts index 081c5572837..95c8cecee25 100644 --- a/extensions/matrix/src/outbound.test.ts +++ b/extensions/matrix/src/outbound.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/matrix"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; const mocks = vi.hoisted(() => ({ sendMessageMatrix: vi.fn(), diff --git a/extensions/matrix/src/resolve-targets.test.ts b/extensions/matrix/src/resolve-targets.test.ts index 02a5088e8ae..7d47f09407e 100644 --- a/extensions/matrix/src/resolve-targets.test.ts +++ b/extensions/matrix/src/resolve-targets.test.ts @@ -1,5 +1,5 @@ -import type { ChannelDirectoryEntry } from "openclaw/plugin-sdk/matrix"; import { describe, expect, it, vi, beforeEach } from "vitest"; +import type { ChannelDirectoryEntry } from "../runtime-api.js"; import { listMatrixDirectoryGroupsLive, listMatrixDirectoryPeersLive } from "./directory-live.js"; import { resolveMatrixTargets } from "./resolve-targets.js"; diff --git a/extensions/mattermost/index.test.ts b/extensions/mattermost/index.test.ts index d21403111cb..7ab3d87778a 100644 --- a/extensions/mattermost/index.test.ts +++ b/extensions/mattermost/index.test.ts @@ -1,7 +1,7 @@ -import type { OpenClawPluginApi } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it, vi } from "vitest"; import { createTestPluginApi } from "../../test/helpers/extensions/plugin-api.js"; import plugin from "./index.js"; +import type { OpenClawPluginApi } from "./runtime-api.js"; function createApi( registrationMode: OpenClawPluginApi["registrationMode"], diff --git a/extensions/mattermost/runtime-api.ts b/extensions/mattermost/runtime-api.ts index e13fee5ad71..61d44b28a2d 100644 --- a/extensions/mattermost/runtime-api.ts +++ b/extensions/mattermost/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/mattermost"; +export * from "../../src/plugin-sdk/mattermost.js"; diff --git a/extensions/mattermost/src/channel.test.ts b/extensions/mattermost/src/channel.test.ts index f8e8d86ee74..4b66bf05edd 100644 --- a/extensions/mattermost/src/channel.test.ts +++ b/extensions/mattermost/src/channel.test.ts @@ -1,6 +1,6 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; -import { createReplyPrefixOptions } from "openclaw/plugin-sdk/mattermost"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; +import { createReplyPrefixOptions } from "../runtime-api.js"; const { sendMessageMattermostMock } = vi.hoisted(() => ({ sendMessageMattermostMock: vi.fn(), })); diff --git a/extensions/mattermost/src/group-mentions.test.ts b/extensions/mattermost/src/group-mentions.test.ts index afa7937f2ff..8a4d1492799 100644 --- a/extensions/mattermost/src/group-mentions.test.ts +++ b/extensions/mattermost/src/group-mentions.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; import { resolveMattermostGroupRequireMention } from "./group-mentions.js"; describe("resolveMattermostGroupRequireMention", () => { diff --git a/extensions/mattermost/src/mattermost/accounts.test.ts b/extensions/mattermost/src/mattermost/accounts.test.ts index 0e01d362520..097836b8a68 100644 --- a/extensions/mattermost/src/mattermost/accounts.test.ts +++ b/extensions/mattermost/src/mattermost/accounts.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../../runtime-api.js"; import { resolveDefaultMattermostAccountId, resolveMattermostAccount, diff --git a/extensions/mattermost/src/mattermost/model-picker.test.ts b/extensions/mattermost/src/mattermost/model-picker.test.ts index cebafc4a1bc..a9acbd52c40 100644 --- a/extensions/mattermost/src/mattermost/model-picker.test.ts +++ b/extensions/mattermost/src/mattermost/model-picker.test.ts @@ -1,9 +1,9 @@ import fs from "node:fs"; import os from "node:os"; import path from "node:path"; -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; -import { buildModelsProviderData } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../../runtime-api.js"; +import { buildModelsProviderData } from "../../runtime-api.js"; import { buildMattermostAllowedModelRefs, parseMattermostModelPickerContext, diff --git a/extensions/mattermost/src/mattermost/monitor-websocket.test.ts b/extensions/mattermost/src/mattermost/monitor-websocket.test.ts index 171052637ce..28aa67a7f8d 100644 --- a/extensions/mattermost/src/mattermost/monitor-websocket.test.ts +++ b/extensions/mattermost/src/mattermost/monitor-websocket.test.ts @@ -1,5 +1,5 @@ -import type { RuntimeEnv } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it, vi } from "vitest"; +import type { RuntimeEnv } from "../../runtime-api.js"; import { createMattermostConnectOnce, type MattermostWebSocketLike, diff --git a/extensions/mattermost/src/mattermost/monitor.authz.test.ts b/extensions/mattermost/src/mattermost/monitor.authz.test.ts index 68919da7908..addbccd10c9 100644 --- a/extensions/mattermost/src/mattermost/monitor.authz.test.ts +++ b/extensions/mattermost/src/mattermost/monitor.authz.test.ts @@ -1,5 +1,5 @@ -import { resolveControlCommandGate } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it } from "vitest"; +import { resolveControlCommandGate } from "../../runtime-api.js"; import type { ResolvedMattermostAccount } from "./accounts.js"; import { authorizeMattermostCommandInvocation, diff --git a/extensions/mattermost/src/mattermost/monitor.test.ts b/extensions/mattermost/src/mattermost/monitor.test.ts index ab993dbb2af..7155f5b3c83 100644 --- a/extensions/mattermost/src/mattermost/monitor.test.ts +++ b/extensions/mattermost/src/mattermost/monitor.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../../runtime-api.js"; import { resolveMattermostAccount } from "./accounts.js"; import { evaluateMattermostMentionGate, diff --git a/extensions/mattermost/src/mattermost/reply-delivery.test.ts b/extensions/mattermost/src/mattermost/reply-delivery.test.ts index 7d48e5fcfc0..0d773e6491c 100644 --- a/extensions/mattermost/src/mattermost/reply-delivery.test.ts +++ b/extensions/mattermost/src/mattermost/reply-delivery.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../../runtime-api.js"; import { deliverMattermostReplyPayload } from "./reply-delivery.js"; describe("deliverMattermostReplyPayload", () => { diff --git a/extensions/mattermost/src/mattermost/send.test.ts b/extensions/mattermost/src/mattermost/send.test.ts index 784b27677e6..da06a07e3cb 100644 --- a/extensions/mattermost/src/mattermost/send.test.ts +++ b/extensions/mattermost/src/mattermost/send.test.ts @@ -28,7 +28,7 @@ const mockState = vi.hoisted(() => ({ uploadMattermostFile: vi.fn(), })); -vi.mock("openclaw/plugin-sdk/mattermost", () => ({ +vi.mock("../../runtime-api.js", () => ({ loadOutboundMediaFromUrl: mockState.loadOutboundMediaFromUrl, })); diff --git a/extensions/mattermost/src/mattermost/slash-http.test.ts b/extensions/mattermost/src/mattermost/slash-http.test.ts index 42132e1275d..11cb9ded55c 100644 --- a/extensions/mattermost/src/mattermost/slash-http.test.ts +++ b/extensions/mattermost/src/mattermost/slash-http.test.ts @@ -1,7 +1,7 @@ import type { IncomingMessage, ServerResponse } from "node:http"; import { PassThrough } from "node:stream"; -import type { OpenClawConfig, RuntimeEnv } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, RuntimeEnv } from "../../runtime-api.js"; import type { ResolvedMattermostAccount } from "./accounts.js"; import { createSlashCommandHttpHandler } from "./slash-http.js"; diff --git a/extensions/mattermost/src/setup-status.test.ts b/extensions/mattermost/src/setup-status.test.ts index f1b440315e3..61423efb199 100644 --- a/extensions/mattermost/src/setup-status.test.ts +++ b/extensions/mattermost/src/setup-status.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/mattermost"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; import { mattermostSetupWizard } from "./setup-surface.js"; describe("mattermost setup status", () => { diff --git a/extensions/memory-lancedb/api.ts b/extensions/memory-lancedb/api.ts index c1bd12dd4b7..ce6e02cf02f 100644 --- a/extensions/memory-lancedb/api.ts +++ b/extensions/memory-lancedb/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/memory-lancedb"; +export * from "../../src/plugin-sdk/memory-lancedb.js"; diff --git a/extensions/minimax/index.ts b/extensions/minimax/index.ts index e219ceec6a0..ff54a2730b0 100644 --- a/extensions/minimax/index.ts +++ b/extensions/minimax/index.ts @@ -1,10 +1,3 @@ -import { - buildOauthProviderAuthResult, - definePluginEntry, - type ProviderAuthContext, - type ProviderAuthResult, - type ProviderCatalogContext, -} from "openclaw/plugin-sdk/minimax-portal-auth"; import { MINIMAX_OAUTH_MARKER, createProviderApiKeyAuthMethod, @@ -12,6 +5,13 @@ import { listProfilesForProvider, } from "openclaw/plugin-sdk/provider-auth"; import { fetchMinimaxUsage } from "openclaw/plugin-sdk/provider-usage"; +import { + buildOauthProviderAuthResult, + definePluginEntry, + type ProviderAuthContext, + type ProviderAuthResult, + type ProviderCatalogContext, +} from "../../src/plugin-sdk/minimax-portal-auth.js"; import { minimaxMediaUnderstandingProvider, minimaxPortalMediaUnderstandingProvider, diff --git a/extensions/minimax/oauth.ts b/extensions/minimax/oauth.ts index fb405cd5559..394a083630a 100644 --- a/extensions/minimax/oauth.ts +++ b/extensions/minimax/oauth.ts @@ -2,7 +2,7 @@ import { randomBytes, randomUUID } from "node:crypto"; import { generatePkceVerifierChallenge, toFormUrlEncoded, -} from "openclaw/plugin-sdk/minimax-portal-auth"; +} from "../../src/plugin-sdk/minimax-portal-auth.js"; export type MiniMaxRegion = "cn" | "global"; diff --git a/extensions/minimax/onboard.ts b/extensions/minimax/onboard.ts index ee0066b563d..86ece4348cd 100644 --- a/extensions/minimax/onboard.ts +++ b/extensions/minimax/onboard.ts @@ -1,14 +1,14 @@ -import { - buildMinimaxApiModelDefinition, - MINIMAX_API_BASE_URL, - MINIMAX_CN_API_BASE_URL, -} from "openclaw/plugin-sdk/provider-models"; import { applyAgentDefaultModelPrimary, applyOnboardAuthAgentModelsAndProviders, type ModelProviderConfig, type OpenClawConfig, } from "openclaw/plugin-sdk/provider-onboard"; +import { + buildMinimaxApiModelDefinition, + MINIMAX_API_BASE_URL, + MINIMAX_CN_API_BASE_URL, +} from "./model-definitions.js"; type MinimaxApiProviderConfigParams = { providerId: string; diff --git a/extensions/mistral/onboard.ts b/extensions/mistral/onboard.ts index cefdeda2d01..337ef194f1c 100644 --- a/extensions/mistral/onboard.ts +++ b/extensions/mistral/onboard.ts @@ -1,13 +1,13 @@ -import { - buildMistralModelDefinition, - MISTRAL_BASE_URL, - MISTRAL_DEFAULT_MODEL_ID, -} from "openclaw/plugin-sdk/provider-models"; import { applyAgentDefaultModelPrimary, applyProviderConfigWithDefaultModel, type OpenClawConfig, } from "openclaw/plugin-sdk/provider-onboard"; +import { + buildMistralModelDefinition, + MISTRAL_BASE_URL, + MISTRAL_DEFAULT_MODEL_ID, +} from "./model-definitions.js"; export const MISTRAL_DEFAULT_MODEL_REF = `mistral/${MISTRAL_DEFAULT_MODEL_ID}`; diff --git a/extensions/modelstudio/onboard.ts b/extensions/modelstudio/onboard.ts index 881b742dde4..9c1d78a141b 100644 --- a/extensions/modelstudio/onboard.ts +++ b/extensions/modelstudio/onboard.ts @@ -1,13 +1,13 @@ -import { - MODELSTUDIO_CN_BASE_URL, - MODELSTUDIO_DEFAULT_MODEL_REF, - MODELSTUDIO_GLOBAL_BASE_URL, -} from "openclaw/plugin-sdk/provider-models"; import { applyAgentDefaultModelPrimary, applyProviderConfigWithModelCatalog, type OpenClawConfig, } from "openclaw/plugin-sdk/provider-onboard"; +import { + MODELSTUDIO_CN_BASE_URL, + MODELSTUDIO_DEFAULT_MODEL_REF, + MODELSTUDIO_GLOBAL_BASE_URL, +} from "./model-definitions.js"; import { buildModelStudioProvider } from "./provider-catalog.js"; export { MODELSTUDIO_CN_BASE_URL, MODELSTUDIO_DEFAULT_MODEL_REF, MODELSTUDIO_GLOBAL_BASE_URL }; diff --git a/extensions/msteams/runtime-api.ts b/extensions/msteams/runtime-api.ts index 1347e49a695..2d0d98739d1 100644 --- a/extensions/msteams/runtime-api.ts +++ b/extensions/msteams/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/msteams"; +export * from "../../src/plugin-sdk/msteams.js"; diff --git a/extensions/msteams/src/attachments.test.ts b/extensions/msteams/src/attachments.test.ts index fa119a2b44a..e0d673def03 100644 --- a/extensions/msteams/src/attachments.test.ts +++ b/extensions/msteams/src/attachments.test.ts @@ -1,6 +1,6 @@ -import type { PluginRuntime, SsrFPolicy } from "openclaw/plugin-sdk/msteams"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { createPluginRuntimeMock } from "../../../test/helpers/extensions/plugin-runtime-mock.js"; +import type { PluginRuntime, SsrFPolicy } from "../runtime-api.js"; import { buildMSTeamsAttachmentPlaceholder, buildMSTeamsGraphMessageUrls, diff --git a/extensions/msteams/src/channel.directory.test.ts b/extensions/msteams/src/channel.directory.test.ts index df3547d012a..955fdb334c4 100644 --- a/extensions/msteams/src/channel.directory.test.ts +++ b/extensions/msteams/src/channel.directory.test.ts @@ -1,9 +1,9 @@ -import type { OpenClawConfig, RuntimeEnv } from "openclaw/plugin-sdk/msteams"; import { describe, expect, it } from "vitest"; import { createDirectoryTestRuntime, expectDirectorySurface, } from "../../../test/helpers/extensions/directory.js"; +import type { OpenClawConfig, RuntimeEnv } from "../runtime-api.js"; import { msteamsPlugin } from "./channel.js"; describe("msteams directory", () => { diff --git a/extensions/msteams/src/messenger.test.ts b/extensions/msteams/src/messenger.test.ts index e67017ed8fc..2644092f127 100644 --- a/extensions/msteams/src/messenger.test.ts +++ b/extensions/msteams/src/messenger.test.ts @@ -1,9 +1,9 @@ import { mkdtemp, rm, writeFile } from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import { SILENT_REPLY_TOKEN, type PluginRuntime } from "openclaw/plugin-sdk/msteams"; import { beforeEach, describe, expect, it, vi } from "vitest"; import { createPluginRuntimeMock } from "../../../test/helpers/extensions/plugin-runtime-mock.js"; +import { SILENT_REPLY_TOKEN, type PluginRuntime } from "../runtime-api.js"; import type { StoredConversationReference } from "./conversation-store.js"; const graphUploadMockState = vi.hoisted(() => ({ uploadAndShareOneDrive: vi.fn(), diff --git a/extensions/msteams/src/monitor-handler.file-consent.test.ts b/extensions/msteams/src/monitor-handler.file-consent.test.ts index 5e72f7a9dd1..5e610bfcfa6 100644 --- a/extensions/msteams/src/monitor-handler.file-consent.test.ts +++ b/extensions/msteams/src/monitor-handler.file-consent.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/msteams"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "../runtime-api.js"; import type { MSTeamsConversationStore } from "./conversation-store.js"; import type { MSTeamsAdapter } from "./messenger.js"; import { diff --git a/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts b/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts index 4997b43c754..68295e9bb07 100644 --- a/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts +++ b/extensions/msteams/src/monitor-handler/message-handler.authz.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/msteams"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "../../runtime-api.js"; import type { MSTeamsMessageHandlerDeps } from "../monitor-handler.js"; import { setMSTeamsRuntime } from "../runtime.js"; import { createMSTeamsMessageHandler } from "./message-handler.js"; diff --git a/extensions/msteams/src/monitor.lifecycle.test.ts b/extensions/msteams/src/monitor.lifecycle.test.ts index a71beb76226..67302dc61dd 100644 --- a/extensions/msteams/src/monitor.lifecycle.test.ts +++ b/extensions/msteams/src/monitor.lifecycle.test.ts @@ -1,6 +1,6 @@ import { EventEmitter } from "node:events"; -import type { OpenClawConfig, RuntimeEnv } from "openclaw/plugin-sdk/msteams"; import { afterEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, RuntimeEnv } from "../runtime-api.js"; import type { MSTeamsConversationStore } from "./conversation-store.js"; import type { MSTeamsPollStore } from "./polls.js"; @@ -15,7 +15,7 @@ const expressControl = vi.hoisted(() => ({ mode: { value: "listening" as "listening" | "error" }, })); -vi.mock("openclaw/plugin-sdk/msteams", () => ({ +vi.mock("../runtime-api.js", () => ({ DEFAULT_WEBHOOK_MAX_BODY_BYTES: 1024 * 1024, normalizeSecretInputString: (value: unknown) => typeof value === "string" && value.trim() ? value.trim() : undefined, diff --git a/extensions/msteams/src/outbound.test.ts b/extensions/msteams/src/outbound.test.ts index a4fc6cc5373..5b2c0f25024 100644 --- a/extensions/msteams/src/outbound.test.ts +++ b/extensions/msteams/src/outbound.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/msteams"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; const mocks = vi.hoisted(() => ({ sendMessageMSTeams: vi.fn(), diff --git a/extensions/msteams/src/policy.test.ts b/extensions/msteams/src/policy.test.ts index ac324f3d785..60342573355 100644 --- a/extensions/msteams/src/policy.test.ts +++ b/extensions/msteams/src/policy.test.ts @@ -1,5 +1,5 @@ -import type { MSTeamsConfig } from "openclaw/plugin-sdk/msteams"; import { describe, expect, it } from "vitest"; +import type { MSTeamsConfig } from "../runtime-api.js"; import { isMSTeamsGroupAllowed, resolveMSTeamsReplyPolicy, diff --git a/extensions/msteams/src/probe.test.ts b/extensions/msteams/src/probe.test.ts index 3c6ac3b5d04..1019566e470 100644 --- a/extensions/msteams/src/probe.test.ts +++ b/extensions/msteams/src/probe.test.ts @@ -1,5 +1,5 @@ -import type { MSTeamsConfig } from "openclaw/plugin-sdk/msteams"; import { describe, expect, it, vi } from "vitest"; +import type { MSTeamsConfig } from "../runtime-api.js"; const hostMockState = vi.hoisted(() => ({ tokenError: null as Error | null, diff --git a/extensions/msteams/src/send.test.ts b/extensions/msteams/src/send.test.ts index ce6acbaf9b6..332a00b65bb 100644 --- a/extensions/msteams/src/send.test.ts +++ b/extensions/msteams/src/send.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/msteams"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; import { sendMessageMSTeams } from "./send.js"; const mockState = vi.hoisted(() => ({ @@ -11,7 +11,7 @@ const mockState = vi.hoisted(() => ({ sendMSTeamsMessages: vi.fn(), })); -vi.mock("openclaw/plugin-sdk/msteams", () => ({ +vi.mock("../runtime-api.js", () => ({ loadOutboundMediaFromUrl: mockState.loadOutboundMediaFromUrl, })); diff --git a/extensions/nextcloud-talk/runtime-api.ts b/extensions/nextcloud-talk/runtime-api.ts index fc9283930bd..ba31a546cdf 100644 --- a/extensions/nextcloud-talk/runtime-api.ts +++ b/extensions/nextcloud-talk/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/nextcloud-talk"; +export * from "../../src/plugin-sdk/nextcloud-talk.js"; diff --git a/extensions/nextcloud-talk/src/inbound.authz.test.ts b/extensions/nextcloud-talk/src/inbound.authz.test.ts index 873b74bc93a..4fc268e5a5e 100644 --- a/extensions/nextcloud-talk/src/inbound.authz.test.ts +++ b/extensions/nextcloud-talk/src/inbound.authz.test.ts @@ -1,5 +1,5 @@ -import type { PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/nextcloud-talk"; import { describe, expect, it, vi } from "vitest"; +import type { PluginRuntime, RuntimeEnv } from "../runtime-api.js"; import type { ResolvedNextcloudTalkAccount } from "./accounts.js"; import { handleNextcloudTalkInbound } from "./inbound.js"; import { setNextcloudTalkRuntime } from "./runtime.js"; diff --git a/extensions/nostr/api.ts b/extensions/nostr/api.ts index 3f3d64cc3bf..3fbe8cf14d6 100644 --- a/extensions/nostr/api.ts +++ b/extensions/nostr/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/nostr"; +export * from "../../src/plugin-sdk/nostr.js"; diff --git a/extensions/nostr/runtime-api.ts b/extensions/nostr/runtime-api.ts index 3f3d64cc3bf..3fbe8cf14d6 100644 --- a/extensions/nostr/runtime-api.ts +++ b/extensions/nostr/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/nostr"; +export * from "../../src/plugin-sdk/nostr.js"; diff --git a/extensions/nostr/src/channel.outbound.test.ts b/extensions/nostr/src/channel.outbound.test.ts index 0bbe7f880bf..dbbeb544708 100644 --- a/extensions/nostr/src/channel.outbound.test.ts +++ b/extensions/nostr/src/channel.outbound.test.ts @@ -1,6 +1,6 @@ -import type { PluginRuntime } from "openclaw/plugin-sdk/nostr"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createStartAccountContext } from "../../../test/helpers/extensions/start-account-context.js"; +import type { PluginRuntime } from "../runtime-api.js"; import { nostrPlugin } from "./channel.js"; import { setNostrRuntime } from "./runtime.js"; diff --git a/extensions/nostr/src/nostr-state-store.test.ts b/extensions/nostr/src/nostr-state-store.test.ts index 5ab5b0c2946..38cac722533 100644 --- a/extensions/nostr/src/nostr-state-store.test.ts +++ b/extensions/nostr/src/nostr-state-store.test.ts @@ -1,8 +1,8 @@ import fs from "node:fs/promises"; import os from "node:os"; import path from "node:path"; -import type { PluginRuntime } from "openclaw/plugin-sdk/nostr"; import { describe, expect, it } from "vitest"; +import type { PluginRuntime } from "../runtime-api.js"; import { readNostrBusState, writeNostrBusState, diff --git a/extensions/nostr/src/setup-surface.test.ts b/extensions/nostr/src/setup-surface.test.ts index 98e479842c5..c1cd3802c5e 100644 --- a/extensions/nostr/src/setup-surface.test.ts +++ b/extensions/nostr/src/setup-surface.test.ts @@ -1,4 +1,3 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/nostr"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; @@ -6,6 +5,7 @@ import { createTestWizardPrompter, type WizardPrompter, } from "../../../test/helpers/extensions/setup-wizard.js"; +import type { OpenClawConfig } from "../runtime-api.js"; import { nostrPlugin } from "./channel.js"; const nostrConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/open-prose/runtime-api.ts b/extensions/open-prose/runtime-api.ts index 1601f81be1f..1a7ce98ffef 100644 --- a/extensions/open-prose/runtime-api.ts +++ b/extensions/open-prose/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/open-prose"; +export * from "../../src/plugin-sdk/open-prose.js"; diff --git a/extensions/phone-control/runtime-api.ts b/extensions/phone-control/runtime-api.ts index 2e9e0adeba2..c113b9802be 100644 --- a/extensions/phone-control/runtime-api.ts +++ b/extensions/phone-control/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/phone-control"; +export * from "../../src/plugin-sdk/phone-control.js"; diff --git a/extensions/qwen-portal-auth/runtime-api.ts b/extensions/qwen-portal-auth/runtime-api.ts index 232a2886110..ccd9abae569 100644 --- a/extensions/qwen-portal-auth/runtime-api.ts +++ b/extensions/qwen-portal-auth/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/qwen-portal-auth"; +export * from "../../src/plugin-sdk/qwen-portal-auth.js"; diff --git a/extensions/signal/src/accounts.ts b/extensions/signal/src/accounts.ts index 272b4612dc1..76f245425b0 100644 --- a/extensions/signal/src/accounts.ts +++ b/extensions/signal/src/accounts.ts @@ -4,7 +4,7 @@ import { resolveAccountEntry, type OpenClawConfig, } from "openclaw/plugin-sdk/account-resolution"; -import type { SignalAccountConfig } from "openclaw/plugin-sdk/signal-core"; +import type { SignalAccountConfig } from "../../../src/plugin-sdk/signal-core.js"; export type ResolvedSignalAccount = { accountId: string; diff --git a/extensions/signal/src/runtime-api.ts b/extensions/signal/src/runtime-api.ts index 93bce482026..35c05ddfa18 100644 --- a/extensions/signal/src/runtime-api.ts +++ b/extensions/signal/src/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/signal"; +export * from "../../../src/plugin-sdk/signal.js"; diff --git a/extensions/synology-chat/api.ts b/extensions/synology-chat/api.ts index 4ff5241bd49..dded68ce44c 100644 --- a/extensions/synology-chat/api.ts +++ b/extensions/synology-chat/api.ts @@ -1,2 +1,2 @@ -export * from "openclaw/plugin-sdk/synology-chat"; +export * from "../../src/plugin-sdk/synology-chat.js"; export * from "./setup-api.js"; diff --git a/extensions/talk-voice/api.ts b/extensions/talk-voice/api.ts index a5ae821e944..5f50f1a5247 100644 --- a/extensions/talk-voice/api.ts +++ b/extensions/talk-voice/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/talk-voice"; +export * from "../../src/plugin-sdk/talk-voice.js"; diff --git a/extensions/thread-ownership/api.ts b/extensions/thread-ownership/api.ts index d94a5fd68e1..16e4afef70a 100644 --- a/extensions/thread-ownership/api.ts +++ b/extensions/thread-ownership/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/thread-ownership"; +export * from "../../src/plugin-sdk/thread-ownership.js"; diff --git a/extensions/tlon/api.ts b/extensions/tlon/api.ts index 5364c68f07d..2d50ee84bd8 100644 --- a/extensions/tlon/api.ts +++ b/extensions/tlon/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/tlon"; +export * from "../../src/plugin-sdk/tlon.js"; diff --git a/extensions/tlon/src/channel.test.ts b/extensions/tlon/src/channel.test.ts index 44059ed1617..116b78bf718 100644 --- a/extensions/tlon/src/channel.test.ts +++ b/extensions/tlon/src/channel.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/tlon"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../api.js"; import { tlonPlugin } from "./channel.js"; describe("tlonPlugin config", () => { diff --git a/extensions/tlon/src/setup-surface.test.ts b/extensions/tlon/src/setup-surface.test.ts index e88fd15a89e..a193f9ca800 100644 --- a/extensions/tlon/src/setup-surface.test.ts +++ b/extensions/tlon/src/setup-surface.test.ts @@ -1,4 +1,3 @@ -import type { OpenClawConfig, RuntimeEnv } from "openclaw/plugin-sdk/tlon"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; @@ -6,6 +5,7 @@ import { createTestWizardPrompter, type WizardPrompter, } from "../../../test/helpers/extensions/setup-wizard.js"; +import type { OpenClawConfig, RuntimeEnv } from "../api.js"; import { tlonPlugin } from "./channel.js"; const tlonConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/tlon/src/urbit/auth.ssrf.test.ts b/extensions/tlon/src/urbit/auth.ssrf.test.ts index 18dd6142ad3..7e283bf831e 100644 --- a/extensions/tlon/src/urbit/auth.ssrf.test.ts +++ b/extensions/tlon/src/urbit/auth.ssrf.test.ts @@ -1,6 +1,6 @@ -import type { LookupFn } from "openclaw/plugin-sdk/tlon"; -import { SsrFBlockedError } from "openclaw/plugin-sdk/tlon"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type { LookupFn } from "../../api.js"; +import { SsrFBlockedError } from "../../api.js"; import { authenticate } from "./auth.js"; describe("tlon urbit auth ssrf", () => { diff --git a/extensions/twitch/api.ts b/extensions/twitch/api.ts index 68033283423..dfe3fbff0cd 100644 --- a/extensions/twitch/api.ts +++ b/extensions/twitch/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/twitch"; +export * from "../../src/plugin-sdk/twitch.js"; diff --git a/extensions/twitch/runtime-api.ts b/extensions/twitch/runtime-api.ts index 68033283423..dfe3fbff0cd 100644 --- a/extensions/twitch/runtime-api.ts +++ b/extensions/twitch/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/twitch"; +export * from "../../src/plugin-sdk/twitch.js"; diff --git a/extensions/twitch/src/plugin.test.ts b/extensions/twitch/src/plugin.test.ts index cc52a7ca7c2..615f5124cfc 100644 --- a/extensions/twitch/src/plugin.test.ts +++ b/extensions/twitch/src/plugin.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/twitch"; import { describe, expect, it } from "vitest"; +import type { OpenClawConfig } from "../api.js"; import { twitchPlugin } from "./plugin.js"; describe("twitchPlugin.status.buildAccountSnapshot", () => { diff --git a/extensions/twitch/src/setup-surface.test.ts b/extensions/twitch/src/setup-surface.test.ts index 611e0fca66d..0c0affd8288 100644 --- a/extensions/twitch/src/setup-surface.test.ts +++ b/extensions/twitch/src/setup-surface.test.ts @@ -11,8 +11,8 @@ * - setTwitchAccount config updates */ -import type { WizardPrompter } from "openclaw/plugin-sdk/twitch"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type { WizardPrompter } from "../api.js"; import type { TwitchAccountConfig } from "./types.js"; // Mock the helpers we're testing diff --git a/extensions/twitch/src/token.test.ts b/extensions/twitch/src/token.test.ts index 132a87ae811..ac9c96f5221 100644 --- a/extensions/twitch/src/token.test.ts +++ b/extensions/twitch/src/token.test.ts @@ -8,8 +8,8 @@ * - Account ID normalization */ -import type { OpenClawConfig } from "openclaw/plugin-sdk/twitch"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../api.js"; import { resolveTwitchToken, type TwitchTokenSource } from "./token.js"; describe("token", () => { diff --git a/extensions/voice-call/api.ts b/extensions/voice-call/api.ts index ef9f7d7a3c0..d0f69774b5e 100644 --- a/extensions/voice-call/api.ts +++ b/extensions/voice-call/api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/voice-call"; +export * from "../../src/plugin-sdk/voice-call.js"; diff --git a/extensions/xai/onboard.ts b/extensions/xai/onboard.ts index a4d4b876c1e..75cf2b97d13 100644 --- a/extensions/xai/onboard.ts +++ b/extensions/xai/onboard.ts @@ -1,9 +1,9 @@ -import { XAI_BASE_URL, XAI_DEFAULT_MODEL_ID } from "openclaw/plugin-sdk/provider-models"; import { applyAgentDefaultModelPrimary, applyProviderConfigWithDefaultModels, type OpenClawConfig, } from "openclaw/plugin-sdk/provider-onboard"; +import { XAI_BASE_URL, XAI_DEFAULT_MODEL_ID } from "./model-definitions.js"; import { buildXaiCatalogModels } from "./model-definitions.js"; export const XAI_DEFAULT_MODEL_REF = `xai/${XAI_DEFAULT_MODEL_ID}`; diff --git a/extensions/zai/onboard.ts b/extensions/zai/onboard.ts index f293e0f7632..aa756546302 100644 --- a/extensions/zai/onboard.ts +++ b/extensions/zai/onboard.ts @@ -1,13 +1,13 @@ -import { - buildZaiModelDefinition, - resolveZaiBaseUrl, - ZAI_DEFAULT_MODEL_ID, -} from "openclaw/plugin-sdk/provider-models"; import { applyAgentDefaultModelPrimary, applyProviderConfigWithModelCatalog, type OpenClawConfig, } from "openclaw/plugin-sdk/provider-onboard"; +import { + buildZaiModelDefinition, + resolveZaiBaseUrl, + ZAI_DEFAULT_MODEL_ID, +} from "./model-definitions.js"; export const ZAI_DEFAULT_MODEL_REF = `zai/${ZAI_DEFAULT_MODEL_ID}`; diff --git a/extensions/zai/runtime-api.ts b/extensions/zai/runtime-api.ts index 27c34abce5a..16d46dd4362 100644 --- a/extensions/zai/runtime-api.ts +++ b/extensions/zai/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/zai"; +export * from "../../src/plugin-sdk/zai.js"; diff --git a/extensions/zalo/runtime-api.ts b/extensions/zalo/runtime-api.ts index 666b1c2a59d..a8fa6c3d3d1 100644 --- a/extensions/zalo/runtime-api.ts +++ b/extensions/zalo/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/zalo"; +export * from "../../src/plugin-sdk/zalo.js"; diff --git a/extensions/zalo/src/channel.directory.test.ts b/extensions/zalo/src/channel.directory.test.ts index ac079109736..efa20d3a80a 100644 --- a/extensions/zalo/src/channel.directory.test.ts +++ b/extensions/zalo/src/channel.directory.test.ts @@ -1,9 +1,9 @@ -import type { OpenClawConfig, RuntimeEnv } from "openclaw/plugin-sdk/zalo"; import { describe, expect, it } from "vitest"; import { createDirectoryTestRuntime, expectDirectorySurface, } from "../../../test/helpers/extensions/directory.js"; +import type { OpenClawConfig, RuntimeEnv } from "../runtime-api.js"; import { zaloPlugin } from "./channel.js"; describe("zalo directory", () => { diff --git a/extensions/zalo/src/channel.startup.test.ts b/extensions/zalo/src/channel.startup.test.ts index d99f2397438..a7fff0807cc 100644 --- a/extensions/zalo/src/channel.startup.test.ts +++ b/extensions/zalo/src/channel.startup.test.ts @@ -1,9 +1,9 @@ -import type { ChannelAccountSnapshot } from "openclaw/plugin-sdk/zalo"; import { afterEach, describe, expect, it, vi } from "vitest"; import { expectPendingUntilAbort, startAccountAndTrackLifecycle, } from "../../../test/helpers/extensions/start-account-lifecycle.js"; +import type { ChannelAccountSnapshot } from "../runtime-api.js"; import type { ResolvedZaloAccount } from "./accounts.js"; const hoisted = vi.hoisted(() => ({ diff --git a/extensions/zalo/src/monitor.lifecycle.test.ts b/extensions/zalo/src/monitor.lifecycle.test.ts index e5fa65e1063..f0a5f1eefcb 100644 --- a/extensions/zalo/src/monitor.lifecycle.test.ts +++ b/extensions/zalo/src/monitor.lifecycle.test.ts @@ -1,7 +1,7 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/zalo"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createEmptyPluginRegistry } from "../../../src/plugins/registry.js"; import { setActivePluginRegistry } from "../../../src/plugins/runtime.js"; +import type { OpenClawConfig } from "../runtime-api.js"; import type { ResolvedZaloAccount } from "./accounts.js"; const getWebhookInfoMock = vi.fn(async () => ({ ok: true, result: { url: "" } })); diff --git a/extensions/zalo/src/monitor.webhook.test.ts b/extensions/zalo/src/monitor.webhook.test.ts index 57b5f43202e..a66bc455cf4 100644 --- a/extensions/zalo/src/monitor.webhook.test.ts +++ b/extensions/zalo/src/monitor.webhook.test.ts @@ -1,9 +1,9 @@ import { createServer, type RequestListener } from "node:http"; import type { AddressInfo } from "node:net"; -import type { OpenClawConfig, PluginRuntime } from "openclaw/plugin-sdk/zalo"; import { afterEach, describe, expect, it, vi } from "vitest"; import { createEmptyPluginRegistry } from "../../../src/plugins/registry.js"; import { setActivePluginRegistry } from "../../../src/plugins/runtime.js"; +import type { OpenClawConfig, PluginRuntime } from "../runtime-api.js"; import { clearZaloWebhookSecurityStateForTest, getZaloWebhookRateLimitStateSizeForTest, diff --git a/extensions/zalo/src/setup-status.test.ts b/extensions/zalo/src/setup-status.test.ts index d8ba9d53d03..738b9436f14 100644 --- a/extensions/zalo/src/setup-status.test.ts +++ b/extensions/zalo/src/setup-status.test.ts @@ -1,6 +1,6 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/zalo"; import { describe, expect, it } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; +import type { OpenClawConfig } from "../runtime-api.js"; import { zaloPlugin } from "./channel.js"; const zaloConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/zalo/src/setup-surface.test.ts b/extensions/zalo/src/setup-surface.test.ts index 8470a3bce66..16e6e46d8b8 100644 --- a/extensions/zalo/src/setup-surface.test.ts +++ b/extensions/zalo/src/setup-surface.test.ts @@ -1,4 +1,3 @@ -import type { OpenClawConfig, RuntimeEnv } from "openclaw/plugin-sdk/zalo"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; @@ -6,6 +5,7 @@ import { createTestWizardPrompter, type WizardPrompter, } from "../../../test/helpers/extensions/setup-wizard.js"; +import type { OpenClawConfig, RuntimeEnv } from "../runtime-api.js"; import { zaloPlugin } from "./channel.js"; const zaloConfigureAdapter = buildChannelSetupWizardAdapterFromSetupWizard({ diff --git a/extensions/zalouser/runtime-api.ts b/extensions/zalouser/runtime-api.ts index ef062d07887..8954fbb39d1 100644 --- a/extensions/zalouser/runtime-api.ts +++ b/extensions/zalouser/runtime-api.ts @@ -1 +1 @@ -export * from "openclaw/plugin-sdk/zalouser"; +export * from "../../src/plugin-sdk/zalouser.js"; diff --git a/extensions/zalouser/src/accounts.test.ts b/extensions/zalouser/src/accounts.test.ts index 11f9704f759..ec6f81b2180 100644 --- a/extensions/zalouser/src/accounts.test.ts +++ b/extensions/zalouser/src/accounts.test.ts @@ -1,6 +1,6 @@ import { DEFAULT_ACCOUNT_ID } from "openclaw/plugin-sdk/account-id"; -import type { OpenClawConfig } from "openclaw/plugin-sdk/zalouser"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig } from "../runtime-api.js"; import { getZcaUserInfo, listEnabledZalouserAccounts, diff --git a/extensions/zalouser/src/channel.sendpayload.test.ts b/extensions/zalouser/src/channel.sendpayload.test.ts index 2c9d5240ba9..207707a5bd8 100644 --- a/extensions/zalouser/src/channel.sendpayload.test.ts +++ b/extensions/zalouser/src/channel.sendpayload.test.ts @@ -1,7 +1,7 @@ -import type { ReplyPayload } from "openclaw/plugin-sdk/zalouser"; import { beforeEach, describe, expect, it, vi } from "vitest"; -import "./accounts.test-mocks.js"; import { primeChannelOutboundSendMock } from "../../../src/channels/plugins/contracts/suites.js"; +import "./accounts.test-mocks.js"; +import type { ReplyPayload } from "../runtime-api.js"; import { zalouserPlugin } from "./channel.js"; import { setZalouserRuntime } from "./runtime.js"; diff --git a/extensions/zalouser/src/monitor.account-scope.test.ts b/extensions/zalouser/src/monitor.account-scope.test.ts index ff8884282ac..5119d57f69b 100644 --- a/extensions/zalouser/src/monitor.account-scope.test.ts +++ b/extensions/zalouser/src/monitor.account-scope.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/zalouser"; import { describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "../runtime-api.js"; import "./monitor.send-mocks.js"; import { __testing } from "./monitor.js"; import { sendMessageZalouserMock } from "./monitor.send-mocks.js"; diff --git a/extensions/zalouser/src/monitor.group-gating.test.ts b/extensions/zalouser/src/monitor.group-gating.test.ts index ebf28342f26..bc21914417f 100644 --- a/extensions/zalouser/src/monitor.group-gating.test.ts +++ b/extensions/zalouser/src/monitor.group-gating.test.ts @@ -1,5 +1,5 @@ -import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "openclaw/plugin-sdk/zalouser"; import { beforeEach, describe, expect, it, vi } from "vitest"; +import type { OpenClawConfig, PluginRuntime, RuntimeEnv } from "../runtime-api.js"; import "./monitor.send-mocks.js"; import { resolveZalouserAccountSync } from "./accounts.js"; import { __testing } from "./monitor.js"; diff --git a/extensions/zalouser/src/setup-surface.test.ts b/extensions/zalouser/src/setup-surface.test.ts index b36b5801a54..e04590b9dba 100644 --- a/extensions/zalouser/src/setup-surface.test.ts +++ b/extensions/zalouser/src/setup-surface.test.ts @@ -1,8 +1,8 @@ -import type { OpenClawConfig } from "openclaw/plugin-sdk/zalouser"; import { describe, expect, it, vi } from "vitest"; import { buildChannelSetupWizardAdapterFromSetupWizard } from "../../../src/channels/plugins/setup-wizard.js"; import { createRuntimeEnv } from "../../../test/helpers/extensions/runtime-env.js"; import { createTestWizardPrompter } from "../../../test/helpers/extensions/setup-wizard.js"; +import type { OpenClawConfig } from "../runtime-api.js"; vi.mock("./zalo-js.js", async (importOriginal) => { const actual = await importOriginal(); diff --git a/package.json b/package.json index 5270222db8a..be13ed078ea 100644 --- a/package.json +++ b/package.json @@ -46,10 +46,6 @@ "types": "./dist/plugin-sdk/core.d.ts", "default": "./dist/plugin-sdk/core.js" }, - "./plugin-sdk/compat": { - "types": "./dist/plugin-sdk/compat.d.ts", - "default": "./dist/plugin-sdk/compat.js" - }, "./plugin-sdk/ollama-setup": { "types": "./dist/plugin-sdk/ollama-setup.d.ts", "default": "./dist/plugin-sdk/ollama-setup.js" @@ -162,10 +158,6 @@ "types": "./dist/plugin-sdk/acp-runtime.d.ts", "default": "./dist/plugin-sdk/acp-runtime.js" }, - "./plugin-sdk/zai": { - "types": "./dist/plugin-sdk/zai.d.ts", - "default": "./dist/plugin-sdk/zai.js" - }, "./plugin-sdk/telegram": { "types": "./dist/plugin-sdk/telegram.d.ts", "default": "./dist/plugin-sdk/telegram.js" @@ -190,22 +182,10 @@ "types": "./dist/plugin-sdk/slack-core.d.ts", "default": "./dist/plugin-sdk/slack-core.js" }, - "./plugin-sdk/signal": { - "types": "./dist/plugin-sdk/signal.d.ts", - "default": "./dist/plugin-sdk/signal.js" - }, - "./plugin-sdk/signal-core": { - "types": "./dist/plugin-sdk/signal-core.d.ts", - "default": "./dist/plugin-sdk/signal-core.js" - }, "./plugin-sdk/imessage": { "types": "./dist/plugin-sdk/imessage.d.ts", "default": "./dist/plugin-sdk/imessage.js" }, - "./plugin-sdk/imessage-core": { - "types": "./dist/plugin-sdk/imessage-core.d.ts", - "default": "./dist/plugin-sdk/imessage-core.js" - }, "./plugin-sdk/whatsapp": { "types": "./dist/plugin-sdk/whatsapp.d.ts", "default": "./dist/plugin-sdk/whatsapp.js" @@ -222,146 +202,18 @@ "types": "./dist/plugin-sdk/whatsapp-core.d.ts", "default": "./dist/plugin-sdk/whatsapp-core.js" }, - "./plugin-sdk/line": { - "types": "./dist/plugin-sdk/line.d.ts", - "default": "./dist/plugin-sdk/line.js" - }, - "./plugin-sdk/line-core": { - "types": "./dist/plugin-sdk/line-core.d.ts", - "default": "./dist/plugin-sdk/line-core.js" - }, - "./plugin-sdk/msteams": { - "types": "./dist/plugin-sdk/msteams.d.ts", - "default": "./dist/plugin-sdk/msteams.js" - }, - "./plugin-sdk/acpx": { - "types": "./dist/plugin-sdk/acpx.d.ts", - "default": "./dist/plugin-sdk/acpx.js" - }, "./plugin-sdk/bluebubbles": { "types": "./dist/plugin-sdk/bluebubbles.d.ts", "default": "./dist/plugin-sdk/bluebubbles.js" }, - "./plugin-sdk/copilot-proxy": { - "types": "./dist/plugin-sdk/copilot-proxy.d.ts", - "default": "./dist/plugin-sdk/copilot-proxy.js" - }, - "./plugin-sdk/device-pair": { - "types": "./dist/plugin-sdk/device-pair.d.ts", - "default": "./dist/plugin-sdk/device-pair.js" - }, - "./plugin-sdk/diagnostics-otel": { - "types": "./dist/plugin-sdk/diagnostics-otel.d.ts", - "default": "./dist/plugin-sdk/diagnostics-otel.js" - }, - "./plugin-sdk/diffs": { - "types": "./dist/plugin-sdk/diffs.d.ts", - "default": "./dist/plugin-sdk/diffs.js" - }, - "./plugin-sdk/feishu": { - "types": "./dist/plugin-sdk/feishu.d.ts", - "default": "./dist/plugin-sdk/feishu.js" - }, - "./plugin-sdk/googlechat": { - "types": "./dist/plugin-sdk/googlechat.d.ts", - "default": "./dist/plugin-sdk/googlechat.js" - }, - "./plugin-sdk/irc": { - "types": "./dist/plugin-sdk/irc.d.ts", - "default": "./dist/plugin-sdk/irc.js" - }, - "./plugin-sdk/llm-task": { - "types": "./dist/plugin-sdk/llm-task.d.ts", - "default": "./dist/plugin-sdk/llm-task.js" - }, - "./plugin-sdk/lobster": { - "types": "./dist/plugin-sdk/lobster.d.ts", - "default": "./dist/plugin-sdk/lobster.js" - }, "./plugin-sdk/lazy-runtime": { "types": "./dist/plugin-sdk/lazy-runtime.d.ts", "default": "./dist/plugin-sdk/lazy-runtime.js" }, - "./plugin-sdk/matrix": { - "types": "./dist/plugin-sdk/matrix.d.ts", - "default": "./dist/plugin-sdk/matrix.js" - }, - "./plugin-sdk/mattermost": { - "types": "./dist/plugin-sdk/mattermost.d.ts", - "default": "./dist/plugin-sdk/mattermost.js" - }, - "./plugin-sdk/memory-core": { - "types": "./dist/plugin-sdk/memory-core.d.ts", - "default": "./dist/plugin-sdk/memory-core.js" - }, - "./plugin-sdk/memory-lancedb": { - "types": "./dist/plugin-sdk/memory-lancedb.d.ts", - "default": "./dist/plugin-sdk/memory-lancedb.js" - }, - "./plugin-sdk/minimax-portal-auth": { - "types": "./dist/plugin-sdk/minimax-portal-auth.d.ts", - "default": "./dist/plugin-sdk/minimax-portal-auth.js" - }, - "./plugin-sdk/nextcloud-talk": { - "types": "./dist/plugin-sdk/nextcloud-talk.d.ts", - "default": "./dist/plugin-sdk/nextcloud-talk.js" - }, - "./plugin-sdk/nostr": { - "types": "./dist/plugin-sdk/nostr.d.ts", - "default": "./dist/plugin-sdk/nostr.js" - }, - "./plugin-sdk/open-prose": { - "types": "./dist/plugin-sdk/open-prose.d.ts", - "default": "./dist/plugin-sdk/open-prose.js" - }, - "./plugin-sdk/phone-control": { - "types": "./dist/plugin-sdk/phone-control.d.ts", - "default": "./dist/plugin-sdk/phone-control.js" - }, - "./plugin-sdk/qwen-portal-auth": { - "types": "./dist/plugin-sdk/qwen-portal-auth.d.ts", - "default": "./dist/plugin-sdk/qwen-portal-auth.js" - }, - "./plugin-sdk/synology-chat": { - "types": "./dist/plugin-sdk/synology-chat.d.ts", - "default": "./dist/plugin-sdk/synology-chat.js" - }, "./plugin-sdk/testing": { "types": "./dist/plugin-sdk/testing.d.ts", "default": "./dist/plugin-sdk/testing.js" }, - "./plugin-sdk/test-utils": { - "types": "./dist/plugin-sdk/test-utils.d.ts", - "default": "./dist/plugin-sdk/test-utils.js" - }, - "./plugin-sdk/talk-voice": { - "types": "./dist/plugin-sdk/talk-voice.d.ts", - "default": "./dist/plugin-sdk/talk-voice.js" - }, - "./plugin-sdk/thread-ownership": { - "types": "./dist/plugin-sdk/thread-ownership.d.ts", - "default": "./dist/plugin-sdk/thread-ownership.js" - }, - "./plugin-sdk/tlon": { - "types": "./dist/plugin-sdk/tlon.d.ts", - "default": "./dist/plugin-sdk/tlon.js" - }, - "./plugin-sdk/twitch": { - "types": "./dist/plugin-sdk/twitch.d.ts", - "default": "./dist/plugin-sdk/twitch.js" - }, - "./plugin-sdk/voice-call": { - "types": "./dist/plugin-sdk/voice-call.d.ts", - "default": "./dist/plugin-sdk/voice-call.js" - }, - "./plugin-sdk/zalo": { - "types": "./dist/plugin-sdk/zalo.d.ts", - "default": "./dist/plugin-sdk/zalo.js" - }, - "./plugin-sdk/zalouser": { - "types": "./dist/plugin-sdk/zalouser.d.ts", - "default": "./dist/plugin-sdk/zalouser.js" - }, "./plugin-sdk/account-helpers": { "types": "./dist/plugin-sdk/account-helpers.d.ts", "default": "./dist/plugin-sdk/account-helpers.js" @@ -426,10 +278,6 @@ "types": "./dist/plugin-sdk/keyed-async-queue.d.ts", "default": "./dist/plugin-sdk/keyed-async-queue.js" }, - "./plugin-sdk/windows-spawn": { - "types": "./dist/plugin-sdk/windows-spawn.d.ts", - "default": "./dist/plugin-sdk/windows-spawn.js" - }, "./plugin-sdk/provider-auth": { "types": "./dist/plugin-sdk/provider-auth.d.ts", "default": "./dist/plugin-sdk/provider-auth.js" @@ -462,10 +310,6 @@ "types": "./dist/plugin-sdk/provider-stream.d.ts", "default": "./dist/plugin-sdk/provider-stream.js" }, - "./plugin-sdk/provider-tools": { - "types": "./dist/plugin-sdk/provider-tools.d.ts", - "default": "./dist/plugin-sdk/provider-tools.js" - }, "./plugin-sdk/provider-usage": { "types": "./dist/plugin-sdk/provider-usage.d.ts", "default": "./dist/plugin-sdk/provider-usage.js" @@ -486,10 +330,6 @@ "types": "./dist/plugin-sdk/media-understanding.d.ts", "default": "./dist/plugin-sdk/media-understanding.js" }, - "./plugin-sdk/google": { - "types": "./dist/plugin-sdk/google.d.ts", - "default": "./dist/plugin-sdk/google.js" - }, "./plugin-sdk/request-url": { "types": "./dist/plugin-sdk/request-url.d.ts", "default": "./dist/plugin-sdk/request-url.js" @@ -514,22 +354,10 @@ "types": "./dist/plugin-sdk/state-paths.d.ts", "default": "./dist/plugin-sdk/state-paths.js" }, - "./plugin-sdk/temp-path": { - "types": "./dist/plugin-sdk/temp-path.d.ts", - "default": "./dist/plugin-sdk/temp-path.js" - }, "./plugin-sdk/tool-send": { "types": "./dist/plugin-sdk/tool-send.d.ts", "default": "./dist/plugin-sdk/tool-send.js" }, - "./plugin-sdk/secret-input-schema": { - "types": "./dist/plugin-sdk/secret-input-schema.d.ts", - "default": "./dist/plugin-sdk/secret-input-schema.js" - }, - "./plugin-sdk/secret-input-runtime": { - "types": "./dist/plugin-sdk/secret-input-runtime.d.ts", - "default": "./dist/plugin-sdk/secret-input-runtime.js" - }, "./cli-entry": "./openclaw.mjs" }, "scripts": { diff --git a/scripts/lib/plugin-sdk-entrypoints.json b/scripts/lib/plugin-sdk-entrypoints.json index 61460faf315..04919191231 100644 --- a/scripts/lib/plugin-sdk-entrypoints.json +++ b/scripts/lib/plugin-sdk-entrypoints.json @@ -1,7 +1,6 @@ [ "index", "core", - "compat", "ollama-setup", "provider-setup", "sandbox", @@ -30,56 +29,20 @@ "hook-runtime", "process-runtime", "acp-runtime", - "zai", "telegram", "telegram-core", "discord", "discord-core", "slack", "slack-core", - "signal", - "signal-core", "imessage", - "imessage-core", "whatsapp", "whatsapp-action-runtime", "whatsapp-login-qr", "whatsapp-core", - "line", - "line-core", - "msteams", - "acpx", "bluebubbles", - "copilot-proxy", - "device-pair", - "diagnostics-otel", - "diffs", - "feishu", - "googlechat", - "irc", - "llm-task", - "lobster", "lazy-runtime", - "matrix", - "mattermost", - "memory-core", - "memory-lancedb", - "minimax-portal-auth", - "nextcloud-talk", - "nostr", - "open-prose", - "phone-control", - "qwen-portal-auth", - "synology-chat", "testing", - "test-utils", - "talk-voice", - "thread-ownership", - "tlon", - "twitch", - "voice-call", - "zalo", - "zalouser", "account-helpers", "account-id", "account-resolution", @@ -96,7 +59,6 @@ "directory-runtime", "json-store", "keyed-async-queue", - "windows-spawn", "provider-auth", "provider-auth-api-key", "provider-auth-login", @@ -105,21 +67,16 @@ "provider-models", "provider-onboard", "provider-stream", - "provider-tools", "provider-usage", "provider-web-search", "image-generation", "reply-history", "media-understanding", - "google", "request-url", "webhook-path", "runtime-store", "web-media", "speech", "state-paths", - "temp-path", - "tool-send", - "secret-input-schema", - "secret-input-runtime" + "tool-send" ] diff --git a/src/acp/client.ts b/src/acp/client.ts index f3a04371c55..1d25281cce5 100644 --- a/src/acp/client.ts +++ b/src/acp/client.ts @@ -13,12 +13,12 @@ import { type RequestPermissionResponse, type SessionNotification, } from "@agentclientprotocol/sdk"; +import { isKnownCoreToolId } from "../agents/tool-catalog.js"; +import { ensureOpenClawCliOnPath } from "../infra/path-env.js"; import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram, -} from "openclaw/plugin-sdk/windows-spawn"; -import { isKnownCoreToolId } from "../agents/tool-catalog.js"; -import { ensureOpenClawCliOnPath } from "../infra/path-env.js"; +} from "../plugin-sdk/windows-spawn.js"; import { listKnownProviderAuthEnvVarNames, omitEnvKeysCaseInsensitive, diff --git a/src/agents/models-config.providers.moonshot.test.ts b/src/agents/models-config.providers.moonshot.test.ts index 9a84439ff6f..b224d1c44d3 100644 --- a/src/agents/models-config.providers.moonshot.test.ts +++ b/src/agents/models-config.providers.moonshot.test.ts @@ -5,7 +5,7 @@ import { describe, expect, it } from "vitest"; import { MOONSHOT_BASE_URL as MOONSHOT_AI_BASE_URL, MOONSHOT_CN_BASE_URL, -} from "../plugin-sdk/provider-models.js"; +} from "../plugins/provider-model-definitions.js"; import { captureEnv } from "../test-utils/env.js"; import { resolveImplicitProvidersForTest } from "./models-config.e2e-harness.js"; import { applyNativeStreamingUsageCompat } from "./models-config.providers.js"; diff --git a/src/agents/pi-embedded-runner/compact.ts b/src/agents/pi-embedded-runner/compact.ts index 37198c71cda..0dfc727dee1 100644 --- a/src/agents/pi-embedded-runner/compact.ts +++ b/src/agents/pi-embedded-runner/compact.ts @@ -7,7 +7,6 @@ import { estimateTokens, SessionManager, } from "@mariozechner/pi-coding-agent"; -import { resolveSignalReactionLevel } from "openclaw/plugin-sdk/signal"; import { resolveTelegramInlineButtonsScope, resolveTelegramReactionLevel, @@ -24,6 +23,7 @@ import { createInternalHookEvent, triggerInternalHook } from "../../hooks/intern 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 { getGlobalHookRunner } from "../../plugins/hook-runner-global.js"; import { prepareProviderRuntimeAuth } from "../../plugins/provider-runtime.js"; import { type enqueueCommand, enqueueCommandInLane } from "../../process/command-queue.js"; diff --git a/src/agents/pi-embedded-runner/run/attempt.ts b/src/agents/pi-embedded-runner/run/attempt.ts index fdf92569c0b..f89759606de 100644 --- a/src/agents/pi-embedded-runner/run/attempt.ts +++ b/src/agents/pi-embedded-runner/run/attempt.ts @@ -7,7 +7,6 @@ import { DefaultResourceLoader, SessionManager, } from "@mariozechner/pi-coding-agent"; -import { resolveSignalReactionLevel } from "openclaw/plugin-sdk/signal"; import { resolveTelegramInlineButtonsScope, resolveTelegramReactionLevel, @@ -21,6 +20,7 @@ import { ensureGlobalUndiciStreamTimeouts, } from "../../../infra/net/undici-global-dispatcher.js"; import { MAX_IMAGE_BYTES } from "../../../media/constants.js"; +import { resolveSignalReactionLevel } from "../../../plugin-sdk/signal.js"; import { getGlobalHookRunner } from "../../../plugins/hook-runner-global.js"; import type { PluginHookAgentContext, diff --git a/src/agents/sandbox/docker.ts b/src/agents/sandbox/docker.ts index dff86ea6756..80a2921cb6b 100644 --- a/src/agents/sandbox/docker.ts +++ b/src/agents/sandbox/docker.ts @@ -1,9 +1,9 @@ import { spawn } from "node:child_process"; +import { createSubsystemLogger } from "../../logging/subsystem.js"; import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram, -} from "openclaw/plugin-sdk/windows-spawn"; -import { createSubsystemLogger } from "../../logging/subsystem.js"; +} from "../../plugin-sdk/windows-spawn.js"; import { sanitizeEnvVars } from "./sanitize-env-vars.js"; import type { EnvSanitizationOptions } from "./sanitize-env-vars.js"; diff --git a/src/cli/send-runtime/signal.ts b/src/cli/send-runtime/signal.ts index 967fde0bc35..151f13cc351 100644 --- a/src/cli/send-runtime/signal.ts +++ b/src/cli/send-runtime/signal.ts @@ -1,7 +1,7 @@ -import { sendMessageSignal as sendMessageSignalImpl } from "openclaw/plugin-sdk/signal"; +import { sendMessageSignal as sendMessageSignalImpl } from "../../plugin-sdk/signal.js"; type RuntimeSend = { - sendMessage: typeof import("openclaw/plugin-sdk/signal").sendMessageSignal; + sendMessage: typeof import("../../plugin-sdk/signal.js").sendMessageSignal; }; export const runtimeSend = { diff --git a/src/commands/auth-choice.test.ts b/src/commands/auth-choice.test.ts index 84fda1e43fb..bc15dbddf1a 100644 --- a/src/commands/auth-choice.test.ts +++ b/src/commands/auth-choice.test.ts @@ -31,7 +31,7 @@ import { MINIMAX_CN_API_BASE_URL, ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, -} from "../plugin-sdk/provider-models.js"; +} from "../plugins/provider-model-definitions.js"; import type { ProviderPlugin } from "../plugins/types.js"; import { registerProviderPlugins } from "../test-utils/plugin-registration.js"; import type { WizardPrompter } from "../wizard/prompts.js"; diff --git a/src/commands/onboard-auth.test.ts b/src/commands/onboard-auth.test.ts index 58f7f94b484..75e0473722d 100644 --- a/src/commands/onboard-auth.test.ts +++ b/src/commands/onboard-auth.test.ts @@ -42,17 +42,17 @@ import { resolveAgentModelPrimaryValue, } from "../config/model-input.js"; import type { ModelApi } from "../config/types.models.js"; -import { - MISTRAL_DEFAULT_MODEL_REF, - ZAI_CODING_CN_BASE_URL, - ZAI_GLOBAL_BASE_URL, -} from "../plugin-sdk/provider-models.js"; import { applyAuthProfileConfig } from "../plugins/provider-auth-helpers.js"; import { OPENROUTER_DEFAULT_MODEL_REF, setMinimaxApiKey, writeOAuthCredentials, } from "../plugins/provider-auth-storage.js"; +import { + MISTRAL_DEFAULT_MODEL_REF, + ZAI_CODING_CN_BASE_URL, + ZAI_GLOBAL_BASE_URL, +} from "../plugins/provider-model-definitions.js"; import { applyLitellmProviderConfig } from "./onboard-auth.config-litellm.js"; import { createAuthTestLifecycle, diff --git a/src/commands/onboard-non-interactive.provider-auth.test.ts b/src/commands/onboard-non-interactive.provider-auth.test.ts index 9f281e26cbc..f5140c38e4e 100644 --- a/src/commands/onboard-non-interactive.provider-auth.test.ts +++ b/src/commands/onboard-non-interactive.provider-auth.test.ts @@ -8,7 +8,7 @@ import { ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, ZAI_GLOBAL_BASE_URL, -} from "../plugin-sdk/provider-models.js"; +} from "../plugins/provider-model-definitions.js"; import { makeTempWorkspace } from "../test-helpers/workspace.js"; import { withEnvAsync } from "../test-utils/env.js"; import { diff --git a/src/line/download.ts b/src/line/download.ts index 6067fcc01f4..8ec7ad45c32 100644 --- a/src/line/download.ts +++ b/src/line/download.ts @@ -1,7 +1,7 @@ import fs from "node:fs"; import { messagingApi } from "@line/bot-sdk"; -import { buildRandomTempFilePath } from "openclaw/plugin-sdk/temp-path"; import { logVerbose } from "../globals.js"; +import { buildRandomTempFilePath } from "../plugin-sdk/temp-path.js"; interface DownloadResult { path: string; diff --git a/src/media-understanding/attachments.cache.ts b/src/media-understanding/attachments.cache.ts index ce4f966d56d..f8e61265022 100644 --- a/src/media-understanding/attachments.cache.ts +++ b/src/media-understanding/attachments.cache.ts @@ -1,6 +1,5 @@ import fs from "node:fs/promises"; import path from "node:path"; -import { buildRandomTempFilePath } from "openclaw/plugin-sdk/temp-path"; import { logVerbose, shouldLogVerbose } from "../globals.js"; import { isAbortError } from "../infra/unhandled-rejections.js"; import { fetchRemoteMedia, MediaFetchError } from "../media/fetch.js"; @@ -11,6 +10,7 @@ import { } from "../media/inbound-path-policy.js"; import { getDefaultMediaLocalRoots } from "../media/local-roots.js"; import { detectMime } from "../media/mime.js"; +import { buildRandomTempFilePath } from "../plugin-sdk/temp-path.js"; import { normalizeAttachmentPath } from "./attachments.normalize.js"; import { MediaUnderstandingSkipError } from "./errors.js"; import { fetchWithTimeout } from "./providers/shared.js"; diff --git a/src/memory/qmd-process.ts b/src/memory/qmd-process.ts index 60d1efd41ed..5a70cd3c361 100644 --- a/src/memory/qmd-process.ts +++ b/src/memory/qmd-process.ts @@ -2,7 +2,7 @@ import { spawn } from "node:child_process"; import { materializeWindowsSpawnProgram, resolveWindowsSpawnProgram, -} from "openclaw/plugin-sdk/windows-spawn"; +} from "../plugin-sdk/windows-spawn.js"; export type CliSpawnInvocation = { command: string; diff --git a/src/plugin-sdk/channel-import-guardrails.test.ts b/src/plugin-sdk/channel-import-guardrails.test.ts index b5580c8b906..d4a421dd508 100644 --- a/src/plugin-sdk/channel-import-guardrails.test.ts +++ b/src/plugin-sdk/channel-import-guardrails.test.ts @@ -158,7 +158,7 @@ const LOCAL_EXTENSION_API_BARREL_GUARDS = [ const LOCAL_EXTENSION_API_BARREL_EXCEPTIONS = [ // Direct import avoids a circular init path: - // accounts.ts -> runtime-api.ts -> openclaw/plugin-sdk/matrix -> extensions/matrix/api.ts -> accounts.ts + // accounts.ts -> runtime-api.ts -> src/plugin-sdk/matrix -> extensions/matrix/api.ts -> accounts.ts "extensions/matrix/src/matrix/accounts.ts", ] as const; diff --git a/src/plugin-sdk/package-contract-guardrails.test.ts b/src/plugin-sdk/package-contract-guardrails.test.ts index a637927098e..f319b6997aa 100644 --- a/src/plugin-sdk/package-contract-guardrails.test.ts +++ b/src/plugin-sdk/package-contract-guardrails.test.ts @@ -1,12 +1,15 @@ -import { readdirSync, readFileSync } from "node:fs"; -import { dirname, relative, resolve } from "node:path"; +import { readFileSync } from "node:fs"; +import { dirname, resolve } from "node:path"; import { fileURLToPath } from "node:url"; import { describe, expect, it } from "vitest"; import { pluginSdkEntrypoints } from "./entrypoints.js"; const ROOT_DIR = resolve(dirname(fileURLToPath(import.meta.url)), ".."); const REPO_ROOT = resolve(ROOT_DIR, ".."); -const REFERENCE_SCAN_ROOTS = ["src", "extensions", "scripts", "test", "docs"] as const; +const PUBLIC_CONTRACT_REFERENCE_FILES = [ + "docs/plugins/architecture.md", + "src/plugin-sdk/subpaths.test.ts", +] as const; const PLUGIN_SDK_SUBPATH_PATTERN = /openclaw\/plugin-sdk\/([a-z0-9][a-z0-9-]*)\b/g; function collectPluginSdkPackageExports(): string[] { @@ -28,63 +31,16 @@ function collectPluginSdkPackageExports(): string[] { return subpaths.toSorted(); } -function collectPluginSdkSourceNames(): string[] { - const pluginSdkDir = resolve(REPO_ROOT, "src", "plugin-sdk"); - return readdirSync(pluginSdkDir, { withFileTypes: true }) - .filter( - (entry) => entry.isFile() && entry.name.endsWith(".ts") && !entry.name.endsWith(".test.ts"), - ) - .map((entry) => entry.name.slice(0, -".ts".length)) - .toSorted(); -} - -function collectTextFiles(rootRelativeDir: string): string[] { - const rootDir = resolve(REPO_ROOT, rootRelativeDir); - const files: string[] = []; - const stack = [rootDir]; - while (stack.length > 0) { - const current = stack.pop(); - if (!current) { - continue; - } - for (const entry of readdirSync(current, { withFileTypes: true })) { - const fullPath = resolve(current, entry.name); - if (entry.isDirectory()) { - if (entry.name === "node_modules" || entry.name === "dist" || entry.name === "coverage") { - continue; - } - stack.push(fullPath); - continue; - } - if (!entry.isFile()) { - continue; - } - if ( - /\.(?:[cm]?ts|[cm]?js|tsx|jsx|md|mdx|json)$/u.test(entry.name) && - !entry.name.endsWith(".snap") - ) { - files.push(fullPath); - } - } - } - return files; -} - function collectPluginSdkSubpathReferences() { const references: Array<{ file: string; subpath: string }> = []; - for (const rootRelativeDir of REFERENCE_SCAN_ROOTS) { - for (const fullPath of collectTextFiles(rootRelativeDir)) { - const source = readFileSync(fullPath, "utf8"); - for (const match of source.matchAll(PLUGIN_SDK_SUBPATH_PATTERN)) { - const subpath = match[1]; - if (!subpath) { - continue; - } - references.push({ - file: relative(REPO_ROOT, fullPath).replaceAll("\\", "/"), - subpath, - }); + for (const file of PUBLIC_CONTRACT_REFERENCE_FILES) { + const source = readFileSync(resolve(REPO_ROOT, file), "utf8"); + for (const match of source.matchAll(PLUGIN_SDK_SUBPATH_PATTERN)) { + const subpath = match[1]; + if (!subpath) { + continue; } + references.push({ file, subpath }); } } return references; @@ -95,7 +51,7 @@ describe("plugin-sdk package contract guardrails", () => { expect(collectPluginSdkPackageExports()).toEqual([...pluginSdkEntrypoints].toSorted()); }); - it("keeps repo openclaw/plugin-sdk/ references on exported built subpaths", () => { + it("keeps curated public plugin-sdk references on exported built subpaths", () => { const entrypoints = new Set(pluginSdkEntrypoints); const exports = new Set(collectPluginSdkPackageExports()); const failures: string[] = []; @@ -118,28 +74,4 @@ describe("plugin-sdk package contract guardrails", () => { expect(failures).toEqual([]); }); - - it("does not leave referenced src/plugin-sdk source names stranded outside the public contract", () => { - const exported = new Set(pluginSdkEntrypoints); - const references = collectPluginSdkSubpathReferences(); - const failures: string[] = []; - - for (const sourceName of collectPluginSdkSourceNames()) { - if (exported.has(sourceName) || sourceName === "compat" || sourceName === "index") { - continue; - } - const matchingRefs = references.filter((reference) => reference.subpath === sourceName); - if (matchingRefs.length === 0) { - continue; - } - failures.push( - `src/plugin-sdk/${sourceName}.ts is referenced as openclaw/plugin-sdk/${sourceName} in ${matchingRefs - .map((reference) => reference.file) - .toSorted() - .join(", ")}, but ${sourceName} is not exported as a public plugin-sdk subpath`, - ); - } - - expect(failures).toEqual([]); - }); }); diff --git a/src/plugin-sdk/provider-models.ts b/src/plugin-sdk/provider-models.ts index 8f6f2565138..7103147e91d 100644 --- a/src/plugin-sdk/provider-models.ts +++ b/src/plugin-sdk/provider-models.ts @@ -34,66 +34,6 @@ export { applyOpenAIConfig, OPENAI_DEFAULT_MODEL } from "../plugins/provider-mod export { OPENCODE_GO_DEFAULT_MODEL_REF } from "../plugins/provider-model-defaults.js"; export { OPENCODE_ZEN_DEFAULT_MODEL } from "../plugins/provider-model-defaults.js"; export { OPENCODE_ZEN_DEFAULT_MODEL_REF } from "../agents/opencode-zen-models.js"; -export { - buildMinimaxApiModelDefinition, - buildMinimaxModelDefinition, - DEFAULT_MINIMAX_BASE_URL, - MINIMAX_API_BASE_URL, - MINIMAX_API_COST, - MINIMAX_CN_API_BASE_URL, - MINIMAX_HOSTED_COST, - MINIMAX_HOSTED_MODEL_ID, - MINIMAX_HOSTED_MODEL_REF, - MINIMAX_LM_STUDIO_COST, -} from "../../extensions/minimax/model-definitions.js"; -export { - buildMistralModelDefinition, - MISTRAL_BASE_URL, - MISTRAL_DEFAULT_COST, - MISTRAL_DEFAULT_MODEL_ID, - MISTRAL_DEFAULT_MODEL_REF, -} from "../../extensions/mistral/model-definitions.js"; -export { - buildModelStudioDefaultModelDefinition, - buildModelStudioModelDefinition, - MODELSTUDIO_CN_BASE_URL, - MODELSTUDIO_DEFAULT_COST, - MODELSTUDIO_DEFAULT_MODEL_ID, - MODELSTUDIO_DEFAULT_MODEL_REF, - MODELSTUDIO_GLOBAL_BASE_URL, -} from "../../extensions/modelstudio/model-definitions.js"; -export { - buildMoonshotProvider, - MOONSHOT_BASE_URL, - MOONSHOT_DEFAULT_MODEL_ID, -} from "../../extensions/moonshot/provider-catalog.js"; -export { MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/onboard.js"; -export { - KIMI_CODING_BASE_URL, - KIMI_CODING_DEFAULT_MODEL_ID, -} from "../../extensions/kimi-coding/provider-catalog.js"; -export { - QIANFAN_BASE_URL, - QIANFAN_DEFAULT_MODEL_ID, -} from "../../extensions/qianfan/provider-catalog.js"; -export { - buildXaiModelDefinition, - XAI_BASE_URL, - XAI_DEFAULT_COST, - XAI_DEFAULT_MODEL_ID, - XAI_DEFAULT_MODEL_REF, -} from "../../extensions/xai/model-definitions.js"; -export { - buildZaiModelDefinition, - resolveZaiBaseUrl, - ZAI_CODING_CN_BASE_URL, - ZAI_CODING_GLOBAL_BASE_URL, - ZAI_CN_BASE_URL, - ZAI_DEFAULT_COST, - ZAI_DEFAULT_MODEL_ID, - ZAI_DEFAULT_MODEL_REF, - ZAI_GLOBAL_BASE_URL, -} from "../../extensions/zai/model-definitions.js"; export { buildCloudflareAiGatewayModelDefinition, diff --git a/src/plugin-sdk/runtime-api-guardrails.test.ts b/src/plugin-sdk/runtime-api-guardrails.test.ts index a1d0cf5970a..464331f5765 100644 --- a/src/plugin-sdk/runtime-api-guardrails.test.ts +++ b/src/plugin-sdk/runtime-api-guardrails.test.ts @@ -34,9 +34,9 @@ const RUNTIME_API_EXPORT_GUARDS: Record = { 'export { probeIMessage } from "./src/probe.js";', 'export { sendMessageIMessage } from "./src/send.js";', ], - "extensions/googlechat/runtime-api.ts": ['export * from "openclaw/plugin-sdk/googlechat";'], + "extensions/googlechat/runtime-api.ts": ['export * from "../../src/plugin-sdk/googlechat.js";'], "extensions/nextcloud-talk/runtime-api.ts": [ - 'export * from "openclaw/plugin-sdk/nextcloud-talk";', + 'export * from "../../src/plugin-sdk/nextcloud-talk.js";', ], "extensions/signal/runtime-api.ts": ['export * from "./src/runtime-api.js";'], "extensions/slack/runtime-api.ts": [ diff --git a/src/plugin-sdk/subpaths.test.ts b/src/plugin-sdk/subpaths.test.ts index ec0f4cb8d79..b4a20dabee9 100644 --- a/src/plugin-sdk/subpaths.test.ts +++ b/src/plugin-sdk/subpaths.test.ts @@ -1,6 +1,6 @@ +import * as bluebubblesSdk from "openclaw/plugin-sdk/bluebubbles"; import * as channelRuntimeSdk from "openclaw/plugin-sdk/channel-runtime"; import * as channelSendResultSdk from "openclaw/plugin-sdk/channel-send-result"; -import * as compatSdk from "openclaw/plugin-sdk/compat"; import * as coreSdk from "openclaw/plugin-sdk/core"; import type { ChannelMessageActionContext as CoreChannelMessageActionContext, @@ -11,10 +11,6 @@ import * as directoryRuntimeSdk from "openclaw/plugin-sdk/directory-runtime"; import * as discordSdk from "openclaw/plugin-sdk/discord"; import * as imessageSdk from "openclaw/plugin-sdk/imessage"; import * as lazyRuntimeSdk from "openclaw/plugin-sdk/lazy-runtime"; -import * as lineSdk from "openclaw/plugin-sdk/line"; -import * as lineCoreSdk from "openclaw/plugin-sdk/line-core"; -import * as msteamsSdk from "openclaw/plugin-sdk/msteams"; -import * as nostrSdk from "openclaw/plugin-sdk/nostr"; import * as ollamaSetupSdk from "openclaw/plugin-sdk/ollama-setup"; import * as providerModelsSdk from "openclaw/plugin-sdk/provider-models"; import * as providerSetupSdk from "openclaw/plugin-sdk/provider-setup"; @@ -24,11 +20,9 @@ import * as runtimeSdk from "openclaw/plugin-sdk/runtime"; import * as sandboxSdk from "openclaw/plugin-sdk/sandbox"; import * as selfHostedProviderSetupSdk from "openclaw/plugin-sdk/self-hosted-provider-setup"; import * as setupSdk from "openclaw/plugin-sdk/setup"; -import * as signalSdk from "openclaw/plugin-sdk/signal"; import * as slackSdk from "openclaw/plugin-sdk/slack"; import * as telegramSdk from "openclaw/plugin-sdk/telegram"; import * as testingSdk from "openclaw/plugin-sdk/testing"; -import * as voiceCallSdk from "openclaw/plugin-sdk/voice-call"; import * as whatsappSdk from "openclaw/plugin-sdk/whatsapp"; import * as whatsappActionRuntimeSdk from "openclaw/plugin-sdk/whatsapp-action-runtime"; import * as whatsappLoginQrSdk from "openclaw/plugin-sdk/whatsapp-login-qr"; @@ -51,30 +45,22 @@ const bundledExtensionSubpathLoaders = pluginSdkSubpaths.map((id: string) => ({ })); const asExports = (mod: object) => mod as Record; -const ircSdk = await import("openclaw/plugin-sdk/irc"); -const feishuSdk = await import("openclaw/plugin-sdk/feishu"); -const googlechatSdk = await import("openclaw/plugin-sdk/googlechat"); -const zaloSdk = await import("openclaw/plugin-sdk/zalo"); -const synologyChatSdk = await import("openclaw/plugin-sdk/synology-chat"); -const zalouserSdk = await import("openclaw/plugin-sdk/zalouser"); -const tlonSdk = await import("openclaw/plugin-sdk/tlon"); -const acpxSdk = await import("openclaw/plugin-sdk/acpx"); -const bluebubblesSdk = await import("openclaw/plugin-sdk/bluebubbles"); -const matrixSdk = await import("openclaw/plugin-sdk/matrix"); -const mattermostSdk = await import("openclaw/plugin-sdk/mattermost"); -const nextcloudTalkSdk = await import("openclaw/plugin-sdk/nextcloud-talk"); -const twitchSdk = await import("openclaw/plugin-sdk/twitch"); const accountHelpersSdk = await import("openclaw/plugin-sdk/account-helpers"); const allowlistEditSdk = await import("openclaw/plugin-sdk/allowlist-config-edit"); -const lobsterSdk = await import("openclaw/plugin-sdk/lobster"); describe("plugin-sdk subpath exports", () => { - it("exports compat helpers", () => { - expect(typeof compatSdk.emptyPluginConfigSchema).toBe("function"); - expect(typeof compatSdk.resolveControlCommandGate).toBe("function"); - expect(typeof compatSdk.createScopedChannelConfigAdapter).toBe("function"); - expect(typeof compatSdk.createTopLevelChannelConfigAdapter).toBe("function"); - expect(typeof compatSdk.createHybridChannelConfigAdapter).toBe("function"); + it("keeps the curated public list free of bundled extension facades", () => { + expect(pluginSdkSubpaths).not.toContain("compat"); + expect(pluginSdkSubpaths).not.toContain("signal"); + expect(pluginSdkSubpaths).not.toContain("line"); + expect(pluginSdkSubpaths).not.toContain("msteams"); + expect(pluginSdkSubpaths).not.toContain("googlechat"); + expect(pluginSdkSubpaths).not.toContain("mattermost"); + expect(pluginSdkSubpaths).not.toContain("matrix"); + expect(pluginSdkSubpaths).not.toContain("nostr"); + expect(pluginSdkSubpaths).not.toContain("voice-call"); + expect(pluginSdkSubpaths).not.toContain("zalo"); + expect(pluginSdkSubpaths).not.toContain("zalouser"); }); it("keeps core focused on generic shared exports", () => { @@ -88,9 +74,6 @@ describe("plugin-sdk subpath exports", () => { expect("runPassiveAccountLifecycle" in asExports(coreSdk)).toBe(false); expect("createLoggerBackedRuntime" in asExports(coreSdk)).toBe(false); expect("registerSandboxBackend" in asExports(coreSdk)).toBe(false); - expect("promptAndConfigureOpenAICompatibleSelfHostedProviderAuth" in asExports(coreSdk)).toBe( - false, - ); }); it("exports routing helpers from the dedicated subpath", () => { @@ -99,16 +82,8 @@ describe("plugin-sdk subpath exports", () => { }); it("exports reply payload helpers from the dedicated subpath", () => { - expect(typeof replyPayloadSdk.countOutboundMedia).toBe("function"); - expect(typeof replyPayloadSdk.deliverFormattedTextWithAttachments).toBe("function"); expect(typeof replyPayloadSdk.deliverTextOrMediaReply).toBe("function"); - expect(typeof replyPayloadSdk.formatTextWithAttachmentLinks).toBe("function"); - expect(typeof replyPayloadSdk.hasOutboundMedia).toBe("function"); - expect(typeof replyPayloadSdk.hasOutboundReplyContent).toBe("function"); - expect(typeof replyPayloadSdk.hasOutboundText).toBe("function"); expect(typeof replyPayloadSdk.resolveOutboundMediaUrls).toBe("function"); - expect(typeof replyPayloadSdk.resolveTextChunksWithFallback).toBe("function"); - expect(typeof replyPayloadSdk.sendMediaWithLeadingCaption).toBe("function"); expect(typeof replyPayloadSdk.sendPayloadWithChunkedTextAndMedia).toBe("function"); }); @@ -118,9 +93,6 @@ describe("plugin-sdk subpath exports", () => { it("exports allowlist edit helpers from the dedicated subpath", () => { expect(typeof allowlistEditSdk.buildDmGroupAccountAllowlistAdapter).toBe("function"); - expect(typeof allowlistEditSdk.buildLegacyDmAccountAllowlistAdapter).toBe("function"); - expect(typeof allowlistEditSdk.createAccountScopedAllowlistNameResolver).toBe("function"); - expect(typeof allowlistEditSdk.createFlatAllowlistOverrideResolver).toBe("function"); expect(typeof allowlistEditSdk.createNestedAllowlistOverrideResolver).toBe("function"); }); @@ -130,105 +102,51 @@ describe("plugin-sdk subpath exports", () => { it("exports directory runtime helpers from the dedicated subpath", () => { expect(typeof directoryRuntimeSdk.listDirectoryEntriesFromSources).toBe("function"); - expect(typeof directoryRuntimeSdk.listInspectedDirectoryEntriesFromSources).toBe("function"); expect(typeof directoryRuntimeSdk.listResolvedDirectoryEntriesFromSources).toBe("function"); - expect(typeof directoryRuntimeSdk.listResolvedDirectoryGroupEntriesFromMapKeys).toBe( - "function", - ); - expect(typeof directoryRuntimeSdk.listResolvedDirectoryUserEntriesFromAllowFrom).toBe( - "function", - ); }); it("exports channel runtime helpers from the dedicated subpath", () => { - expect(typeof channelRuntimeSdk.attachChannelToResult).toBe("function"); - expect(typeof channelRuntimeSdk.attachChannelToResults).toBe("function"); - expect(typeof channelRuntimeSdk.buildUnresolvedTargetResults).toBe("function"); - expect(typeof channelRuntimeSdk.createAttachedChannelResultAdapter).toBe("function"); expect(typeof channelRuntimeSdk.createChannelDirectoryAdapter).toBe("function"); - expect(typeof channelRuntimeSdk.createEmptyChannelResult).toBe("function"); - expect(typeof channelRuntimeSdk.createEmptyChannelDirectoryAdapter).toBe("function"); - expect(typeof channelRuntimeSdk.createRawChannelSendResultAdapter).toBe("function"); - expect(typeof channelRuntimeSdk.createLoggedPairingApprovalNotifier).toBe("function"); - expect(typeof channelRuntimeSdk.createPairingPrefixStripper).toBe("function"); - expect(typeof channelRuntimeSdk.createScopedAccountReplyToModeResolver).toBe("function"); - expect(typeof channelRuntimeSdk.createStaticReplyToModeResolver).toBe("function"); - expect(typeof channelRuntimeSdk.createTopLevelChannelReplyToModeResolver).toBe("function"); - expect(typeof channelRuntimeSdk.createRuntimeDirectoryLiveAdapter).toBe("function"); expect(typeof channelRuntimeSdk.createRuntimeOutboundDelegates).toBe("function"); - expect(typeof channelRuntimeSdk.sendPayloadMediaSequenceAndFinalize).toBe("function"); expect(typeof channelRuntimeSdk.sendPayloadMediaSequenceOrFallback).toBe("function"); - expect(typeof channelRuntimeSdk.resolveTargetsWithOptionalToken).toBe("function"); - expect(typeof channelRuntimeSdk.createTextPairingAdapter).toBe("function"); }); it("exports channel send-result helpers from the dedicated subpath", () => { expect(typeof channelSendResultSdk.attachChannelToResult).toBe("function"); - expect(typeof channelSendResultSdk.attachChannelToResults).toBe("function"); expect(typeof channelSendResultSdk.buildChannelSendResult).toBe("function"); - expect(typeof channelSendResultSdk.createAttachedChannelResultAdapter).toBe("function"); - expect(typeof channelSendResultSdk.createEmptyChannelResult).toBe("function"); - expect(typeof channelSendResultSdk.createRawChannelSendResultAdapter).toBe("function"); }); it("exports provider setup helpers from the dedicated subpath", () => { expect(typeof providerSetupSdk.buildVllmProvider).toBe("function"); expect(typeof providerSetupSdk.discoverOpenAICompatibleSelfHostedProvider).toBe("function"); - expect(typeof providerSetupSdk.promptAndConfigureOpenAICompatibleSelfHostedProviderAuth).toBe( - "function", - ); }); - it("exports provider model helpers from the dedicated subpath", () => { - expect(typeof providerModelsSdk.buildMinimaxApiModelDefinition).toBe("function"); - expect(typeof providerModelsSdk.buildMinimaxModelDefinition).toBe("function"); - expect(typeof providerModelsSdk.buildMoonshotProvider).toBe("function"); - expect(typeof providerModelsSdk.resolveZaiBaseUrl).toBe("function"); - expect(providerModelsSdk.QIANFAN_BASE_URL).toBe("https://qianfan.baidubce.com/v2"); + it("keeps provider models focused on shared provider primitives", () => { + expect(typeof providerModelsSdk.applyOpenAIConfig).toBe("function"); + expect(typeof providerModelsSdk.buildKilocodeModelDefinition).toBe("function"); + expect(typeof providerModelsSdk.discoverHuggingfaceModels).toBe("function"); + expect("buildMinimaxModelDefinition" in asExports(providerModelsSdk)).toBe(false); + expect("buildMoonshotProvider" in asExports(providerModelsSdk)).toBe(false); + expect("QIANFAN_BASE_URL" in asExports(providerModelsSdk)).toBe(false); + expect("resolveZaiBaseUrl" in asExports(providerModelsSdk)).toBe(false); }); it("exports shared setup helpers from the dedicated subpath", () => { expect(typeof setupSdk.DEFAULT_ACCOUNT_ID).toBe("string"); - expect(typeof setupSdk.createAccountScopedAllowFromSection).toBe("function"); - expect(typeof setupSdk.createAccountScopedGroupAccessSection).toBe("function"); expect(typeof setupSdk.createAllowFromSection).toBe("function"); - expect(typeof setupSdk.createCliPathTextInput).toBe("function"); - expect(typeof setupSdk.createDelegatedFinalize).toBe("function"); - expect(typeof setupSdk.createDelegatedPrepare).toBe("function"); - expect(typeof setupSdk.createDelegatedResolveConfigured).toBe("function"); expect(typeof setupSdk.createDelegatedSetupWizardProxy).toBe("function"); - expect(typeof setupSdk.createDelegatedSetupWizardStatusResolvers).toBe("function"); - expect(typeof setupSdk.createDelegatedTextInputShouldPrompt).toBe("function"); - expect(typeof setupSdk.createDetectedBinaryStatus).toBe("function"); - expect(typeof setupSdk.createLegacyCompatChannelDmPolicy).toBe("function"); - expect(typeof setupSdk.createNestedChannelDmPolicy).toBe("function"); expect(typeof setupSdk.createTopLevelChannelDmPolicy).toBe("function"); - expect(typeof setupSdk.createTopLevelChannelDmPolicySetter).toBe("function"); - expect(typeof setupSdk.formatDocsLink).toBe("function"); expect(typeof setupSdk.mergeAllowFromEntries).toBe("function"); - expect(typeof setupSdk.patchNestedChannelConfigSection).toBe("function"); - expect(typeof setupSdk.patchTopLevelChannelConfigSection).toBe("function"); - expect(typeof setupSdk.promptParsedAllowFromForAccount).toBe("function"); - expect(typeof setupSdk.resolveParsedAllowFromEntries).toBe("function"); - expect(typeof setupSdk.resolveGroupAllowlistWithLookupNotes).toBe("function"); - expect(typeof setupSdk.setAccountAllowFromForChannel).toBe("function"); - expect(typeof setupSdk.setAccountDmAllowFromForChannel).toBe("function"); - expect(typeof setupSdk.setTopLevelChannelDmPolicyWithAllowFrom).toBe("function"); - expect(typeof setupSdk.formatResolvedUnresolvedNote).toBe("function"); }); it("exports shared lazy runtime helpers from the dedicated subpath", () => { expect(typeof lazyRuntimeSdk.createLazyRuntimeSurface).toBe("function"); expect(typeof lazyRuntimeSdk.createLazyRuntimeModule).toBe("function"); - expect(typeof lazyRuntimeSdk.createLazyRuntimeNamedExport).toBe("function"); }); it("exports narrow self-hosted provider setup helpers", () => { expect(typeof selfHostedProviderSetupSdk.buildVllmProvider).toBe("function"); expect(typeof selfHostedProviderSetupSdk.buildSglangProvider).toBe("function"); - expect(typeof selfHostedProviderSetupSdk.discoverOpenAICompatibleSelfHostedProvider).toBe( - "function", - ); expect( typeof selfHostedProviderSetupSdk.configureOpenAICompatibleSelfHostedProviderNonInteractive, ).toBe("function"); @@ -237,13 +155,11 @@ describe("plugin-sdk subpath exports", () => { it("exports narrow Ollama setup helpers", () => { expect(typeof ollamaSetupSdk.buildOllamaProvider).toBe("function"); expect(typeof ollamaSetupSdk.configureOllamaNonInteractive).toBe("function"); - expect(typeof ollamaSetupSdk.ensureOllamaModelPulled).toBe("function"); }); it("exports sandbox helpers from the dedicated subpath", () => { expect(typeof sandboxSdk.registerSandboxBackend).toBe("function"); expect(typeof sandboxSdk.runPluginCommandWithTimeout).toBe("function"); - expect(typeof sandboxSdk.createRemoteShellSandboxFsBridge).toBe("function"); }); it("exports shared core types used by bundled channels", () => { @@ -284,13 +200,6 @@ describe("plugin-sdk subpath exports", () => { expect("resolveTelegramAccount" in asExports(telegramSdk)).toBe(false); }); - it("exports Signal helpers", () => { - expect(typeof signalSdk.buildBaseAccountStatusSnapshot).toBe("function"); - expect(typeof signalSdk.SignalConfigSchema).toBe("object"); - expect(typeof signalSdk.normalizeSignalMessagingTarget).toBe("function"); - expect("resolveSignalAccount" in asExports(signalSdk)).toBe(false); - }); - it("exports iMessage helpers", () => { expect(typeof imessageSdk.IMessageConfigSchema).toBe("object"); expect(typeof imessageSdk.resolveIMessageConfigAllowFrom).toBe("function"); @@ -298,18 +207,10 @@ describe("plugin-sdk subpath exports", () => { expect("resolveIMessageAccount" in asExports(imessageSdk)).toBe(false); }); - it("exports IRC helpers", async () => { - expect(typeof ircSdk.resolveIrcAccount).toBe("function"); - expect(typeof ircSdk.ircSetupWizard).toBe("object"); - expect(typeof ircSdk.ircSetupAdapter).toBe("object"); - }); - it("exports WhatsApp helpers", () => { - // WhatsApp-specific functions (resolveWhatsAppAccount, whatsappOnboardingAdapter) moved to extensions/whatsapp/src/ expect(typeof whatsappSdk.WhatsAppConfigSchema).toBe("object"); expect(typeof whatsappSdk.resolveWhatsAppOutboundTarget).toBe("function"); expect(typeof whatsappSdk.resolveWhatsAppMentionStripRegexes).toBe("function"); - expect("resolveWhatsAppMentionStripPatterns" in whatsappSdk).toBe(false); }); it("exports WhatsApp QR login helpers from the dedicated subpath", () => { @@ -321,109 +222,15 @@ describe("plugin-sdk subpath exports", () => { expect(typeof whatsappActionRuntimeSdk.handleWhatsAppAction).toBe("function"); }); - it("exports Feishu helpers", async () => { - expect(typeof feishuSdk.feishuSetupWizard).toBe("object"); - expect(typeof feishuSdk.feishuSetupAdapter).toBe("object"); + it("keeps the remaining bundled helper surface narrow", () => { + expect(typeof bluebubblesSdk.parseFiniteNumber).toBe("function"); }); - it("exports LINE helpers", () => { - expect(typeof lineSdk.processLineMessage).toBe("function"); - expect(typeof lineSdk.createInfoCard).toBe("function"); - expect(typeof lineSdk.lineSetupWizard).toBe("object"); - expect(typeof lineSdk.lineSetupAdapter).toBe("object"); - }); - - it("exports narrow LINE core helpers", () => { - expect(typeof lineCoreSdk.resolveLineAccount).toBe("function"); - expect(typeof lineCoreSdk.listLineAccountIds).toBe("function"); - expect(typeof lineCoreSdk.LineConfigSchema).toBe("object"); - }); - - it("exports Microsoft Teams helpers", () => { - expect(typeof msteamsSdk.resolveControlCommandGate).toBe("function"); - expect(typeof msteamsSdk.loadOutboundMediaFromUrl).toBe("function"); - expect(typeof msteamsSdk.msteamsSetupWizard).toBe("object"); - expect(typeof msteamsSdk.msteamsSetupAdapter).toBe("object"); - }); - - it("exports Nostr helpers", () => { - expect(typeof nostrSdk.nostrSetupWizard).toBe("object"); - expect(typeof nostrSdk.nostrSetupAdapter).toBe("object"); - }); - - it("exports Google Chat helpers", async () => { - expect(typeof googlechatSdk.buildChannelConfigSchema).toBe("function"); - expect(typeof googlechatSdk.createWebhookInFlightLimiter).toBe("function"); - expect(typeof googlechatSdk.fetchWithSsrFGuard).toBe("function"); - expect(typeof googlechatSdk.googlechatSetupWizard).toBe("object"); - expect(typeof googlechatSdk.googlechatSetupAdapter).toBe("object"); - expect(typeof googlechatSdk.resolveGoogleChatGroupRequireMention).toBe("function"); - }); - - it("keeps the Google Chat runtime surface aligned with the public SDK subpath", async () => { - const googlechatRuntimeApi = await import("../../extensions/googlechat/runtime-api.js"); - - expect(typeof googlechatRuntimeApi.buildChannelConfigSchema).toBe("function"); - expect(typeof googlechatRuntimeApi.createWebhookInFlightLimiter).toBe("function"); - expect(typeof googlechatRuntimeApi.fetchWithSsrFGuard).toBe("function"); - expect(typeof googlechatRuntimeApi.createActionGate).toBe("function"); - expect(typeof googlechatRuntimeApi.resolveWebhookTargetWithAuthOrReject).toBe("function"); - }); - - it("exports Zalo helpers", async () => { - expect(typeof zaloSdk.zaloSetupWizard).toBe("object"); - expect(typeof zaloSdk.zaloSetupAdapter).toBe("object"); - }); - - it("exports Synology Chat helpers", async () => { - expect(typeof synologyChatSdk.synologyChatSetupWizard).toBe("object"); - expect(typeof synologyChatSdk.synologyChatSetupAdapter).toBe("object"); - }); - - it("exports Zalouser helpers", async () => { - expect(typeof zalouserSdk.zalouserSetupWizard).toBe("object"); - expect(typeof zalouserSdk.zalouserSetupAdapter).toBe("object"); - }); - - it("exports Tlon helpers", async () => { - expect(typeof tlonSdk.fetchWithSsrFGuard).toBe("function"); - expect(typeof tlonSdk.tlonSetupWizard).toBe("object"); - expect(typeof tlonSdk.tlonSetupAdapter).toBe("object"); - }); - - it("exports ACPX runtime backend helpers", async () => { - expect(typeof acpxSdk.listKnownProviderAuthEnvVarNames).toBe("function"); - expect(typeof acpxSdk.omitEnvKeysCaseInsensitive).toBe("function"); - }); - - it("exports Lobster helpers", async () => { - expect(typeof lobsterSdk.definePluginEntry).toBe("function"); - expect(typeof lobsterSdk.materializeWindowsSpawnProgram).toBe("function"); - }); - - it("exports Voice Call helpers", () => { - expect(typeof voiceCallSdk.definePluginEntry).toBe("function"); - expect(typeof voiceCallSdk.resolveOpenAITtsInstructions).toBe("function"); - }); - - it("resolves bundled extension subpaths", async () => { + it("resolves every curated public subpath", async () => { for (const { id, load } of bundledExtensionSubpathLoaders) { const mod = await load(); expect(typeof mod).toBe("object"); expect(mod, `subpath ${id} should resolve`).toBeTruthy(); } }); - - it("keeps the newly added bundled plugin-sdk contracts available", async () => { - expect(typeof bluebubblesSdk.parseFiniteNumber).toBe("function"); - expect(typeof matrixSdk.matrixSetupWizard).toBe("object"); - expect(typeof matrixSdk.matrixSetupAdapter).toBe("object"); - expect(typeof mattermostSdk.parseStrictPositiveInteger).toBe("function"); - expect(typeof nextcloudTalkSdk.waitForAbortSignal).toBe("function"); - expect(typeof twitchSdk.DEFAULT_ACCOUNT_ID).toBe("string"); - expect(typeof twitchSdk.normalizeAccountId).toBe("function"); - expect(typeof twitchSdk.twitchSetupWizard).toBe("object"); - expect(typeof twitchSdk.twitchSetupAdapter).toBe("object"); - expect(typeof zaloSdk.resolveClientIp).toBe("function"); - }); }); diff --git a/src/plugins/provider-model-definitions.ts b/src/plugins/provider-model-definitions.ts index 5eebcb204db..8691c6aa7f3 100644 --- a/src/plugins/provider-model-definitions.ts +++ b/src/plugins/provider-model-definitions.ts @@ -1,14 +1,8 @@ import { KIMI_CODING_BASE_URL, KIMI_CODING_DEFAULT_MODEL_ID as KIMI_CODING_MODEL_ID, - buildMinimaxApiModelDefinition, - buildMinimaxModelDefinition, - buildMistralModelDefinition, - buildModelStudioDefaultModelDefinition, - buildModelStudioModelDefinition, - buildMoonshotProvider, - buildXaiModelDefinition, - buildZaiModelDefinition, +} from "../../extensions/kimi-coding/provider-catalog.js"; +import { DEFAULT_MINIMAX_BASE_URL, MINIMAX_API_BASE_URL, MINIMAX_API_COST, @@ -17,32 +11,52 @@ import { MINIMAX_HOSTED_MODEL_ID, MINIMAX_HOSTED_MODEL_REF, MINIMAX_LM_STUDIO_COST, + buildMinimaxApiModelDefinition, + buildMinimaxModelDefinition, +} from "../../extensions/minimax/model-definitions.js"; +import { MISTRAL_BASE_URL, MISTRAL_DEFAULT_COST, MISTRAL_DEFAULT_MODEL_ID, MISTRAL_DEFAULT_MODEL_REF, + buildMistralModelDefinition, +} from "../../extensions/mistral/model-definitions.js"; +import { MODELSTUDIO_CN_BASE_URL, MODELSTUDIO_DEFAULT_COST, MODELSTUDIO_DEFAULT_MODEL_ID, MODELSTUDIO_DEFAULT_MODEL_REF, MODELSTUDIO_GLOBAL_BASE_URL, + buildModelStudioDefaultModelDefinition, + buildModelStudioModelDefinition, +} from "../../extensions/modelstudio/model-definitions.js"; +import { MOONSHOT_CN_BASE_URL } from "../../extensions/moonshot/onboard.js"; +import { MOONSHOT_BASE_URL, - MOONSHOT_CN_BASE_URL, MOONSHOT_DEFAULT_MODEL_ID, + buildMoonshotProvider, +} from "../../extensions/moonshot/provider-catalog.js"; +import { QIANFAN_BASE_URL, QIANFAN_DEFAULT_MODEL_ID, +} from "../../extensions/qianfan/provider-catalog.js"; +import { XAI_BASE_URL, XAI_DEFAULT_COST, XAI_DEFAULT_MODEL_ID, XAI_DEFAULT_MODEL_REF, - resolveZaiBaseUrl, + buildXaiModelDefinition, +} from "../../extensions/xai/model-definitions.js"; +import { ZAI_CN_BASE_URL, ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, ZAI_DEFAULT_COST, ZAI_DEFAULT_MODEL_ID, ZAI_GLOBAL_BASE_URL, -} from "openclaw/plugin-sdk/provider-models"; + buildZaiModelDefinition, + resolveZaiBaseUrl, +} from "../../extensions/zai/model-definitions.js"; import type { ModelDefinitionConfig } from "../config/types.models.js"; import { KILOCODE_DEFAULT_CONTEXT_WINDOW, diff --git a/src/plugins/provider-zai-endpoint.ts b/src/plugins/provider-zai-endpoint.ts index 5e76755c969..501adfc96c3 100644 --- a/src/plugins/provider-zai-endpoint.ts +++ b/src/plugins/provider-zai-endpoint.ts @@ -1,10 +1,10 @@ +import { fetchWithTimeout } from "../utils/fetch-timeout.js"; import { ZAI_CN_BASE_URL, ZAI_CODING_CN_BASE_URL, ZAI_CODING_GLOBAL_BASE_URL, ZAI_GLOBAL_BASE_URL, -} from "openclaw/plugin-sdk/provider-models"; -import { fetchWithTimeout } from "../utils/fetch-timeout.js"; +} from "./provider-model-definitions.js"; export type ZaiEndpointId = "global" | "cn" | "coding-global" | "coding-cn"; diff --git a/src/plugins/runtime/runtime-signal.ts b/src/plugins/runtime/runtime-signal.ts index e0b3c244e39..18cd4a56335 100644 --- a/src/plugins/runtime/runtime-signal.ts +++ b/src/plugins/runtime/runtime-signal.ts @@ -3,7 +3,7 @@ import { probeSignal, signalMessageActions, sendMessageSignal, -} from "openclaw/plugin-sdk/signal"; +} from "../../plugin-sdk/signal.js"; import type { PluginRuntimeChannel } from "./types-channel.js"; export function createRuntimeSignal(): PluginRuntimeChannel["signal"] {