From 3ad652fa9e4c29183ec64f2806cc16027718274e Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Sun, 22 Mar 2026 19:37:03 -0700 Subject: [PATCH] fix(build): restore plugin-sdk and line compat after refactor --- .../firecrawl/src/firecrawl-scrape-tool.ts | 12 ++++- extensions/line/api.ts | 1 + extensions/line/runtime-api.ts | 45 ++++++++++++++++--- extensions/line/src/download.test.ts | 10 +++++ extensions/line/src/monitor.read-body.test.ts | 2 +- extensions/line/src/webhook-utils.ts | 1 + extensions/tavily/src/tavily-extract-tool.ts | 12 ++++- extensions/tavily/src/tavily-search-tool.ts | 12 ++++- knip.config.ts | 3 -- package.json | 4 ++ scripts/lib/plugin-sdk-entrypoints.json | 1 + src/plugin-sdk/image-generation-core.ts | 2 +- src/plugin-sdk/text-runtime.ts | 1 + .../bundled-plugin-metadata.generated.ts | 44 ------------------ src/plugins/runtime/runtime-line.runtime.ts | 6 +-- tsdown.config.ts | 3 -- 16 files changed, 96 insertions(+), 63 deletions(-) diff --git a/extensions/firecrawl/src/firecrawl-scrape-tool.ts b/extensions/firecrawl/src/firecrawl-scrape-tool.ts index 88f36769210..be3b3342f2e 100644 --- a/extensions/firecrawl/src/firecrawl-scrape-tool.ts +++ b/extensions/firecrawl/src/firecrawl-scrape-tool.ts @@ -1,9 +1,19 @@ import { Type } from "@sinclair/typebox"; import { jsonResult, readNumberParam, readStringParam } from "openclaw/plugin-sdk/agent-runtime"; -import { optionalStringEnum } from "openclaw/plugin-sdk/core"; import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-runtime"; import { runFirecrawlScrape } from "./firecrawl-client.js"; +function optionalStringEnum( + values: T, + options?: { description?: string }, +) { + return Type.Optional( + Type.Union(values.map((value) => Type.Literal(value)) as never, { + description: options?.description, + }), + ); +} + const FirecrawlScrapeToolSchema = Type.Object( { url: Type.String({ description: "HTTP or HTTPS URL to scrape via Firecrawl." }), diff --git a/extensions/line/api.ts b/extensions/line/api.ts index 3fd34872f05..76a9f16ba64 100644 --- a/extensions/line/api.ts +++ b/extensions/line/api.ts @@ -17,6 +17,7 @@ export type { LineChannelData, LineConfig, ListItem, + LineProbeResult, ResolvedLineAccount, } from "./runtime-api.js"; export { diff --git a/extensions/line/runtime-api.ts b/extensions/line/runtime-api.ts index 7f497d79d5e..a65bcdb16c8 100644 --- a/extensions/line/runtime-api.ts +++ b/extensions/line/runtime-api.ts @@ -16,11 +16,15 @@ export { buildComputedAccountStatusSnapshot, buildTokenChannelStatusSummary, } from "openclaw/plugin-sdk/status-helpers"; -export { DEFAULT_ACCOUNT_ID, formatDocsLink, setSetupChannelEnabled, splitSetupEntries } from "openclaw/plugin-sdk/setup"; +export { + DEFAULT_ACCOUNT_ID, + formatDocsLink, + setSetupChannelEnabled, + splitSetupEntries, +} from "openclaw/plugin-sdk/setup"; export * from "../../src/plugin-sdk/line-runtime.js"; export * from "./src/accounts.js"; -export * from "./src/actions.js"; export * from "./src/bot-access.js"; export * from "./src/channel-access-token.js"; export * from "./src/config-schema.js"; @@ -29,11 +33,42 @@ export * from "./src/flex-templates.js"; export * from "./src/group-keys.js"; export * from "./src/markdown-to-line.js"; export * from "./src/probe.js"; -export * from "./src/rich-menu.js"; export * from "./src/send.js"; export * from "./src/signature.js"; -export * from "./src/template-messages.js"; -export type { LineChannelData, LineConfig, ResolvedLineAccount } from "./src/types.js"; +export { datetimePickerAction, messageAction, postbackAction, uriAction } from "./src/rich-menu.js"; +export { + createDefaultMenuConfig, + createGridLayout, + type RichMenuArea, + type RichMenuRequest, + type RichMenuResponse, +} from "./src/rich-menu.js"; +export { + createButtonMenu, + createButtonTemplate, + createCarouselColumn, + createConfirmTemplate, + createImageCarousel, + createImageCarouselColumn, + createLinkMenu, + createProductCarousel, + createTemplateCarousel, + createYesNoConfirm, + buildTemplateMessageFromPayload, + type ButtonsTemplate, + type CarouselColumn, + type CarouselTemplate, + type ConfirmTemplate, + type ImageCarouselColumn, + type ImageCarouselTemplate, + type TemplateMessage, +} from "./src/template-messages.js"; +export type { + LineChannelData, + LineConfig, + LineProbeResult, + ResolvedLineAccount, +} from "./src/types.js"; export * from "./src/webhook-node.js"; export * from "./src/webhook.js"; export * from "./src/webhook-utils.js"; diff --git a/extensions/line/src/download.test.ts b/extensions/line/src/download.test.ts index 611059620cc..076d39c2c90 100644 --- a/extensions/line/src/download.test.ts +++ b/extensions/line/src/download.test.ts @@ -16,6 +16,16 @@ vi.mock("@line/bot-sdk", () => ({ })); vi.mock("openclaw/plugin-sdk/runtime-env", () => ({ + createSubsystemLogger: () => { + const logger = { + debug: () => {}, + info: () => {}, + warn: () => {}, + error: () => {}, + child: () => logger, + }; + return logger; + }, logVerbose: () => {}, })); diff --git a/extensions/line/src/monitor.read-body.test.ts b/extensions/line/src/monitor.read-body.test.ts index e068fd49ae6..90c3007321d 100644 --- a/extensions/line/src/monitor.read-body.test.ts +++ b/extensions/line/src/monitor.read-body.test.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from "vitest"; -import { createMockIncomingRequest } from "../../test/helpers/mock-incoming-request.js"; +import { createMockIncomingRequest } from "../../../test/helpers/mock-incoming-request.js"; import { readLineWebhookRequestBody } from "./webhook-node.js"; describe("readLineWebhookRequestBody", () => { diff --git a/extensions/line/src/webhook-utils.ts b/extensions/line/src/webhook-utils.ts index 1f0a8dee69b..35f35b40738 100644 --- a/extensions/line/src/webhook-utils.ts +++ b/extensions/line/src/webhook-utils.ts @@ -1,4 +1,5 @@ import type { WebhookRequestBody } from "@line/bot-sdk"; +export { validateLineSignature } from "./signature.js"; export function parseLineWebhookBody(rawBody: string): WebhookRequestBody | null { try { diff --git a/extensions/tavily/src/tavily-extract-tool.ts b/extensions/tavily/src/tavily-extract-tool.ts index 29a7b04399a..85cab2d676e 100644 --- a/extensions/tavily/src/tavily-extract-tool.ts +++ b/extensions/tavily/src/tavily-extract-tool.ts @@ -1,9 +1,19 @@ import { Type } from "@sinclair/typebox"; import { jsonResult, readNumberParam, readStringParam } from "openclaw/plugin-sdk/agent-runtime"; -import { optionalStringEnum } from "openclaw/plugin-sdk/core"; import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-runtime"; import { runTavilyExtract } from "./tavily-client.js"; +function optionalStringEnum( + values: T, + options?: { description?: string }, +) { + return Type.Optional( + Type.Union(values.map((value) => Type.Literal(value)) as never, { + description: options?.description, + }), + ); +} + const TavilyExtractToolSchema = Type.Object( { urls: Type.Array(Type.String(), { diff --git a/extensions/tavily/src/tavily-search-tool.ts b/extensions/tavily/src/tavily-search-tool.ts index 08cfe3e6606..86bf3ad80a5 100644 --- a/extensions/tavily/src/tavily-search-tool.ts +++ b/extensions/tavily/src/tavily-search-tool.ts @@ -1,9 +1,19 @@ import { Type } from "@sinclair/typebox"; import { jsonResult, readNumberParam, readStringParam } from "openclaw/plugin-sdk/agent-runtime"; -import { optionalStringEnum } from "openclaw/plugin-sdk/core"; import type { OpenClawPluginApi } from "openclaw/plugin-sdk/plugin-runtime"; import { runTavilySearch } from "./tavily-client.js"; +function optionalStringEnum( + values: T, + options?: { description?: string }, +) { + return Type.Optional( + Type.Union(values.map((value) => Type.Literal(value)) as never, { + description: options?.description, + }), + ); +} + const TavilySearchToolSchema = Type.Object( { query: Type.String({ description: "Search query string." }), diff --git a/knip.config.ts b/knip.config.ts index 0df45bd6e87..0d2db0e3715 100644 --- a/knip.config.ts +++ b/knip.config.ts @@ -6,9 +6,6 @@ const rootEntries = [ "src/infra/warning-filter.ts!", "extensions/telegram/src/audit.ts!", "extensions/telegram/src/token.ts!", - "src/line/accounts.ts!", - "src/line/send.ts!", - "src/line/template-messages.ts!", "src/hooks/bundled/*/handler.ts!", "src/hooks/llm-slug-generator.ts!", "src/plugin-sdk/*.ts!", diff --git a/package.json b/package.json index cc6deba4444..cefc592bdb3 100644 --- a/package.json +++ b/package.json @@ -505,6 +505,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/telegram": { "types": "./dist/plugin-sdk/telegram.d.ts", "default": "./dist/plugin-sdk/telegram.js" diff --git a/scripts/lib/plugin-sdk-entrypoints.json b/scripts/lib/plugin-sdk-entrypoints.json index 67f393f01c2..3c4074941af 100644 --- a/scripts/lib/plugin-sdk-entrypoints.json +++ b/scripts/lib/plugin-sdk-entrypoints.json @@ -116,6 +116,7 @@ "status-helpers", "speech", "state-paths", + "temp-path", "telegram", "telegram-core", "thread-ownership", diff --git a/src/plugin-sdk/image-generation-core.ts b/src/plugin-sdk/image-generation-core.ts index 757ed580db0..73aa7820d38 100644 --- a/src/plugin-sdk/image-generation-core.ts +++ b/src/plugin-sdk/image-generation-core.ts @@ -13,4 +13,4 @@ export type { export { resolveApiKeyForProvider } from "../agents/model-auth.js"; export { normalizeGoogleModelId } from "../agents/model-id-normalization.js"; export { parseGeminiAuth } from "../infra/gemini-auth.js"; -export { OPENAI_DEFAULT_IMAGE_MODEL } from "../providers/openai-defaults.js"; +export { OPENAI_DEFAULT_IMAGE_MODEL } from "../plugins/provider-model-defaults.js"; diff --git a/src/plugin-sdk/text-runtime.ts b/src/plugin-sdk/text-runtime.ts index 5c1015ddee5..8fc475be7a9 100644 --- a/src/plugin-sdk/text-runtime.ts +++ b/src/plugin-sdk/text-runtime.ts @@ -17,6 +17,7 @@ export * from "../shared/text/auto-linked-file-ref.js"; export * from "../shared/text/code-regions.js"; export * from "../shared/text/reasoning-tags.js"; export * from "../shared/text/strip-markdown.js"; +export * from "../shared/scoped-expiring-id-cache.js"; export * from "../terminal/safe-text.js"; export * from "../utils.js"; export * from "../utils/chunk-items.js"; diff --git a/src/plugins/bundled-plugin-metadata.generated.ts b/src/plugins/bundled-plugin-metadata.generated.ts index 732c282b3ff..66aad6f98df 100644 --- a/src/plugins/bundled-plugin-metadata.generated.ts +++ b/src/plugins/bundled-plugin-metadata.generated.ts @@ -468,28 +468,6 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [ ], }, }, - { - dirName: "deepgram", - idHint: "deepgram-media-understanding", - source: { - source: "./index.ts", - built: "index.js", - }, - packageName: "@openclaw/deepgram-media-understanding", - packageVersion: "2026.3.14", - packageDescription: "OpenClaw Deepgram media-understanding plugin", - packageManifest: { - extensions: ["./index.ts"], - }, - manifest: { - id: "deepgram", - configSchema: { - type: "object", - additionalProperties: false, - properties: {}, - }, - }, - }, { dirName: "diagnostics-otel", idHint: "diagnostics-otel", @@ -1071,28 +1049,6 @@ export const GENERATED_BUNDLED_PLUGIN_METADATA = [ channels: ["googlechat"], }, }, - { - dirName: "groq", - idHint: "groq-media-understanding", - source: { - source: "./index.ts", - built: "index.js", - }, - packageName: "@openclaw/groq-media-understanding", - packageVersion: "2026.3.14", - packageDescription: "OpenClaw Groq media-understanding plugin", - packageManifest: { - extensions: ["./index.ts"], - }, - manifest: { - id: "groq", - configSchema: { - type: "object", - additionalProperties: false, - properties: {}, - }, - }, - }, { dirName: "huggingface", idHint: "huggingface", diff --git a/src/plugins/runtime/runtime-line.runtime.ts b/src/plugins/runtime/runtime-line.runtime.ts index b90d3affb73..ea8be9013eb 100644 --- a/src/plugins/runtime/runtime-line.runtime.ts +++ b/src/plugins/runtime/runtime-line.runtime.ts @@ -1,6 +1,6 @@ -export { monitorLineProvider } from "../../line/monitor.js"; -export { probeLineBot } from "../../line/probe.js"; export { + monitorLineProvider, + probeLineBot, pushFlexMessage, pushLocationMessage, pushMessageLine, @@ -8,4 +8,4 @@ export { pushTemplateMessage, pushTextMessageWithQuickReplies, sendMessageLine, -} from "../../line/send.js"; +} from "../../../extensions/line/runtime-api.js"; diff --git a/tsdown.config.ts b/tsdown.config.ts index 304f781d91d..2bd5b9d2b1d 100644 --- a/tsdown.config.ts +++ b/tsdown.config.ts @@ -173,9 +173,6 @@ function buildCoreDistEntries(): Record { "infra/warning-filter": "src/infra/warning-filter.ts", "telegram/audit": "extensions/telegram/src/audit.ts", "telegram/token": "extensions/telegram/src/token.ts", - "line/accounts": "src/line/accounts.ts", - "line/send": "src/line/send.ts", - "line/template-messages": "src/line/template-messages.ts", "plugins/build-smoke-entry": "src/plugins/build-smoke-entry.ts", "plugins/runtime/index": "src/plugins/runtime/index.ts", "llm-slug-generator": "src/hooks/llm-slug-generator.ts",