diff --git a/docs/internal/steipete/2026-03-29-config-runtime-snapshot.md b/docs/internal/steipete/2026-03-29-config-runtime-snapshot.md index 50901b55891..4b85f984e7a 100644 --- a/docs/internal/steipete/2026-03-29-config-runtime-snapshot.md +++ b/docs/internal/steipete/2026-03-29-config-runtime-snapshot.md @@ -22,3 +22,4 @@ read_when: - adjusted session-listing subagent selection to prefer active disk-only runs while still honoring newer in-memory replacement rows - deleted the flaky duplicated Telegram gateway writeback integration test and kept stable coverage in `server-methods/send.test.ts` plus `extensions/telegram/src/target-writeback.test.ts` - trimmed remaining Telegram-specific assertions from `src/gateway/server-methods/send.test.ts` so core only covers generic channel-send contracts and Telegram writeback behavior stays extension-owned + - removed public SDK re-exports that reached directly into bundled extension source paths; `plugin-sdk/agent-runtime` no longer leaks `sglang`/`vllm`, and `plugin-sdk/xai-model-id` now uses the facade loader instead of `../../extensions/xai/*` diff --git a/src/plugin-sdk/agent-runtime.ts b/src/plugin-sdk/agent-runtime.ts index 1cfc9d09069..b60343da1d2 100644 --- a/src/plugin-sdk/agent-runtime.ts +++ b/src/plugin-sdk/agent-runtime.ts @@ -16,12 +16,10 @@ export * from "../agents/pi-embedded-utils.js"; export * from "../agents/provider-id.js"; export * from "../agents/sandbox-paths.js"; export * from "../agents/schema/typebox.js"; -export * from "../../extensions/sglang/api.js"; export * from "../agents/tools/common.js"; export * from "../agents/tools/web-guarded-fetch.js"; export * from "../agents/tools/web-shared.js"; export * from "../agents/tools/web-fetch-utils.js"; -export * from "../../extensions/vllm/api.js"; // Intentional public runtime surface: channel plugins use ingress agent helpers directly. export * from "../agents/agent-command.js"; export * from "../tts/tts.js"; diff --git a/src/plugin-sdk/subpaths.test.ts b/src/plugin-sdk/subpaths.test.ts index bd4cc8d0bbc..d5c46cefd55 100644 --- a/src/plugin-sdk/subpaths.test.ts +++ b/src/plugin-sdk/subpaths.test.ts @@ -666,7 +666,9 @@ describe("plugin-sdk subpath exports", () => { expectSourceOmitsImportPattern("self-hosted-provider-setup", "./sglang.js"); expectSourceOmitsSnippet("agent-runtime", "./sglang.js"); expectSourceOmitsSnippet("agent-runtime", "./vllm.js"); + expectSourceOmitsSnippet("agent-runtime", "../../extensions/"); expectSourceOmitsSnippet("xai-model-id", "./xai.js"); + expectSourceOmitsSnippet("xai-model-id", "../../extensions/"); expectSourceMentions("sandbox", ["registerSandboxBackend", "runPluginCommandWithTimeout"]); expectSourceMentions("secret-input", [ diff --git a/src/plugin-sdk/xai-model-id.ts b/src/plugin-sdk/xai-model-id.ts index 463481c66f3..f637271fe90 100644 --- a/src/plugin-sdk/xai-model-id.ts +++ b/src/plugin-sdk/xai-model-id.ts @@ -1 +1,15 @@ -export { normalizeXaiModelId } from "../../extensions/xai/model-id.js"; +import type { PluginSdkFacadeTypeMap } from "../generated/plugin-sdk-facade-type-map.generated.js"; +import { loadBundledPluginPublicSurfaceModuleSync } from "./facade-runtime.js"; + +type FacadeEntry = PluginSdkFacadeTypeMap["xai"]; +type FacadeModule = FacadeEntry["module"]; + +function loadFacadeModule(): FacadeModule { + return loadBundledPluginPublicSurfaceModuleSync({ + dirName: "xai", + artifactBasename: "api.js", + }); +} + +export const normalizeXaiModelId: FacadeModule["normalizeXaiModelId"] = ((...args) => + loadFacadeModule()["normalizeXaiModelId"](...args)) as FacadeModule["normalizeXaiModelId"];