From 5982f2e5e4376f473d6a329d4924bf3ffae3a7a5 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 8 Apr 2026 04:47:38 +0100 Subject: [PATCH] fix: repair Telegram setup package entry --- CHANGELOG.md | 1 + extensions/telegram/index.ts | 2 +- extensions/telegram/secret-contract-api.ts | 1 + extensions/telegram/setup-entry.ts | 4 ++-- extensions/telegram/setup-plugin-api.ts | 3 +++ test/scripts/bundled-plugin-build-entries.test.ts | 13 +++++++++++++ 6 files changed, 21 insertions(+), 3 deletions(-) create mode 100644 extensions/telegram/setup-plugin-api.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 500a7f9c856..bfda6d25c63 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -109,6 +109,7 @@ Docs: https://docs.openclaw.ai - Agents/model resolution: let explicit `openai-codex/gpt-5.4` selection prefer provider runtime metadata when it reports a larger context window, keeping configured Codex runs aligned with the live provider limits. (#62694) Thanks @ruclaw7. - Agents/model resolution: keep explicit-model runtime comparisons on the configured workspace plugin registry, so workspace-installed providers do not silently fall back to stale explicit metadata during runtime model lookup. - Providers/Z.AI: default onboarding and endpoint detection to GLM-5.1 instead of GLM-5. (#61998) Thanks @serg0x. +- Telegram/setup: load setup and secret contracts through packaged top-level sidecars so installed 2026.4.7 npm builds no longer try to import missing `dist/extensions/telegram/src/*` files during gateway startup. ## 2026.4.5 diff --git a/extensions/telegram/index.ts b/extensions/telegram/index.ts index 8bedf364a21..911046b9f82 100644 --- a/extensions/telegram/index.ts +++ b/extensions/telegram/index.ts @@ -10,7 +10,7 @@ export default defineBundledChannelEntry({ exportName: "telegramPlugin", }, secrets: { - specifier: "./src/secret-contract.js", + specifier: "./secret-contract-api.js", exportName: "channelSecrets", }, runtime: { diff --git a/extensions/telegram/secret-contract-api.ts b/extensions/telegram/secret-contract-api.ts index bc8f64f050f..9f44ef28569 100644 --- a/extensions/telegram/secret-contract-api.ts +++ b/extensions/telegram/secret-contract-api.ts @@ -1,4 +1,5 @@ export { + channelSecrets, collectRuntimeConfigAssignments, secretTargetRegistryEntries, } from "./src/secret-contract.js"; diff --git a/extensions/telegram/setup-entry.ts b/extensions/telegram/setup-entry.ts index 87bf37a9715..30f8cefce93 100644 --- a/extensions/telegram/setup-entry.ts +++ b/extensions/telegram/setup-entry.ts @@ -3,11 +3,11 @@ import { defineBundledChannelSetupEntry } from "openclaw/plugin-sdk/channel-entr export default defineBundledChannelSetupEntry({ importMetaUrl: import.meta.url, plugin: { - specifier: "./src/channel.setup.js", + specifier: "./setup-plugin-api.js", exportName: "telegramSetupPlugin", }, secrets: { - specifier: "./src/secret-contract.js", + specifier: "./secret-contract-api.js", exportName: "channelSecrets", }, }); diff --git a/extensions/telegram/setup-plugin-api.ts b/extensions/telegram/setup-plugin-api.ts new file mode 100644 index 00000000000..653bc43e76a --- /dev/null +++ b/extensions/telegram/setup-plugin-api.ts @@ -0,0 +1,3 @@ +// Keep bundled setup entry imports narrow so setup loads do not pull the +// broader Telegram channel plugin surface. +export { telegramSetupPlugin } from "./src/channel.setup.js"; diff --git a/test/scripts/bundled-plugin-build-entries.test.ts b/test/scripts/bundled-plugin-build-entries.test.ts index d7cda2ae873..66593fb9aad 100644 --- a/test/scripts/bundled-plugin-build-entries.test.ts +++ b/test/scripts/bundled-plugin-build-entries.test.ts @@ -1,3 +1,4 @@ +import fs from "node:fs"; import { describe, expect, it } from "vitest"; import { listBundledPluginBuildEntries, @@ -47,4 +48,16 @@ describe("bundled plugin build entries", () => { expect(artifacts).toContain("dist/extensions/matrix/plugin-entry.handlers.runtime.js"); }); + + it("keeps the Telegram setup entry on packed top-level sidecars", () => { + const setupEntry = fs.readFileSync("extensions/telegram/setup-entry.ts", "utf8"); + const artifacts = listBundledPluginPackArtifacts(); + + expect(setupEntry).toContain('specifier: "./setup-plugin-api.js"'); + expect(setupEntry).toContain('specifier: "./secret-contract-api.js"'); + expect(setupEntry).not.toContain("./src/channel.setup.js"); + expect(setupEntry).not.toContain("./src/secret-contract.js"); + expect(artifacts).toContain("dist/extensions/telegram/setup-plugin-api.js"); + expect(artifacts).toContain("dist/extensions/telegram/secret-contract-api.js"); + }); });