diff --git a/extensions/googlechat/src/approval-native.ts b/extensions/googlechat/src/approval-native.ts index 97b6dede83a1..b408462e8f9c 100644 --- a/extensions/googlechat/src/approval-native.ts +++ b/extensions/googlechat/src/approval-native.ts @@ -1,6 +1,5 @@ import { createApproverRestrictedNativeApprovalCapability, - splitChannelApprovalCapability, } from "openclaw/plugin-sdk/approval-delivery-runtime"; import { createLazyChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-adapter-runtime"; import type { ChannelApprovalNativeRuntimeAdapter } from "openclaw/plugin-sdk/approval-handler-runtime"; @@ -240,7 +239,3 @@ export const googleChatApprovalCapability: ChannelApprovalCapability = .googleChatApprovalNativeRuntime as unknown as ChannelApprovalNativeRuntimeAdapter, }), }); - -export const googleChatNativeApprovalAdapter = splitChannelApprovalCapability( - googleChatApprovalCapability, -); diff --git a/extensions/voice-call/src/tunnel.test.ts b/extensions/voice-call/src/tunnel.test.ts index 4ca89083475b..6fe2caaec2d5 100644 --- a/extensions/voice-call/src/tunnel.test.ts +++ b/extensions/voice-call/src/tunnel.test.ts @@ -35,7 +35,7 @@ vi.mock("./webhook/tailscale.js", () => ({ getTailscaleDnsName: mocks.getTailscaleDnsName, })); -import { isNgrokAvailable, startNgrokTunnel, startTailscaleTunnel, startTunnel } from "./tunnel.js"; +import { startNgrokTunnel, startTailscaleTunnel, startTunnel } from "./tunnel.js"; function nextProcess(): FakeChildProcess { const proc = new FakeChildProcess(); @@ -53,25 +53,6 @@ describe("voice-call tunnels", () => { mocks.getTailscaleDnsName.mockReset(); }); - it("checks ngrok availability from the version command exit code", async () => { - const proc = nextProcess(); - const result = isNgrokAvailable(); - proc.close(0); - - await expect(result).resolves.toBe(true); - expect(mocks.spawn).toHaveBeenCalledWith("ngrok", ["version"], { - stdio: "ignore", - }); - }); - - it("treats ngrok spawn failures as unavailable", async () => { - const proc = nextProcess(); - const result = isNgrokAvailable(); - proc.fail(new Error("spawn ngrok ENOENT")); - - await expect(result).resolves.toBe(false); - }); - it("starts ngrok and appends the webhook path to the public URL", async () => { const proc = nextProcess(); const result = startNgrokTunnel({ port: 3334, path: "/voice/webhook" }); diff --git a/extensions/voice-call/src/tunnel.ts b/extensions/voice-call/src/tunnel.ts index 68a20005747e..99c541dbfd1e 100644 --- a/extensions/voice-call/src/tunnel.ts +++ b/extensions/voice-call/src/tunnel.ts @@ -201,25 +201,6 @@ async function runNgrokCommand(args: string[]): Promise { }); } -/** - * Check if ngrok is installed and available. - */ -export async function isNgrokAvailable(): Promise { - return new Promise((resolve) => { - const proc = spawn("ngrok", ["version"], { - stdio: "ignore", - }); - - proc.on("close", (code) => { - resolve(code === 0); - }); - - proc.on("error", () => { - resolve(false); - }); - }); -} - /** * Start a Tailscale serve/funnel tunnel. */