From 1c52447f0bd52fba7e4c7165e2d5f50b6309b20c Mon Sep 17 00:00:00 2001 From: Penchan <5032148+p3nchan@users.noreply.github.com> Date: Tue, 5 May 2026 05:46:29 +0800 Subject: [PATCH 1/6] fix(plugins): treat CalVer correction versions as compatible with plugin API ranges (#77450) * fix(plugins): accept CalVer correction plugin API hosts Fixes #77293 * docs(changelog): credit plugin api calver fix pr --------- Co-authored-by: pingu --- CHANGELOG.md | 1 + src/infra/clawhub.test.ts | 6 ++++++ src/infra/clawhub.ts | 12 +++++++++++- src/plugins/clawhub.test.ts | 30 ++++++++++++++++++++++++++++++ 4 files changed, 48 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index dcce92716c8..34256c64fef 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,6 +64,7 @@ Docs: https://docs.openclaw.ai - Doctor/config: restore legacy group chat config migrations for `routing.allowFrom`, `routing.groupChat.*`, and `channels.telegram.requireMention` so upgrades keep WhatsApp, Telegram, and iMessage group mention gates and history settings instead of leaving configs invalid or silently blocked. Thanks @scoootscooob. - CLI/update: make package-update follow-up processes write completion results and exit explicitly, so Windows packaged upgrades do not hang after the new package finishes post-core plugin work. Thanks @vincentkoc. - Release validation: skip Slack live QA unless Slack credentials are explicitly configured, so release gates can keep proving non-Slack surfaces while Slack is still local and credential-gated. Thanks @vincentkoc. +- Plugins/update: treat OpenClaw CalVer correction versions like `2026.5.3-1` as satisfying base plugin API ranges, so correction builds can install plugins that require the base runtime API. Fixes #77293. (#77450) Thanks @p3nchan. - fix(gateway): clamp unbound websocket auth scopes [AI]. (#77413) Thanks @pgondhi987. - Gate zalouser startup name matching [AI]. (#77411) Thanks @pgondhi987. - Active Memory: send a bounded latest-message search query to the recall worker so channel/runtime metadata does not become the memory search string. Fixes #65309. Thanks @joeykrug, @westley3601, @pimenov, and @tasi333. diff --git a/src/infra/clawhub.test.ts b/src/infra/clawhub.test.ts index 1e404208df7..45e8d85b61c 100644 --- a/src/infra/clawhub.test.ts +++ b/src/infra/clawhub.test.ts @@ -100,6 +100,12 @@ describe("clawhub helpers", () => { expect(satisfiesPluginApiRange("invalid", "^1.2.0")).toBe(false); }); + it("treats OpenClaw CalVer correction versions as stable plugin API hosts", () => { + expect(satisfiesPluginApiRange("2026.5.3-1", ">=2026.5.3")).toBe(true); + expect(satisfiesPluginApiRange("2026.5.3-2", ">=2026.5.3")).toBe(true); + expect(satisfiesPluginApiRange("2026.5.3-beta.1", ">=2026.5.3")).toBe(false); + }); + it("accepts legacy bare major.minor plugin api ranges as lower bounds", () => { expect(satisfiesPluginApiRange("2026.5.2", "2026.4")).toBe(true); expect(satisfiesPluginApiRange("2026.4.0", "2026.4")).toBe(true); diff --git a/src/infra/clawhub.ts b/src/infra/clawhub.ts index 1d2b0472348..d8f4a4df59c 100644 --- a/src/infra/clawhub.ts +++ b/src/infra/clawhub.ts @@ -542,6 +542,13 @@ function satisfiesSemverRange(version: string, range: string): boolean { return tokens.every((token) => satisfiesComparator(version, token)); } +const OPENCLAW_CALVER_STABLE_CORRECTION_PATTERN = /^[vV]?(\d{4}\.\d{1,2}\.\d{1,2})-\d+$/; + +function normalizeCalVerCorrectionForPluginApi(pluginApiVersion: string): string { + const match = OPENCLAW_CALVER_STABLE_CORRECTION_PATTERN.exec(pluginApiVersion.trim()); + return match?.[1] ?? pluginApiVersion; +} + function buildUrl(params: Pick): URL { const url = new URL(params.path, `${normalizeBaseUrl(params.baseUrl)}/`); for (const [key, value] of Object.entries(params.search ?? {})) { @@ -1046,7 +1053,10 @@ export function satisfiesPluginApiRange( if (!pluginApiRange) { return true; } - return satisfiesSemverRange(pluginApiVersion, pluginApiRange); + return satisfiesSemverRange( + normalizeCalVerCorrectionForPluginApi(pluginApiVersion), + pluginApiRange, + ); } export function satisfiesGatewayMinimum( diff --git a/src/plugins/clawhub.test.ts b/src/plugins/clawhub.test.ts index 99cc2a922a9..63d0ebb3eb2 100644 --- a/src/plugins/clawhub.test.ts +++ b/src/plugins/clawhub.test.ts @@ -852,6 +852,36 @@ describe("installPluginFromClawHub", () => { expect(archiveCleanupMock).toHaveBeenCalledTimes(1); }); + it("installs when a CalVer correction runtime satisfies the base plugin API range", async () => { + resolveCompatibilityHostVersionMock.mockReturnValueOnce("2026.5.3-1"); + fetchClawHubPackageVersionMock.mockResolvedValueOnce({ + version: { + version: "2026.5.3", + createdAt: 0, + changelog: "", + sha256hash: "a9eac48c6129bc44b6f93c9a9f48f6c700d191b7279a1e1915f28df6f59bb1af", + compatibility: { + pluginApiRange: ">=2026.5.3", + minGatewayVersion: "2026.3.0", + }, + }, + }); + + const result = await installPluginFromClawHub({ + spec: "clawhub:demo", + baseUrl: "https://clawhub.ai", + }); + + expectSuccessfulClawHubInstall(result); + expect(downloadClawHubPackageArchiveMock).toHaveBeenCalledTimes(1); + expect(installPluginFromArchiveMock).toHaveBeenCalledWith( + expect.objectContaining({ + archivePath: "/tmp/clawhub-demo/archive.zip", + }), + ); + expect(archiveCleanupMock).toHaveBeenCalledTimes(1); + }); + it("does not let a wildcard plugin API range hide an invalid runtime version", async () => { resolveCompatibilityHostVersionMock.mockReturnValueOnce("invalid"); fetchClawHubPackageVersionMock.mockResolvedValueOnce({ From d0cae0d9500edc207eb66683320abbfc6018f166 Mon Sep 17 00:00:00 2001 From: hcl Date: Tue, 5 May 2026 05:47:38 +0800 Subject: [PATCH 2/6] fix(active-memory): skip sub-agent gracefully when no memory tools registered (#77506) (#77515) * fix(active-memory): skip sub-agent gracefully when no memory tools registered (#77506) When memory-core and memory-lancedb are both absent, the embedded memory sub-agent would throw 'No callable tools remain after resolving explicit tool allowlist', which propagated as a noisy warning through the before_prompt_build hook. Catch this specific error in runActiveMemorySubAgent and return an empty NONE result so the gateway log stays clean and the sub-agent run is skipped without disrupting the parent session. * fix(active-memory): skip missing memory-tool subagent runs * fix(active-memory): match inherited missing memory tool errors * fix(active-memory): preserve policy-filtered memory errors --------- Co-authored-by: clawsweeper <274271284+clawsweeper[bot]@users.noreply.github.com> Co-authored-by: Tak Hoffman <781889+Takhoffman@users.noreply.github.com> --- CHANGELOG.md | 1 + extensions/active-memory/index.test.ts | 144 +++++++++++++++++++++++++ extensions/active-memory/index.ts | 42 +++++++- 3 files changed, 186 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 34256c64fef..e359d8987a0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -73,6 +73,7 @@ Docs: https://docs.openclaw.ai - fix(qqbot): keep private commands off framework surface [AI]. (#77212) Thanks @pgondhi987. - Claude CLI: honor non-off `/think` levels by passing Claude Code's session-scoped `--effort` flag through the CLI backend seam, so chat bridges no longer show an inert thinking control. Fixes #77303. Thanks @Petr1t. - Agents/subagents: refresh deferred final-delivery payloads when same-session completion output changes, so retried parent notifications use the final child summary instead of stale progress text. Thanks @vincentkoc. +- active-memory: skip the memory sub-agent gracefully instead of logging a confusing allowlist error when no memory plugin (`memory-core` or `memory-lancedb`) is loaded, so active-memory with no memory backend no longer produces misleading "No callable tools remain" warnings in the gateway log. Fixes #77506. Thanks @hclsys. - Memory/wiki: preserve representation from both corpora in `corpus=all` searches while backfilling unused result capacity, so memory hits are not starved by numerically higher wiki integer scores. Fixes #77337. Thanks @hclsys. - Telegram: clean up tool-only draft previews after assistant message boundaries so transient `Surfacing...` tool-status bubbles do not linger when no matching final preview arrives. Thanks @BunsDev. - Cron: surface failed isolated-run diagnostics in `cron show`, status, and run history when requested tools are unavailable, so blocked cron runs report the actual tool-policy failure instead of a misleading green result. Fixes #75763. Thanks @RyanSandoval. diff --git a/extensions/active-memory/index.test.ts b/extensions/active-memory/index.test.ts index d1e56d193fb..fcb711eb33b 100644 --- a/extensions/active-memory/index.test.ts +++ b/extensions/active-memory/index.test.ts @@ -125,6 +125,23 @@ describe("active-memory plugin", () => { "utf8", ); }; + const makeMemoryToolAllowlistError = ( + reason: string, + sources = "runtime toolsAllow: memory_recall, memory_search, memory_get", + ) => + new Error( + `No callable tools remain after resolving explicit tool allowlist ` + + `(${sources}); ${reason}. ` + + `Fix the allowlist or enable the plugin that registers the requested tool.`, + ); + const hasDebugLine = (needle: string) => + vi + .mocked(api.logger.debug) + .mock.calls.some((call: unknown[]) => String(call[0]).includes(needle)); + const hasWarnLine = (needle: string) => + vi + .mocked(api.logger.warn) + .mock.calls.some((call: unknown[]) => String(call[0]).includes(needle)); beforeEach(async () => { vi.clearAllMocks(); @@ -1646,6 +1663,133 @@ describe("active-memory plugin", () => { expect(result).toBeUndefined(); }); + it("skips the recall subagent when no registered memory tools match", async () => { + const sessionKey = "agent:main:missing-memory-tools"; + hoisted.sessionStore[sessionKey] = { + sessionId: "s-missing-memory-tools", + updatedAt: 0, + }; + const error = makeMemoryToolAllowlistError("no registered tools matched"); + expect(__testing.isMissingRegisteredMemoryToolsError(error)).toBe(true); + runEmbeddedPiAgent.mockRejectedValueOnce(error); + + const result = await hooks.before_prompt_build( + { prompt: "what wings should i order? missing memory tools", messages: [] }, + { agentId: "main", trigger: "user", sessionKey, messageProvider: "webchat" }, + ); + + expect(result).toBeUndefined(); + expect(hasDebugLine("no memory tools registered")).toBe(true); + expect(hasWarnLine("No callable tools remain")).toBe(false); + const lines = getActiveMemoryLines(sessionKey); + expect(lines).toEqual([expect.stringContaining("🧩 Active Memory: status=empty")]); + expect(lines.join("\n")).not.toContain("status=unavailable"); + }); + + it("skips missing memory tools when the allowlist error includes inherited sources", async () => { + const sessionKey = "agent:main:missing-memory-tools-with-policy-source"; + hoisted.sessionStore[sessionKey] = { + sessionId: "s-missing-memory-tools-with-policy-source", + updatedAt: 0, + }; + const error = makeMemoryToolAllowlistError( + "no registered tools matched", + "tools.allow: *, lobster; runtime toolsAllow: memory_recall, memory_search, memory_get", + ); + expect(__testing.isMissingRegisteredMemoryToolsError(error)).toBe(true); + runEmbeddedPiAgent.mockRejectedValueOnce(error); + + const result = await hooks.before_prompt_build( + { prompt: "what wings should i order? missing memory tools with policy", messages: [] }, + { agentId: "main", trigger: "user", sessionKey, messageProvider: "webchat" }, + ); + + expect(result).toBeUndefined(); + expect(hasDebugLine("no memory tools registered")).toBe(true); + expect(hasWarnLine("No callable tools remain")).toBe(false); + expect(getActiveMemoryLines(sessionKey)).toEqual([ + expect.stringContaining("🧩 Active Memory: status=empty"), + ]); + }); + + it("keeps memory-tool allowlist errors visible when upstream policy can filter memory tools", async () => { + const sessionKey = "agent:main:memory-tools-filtered-by-policy"; + hoisted.sessionStore[sessionKey] = { + sessionId: "s-memory-tools-filtered-by-policy", + updatedAt: 0, + }; + const error = makeMemoryToolAllowlistError( + "no registered tools matched", + "tools.allow: read, exec; runtime toolsAllow: memory_recall, memory_search, memory_get", + ); + expect(__testing.isMissingRegisteredMemoryToolsError(error)).toBe(false); + runEmbeddedPiAgent.mockRejectedValueOnce(error); + + const result = await hooks.before_prompt_build( + { prompt: "what wings should i order? memory tools filtered by policy", messages: [] }, + { agentId: "main", trigger: "user", sessionKey, messageProvider: "webchat" }, + ); + + expect(result).toBeUndefined(); + expect(hasDebugLine("no memory tools registered")).toBe(false); + expect(hasWarnLine("No callable tools remain")).toBe(true); + expect(getActiveMemoryLines(sessionKey)).toEqual([ + expect.stringContaining("🧩 Active Memory: status=unavailable"), + ]); + }); + + it.each([ + ["disabled tools", "tools are disabled for this run"], + ["models without tool support", "the selected model does not support tools"], + ])("keeps allowlist errors for %s visible", async (_label, reason) => { + const sessionKey = `agent:main:${reason.replace(/\W+/g, "-")}`; + hoisted.sessionStore[sessionKey] = { + sessionId: `s-${reason.replace(/\W+/g, "-")}`, + updatedAt: 0, + }; + const error = makeMemoryToolAllowlistError(reason); + expect(__testing.isMissingRegisteredMemoryToolsError(error)).toBe(false); + runEmbeddedPiAgent.mockRejectedValueOnce(error); + + const result = await hooks.before_prompt_build( + { prompt: `what wings should i order? ${reason}`, messages: [] }, + { agentId: "main", trigger: "user", sessionKey, messageProvider: "webchat" }, + ); + + expect(result).toBeUndefined(); + expect(hasDebugLine("no memory tools registered")).toBe(false); + expect(hasWarnLine(reason)).toBe(true); + expect(getActiveMemoryLines(sessionKey)).toEqual([ + expect.stringContaining("🧩 Active Memory: status=unavailable"), + ]); + }); + + it("does not skip missing memory-tool allowlist errors after abort", async () => { + const sessionKey = "agent:main:missing-memory-tools-after-abort"; + hoisted.sessionStore[sessionKey] = { + sessionId: "s-missing-memory-tools-after-abort", + updatedAt: 0, + }; + runEmbeddedPiAgent.mockImplementationOnce(async (params: { abortSignal?: AbortSignal }) => { + Object.defineProperty(params.abortSignal as AbortSignal, "aborted", { + configurable: true, + value: true, + }); + throw makeMemoryToolAllowlistError("no registered tools matched"); + }); + + const result = await hooks.before_prompt_build( + { prompt: "what wings should i order? missing memory tools after abort", messages: [] }, + { agentId: "main", trigger: "user", sessionKey, messageProvider: "webchat" }, + ); + + expect(result).toBeUndefined(); + expect(hasDebugLine("no memory tools registered")).toBe(false); + expect(getActiveMemoryLines(sessionKey)).toEqual([ + expect.stringContaining("🧩 Active Memory: status=timeout"), + ]); + }); + it("returns partial transcript text on timeout when the subagent has already written assistant output", async () => { __testing.setMinimumTimeoutMsForTests(1); __testing.setSetupGraceTimeoutMsForTests(0); diff --git a/extensions/active-memory/index.ts b/extensions/active-memory/index.ts index b6f80208ae5..10d891405be 100644 --- a/extensions/active-memory/index.ts +++ b/extensions/active-memory/index.ts @@ -41,6 +41,7 @@ const DEFAULT_QMD_SEARCH_MODE = "search" as const; const DEFAULT_TRANSCRIPT_DIR = "active-memory"; const DEFAULT_CIRCUIT_BREAKER_MAX_TIMEOUTS = 3; const DEFAULT_CIRCUIT_BREAKER_COOLDOWN_MS = 60_000; +const ACTIVE_MEMORY_TOOL_ALLOWLIST = ["memory_recall", "memory_search", "memory_get"] as const; const TOGGLE_STATE_FILE = "session-toggles.json"; const DEFAULT_PARTIAL_TRANSCRIPT_MAX_CHARS = 32_000; const DEFAULT_TRANSCRIPT_READ_MAX_LINES = 2_000; @@ -494,6 +495,38 @@ function normalizeOptionalString(value: unknown): string | undefined { return typeof value === "string" && value.trim() ? value.trim() : undefined; } +function isMissingRegisteredMemoryToolsError(error: unknown): boolean { + if (!(error instanceof Error)) { + return false; + } + const message = error.message.trim(); + const prefix = "No callable tools remain after resolving explicit tool allowlist ("; + const suffix = + "); no registered tools matched. Fix the allowlist or enable the plugin that registers the requested tool."; + if (!message.startsWith(prefix) || !message.endsWith(suffix)) { + return false; + } + const sources = message.slice(prefix.length, -suffix.length); + const runtimeSource = `runtime toolsAllow: ${ACTIVE_MEMORY_TOOL_ALLOWLIST.join(", ")}`; + const sourceParts = sources + .split(";") + .map((source) => source.trim()) + .filter(Boolean); + if (!sourceParts.includes(runtimeSource)) { + return false; + } + return sourceParts.every((source) => { + if (source === runtimeSource) { + return true; + } + const entries = source + .slice(source.indexOf(":") + 1) + .split(",") + .map((entry) => entry.trim()); + return entries.includes("*"); + }); +} + function resolveRecallRunChannelContext(params: { api: OpenClawPluginApi; agentId: string; @@ -2394,7 +2427,7 @@ async function runRecallSubagent(params: { timeoutMs: embeddedTimeoutMs, runId: subagentSessionId, trigger: "manual", - toolsAllow: ["memory_recall", "memory_search", "memory_get"], + toolsAllow: [...ACTIVE_MEMORY_TOOL_ALLOWLIST], disableMessageTool: true, allowGatewaySubagentBinding: true, bootstrapContextMode: "lightweight", @@ -2437,6 +2470,12 @@ async function runRecallSubagent(params: { const searchDebug = partialReply ? await readActiveMemorySearchDebug(sessionFile) : undefined; attachPartialTimeoutData(error, partialReply, searchDebug); } + if (!params.abortSignal?.aborted && isMissingRegisteredMemoryToolsError(error)) { + params.api.logger.debug?.( + `active-memory: no memory tools registered (memory-core or memory-lancedb required); skipping sub-agent`, + ); + return { rawReply: "NONE" }; + } throw error; } finally { if (tempDir) { @@ -2959,6 +2998,7 @@ const testing = { buildPromptPrefix, getCachedResult, isCircuitBreakerOpen, + isMissingRegisteredMemoryToolsError, normalizePluginConfig, readActiveMemorySearchDebug, readPartialAssistantText, From a7b665cfed3455d0ed67129289e25ea61f0b4c89 Mon Sep 17 00:00:00 2001 From: Pnant <73925474+Panniantong@users.noreply.github.com> Date: Mon, 4 May 2026 14:53:06 -0700 Subject: [PATCH 3/6] fix(telegram): honor topic requireMention precedence Telegram forum-topic requireMention config now takes precedence over persisted activation state, with focused regression coverage.\n\nFixes #49864.\nThanks @Panniantong. --- CHANGELOG.md | 1 + ...ot-message-context.require-mention.test.ts | 112 ++++++++++++++++++ .../telegram/src/bot-message-context.ts | 2 +- 3 files changed, 114 insertions(+), 1 deletion(-) create mode 100644 extensions/telegram/src/bot-message-context.require-mention.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index e359d8987a0..df8a091e61d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -76,6 +76,7 @@ Docs: https://docs.openclaw.ai - active-memory: skip the memory sub-agent gracefully instead of logging a confusing allowlist error when no memory plugin (`memory-core` or `memory-lancedb`) is loaded, so active-memory with no memory backend no longer produces misleading "No callable tools remain" warnings in the gateway log. Fixes #77506. Thanks @hclsys. - Memory/wiki: preserve representation from both corpora in `corpus=all` searches while backfilling unused result capacity, so memory hits are not starved by numerically higher wiki integer scores. Fixes #77337. Thanks @hclsys. - Telegram: clean up tool-only draft previews after assistant message boundaries so transient `Surfacing...` tool-status bubbles do not linger when no matching final preview arrives. Thanks @BunsDev. +- Telegram: let explicit forum-topic `requireMention` settings override persisted `/activate` and `/deactivate` state, so per-topic mention gates work consistently. Fixes #49864. Thanks @Panniantong. - Cron: surface failed isolated-run diagnostics in `cron show`, status, and run history when requested tools are unavailable, so blocked cron runs report the actual tool-policy failure instead of a misleading green result. Fixes #75763. Thanks @RyanSandoval. - TUI/escape abort: track the in-flight runId after `chat.send` resolves so pressing Esc during the gap before the first gateway event aborts the run instead of repeatedly printing `no active run`. Fixes #1296. Thanks @Lukavyi and @romneyda. - TUI/render: stop the long-token sanitizer from injecting literal spaces inside inline code spans, fenced code blocks, table borders, and bare hyphenated/dotted identifiers, so copied package names, entity IDs, and shell line-continuations stay byte-for-byte intact while narrow-terminal protection still chunks unidentifiable long prose tokens. Fixes #48432, #39505. Thanks @DocOellerson, @xeusoc, @CCcassiusdjs, @akramcodez, @brokemac79, @romneyda. diff --git a/extensions/telegram/src/bot-message-context.require-mention.test.ts b/extensions/telegram/src/bot-message-context.require-mention.test.ts new file mode 100644 index 00000000000..deed88a9901 --- /dev/null +++ b/extensions/telegram/src/bot-message-context.require-mention.test.ts @@ -0,0 +1,112 @@ +import { getRuntimeConfig } from "openclaw/plugin-sdk/runtime-config-snapshot"; +import { beforeEach, describe, expect, it, vi } from "vitest"; + +const { defaultRouteConfig } = vi.hoisted(() => ({ + defaultRouteConfig: { + agents: { + list: [{ id: "main", default: true }], + }, + channels: { telegram: {} }, + messages: { groupChat: { mentionPatterns: [] } }, + }, +})); + +vi.mock("openclaw/plugin-sdk/runtime-config-snapshot", async () => { + const actual = await vi.importActual< + typeof import("openclaw/plugin-sdk/runtime-config-snapshot") + >("openclaw/plugin-sdk/runtime-config-snapshot"); + return { + ...actual, + getRuntimeConfig: vi.fn(() => defaultRouteConfig), + }; +}); + +const { buildTelegramMessageContextForTest } = + await import("./bot-message-context.test-harness.js"); + +describe("buildTelegramMessageContext requireMention precedence", () => { + function buildForumMessage(threadId = 99) { + return { + message_id: 1, + chat: { + id: -1001234567890, + type: "supergroup" as const, + title: "Forum", + is_forum: true, + }, + date: 1_700_000_000, + text: "hello everyone", + message_thread_id: threadId, + from: { id: 42, first_name: "Alice" }, + }; + } + + beforeEach(() => { + vi.mocked(getRuntimeConfig).mockReturnValue(defaultRouteConfig as never); + }); + + it("lets explicit topic requireMention=false override group requireMention=true", async () => { + const ctx = await buildTelegramMessageContextForTest({ + message: buildForumMessage(), + resolveGroupActivation: () => undefined, + resolveGroupRequireMention: () => true, + resolveTelegramGroupConfig: () => ({ + groupConfig: { requireMention: true }, + topicConfig: { requireMention: false }, + }), + }); + + expect(ctx).not.toBeNull(); + }); + + it("lets explicit topic requireMention=false override mention activation", async () => { + const resolveGroupActivation = vi.fn(() => true); + + const ctx = await buildTelegramMessageContextForTest({ + message: buildForumMessage(), + resolveGroupActivation, + resolveGroupRequireMention: () => true, + resolveTelegramGroupConfig: () => ({ + groupConfig: { requireMention: true }, + topicConfig: { requireMention: false }, + }), + }); + + expect(ctx).not.toBeNull(); + expect(resolveGroupActivation).toHaveBeenCalledWith( + expect.objectContaining({ + chatId: -1001234567890, + messageThreadId: 99, + sessionKey: "agent:main:telegram:group:-1001234567890:topic:99", + }), + ); + }); + + it("lets explicit topic requireMention=true override always activation", async () => { + const ctx = await buildTelegramMessageContextForTest({ + message: buildForumMessage(), + resolveGroupActivation: () => false, + resolveGroupRequireMention: () => false, + resolveTelegramGroupConfig: () => ({ + groupConfig: { requireMention: false }, + topicConfig: { requireMention: true }, + }), + }); + + expect(ctx).toBeNull(); + }); + + it("keeps activation fallback when no topic requireMention is configured", async () => { + const ctx = await buildTelegramMessageContextForTest({ + message: buildForumMessage(), + resolveGroupActivation: () => false, + resolveGroupRequireMention: () => true, + resolveTelegramGroupConfig: () => ({ + groupConfig: { requireMention: true }, + topicConfig: { agentId: "main" }, + }), + }); + + expect(ctx).not.toBeNull(); + }); +}); diff --git a/extensions/telegram/src/bot-message-context.ts b/extensions/telegram/src/bot-message-context.ts index d7c44e39587..e969c668161 100644 --- a/extensions/telegram/src/bot-message-context.ts +++ b/extensions/telegram/src/bot-message-context.ts @@ -411,8 +411,8 @@ export const buildTelegramMessageContext = async ({ }); const baseRequireMention = resolveGroupRequireMention(chatId); const requireMention = firstDefined( - activationOverride, topicConfig?.requireMention, + activationOverride, telegramGroupConfig?.requireMention, baseRequireMention, ); From 43b5df729593376d733364057b77f030634f85d3 Mon Sep 17 00:00:00 2001 From: Mogglemoss Date: Mon, 4 May 2026 14:57:28 -0700 Subject: [PATCH 4/6] fix(secretrefs): resolve external channel contracts in dist/ sidecars (#77421) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(secretrefs): resolve external channel contracts in dist/ sidecars Externalized channel plugins published to npm (e.g. @openclaw/discord since 2026.5.2) keep their compiled secret-contract-api artifact under /dist/, per the package.json `openclaw.runtimeExtensions` convention. The runtime contract loader added in #76449 only searched the rootDir, so npm-installed plugins silently dropped their channel SecretRef contracts: the runtime snapshot left `channels..token` as an unresolved SecretRef, the plugin's `isConfigured` check then returned false, and the gateway recorded `error: not configured` without firing the usual channel startup logs. Look in `/dist/` as well as `/`, preferring dist when running from a built openclaw artifact and rootDir when running from source. The new `loads dist/ secret-contract-api sidecars …` test in channel-contract-api.external.test.ts mirrors the real npm-package layout and fails without this change. Refs #76371. Fixes #77416. * docs: credit changelog contributor --------- Co-authored-by: Magpie Co-authored-by: joshavant <830519+joshavant@users.noreply.github.com> --- CHANGELOG.md | 1 + .../channel-contract-api.external.test.ts | 60 +++++++++++++++++++ src/secrets/channel-contract-api.ts | 25 ++++---- 3 files changed, 76 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index df8a091e61d..ae545c7c722 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,7 @@ Docs: https://docs.openclaw.ai ### Changes - Plugins/active-memory: skip session-store channel entries that contain `:` when resolving the recall subagent's channel, so QQ c2c agent IDs (e.g. `c2c:10D4F7C2…`) and other scoped conversation IDs do not reach bundled-plugin `dirName` validation and crash the recall run. The same guard already applied to explicit `channelId` params (#76704); this extends it to store-derived channels. (#77396) Thanks @hclsys. +- Secrets/external channel contracts: also look in `/dist/` when resolving the `secret-contract-api` sidecar, so npm-published externalized channel plugins (e.g. `@openclaw/discord` since 2026.5.2) whose compiled artifacts live under `dist/` actually contribute their channel SecretRef contracts to the runtime snapshot. Without this, env-backed `channels.discord.token` SecretRefs silently failed to resolve at gateway start on 2026.5.3, leaving the channel `not configured` even though #76449 had landed the generic external-contract loader. Thanks @mogglemoss. - Models/auth: add `openclaw models auth list [--provider ] [--json]` so users can inspect saved per-agent auth profiles without dumping secrets or hitting the old “too many arguments” path. Thanks @vincentkoc. - Control UI/header: show the active agent name in dashboard breadcrumbs without adding the current session key, keeping non-chat views oriented without crowding the topbar. - Control UI/cron: make the New Job sidebar collapsible so the jobs list can reclaim space while keeping the form one click away. Thanks @BunsDev. diff --git a/src/secrets/channel-contract-api.external.test.ts b/src/secrets/channel-contract-api.external.test.ts index 47a4b9a16ad..8fff506a62c 100644 --- a/src/secrets/channel-contract-api.external.test.ts +++ b/src/secrets/channel-contract-api.external.test.ts @@ -98,6 +98,66 @@ describe("external channel secret contract api", () => { expect(api?.collectRuntimeConfigAssignments).toBeTypeOf("function"); }); + it("loads dist/ secret-contract-api sidecars for compiled npm-published external channel plugins", () => { + const rootDir = makeTrackedTempDir("openclaw-channel-secret-contract-dist", tempDirs); + fs.mkdirSync(path.join(rootDir, "dist"), { recursive: true }); + fs.writeFileSync( + path.join(rootDir, "dist", "secret-contract-api.cjs"), + ` +module.exports = { + secretTargetRegistryEntries: [ + { + id: "channels.discord.token", + targetType: "channels.discord.token", + configFile: "openclaw.json", + pathPattern: "channels.discord.token", + secretShape: "secret_input", + expectedResolvedValue: "string", + includeInPlan: true, + includeInConfigure: true, + includeInAudit: true + } + ], + collectRuntimeConfigAssignments(params) { + params.context.assignments.push({ + path: "channels.discord.token", + ref: { source: "env", provider: "default", id: "DISCORD_BOT_TOKEN" }, + expected: "string", + apply() {} + }); + } +}; +`, + "utf8", + ); + const record = { + id: "discord", + origin: "global", + channels: ["discord"], + channelConfigs: {}, + rootDir, + }; + loadPluginMetadataSnapshotMock.mockReturnValue({ + plugins: [record], + }); + + const api = loadChannelSecretContractApi({ + channelId: "discord", + config: { channels: { discord: {} } }, + env: {}, + loadablePluginOrigins: new Map([["discord", "global"]]), + }); + + expect(api?.secretTargetRegistryEntries).toEqual( + expect.arrayContaining([ + expect.objectContaining({ + id: "channels.discord.token", + }), + ]), + ); + expect(api?.collectRuntimeConfigAssignments).toBeTypeOf("function"); + }); + it("skips external channel records outside the loadable plugin origin set", () => { const record = writeExternalChannelPlugin({ pluginId: "discord", channelId: "discord" }); loadPluginMetadataSnapshotMock.mockReturnValue({ diff --git a/src/secrets/channel-contract-api.ts b/src/secrets/channel-contract-api.ts index 9f97ff59e78..908b2d48e5b 100644 --- a/src/secrets/channel-contract-api.ts +++ b/src/secrets/channel-contract-api.ts @@ -87,16 +87,21 @@ function orderedContractApiExtensions(): readonly string[] { } function resolvePluginContractApiPath(rootDir: string): string | null { - for (const extension of orderedContractApiExtensions()) { - const candidate = path.join(rootDir, `secret-contract-api${extension}`); - if (fs.existsSync(candidate)) { - return candidate; - } - } - for (const extension of orderedContractApiExtensions()) { - const candidate = path.join(rootDir, `contract-api${extension}`); - if (fs.existsSync(candidate)) { - return candidate; + // Compiled npm-published plugins place their public artifacts under /dist/ + // (per package.json `openclaw.runtimeExtensions`), while flat-layout plugins keep + // them at /. Search both, preferring dist/ when running from built openclaw + // artifacts and rootDir/ when running from source. + const searchDirs = RUNNING_FROM_BUILT_ARTIFACT + ? [path.join(rootDir, "dist"), rootDir] + : [rootDir, path.join(rootDir, "dist")]; + for (const basename of ["secret-contract-api", "contract-api"]) { + for (const dir of searchDirs) { + for (const extension of orderedContractApiExtensions()) { + const candidate = path.join(dir, `${basename}${extension}`); + if (fs.existsSync(candidate)) { + return candidate; + } + } } } return null; From 8ee08b2b77a5b1436542966a93f4fd89f2c1a9f5 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Mon, 4 May 2026 23:06:49 +0100 Subject: [PATCH 5/6] chore: update dependencies --- CHANGELOG.md | 1 + extensions/acpx/package.json | 4 +- extensions/acpx/skills/acp-router/SKILL.md | 4 +- extensions/acpx/src/codex-auth-bridge.test.ts | 4 +- extensions/acpx/src/codex-auth-bridge.ts | 18 +- extensions/acpx/src/manifest.test.ts | 4 +- extensions/acpx/src/runtime.test.ts | 4 +- extensions/amazon-bedrock-mantle/package.json | 4 +- extensions/amazon-bedrock/package.json | 4 +- extensions/anthropic-vertex/package.json | 4 +- extensions/anthropic/package.json | 2 +- extensions/bonjour/package.json | 2 +- extensions/browser/package.json | 2 +- extensions/codex/package.json | 4 +- extensions/discord/package.json | 2 +- extensions/fireworks/package.json | 2 +- extensions/github-copilot/package.json | 2 +- extensions/google/package.json | 2 +- extensions/googlechat/package.json | 2 +- extensions/kimi-coding/package.json | 2 +- extensions/lmstudio/package.json | 2 +- extensions/memory-lancedb/package.json | 2 +- extensions/memory-wiki/package.json | 2 +- extensions/migrate-hermes/package.json | 2 +- extensions/nextcloud-talk/package.json | 2 +- extensions/nostr/package.json | 2 +- extensions/ollama/package.json | 2 +- extensions/openai/openclaw.plugin.test.ts | 2 +- extensions/openai/package.json | 2 +- extensions/qa-lab/package.json | 6 +- extensions/qa-matrix/package.json | 2 +- extensions/qqbot/package.json | 2 +- extensions/slack/package.json | 4 +- extensions/synology-chat/package.json | 2 +- extensions/telegram/package.json | 2 +- extensions/tlon/package.json | 4 +- extensions/webhooks/package.json | 2 +- extensions/whatsapp/package.json | 2 +- extensions/xai/package.json | 2 +- extensions/zalo/package.json | 2 +- package.json | 38 +- ...ntprotocol__claude-agent-acp@0.32.0.patch} | 10 +- pnpm-lock.yaml | 811 +++++++++--------- ...-embedded-subscribe.handlers.tools.test.ts | 42 + .../pi-embedded-subscribe.handlers.tools.ts | 6 +- 45 files changed, 552 insertions(+), 476 deletions(-) rename patches/{@agentclientprotocol__claude-agent-acp@0.31.4.patch => @agentclientprotocol__claude-agent-acp@0.32.0.patch} (82%) diff --git a/CHANGELOG.md b/CHANGELOG.md index ae545c7c722..101b3d967e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ Docs: https://docs.openclaw.ai ### Changes +- Dependencies: refresh runtime and provider packages including Pi 0.73.0, ACPX adapters, OpenAI, Anthropic, Slack, and TypeScript native preview, while keeping the Bedrock runtime installer override pinned below the Windows ARM Node 24 npm resolver failure. - Plugins/active-memory: skip session-store channel entries that contain `:` when resolving the recall subagent's channel, so QQ c2c agent IDs (e.g. `c2c:10D4F7C2…`) and other scoped conversation IDs do not reach bundled-plugin `dirName` validation and crash the recall run. The same guard already applied to explicit `channelId` params (#76704); this extends it to store-derived channels. (#77396) Thanks @hclsys. - Secrets/external channel contracts: also look in `/dist/` when resolving the `secret-contract-api` sidecar, so npm-published externalized channel plugins (e.g. `@openclaw/discord` since 2026.5.2) whose compiled artifacts live under `dist/` actually contribute their channel SecretRef contracts to the runtime snapshot. Without this, env-backed `channels.discord.token` SecretRefs silently failed to resolve at gateway start on 2026.5.3, leaving the channel `not configured` even though #76449 had landed the generic external-contract loader. Thanks @mogglemoss. - Models/auth: add `openclaw models auth list [--provider ] [--json]` so users can inspect saved per-agent auth profiles without dumping secrets or hitting the old “too many arguments” path. Thanks @vincentkoc. diff --git a/extensions/acpx/package.json b/extensions/acpx/package.json index 7f5fe44bb5e..aef42a1ec98 100644 --- a/extensions/acpx/package.json +++ b/extensions/acpx/package.json @@ -8,8 +8,8 @@ }, "type": "module", "dependencies": { - "@agentclientprotocol/claude-agent-acp": "0.31.4", - "@zed-industries/codex-acp": "0.12.0", + "@agentclientprotocol/claude-agent-acp": "0.32.0", + "@zed-industries/codex-acp": "0.13.0", "acpx": "0.6.1" }, "devDependencies": { diff --git a/extensions/acpx/skills/acp-router/SKILL.md b/extensions/acpx/skills/acp-router/SKILL.md index 8ecfcb0d57e..9f8b7b5e304 100644 --- a/extensions/acpx/skills/acp-router/SKILL.md +++ b/extensions/acpx/skills/acp-router/SKILL.md @@ -211,8 +211,8 @@ ${ACPX_CMD} codex sessions close oc-codex- Defaults are: - `openclaw -> openclaw acp` -- `claude -> npx -y @agentclientprotocol/claude-agent-acp@^0.31.0` -- `codex -> bundled @zed-industries/codex-acp@0.12.0 through OpenClaw's isolated CODEX_HOME wrapper` +- `claude -> bundled @agentclientprotocol/claude-agent-acp@0.32.0` +- `codex -> bundled @zed-industries/codex-acp@0.13.0 through OpenClaw's isolated CODEX_HOME wrapper` - `copilot -> copilot --acp --stdio` - `cursor -> cursor-agent acp` - `droid -> droid exec --output-format acp` diff --git a/extensions/acpx/src/codex-auth-bridge.test.ts b/extensions/acpx/src/codex-auth-bridge.test.ts index 051c493647b..3dfee4a1401 100644 --- a/extensions/acpx/src/codex-auth-bridge.test.ts +++ b/extensions/acpx/src/codex-auth-bridge.test.ts @@ -163,7 +163,7 @@ describe("prepareAcpxCodexAuthConfig", () => { }); const wrapper = await fs.readFile(generated.wrapperPath, "utf8"); - expect(wrapper).toContain('"@zed-industries/codex-acp@^0.12.0"'); + expect(wrapper).toContain('"@zed-industries/codex-acp@0.13.0"'); expect(wrapper).toContain('"--", "codex-acp"'); expect(wrapper).not.toContain("@zed-industries/codex-acp@^0.11.1"); }); @@ -184,7 +184,7 @@ describe("prepareAcpxCodexAuthConfig", () => { }); const wrapper = await fs.readFile(generated.wrapperPath, "utf8"); - expect(wrapper).toContain('"@agentclientprotocol/claude-agent-acp@0.31.4"'); + expect(wrapper).toContain('"@agentclientprotocol/claude-agent-acp@0.32.0"'); expect(wrapper).toContain('"--", "claude-agent-acp"'); expect(wrapper).not.toContain("@agentclientprotocol/claude-agent-acp@^0.31.0"); expect(wrapper).not.toContain("@agentclientprotocol/claude-agent-acp@0.31.0"); diff --git a/extensions/acpx/src/codex-auth-bridge.ts b/extensions/acpx/src/codex-auth-bridge.ts index 05f5f87699d..30668a16af4 100644 --- a/extensions/acpx/src/codex-auth-bridge.ts +++ b/extensions/acpx/src/codex-auth-bridge.ts @@ -4,10 +4,8 @@ import path from "node:path"; import type { ResolvedAcpxPluginConfig } from "./config.js"; const CODEX_ACP_PACKAGE = "@zed-industries/codex-acp"; -const CODEX_ACP_PACKAGE_RANGE = "^0.12.0"; const CODEX_ACP_BIN = "codex-acp"; const CLAUDE_ACP_PACKAGE = "@agentclientprotocol/claude-agent-acp"; -const CLAUDE_ACP_PACKAGE_VERSION = "0.31.4"; const CLAUDE_ACP_BIN = "claude-agent-acp"; const RUN_CONFIGURED_COMMAND_SENTINEL = "--openclaw-run-configured"; const requireFromHere = createRequire(import.meta.url); @@ -15,8 +13,22 @@ const requireFromHere = createRequire(import.meta.url); type PackageManifest = { name?: unknown; bin?: unknown; + dependencies?: Record; }; +const selfManifest = requireFromHere("../package.json") as PackageManifest; + +function readManifestDependencyVersion(packageName: string): string { + const version = selfManifest.dependencies?.[packageName]; + if (typeof version !== "string" || version.trim() === "") { + throw new Error(`Missing ${packageName} dependency version in @openclaw/acpx manifest`); + } + return version; +} + +const CODEX_ACP_PACKAGE_VERSION = readManifestDependencyVersion(CODEX_ACP_PACKAGE); +const CLAUDE_ACP_PACKAGE_VERSION = readManifestDependencyVersion(CLAUDE_ACP_PACKAGE); + function quoteCommandPart(value: string): string { return JSON.stringify(value); } @@ -205,7 +217,7 @@ child.on("exit", (code, signal) => { function buildCodexAcpWrapperScript(installedBinPath?: string): string { return buildAdapterWrapperScript({ displayName: "Codex", - packageSpec: `${CODEX_ACP_PACKAGE}@${CODEX_ACP_PACKAGE_RANGE}`, + packageSpec: `${CODEX_ACP_PACKAGE}@${CODEX_ACP_PACKAGE_VERSION}`, binName: CODEX_ACP_BIN, installedBinPath, envSetup: `const codexHome = fileURLToPath(new URL("./codex-home/", import.meta.url)); diff --git a/extensions/acpx/src/manifest.test.ts b/extensions/acpx/src/manifest.test.ts index 8e9e3ee30d9..f43df0315b0 100644 --- a/extensions/acpx/src/manifest.test.ts +++ b/extensions/acpx/src/manifest.test.ts @@ -13,8 +13,8 @@ describe("acpx package manifest", () => { ) as AcpxPackageManifest; expect(packageJson.dependencies?.acpx).toBeDefined(); - expect(packageJson.dependencies?.["@zed-industries/codex-acp"]).toBe("0.12.0"); - expect(packageJson.dependencies?.["@agentclientprotocol/claude-agent-acp"]).toBe("0.31.4"); + expect(packageJson.dependencies?.["@zed-industries/codex-acp"]).toBe("0.13.0"); + expect(packageJson.dependencies?.["@agentclientprotocol/claude-agent-acp"]).toBe("0.32.0"); expect(packageJson.devDependencies?.["@agentclientprotocol/claude-agent-acp"]).toBeUndefined(); }); }); diff --git a/extensions/acpx/src/runtime.test.ts b/extensions/acpx/src/runtime.test.ts index 3d74c9216b3..ca7e1ccda40 100644 --- a/extensions/acpx/src/runtime.test.ts +++ b/extensions/acpx/src/runtime.test.ts @@ -9,7 +9,7 @@ type TestSessionStore = { const DOCUMENTED_OPENCLAW_BRIDGE_COMMAND = "env OPENCLAW_HIDE_BANNER=1 OPENCLAW_SUPPRESS_NOTES=1 openclaw acp --url ws://127.0.0.1:18789 --token-file ~/.openclaw/gateway.token --session agent:main:main"; -const CODEX_ACP_COMMAND = "npx @zed-industries/codex-acp@^0.12.0"; +const CODEX_ACP_COMMAND = "npx @zed-industries/codex-acp@0.13.0"; const CODEX_ACP_WRAPPER_COMMAND = `node "/tmp/openclaw/acpx/codex-acp-wrapper.mjs"`; function makeRuntime( @@ -226,7 +226,7 @@ describe("AcpxRuntime fresh reset wrapper", () => { reasoningEffort: "medium", }), ).toBe( - "npx @zed-industries/codex-acp@^0.12.0 -c model=gpt-5.4 -c model_reasoning_effort=medium", + "npx @zed-industries/codex-acp@0.13.0 -c model=gpt-5.4 -c model_reasoning_effort=medium", ); expect(__testing.isCodexAcpCommand("openclaw acp")).toBe(false); }); diff --git a/extensions/amazon-bedrock-mantle/package.json b/extensions/amazon-bedrock-mantle/package.json index 052738fef02..5a21065f8fa 100644 --- a/extensions/amazon-bedrock-mantle/package.json +++ b/extensions/amazon-bedrock-mantle/package.json @@ -5,9 +5,9 @@ "description": "OpenClaw Amazon Bedrock Mantle (OpenAI-compatible) provider plugin", "type": "module", "dependencies": { - "@anthropic-ai/sdk": "0.92.0", + "@anthropic-ai/sdk": "0.93.0", "@aws/bedrock-token-generator": "^1.1.0", - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-ai": "0.73.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/amazon-bedrock/package.json b/extensions/amazon-bedrock/package.json index 2cc1469ceea..ab2b0ea2bb2 100644 --- a/extensions/amazon-bedrock/package.json +++ b/extensions/amazon-bedrock/package.json @@ -5,8 +5,8 @@ "description": "OpenClaw Amazon Bedrock provider plugin", "type": "module", "dependencies": { - "@aws-sdk/client-bedrock": "3.1041.0", - "@aws-sdk/client-bedrock-runtime": "3.1041.0", + "@aws-sdk/client-bedrock": "3.1042.0", + "@aws-sdk/client-bedrock-runtime": "3.1042.0", "@aws-sdk/credential-provider-node": "3.972.39" }, "devDependencies": { diff --git a/extensions/anthropic-vertex/package.json b/extensions/anthropic-vertex/package.json index 63dd29426b4..1e182a6cbf1 100644 --- a/extensions/anthropic-vertex/package.json +++ b/extensions/anthropic-vertex/package.json @@ -6,8 +6,8 @@ "type": "module", "dependencies": { "@anthropic-ai/vertex-sdk": "^0.16.0", - "@mariozechner/pi-agent-core": "0.71.1", - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-agent-core": "0.73.0", + "@mariozechner/pi-ai": "0.73.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/anthropic/package.json b/extensions/anthropic/package.json index c311cc15527..9f9b47d6b42 100644 --- a/extensions/anthropic/package.json +++ b/extensions/anthropic/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Anthropic provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-ai": "0.73.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/bonjour/package.json b/extensions/bonjour/package.json index c0eab7e0f0b..8dc12d8fb00 100644 --- a/extensions/bonjour/package.json +++ b/extensions/bonjour/package.json @@ -4,7 +4,7 @@ "description": "OpenClaw Bonjour/mDNS gateway discovery", "type": "module", "dependencies": { - "@homebridge/ciao": "^1.3.7" + "@homebridge/ciao": "^1.3.8" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/browser/package.json b/extensions/browser/package.json index e295cee0c13..a46d5450012 100644 --- a/extensions/browser/package.json +++ b/extensions/browser/package.json @@ -14,7 +14,7 @@ }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", - "undici": "8.1.0" + "undici": "8.2.0" }, "openclaw": { "extensions": [ diff --git a/extensions/codex/package.json b/extensions/codex/package.json index e17fe4f3d7b..7653fc282fd 100644 --- a/extensions/codex/package.json +++ b/extensions/codex/package.json @@ -8,11 +8,11 @@ }, "type": "module", "dependencies": { - "@mariozechner/pi-coding-agent": "0.71.1", + "@mariozechner/pi-coding-agent": "0.73.0", "@openai/codex": "0.128.0", "ajv": "^8.20.0", "ws": "^8.20.0", - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/discord/package.json b/extensions/discord/package.json index 8add267074c..8df832be851 100644 --- a/extensions/discord/package.json +++ b/extensions/discord/package.json @@ -13,7 +13,7 @@ "https-proxy-agent": "^9.0.0", "opusscript": "^0.1.1", "typebox": "1.1.37", - "undici": "8.1.0", + "undici": "8.2.0", "ws": "^8.20.0" }, "devDependencies": { diff --git a/extensions/fireworks/package.json b/extensions/fireworks/package.json index 233e2738ff0..d31dc7ed2ea 100644 --- a/extensions/fireworks/package.json +++ b/extensions/fireworks/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Fireworks provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-ai": "0.73.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/github-copilot/package.json b/extensions/github-copilot/package.json index f5abdf96f46..08193f611a1 100644 --- a/extensions/github-copilot/package.json +++ b/extensions/github-copilot/package.json @@ -8,7 +8,7 @@ "@clack/prompts": "^1.3.0" }, "devDependencies": { - "@mariozechner/pi-ai": "0.71.1", + "@mariozechner/pi-ai": "0.73.0", "@openclaw/plugin-sdk": "workspace:*" }, "openclaw": { diff --git a/extensions/google/package.json b/extensions/google/package.json index 2b8da51f2dc..39f90c9207f 100644 --- a/extensions/google/package.json +++ b/extensions/google/package.json @@ -6,7 +6,7 @@ "type": "module", "dependencies": { "@google/genai": "^1.51.0", - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-ai": "0.73.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/googlechat/package.json b/extensions/googlechat/package.json index 05c3bef7153..ea2fac4063a 100644 --- a/extensions/googlechat/package.json +++ b/extensions/googlechat/package.json @@ -10,7 +10,7 @@ "dependencies": { "gaxios": "7.1.4", "google-auth-library": "10.6.2", - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/kimi-coding/package.json b/extensions/kimi-coding/package.json index 79ee8572373..d9d114107ec 100644 --- a/extensions/kimi-coding/package.json +++ b/extensions/kimi-coding/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Kimi provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-ai": "0.73.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/lmstudio/package.json b/extensions/lmstudio/package.json index dae65f824a8..1570a48a2ee 100644 --- a/extensions/lmstudio/package.json +++ b/extensions/lmstudio/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw LM Studio provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1" + "@mariozechner/pi-ai": "0.73.0" }, "openclaw": { "extensions": [ diff --git a/extensions/memory-lancedb/package.json b/extensions/memory-lancedb/package.json index 18776511d3c..91d16cdce98 100644 --- a/extensions/memory-lancedb/package.json +++ b/extensions/memory-lancedb/package.json @@ -10,7 +10,7 @@ "dependencies": { "@lancedb/lancedb": "^0.27.2", "apache-arrow": "18.1.0", - "openai": "^6.35.0", + "openai": "^6.36.0", "typebox": "1.1.37" }, "devDependencies": { diff --git a/extensions/memory-wiki/package.json b/extensions/memory-wiki/package.json index aaf48c0ec07..adf0eafeb72 100644 --- a/extensions/memory-wiki/package.json +++ b/extensions/memory-wiki/package.json @@ -6,7 +6,7 @@ "type": "module", "dependencies": { "typebox": "1.1.37", - "yaml": "^2.8.3" + "yaml": "^2.8.4" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/migrate-hermes/package.json b/extensions/migrate-hermes/package.json index 8545f784842..30e5e6b5f3a 100644 --- a/extensions/migrate-hermes/package.json +++ b/extensions/migrate-hermes/package.json @@ -5,7 +5,7 @@ "description": "Hermes to OpenClaw migration provider", "type": "module", "dependencies": { - "yaml": "^2.8.3" + "yaml": "^2.8.4" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/nextcloud-talk/package.json b/extensions/nextcloud-talk/package.json index de1cded5b29..f7982b43033 100644 --- a/extensions/nextcloud-talk/package.json +++ b/extensions/nextcloud-talk/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/nostr/package.json b/extensions/nostr/package.json index 4af0a36a2c5..b21602a182d 100644 --- a/extensions/nostr/package.json +++ b/extensions/nostr/package.json @@ -9,7 +9,7 @@ "type": "module", "dependencies": { "nostr-tools": "^2.23.3", - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/ollama/package.json b/extensions/ollama/package.json index e316c09a8d6..029c19ce174 100644 --- a/extensions/ollama/package.json +++ b/extensions/ollama/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Ollama provider plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1", + "@mariozechner/pi-ai": "0.73.0", "typebox": "1.1.37" }, "devDependencies": { diff --git a/extensions/openai/openclaw.plugin.test.ts b/extensions/openai/openclaw.plugin.test.ts index 4580250244d..936d6d4c8fb 100644 --- a/extensions/openai/openclaw.plugin.test.ts +++ b/extensions/openai/openclaw.plugin.test.ts @@ -60,7 +60,7 @@ function providerWizardByKey() { describe("OpenAI plugin manifest", () => { it("keeps runtime dependencies in the package manifest", () => { - expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.71.1"); + expect(packageJson.dependencies?.["@mariozechner/pi-ai"]).toBe("0.73.0"); expect(packageJson.dependencies?.ws).toBe("^8.20.0"); }); diff --git a/extensions/openai/package.json b/extensions/openai/package.json index d01eddd8ad0..efc27b9df50 100644 --- a/extensions/openai/package.json +++ b/extensions/openai/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw OpenAI provider plugins", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1", + "@mariozechner/pi-ai": "0.73.0", "ws": "^8.20.0" }, "devDependencies": { diff --git a/extensions/qa-lab/package.json b/extensions/qa-lab/package.json index eb3d35f4ea4..0e9a1133e36 100644 --- a/extensions/qa-lab/package.json +++ b/extensions/qa-lab/package.json @@ -5,11 +5,11 @@ "description": "OpenClaw QA lab plugin with private debugger UI and scenario runner", "type": "module", "dependencies": { - "@copilotkit/aimock": "1.16.4", + "@copilotkit/aimock": "1.17.0", "@modelcontextprotocol/sdk": "1.29.0", "playwright-core": "1.59.1", - "yaml": "^2.8.3", - "zod": "^4.4.1" + "yaml": "^2.8.4", + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/discord": "workspace:*", diff --git a/extensions/qa-matrix/package.json b/extensions/qa-matrix/package.json index 2626a063e08..ffe54943230 100644 --- a/extensions/qa-matrix/package.json +++ b/extensions/qa-matrix/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Matrix QA runner plugin", "type": "module", "dependencies": { - "undici": "8.1.0" + "undici": "8.2.0" }, "devDependencies": { "@openclaw/matrix": "workspace:*", diff --git a/extensions/qqbot/package.json b/extensions/qqbot/package.json index f5e9f770eaa..fb645b248f2 100644 --- a/extensions/qqbot/package.json +++ b/extensions/qqbot/package.json @@ -13,7 +13,7 @@ "mpg123-decoder": "^1.0.3", "silk-wasm": "^3.7.1", "ws": "^8.20.0", - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/slack/package.json b/extensions/slack/package.json index c0554804967..926e5cd142f 100644 --- a/extensions/slack/package.json +++ b/extensions/slack/package.json @@ -6,8 +6,8 @@ "type": "module", "dependencies": { "@slack/bolt": "^4.7.2", - "@slack/types": "^2.20.1", - "@slack/web-api": "^7.15.1", + "@slack/types": "^2.21.0", + "@slack/web-api": "^7.15.2", "https-proxy-agent": "^9.0.0" }, "devDependencies": { diff --git a/extensions/synology-chat/package.json b/extensions/synology-chat/package.json index d6e3dab5db2..82894b63927 100644 --- a/extensions/synology-chat/package.json +++ b/extensions/synology-chat/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/telegram/package.json b/extensions/telegram/package.json index b5c6b5e1e71..b70a5dd6fa7 100644 --- a/extensions/telegram/package.json +++ b/extensions/telegram/package.json @@ -9,7 +9,7 @@ "@grammyjs/transformer-throttler": "^1.2.1", "grammy": "^1.42.0", "typebox": "1.1.37", - "undici": "8.1.0" + "undici": "8.2.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/tlon/package.json b/extensions/tlon/package.json index c5277de87f6..6ce6feec34b 100644 --- a/extensions/tlon/package.json +++ b/extensions/tlon/package.json @@ -8,8 +8,8 @@ }, "type": "module", "dependencies": { - "@aws-sdk/client-s3": "3.1041.0", - "@aws-sdk/s3-request-presigner": "3.1041.0", + "@aws-sdk/client-s3": "3.1042.0", + "@aws-sdk/s3-request-presigner": "3.1042.0", "@tloncorp/tlon-skill": "0.3.5", "@urbit/aura": "^3.0.0" }, diff --git a/extensions/webhooks/package.json b/extensions/webhooks/package.json index c6e23fbdbff..f22a6ba6ffd 100644 --- a/extensions/webhooks/package.json +++ b/extensions/webhooks/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw webhook bridge plugin", "type": "module", "dependencies": { - "zod": "^4.4.1" + "zod": "^4.4.3" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/whatsapp/package.json b/extensions/whatsapp/package.json index 9ced33efe05..1e0eec5a716 100644 --- a/extensions/whatsapp/package.json +++ b/extensions/whatsapp/package.json @@ -12,7 +12,7 @@ "https-proxy-agent": "^9.0.0", "jimp": "^1.6.1", "typebox": "1.1.37", - "undici": "8.1.0" + "undici": "8.2.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/xai/package.json b/extensions/xai/package.json index 9010e145bd4..91870caa2cc 100644 --- a/extensions/xai/package.json +++ b/extensions/xai/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw xAI plugin", "type": "module", "dependencies": { - "@mariozechner/pi-ai": "0.71.1", + "@mariozechner/pi-ai": "0.73.0", "typebox": "1.1.37" }, "devDependencies": { diff --git a/extensions/zalo/package.json b/extensions/zalo/package.json index 81f12da0dd3..b28ad2d1ca1 100644 --- a/extensions/zalo/package.json +++ b/extensions/zalo/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "undici": "8.1.0" + "undici": "8.2.0" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/package.json b/package.json index f6956d29d9b..c82af822f5c 100644 --- a/package.json +++ b/package.json @@ -1663,27 +1663,27 @@ }, "dependencies": { "@agentclientprotocol/sdk": "0.21.0", - "@anthropic-ai/sdk": "0.92.0", + "@anthropic-ai/sdk": "0.93.0", "@anthropic-ai/vertex-sdk": "^0.16.0", - "@aws-sdk/client-bedrock": "3.1041.0", - "@aws-sdk/client-bedrock-runtime": "3.1041.0", + "@aws-sdk/client-bedrock": "3.1042.0", + "@aws-sdk/client-bedrock-runtime": "3.1042.0", "@aws-sdk/credential-provider-node": "3.972.39", "@aws/bedrock-token-generator": "^1.1.0", "@clack/prompts": "^1.3.0", "@google/genai": "^1.51.0", "@grammyjs/runner": "^2.0.3", "@grammyjs/transformer-throttler": "^1.2.1", - "@homebridge/ciao": "^1.3.7", + "@homebridge/ciao": "^1.3.8", "@lydell/node-pty": "1.2.0-beta.12", - "@mariozechner/pi-agent-core": "0.71.1", - "@mariozechner/pi-ai": "0.71.1", - "@mariozechner/pi-coding-agent": "0.71.1", - "@mariozechner/pi-tui": "0.71.1", + "@mariozechner/pi-agent-core": "0.73.0", + "@mariozechner/pi-ai": "0.73.0", + "@mariozechner/pi-coding-agent": "0.73.0", + "@mariozechner/pi-tui": "0.73.0", "@modelcontextprotocol/sdk": "1.29.0", "@mozilla/readability": "^0.6.0", "@slack/bolt": "^4.7.2", - "@slack/types": "^2.20.1", - "@slack/web-api": "^7.15.1", + "@slack/types": "^2.21.0", + "@slack/web-api": "^7.15.2", "ajv": "^8.20.0", "chalk": "^5.6.2", "chokidar": "^5.0.0", @@ -1695,7 +1695,7 @@ "global-agent": "^4.1.3", "grammy": "^1.42.0", "https-proxy-agent": "^9.0.0", - "ipaddr.js": "^2.3.0", + "ipaddr.js": "^2.4.0", "jiti": "^2.6.1", "json5": "^2.2.3", "jszip": "^3.10.1", @@ -1703,7 +1703,7 @@ "markdown-it": "14.1.1", "minimatch": "10.2.5", "node-edge-tts": "^1.2.10", - "openai": "^6.35.0", + "openai": "^6.36.0", "openshell": "0.1.0", "pdfjs-dist": "^5.7.284", "playwright-core": "1.59.1", @@ -1714,15 +1714,15 @@ "tree-sitter-bash": "^0.25.1", "tslog": "^4.10.2", "typebox": "1.1.37", - "undici": "8.1.0", + "undici": "8.2.0", "web-push": "^3.6.7", "web-tree-sitter": "^0.26.8", "ws": "^8.20.0", - "yaml": "^2.8.3", - "zod": "^4.4.1" + "yaml": "^2.8.4", + "zod": "^4.4.3" }, "devDependencies": { - "@copilotkit/aimock": "1.16.4", + "@copilotkit/aimock": "1.17.0", "@grammyjs/types": "^3.26.0", "@lit-labs/signals": "^0.2.0", "@lit/context": "^1.1.6", @@ -1731,7 +1731,7 @@ "@types/markdown-it": "^14.1.2", "@types/node": "25.6.0", "@types/ws": "^8.18.1", - "@typescript/native-preview": "7.0.0-dev.20260501.1", + "@typescript/native-preview": "7.0.0-dev.20260504.1", "@vitest/coverage-v8": "^4.1.5", "jscpd": "4.0.9", "jsdom": "^29.1.1", @@ -1761,7 +1761,7 @@ "packageManager": "pnpm@10.33.2+sha512.a90faf6feeab71ad6c6e57f94e0fe1a12f5dcc22cd754db40ae9593eb6a3e0b6b12e3540218bb37ae083404b1f2ce6db2a4121e979829b4aff94b99f49da1cf8", "pnpm": { "overrides": { - "@anthropic-ai/sdk": "0.92.0", + "@anthropic-ai/sdk": "0.93.0", "hono": "4.12.14", "@hono/node-server": "1.19.14", "@aws-sdk/client-bedrock-runtime": "3.1024.0", @@ -1818,7 +1818,7 @@ }, "patchedDependencies": { "@whiskeysockets/baileys@7.0.0-rc.9": "patches/@whiskeysockets__baileys@7.0.0-rc.9.patch", - "@agentclientprotocol/claude-agent-acp@0.31.4": "patches/@agentclientprotocol__claude-agent-acp@0.31.4.patch" + "@agentclientprotocol/claude-agent-acp@0.32.0": "patches/@agentclientprotocol__claude-agent-acp@0.32.0.patch" } } } diff --git a/patches/@agentclientprotocol__claude-agent-acp@0.31.4.patch b/patches/@agentclientprotocol__claude-agent-acp@0.32.0.patch similarity index 82% rename from patches/@agentclientprotocol__claude-agent-acp@0.31.4.patch rename to patches/@agentclientprotocol__claude-agent-acp@0.32.0.patch index a765f36823f..3e228a51a5c 100644 --- a/patches/@agentclientprotocol__claude-agent-acp@0.31.4.patch +++ b/patches/@agentclientprotocol__claude-agent-acp@0.32.0.patch @@ -1,8 +1,8 @@ diff --git a/dist/acp-agent.js b/dist/acp-agent.js -index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b5acb79ca 100644 +index e1d9aa9f0815f57ea2fd299a7f2b8ef0917ca191..875fdfb25fbfa905ca80728355d25a17e6d89148 100644 --- a/dist/acp-agent.js +++ b/dist/acp-agent.js -@@ -421,6 +421,7 @@ export class ClaudeAcpAgent { +@@ -436,6 +436,7 @@ export class ClaudeAcpAgent { session.promptRunning = true; let handedOff = false; let stopReason = "end_turn"; @@ -10,7 +10,7 @@ index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b try { while (true) { const { value: message, done } = await session.query.next(); -@@ -428,6 +429,9 @@ export class ClaudeAcpAgent { +@@ -443,6 +444,9 @@ export class ClaudeAcpAgent { if (session.cancelled) { return { stopReason: "cancelled" }; } @@ -20,7 +20,7 @@ index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b break; } if (session.emitRawSDKMessages && -@@ -496,7 +500,7 @@ export class ClaudeAcpAgent { +@@ -499,7 +503,7 @@ export class ClaudeAcpAgent { break; } case "session_state_changed": { @@ -29,7 +29,7 @@ index 0a8f5e3c57ed05189cba546bd65fc18143744d09..a8522d86a5a2f1bbcdd446d222cb9b7b return { stopReason, usage: sessionUsage(session) }; } break; -@@ -601,6 +605,7 @@ export class ClaudeAcpAgent { +@@ -621,6 +625,7 @@ export class ClaudeAcpAgent { unreachable(message, this.logger); break; } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4b40ba19b7e..dc35dae2bd6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,7 +5,7 @@ settings: excludeLinksFromLockfile: false overrides: - '@anthropic-ai/sdk': 0.92.0 + '@anthropic-ai/sdk': 0.93.0 hono: 4.12.14 '@hono/node-server': 1.19.14 '@aws-sdk/client-bedrock-runtime': 3.1024.0 @@ -32,9 +32,9 @@ overrides: packageExtensionsChecksum: sha256-n+P/SQo4Pf+dHYpYn1Y6wL4cJEVoVzZ835N0OEp4TM8= patchedDependencies: - '@agentclientprotocol/claude-agent-acp@0.31.4': - hash: e8b472d71289ac8de9813c57d79abac524889ca96f279f6f3ad08043434f6615 - path: patches/@agentclientprotocol__claude-agent-acp@0.31.4.patch + '@agentclientprotocol/claude-agent-acp@0.32.0': + hash: 1fe782f9679d7a725cbe59e51d61419fbb25d4c463d186c43c95644770cb2b98 + path: patches/@agentclientprotocol__claude-agent-acp@0.32.0.patch '@whiskeysockets/baileys@7.0.0-rc.9': hash: 23ec8efe1484afa57c51b96955ba331d1467521a8e676a18c2690da7e70a6201 path: patches/@whiskeysockets__baileys@7.0.0-rc.9.patch @@ -45,16 +45,16 @@ importers: dependencies: '@agentclientprotocol/sdk': specifier: 0.21.0 - version: 0.21.0(zod@4.4.1) + version: 0.21.0(zod@4.4.3) '@anthropic-ai/sdk': - specifier: 0.92.0 - version: 0.92.0(zod@4.4.1) + specifier: 0.93.0 + version: 0.93.0(zod@4.4.3) '@anthropic-ai/vertex-sdk': specifier: ^0.16.0 - version: 0.16.0(zod@4.4.1) + version: 0.16.0(zod@4.4.3) '@aws-sdk/client-bedrock': - specifier: 3.1041.0 - version: 3.1041.0 + specifier: 3.1042.0 + version: 3.1042.0 '@aws-sdk/client-bedrock-runtime': specifier: 3.1024.0 version: 3.1024.0 @@ -69,7 +69,7 @@ importers: version: 1.3.0 '@google/genai': specifier: ^1.51.0 - version: 1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1)) + version: 1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) '@grammyjs/runner': specifier: ^2.0.3 version: 2.0.3(grammy@1.42.0) @@ -77,26 +77,26 @@ importers: specifier: ^1.2.1 version: 1.2.1(grammy@1.42.0) '@homebridge/ciao': - specifier: ^1.3.7 - version: 1.3.7 + specifier: ^1.3.8 + version: 1.3.8 '@lydell/node-pty': specifier: 1.2.0-beta.12 version: 1.2.0-beta.12 '@mariozechner/pi-agent-core': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@mariozechner/pi-coding-agent': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@mariozechner/pi-tui': - specifier: 0.71.1 - version: 0.71.1 + specifier: 0.73.0 + version: 0.73.0 '@modelcontextprotocol/sdk': specifier: 1.29.0 - version: 1.29.0(zod@4.4.1) + version: 1.29.0(zod@4.4.3) '@mozilla/readability': specifier: ^0.6.0 version: 0.6.0 @@ -104,11 +104,11 @@ importers: specifier: ^4.7.2 version: 4.7.2(@types/express@5.0.6) '@slack/types': - specifier: ^2.20.1 - version: 2.20.1 + specifier: ^2.21.0 + version: 2.21.0 '@slack/web-api': - specifier: ^7.15.1 - version: 7.15.1 + specifier: ^7.15.2 + version: 7.15.2 ajv: specifier: ^8.20.0 version: 8.20.0 @@ -143,8 +143,8 @@ importers: specifier: ^9.0.0 version: 9.0.0 ipaddr.js: - specifier: ^2.3.0 - version: 2.3.0 + specifier: ^2.4.0 + version: 2.4.0 jiti: specifier: ^2.6.1 version: 2.6.1 @@ -167,8 +167,8 @@ importers: specifier: ^1.2.10 version: 1.2.10 openai: - specifier: ^6.35.0 - version: 6.35.0(ws@8.20.0)(zod@4.4.1) + specifier: ^6.36.0 + version: 6.36.0(ws@8.20.0)(zod@4.4.3) openshell: specifier: 0.1.0 version: 0.1.0 @@ -200,8 +200,8 @@ importers: specifier: 1.1.37 version: 1.1.37 undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 web-push: specifier: ^3.6.7 version: 3.6.7 @@ -212,19 +212,15 @@ importers: specifier: ^8.20.0 version: 8.20.0 yaml: - specifier: ^2.8.3 - version: 2.8.3 + specifier: ^2.8.4 + version: 2.8.4 zod: - specifier: ^4.4.1 - version: 4.4.1 - optionalDependencies: - sqlite-vec: - specifier: 0.1.9 - version: 0.1.9 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@copilotkit/aimock': - specifier: 1.16.4 - version: 1.16.4(vitest@4.1.5) + specifier: 1.17.0 + version: 1.17.0(vitest@4.1.5) '@grammyjs/types': specifier: ^3.26.0 version: 3.26.0 @@ -250,8 +246,8 @@ importers: specifier: ^8.18.1 version: 8.18.1 '@typescript/native-preview': - specifier: 7.0.0-dev.20260501.1 - version: 7.0.0-dev.20260501.1 + specifier: 7.0.0-dev.20260504.1 + version: 7.0.0-dev.20260504.1 '@vitest/coverage-v8': specifier: ^4.1.5 version: 4.1.5(@vitest/browser@4.1.5)(vitest@4.1.5) @@ -278,7 +274,7 @@ importers: version: 0.21.1(signal-polyfill@0.2.2) tsdown: specifier: 0.21.10 - version: 0.21.10(@typescript/native-preview@7.0.0-dev.20260501.1)(typescript@6.0.3) + version: 0.21.10(@typescript/native-preview@7.0.0-dev.20260504.1)(typescript@6.0.3) tsx: specifier: ^4.21.0 version: 4.21.0 @@ -287,16 +283,20 @@ importers: version: 6.0.3 vitest: specifier: ^4.1.5 - version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) + optionalDependencies: + sqlite-vec: + specifier: 0.1.9 + version: 0.1.9 extensions/acpx: dependencies: '@agentclientprotocol/claude-agent-acp': - specifier: 0.31.4 - version: 0.31.4(patch_hash=e8b472d71289ac8de9813c57d79abac524889ca96f279f6f3ad08043434f6615) + specifier: 0.32.0 + version: 0.32.0(patch_hash=1fe782f9679d7a725cbe59e51d61419fbb25d4c463d186c43c95644770cb2b98) '@zed-industries/codex-acp': - specifier: 0.12.0 - version: 0.12.0 + specifier: 0.13.0 + version: 0.13.0 acpx: specifier: 0.6.1 version: 0.6.1 @@ -314,8 +314,8 @@ importers: extensions/amazon-bedrock: dependencies: '@aws-sdk/client-bedrock': - specifier: 3.1041.0 - version: 3.1041.0 + specifier: 3.1042.0 + version: 3.1042.0 '@aws-sdk/client-bedrock-runtime': specifier: 3.1024.0 version: 3.1024.0 @@ -330,14 +330,14 @@ importers: extensions/amazon-bedrock-mantle: dependencies: '@anthropic-ai/sdk': - specifier: 0.92.0 - version: 0.92.0(zod@4.4.1) + specifier: 0.93.0 + version: 0.93.0(zod@4.4.3) '@aws/bedrock-token-generator': specifier: ^1.1.0 version: 1.1.0 '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -346,8 +346,8 @@ importers: extensions/anthropic: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -357,13 +357,13 @@ importers: dependencies: '@anthropic-ai/vertex-sdk': specifier: ^0.16.0 - version: 0.16.0(zod@4.4.1) + version: 0.16.0(zod@4.4.3) '@mariozechner/pi-agent-core': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -393,8 +393,8 @@ importers: extensions/bonjour: dependencies: '@homebridge/ciao': - specifier: ^1.3.7 - version: 1.3.7 + specifier: ^1.3.8 + version: 1.3.8 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -410,7 +410,7 @@ importers: dependencies: '@modelcontextprotocol/sdk': specifier: 1.29.0 - version: 1.29.0(zod@4.4.1) + version: 1.29.0(zod@4.4.3) commander: specifier: ^14.0.3 version: 14.0.3 @@ -431,8 +431,8 @@ importers: specifier: workspace:* version: link:../../packages/plugin-sdk undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 extensions/byteplus: devDependencies: @@ -461,8 +461,8 @@ importers: extensions/codex: dependencies: '@mariozechner/pi-coding-agent': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@openai/codex': specifier: 0.128.0 version: 0.128.0 @@ -473,8 +473,8 @@ importers: specifier: ^8.20.0 version: 8.20.0 zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -593,8 +593,8 @@ importers: specifier: 1.1.37 version: 1.1.37 undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 ws: specifier: ^8.20.0 version: 8.20.0 @@ -685,8 +685,8 @@ importers: extensions/fireworks: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -699,8 +699,8 @@ importers: version: 1.3.0 devDependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) '@openclaw/plugin-sdk': specifier: workspace:* version: link:../../packages/plugin-sdk @@ -709,10 +709,10 @@ importers: dependencies: '@google/genai': specifier: ^1.51.0 - version: 1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1)) + version: 1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -743,8 +743,8 @@ importers: specifier: 10.6.2 version: 10.6.2 zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -804,8 +804,8 @@ importers: extensions/kimi-coding: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -846,8 +846,8 @@ importers: extensions/lmstudio: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) extensions/lobster: dependencies: @@ -944,8 +944,8 @@ importers: specifier: 18.1.0 version: 18.1.0 openai: - specifier: ^6.35.0 - version: 6.35.0(ws@8.20.0)(zod@4.4.1) + specifier: ^6.36.0 + version: 6.36.0(ws@8.20.0)(zod@4.4.3) typebox: specifier: 1.1.37 version: 1.1.37 @@ -960,8 +960,8 @@ importers: specifier: 1.1.37 version: 1.1.37 yaml: - specifier: ^2.8.3 - version: 2.8.3 + specifier: ^2.8.4 + version: 2.8.4 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -998,8 +998,8 @@ importers: extensions/migrate-hermes: dependencies: yaml: - specifier: ^2.8.3 - version: 2.8.3 + specifier: ^2.8.4 + version: 2.8.4 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1063,8 +1063,8 @@ importers: extensions/nextcloud-talk: dependencies: zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1079,8 +1079,8 @@ importers: specifier: ^2.23.3 version: 2.23.3(typescript@6.0.3) zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1098,8 +1098,8 @@ importers: extensions/ollama: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) typebox: specifier: 1.1.37 version: 1.1.37 @@ -1117,8 +1117,8 @@ importers: extensions/openai: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) ws: specifier: ^8.20.0 version: 8.20.0 @@ -1177,20 +1177,20 @@ importers: extensions/qa-lab: dependencies: '@copilotkit/aimock': - specifier: 1.16.4 - version: 1.16.4(vitest@4.1.5) + specifier: 1.17.0 + version: 1.17.0(vitest@4.1.5) '@modelcontextprotocol/sdk': specifier: 1.29.0 - version: 1.29.0(zod@4.4.1) + version: 1.29.0(zod@4.4.3) playwright-core: specifier: 1.59.1 version: 1.59.1 yaml: - specifier: ^2.8.3 - version: 2.8.3 + specifier: ^2.8.4 + version: 2.8.4 zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/discord': specifier: workspace:* @@ -1208,8 +1208,8 @@ importers: extensions/qa-matrix: dependencies: undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 devDependencies: '@openclaw/matrix': specifier: workspace:* @@ -1242,8 +1242,8 @@ importers: specifier: ^8.20.0 version: 8.20.0 zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1307,11 +1307,11 @@ importers: specifier: ^4.7.2 version: 4.7.2(@types/express@5.0.6) '@slack/types': - specifier: ^2.20.1 - version: 2.20.1 + specifier: ^2.21.0 + version: 2.21.0 '@slack/web-api': - specifier: ^7.15.1 - version: 7.15.1 + specifier: ^7.15.2 + version: 7.15.2 https-proxy-agent: specifier: ^9.0.0 version: 9.0.0 @@ -1335,8 +1335,8 @@ importers: extensions/synology-chat: dependencies: zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1373,8 +1373,8 @@ importers: specifier: 1.1.37 version: 1.1.37 undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1389,11 +1389,11 @@ importers: extensions/tlon: dependencies: '@aws-sdk/client-s3': - specifier: 3.1041.0 - version: 3.1041.0 + specifier: 3.1042.0 + version: 3.1042.0 '@aws-sdk/s3-request-presigner': - specifier: 3.1041.0 - version: 3.1041.0 + specifier: 3.1042.0 + version: 3.1042.0 '@tloncorp/tlon-skill': specifier: 0.3.5 version: 0.3.5 @@ -1523,8 +1523,8 @@ importers: extensions/webhooks: dependencies: zod: - specifier: ^4.4.1 - version: 4.4.1 + specifier: ^4.4.3 + version: 4.4.3 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1545,8 +1545,8 @@ importers: specifier: 1.1.37 version: 1.1.37 undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1558,8 +1558,8 @@ importers: extensions/xai: dependencies: '@mariozechner/pi-ai': - specifier: 0.71.1 - version: 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + specifier: 0.73.0 + version: 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) typebox: specifier: 1.1.37 version: 1.1.37 @@ -1586,8 +1586,8 @@ importers: extensions/zalo: dependencies: undici: - specifier: 8.1.0 - version: 8.1.0 + specifier: 8.2.0 + version: 8.2.0 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1652,7 +1652,7 @@ importers: version: 14.1.2 '@vitest/browser-playwright': specifier: 4.1.5 - version: 4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.5) + version: 4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) jsdom: specifier: ^29.1.1 version: 29.1.1(@noble/hashes@2.0.1) @@ -1661,15 +1661,15 @@ importers: version: 1.59.1 vite: specifier: 8.0.10 - version: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + version: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4) vitest: specifier: 4.1.5 - version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + version: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) packages: - '@agentclientprotocol/claude-agent-acp@0.31.4': - resolution: {integrity: sha512-Ge2qzNN7vXQje0H+xoPhcRToubgdkgpY/YoqNSeJGpx8S90V/uposdsE+OSgIA+4nHcUEbgV9OmCiIqpyEsA9g==} + '@agentclientprotocol/claude-agent-acp@0.32.0': + resolution: {integrity: sha512-3WIaD1bTmIciqHdeU97oeNajOG9H+ctloXnQ+R/T563C2CM8u1K7QsNqqgqR2F+Cn8NVBkXdHRvAMtUHglLzAw==} hasBin: true '@agentclientprotocol/sdk@0.20.0': @@ -1682,58 +1682,58 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.2.121': - resolution: {integrity: sha512-zVHcXvx6Hl/glDcOCH+EyNx4KPE9cMGLk42eEBSZe014tAN5W8bwM/By08iM6dxijnpH0NQRNNEAW+BryWzuDg==} + '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.2.126': + resolution: {integrity: sha512-JFlJBbeAlx7Ic5s4lGUN9SppobryXk/lIqPCvhp6KrJTQIerh3MIBzxsVIJ0MaDut7jVni/oYgsvDni7NIyqHA==} cpu: [arm64] os: [darwin] - '@anthropic-ai/claude-agent-sdk-darwin-x64@0.2.121': - resolution: {integrity: sha512-lIXdqKj+bpfDxCk/eU1F1TXNqsIsLTRrkUG/wx19WIGZ8gLUmmVSveUKGlNegTs7S6evMvuezprJzDJT4TcvPA==} + '@anthropic-ai/claude-agent-sdk-darwin-x64@0.2.126': + resolution: {integrity: sha512-J8BpMj16NK9FUaG3HnHSivyp4Xww9DKWHiC8QSHT9oiT8pH5IG7nl0jxyjIq/lY79evlTY+ubgDVWlMUhUAN/g==} cpu: [x64] os: [darwin] - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.2.121': - resolution: {integrity: sha512-4XaGK+dRBYy7krln7BrDG0WsdE6ejUSgHjWHlUGXoubFfZUvls4GSahLcYjJBArLi4dLnxKw8zEuiQguPAIbrw==} + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.2.126': + resolution: {integrity: sha512-GO0BnIUw3LQ3XAy+nipAabkN0GwQGPhHB6ITI4XLoR99fLHB3TA6WfyvTf0fnpxd25A+c/+UsAoxz4zBQaHlhA==} cpu: [arm64] os: [linux] libc: [musl] - '@anthropic-ai/claude-agent-sdk-linux-arm64@0.2.121': - resolution: {integrity: sha512-AQSnJzaiFvQpUPfO1tWLvsHgb6KNar4QYEQ/5/sk1itfgr3Fx9gxTreq43wX7AXSvkBX1QlDaP1aR1sfM/g/lQ==} + '@anthropic-ai/claude-agent-sdk-linux-arm64@0.2.126': + resolution: {integrity: sha512-LM+mnfQsgI+1i5mYZwIPDDf14NGBu5wbhzm5U8P11dCa2p8sXmKoWpkbO16BFM2NxeW44I/RXCxE5qFsbz4zcg==} cpu: [arm64] os: [linux] libc: [glibc] - '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.2.121': - resolution: {integrity: sha512-sQoGIgzLlBRrwizxsCV/lbaEuxXom/cfOwlDtQ2HnS1IzDDSjSf5d5pugpWItkOyXBWcHzMUu731WTTutvd/BQ==} + '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.2.126': + resolution: {integrity: sha512-ByJGO0+mu7EplxSFSCIHd7QWsXdrF3qgtzQ177o/j+oSppLoqR1ot5ktf8aw5oR3CC5lFHg4tqd6TnneQpEoIg==} cpu: [x64] os: [linux] libc: [musl] - '@anthropic-ai/claude-agent-sdk-linux-x64@0.2.121': - resolution: {integrity: sha512-DJUgpm7au086WaQV/S7BGOt2M8D90spGZRizT3twYsacf1BxzK1qsXqB/Pw1lUjPy6pI107pml/TaPzWuS/Vzg==} + '@anthropic-ai/claude-agent-sdk-linux-x64@0.2.126': + resolution: {integrity: sha512-yaOTDcYCdscxC0LKg9w8IwSa5g+993WggFZJBTZpqvflA2+WMQeTarDnKlsFTCw9XUZkL8XZeBALYJGx0HutuA==} cpu: [x64] os: [linux] libc: [glibc] - '@anthropic-ai/claude-agent-sdk-win32-arm64@0.2.121': - resolution: {integrity: sha512-6n/NHkHxs0/lCJX3XPADjo1EFzXBf0IwYz/nyzJGBCDJjGKmgTe0i8eYBr/hviwt1/OPeK7dmVzVSVl6EL9Azg==} + '@anthropic-ai/claude-agent-sdk-win32-arm64@0.2.126': + resolution: {integrity: sha512-gv3MOsOBkCx3LajOOIjD7AKsOtz/qNHsS2oshGt2GVoy7JA3XbCDeCetDjM6SorV4SE+7F/IH0UJdXe5ejI/Zg==} cpu: [arm64] os: [win32] - '@anthropic-ai/claude-agent-sdk-win32-x64@0.2.121': - resolution: {integrity: sha512-v2/R918/t94cCwc6rmbxk+UYeQPtF2oBLtQAk+cT0M60hvqmCZO2noyZx5uTp8TQncOlG4MkINIeNY2yfmWSoQ==} + '@anthropic-ai/claude-agent-sdk-win32-x64@0.2.126': + resolution: {integrity: sha512-oRV75HwyoOd1/t5+kipAM2g62CaElpKGvSBx3Ys4lCwCiFUyOnmet/O+hRXENsY6ShDeQZEcJL2UWljr2d5NQw==} cpu: [x64] os: [win32] - '@anthropic-ai/claude-agent-sdk@0.2.121': - resolution: {integrity: sha512-hwZNYTkGLKVixd/V/OCJwfH/SdfxZXGV0m6wvy5EBq6qfB+lvJTRz/MSOSa7dHqo4/F7zJY68crEEca68Wrxpw==} + '@anthropic-ai/claude-agent-sdk@0.2.126': + resolution: {integrity: sha512-4ZrVu0XUEwNG6wxvsLgppRAmSfAf3oeEMEUPhgazb0AXUUe/7W8MxwZKJWOffqSLWaNYzOt3ZCIL7NJY6toqWw==} engines: {node: '>=18.0.0'} peerDependencies: zod: ^4.0.0 - '@anthropic-ai/sdk@0.92.0': - resolution: {integrity: sha512-l653JFC83wCglH8H83t1xpgDurCyPyslYW1maPRdCsfuNuGbLvQjQ81sWd3Go3LWRm0jNspzAhuqAYV8r9joSw==} + '@anthropic-ai/sdk@0.93.0': + resolution: {integrity: sha512-q9vaSZQVFx6B/gPxetGYfLXSJD5v0sOmh0OpZDq7yCrTSA+Rscvrtyol7JJTW40wEpQB4U1B4JXzxQitbQ3CAA==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -1786,16 +1786,16 @@ packages: resolution: {integrity: sha512-nIhsn0/eYrL2fTh4kMO7Hpfmhv+AkkXl0KGNpD6+fdmotGvRBWcDv9/PmP/+sT6gvrKTYyzH3vu4efpTPzzP0Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-bedrock@3.1041.0': - resolution: {integrity: sha512-xUpJ9iRgpj89d9QzjqYUlCnHYNQ/mblICGWhLdpZwvJpege4c36/W40fiYsvs3c3ql58JHQAnGdbNU6cNV1zew==} + '@aws-sdk/client-bedrock@3.1042.0': + resolution: {integrity: sha512-oEVjGU8wgW+eTF7ApdRU4jTs/iMVl4OdfpLmiNLuB082UVxxN/fQ5GIX2Ktbyt+x0mPlI3fug36XnOyf7oCo+Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-cognito-identity@3.1041.0': - resolution: {integrity: sha512-h8DxvCsv95RSHTZPyEwGCqOyiQYVWQ4tFe5im4d0qFvFc9xRmseTu3ZsQ9nd+uOzU9rkCoDHClyqUxXU7nm90Q==} + '@aws-sdk/client-cognito-identity@3.1042.0': + resolution: {integrity: sha512-Cdan/gdzcNEwnvaxzCDQUDJnAAROfvnxjlv5/kvc78E1yQYdgqMN9vEzaqePDNjj8V0rel/iGx2tTlf3KY+V5g==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1041.0': - resolution: {integrity: sha512-sQV14bIqslnBHuSlLMD+fc3pH+ajop6vnrFlJ4wM4JDqcYwVik4O+9srnZUrkesFw5y+CN0GfOQ06CAgtC4mjQ==} + '@aws-sdk/client-s3@3.1042.0': + resolution: {integrity: sha512-z3Ibstr7ckDT10dz/nkk4+93LitrrO49Oq563/JoFHt30ZNodPBCfSxysKcelLyi/lNVF1MZrhZZfikUAG3iNQ==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.974.8': @@ -1842,8 +1842,8 @@ packages: resolution: {integrity: sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-providers@3.1041.0': - resolution: {integrity: sha512-Ps7dcWV1JbXKoFy8QpWhTpWkX0x2tiZFmDdgojK98/rqyybPdwEtGB8xY/N2uJjE0MZkrV9X7T3Xrnk/rGFoNw==} + '@aws-sdk/credential-providers@3.1042.0': + resolution: {integrity: sha512-TKOJXoBKTtfWkRrMITPBq4CFfiXydKc7bcvTONLhXgs1BuyHPcVp2KL0Rl1//xmlw48lYgnT/jn99SanLhB8EQ==} engines: {node: '>=20.0.0'} '@aws-sdk/eventstream-handler-node@3.972.14': @@ -1906,8 +1906,8 @@ packages: resolution: {integrity: sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==} engines: {node: '>=20.0.0'} - '@aws-sdk/s3-request-presigner@3.1041.0': - resolution: {integrity: sha512-DlKsPQ8Z75wgeDSHbjUPNDQCYUF0OLBkqllZqFei61KIoQDqEeKUCwuCf6RhNLjaP4b8oSpBA9+FmUS+zm3xUg==} + '@aws-sdk/s3-request-presigner@3.1042.0': + resolution: {integrity: sha512-yWgXWDg4W0Vk1xlY4M7puM07ce6PPBS4tBytNOpu57k+wY0puXgxkGN0+k/dUAA4sR4Th6+wDps50gBBLj48Ew==} engines: {node: '>=20.0.0'} '@aws-sdk/signature-v4-multi-region@3.996.25': @@ -1922,6 +1922,10 @@ packages: resolution: {integrity: sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==} engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1042.0': + resolution: {integrity: sha512-rOEGTVOrceb/1CfIWK0zl1v2WS70f/i5bDirLl5xdFAbVQ5znub6Ezf2ugmJEg+rionO0IkwbKX3Dh3T/oZjbA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.973.8': resolution: {integrity: sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==} engines: {node: '>=20.0.0'} @@ -2101,8 +2105,8 @@ packages: resolution: {integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==} engines: {node: '>=0.1.90'} - '@copilotkit/aimock@1.16.4': - resolution: {integrity: sha512-DA9WjJWpi2Yh36ltsnfMycj+BbifSS9G0pyHw0JjQZQPm41+FziGIdl2gusBtwYebStypQ4v9Jj2rjqjJqqtvQ==} + '@copilotkit/aimock@1.17.0': + resolution: {integrity: sha512-yhU5LahwobRC71Y3JNSqSjvuUU0KtFbaXywgIT6boQwt0XuXmsi91yGlI+tMRb7yNutF2cwXV/qolUYwuqXwJQ==} engines: {node: '>=24.0.0'} hasBin: true peerDependencies: @@ -2423,8 +2427,8 @@ packages: '@hapi/hoek@9.3.0': resolution: {integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==} - '@homebridge/ciao@1.3.7': - resolution: {integrity: sha512-ncvcXQe4vrqBLNqnVjQjke5NpNin6SO9bStfBZ4jgZk/xIjD9GMcH8vp8XKd7hw5akIzwITMiDMysIKvE5rHBw==} + '@homebridge/ciao@1.3.8': + resolution: {integrity: sha512-lNhpCsZVbdbjz2trFjQdzQ3cUIMZQMIMksi7wd3ntTIYgdaGLqT1Ms97DfVIJYHzRuduf56ISvgU8RRLTpK/ng==} hasBin: true '@hono/node-server@1.19.14': @@ -2920,22 +2924,22 @@ packages: resolution: {integrity: sha512-faGUlTcXka5l7rv0lP3K3vGW/ejRuOS24RR2aSFWREUQqzjgdsuWNo/IiPqL3kWRGt6Ahl2+qcDAwtdeWeuGUw==} hasBin: true - '@mariozechner/pi-agent-core@0.71.1': - resolution: {integrity: sha512-LMXcKoPmjD06EHwnl7IGMkJs/l3Qdl9z1xKsQGqqyd60ZgdxaATtR40Yyzcku1ogu16NhCHrUg6PJ9XeRcT+qQ==} + '@mariozechner/pi-agent-core@0.73.0': + resolution: {integrity: sha512-ugcpvq0X9fr9fTSK29/3S4+KU/eeVMrBb7ZU3HqiF3xD7I1GlgumLj4FYmDrYSEA6+rzgNWlJUKwjKh9o0Z6AA==} engines: {node: '>=20.0.0'} - '@mariozechner/pi-ai@0.71.1': - resolution: {integrity: sha512-xksl4Y20qnjGbF3/eo0rX+TXEiZkkgRCEO8n/q7tMeVKhQ41migVG+msF+xTJoC3HkrTWfak3Y2Z6UjTUbjeTg==} + '@mariozechner/pi-ai@0.73.0': + resolution: {integrity: sha512-phKOpcde/ssz6UYszkmaGJ9LF9mgt/AP8LrtSwsfap+kMSeFfSQ2/mCSBT1mLJ2BqVuff9uXs1/+op1aQeaafQ==} engines: {node: '>=20.0.0'} hasBin: true - '@mariozechner/pi-coding-agent@0.71.1': - resolution: {integrity: sha512-pP7ymz+MmZrcN5aUldm1q1cVbG3u04yZR/XsHEfidku5W3PP1uxsA0A4g4NOhXnkK5EZ+Qg6H12BAbVvl7Qq2Q==} + '@mariozechner/pi-coding-agent@0.73.0': + resolution: {integrity: sha512-Fs2dRIgtjDT8X5VDGNGzxj251B0FvkRsgX03YJv1FK4wg5Maj+jkf8/5A6tbPnPcXsCgs41xxJRf3tF5vJRccA==} engines: {node: '>=20.6.0'} hasBin: true - '@mariozechner/pi-tui@0.71.1': - resolution: {integrity: sha512-jNMN9EmGiH8EIKG62fceOTonoJ9k0cohTdjQCDrOk77vnxPVK+3be/+S1xk4hxviltwxlRH0d7mGQXs+CuEL8g==} + '@mariozechner/pi-tui@0.73.0': + resolution: {integrity: sha512-St1W+tMPKHatfK+lblsKfL+SsFyFVMK2tW6xHpBfCiMuevbOCRo/CMatso7mu1642UO04ncmfCrrpUK5L9aoog==} engines: {node: '>=20.0.0'} '@matrix-org/matrix-sdk-crypto-nodejs@0.5.1': @@ -3867,12 +3871,12 @@ packages: resolution: {integrity: sha512-qYy07je71WnEHgRwmw12DlAnZLi5HXmdlI2WUzUK2LH/rYXQpP6uEg462S5CwfE8FoCKUdIigHtYnOOfzZH1lQ==} engines: {node: '>= 18', npm: '>= 8.6.0'} - '@slack/types@2.20.1': - resolution: {integrity: sha512-eWX2mdt1ktpn8+40iiMc404uGrih+2fxiky3zBcPjtXKj6HLRdYlmhrPkJi7JTJm8dpXR6BWVWEDBXtaWMKD6A==} + '@slack/types@2.21.0': + resolution: {integrity: sha512-ZLMsKnD5KLRPmhFEoGoBQUD5Pc2bH3xFc5ygHlioEc0WmLGyZGoGCtMff4rpejrFnptrhfxcKpWxW4r3g39R0A==} engines: {node: '>= 12.13.0', npm: '>= 6.12.0'} - '@slack/web-api@7.15.1': - resolution: {integrity: sha512-y+TAF7TszcmFzbVtBkFqAdBwKSoD+8shkNxhp4WIfFwXmCKdFje9WD6evROApPa2FTy1v1uc9yBaJs3609PPgg==} + '@slack/web-api@7.15.2': + resolution: {integrity: sha512-/m9qVFkiq85Oa/FSQwYIRDa/AO4qNYkDh4sRBK1WqEc2+RyG7w4tbU6rBIwUOcc/TmWOIr24Nraquxg7um5mYw==} engines: {node: '>= 18', npm: '>= 8.6.0'} '@smithy/chunked-blob-reader-native@4.2.3': @@ -4059,8 +4063,8 @@ packages: resolution: {integrity: sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==} engines: {node: '>=18.0.0'} - '@smithy/util-retry@4.3.6': - resolution: {integrity: sha512-p6/FO1n2KxMeQyna067i0uJ6TSbb165ZhnRtCpWh4Foxqbfc6oW+XITaL8QkFJj3KFnDe2URt4gOhgU06EP9ew==} + '@smithy/util-retry@4.3.8': + resolution: {integrity: sha512-LUIxbTBi+OpvXpg91poGA6BdyoleMDLnfXjVDqyi2RvZmTveY5loE/FgYUBCR5LU2BThW2SoZRh8dTIIy38IPw==} engines: {node: '>=18.0.0'} '@smithy/util-stream@4.5.25': @@ -4256,8 +4260,8 @@ packages: '@twurple/common@8.1.3': resolution: {integrity: sha512-B2BT42fJAEYqSPGjTd6qyZoUv6kgFzIvUJuTIrOUcBiJxcvZh8tD+WLRd5xfMKhtLbUFgesYlHxdPhmdar8/zw==} - '@tybys/wasm-util@0.10.1': - resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} + '@tybys/wasm-util@0.10.2': + resolution: {integrity: sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==} '@types/body-parser@1.19.6': resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==} @@ -4373,50 +4377,50 @@ packages: '@types/yauzl@2.10.3': resolution: {integrity: sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==} - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-OIYsqKouI2U7W5Q6VgUz7+t9FpIXNFk30xSUG7gGlN1bdDniWfW7t5n6mzEtiHUVTxRgJQBjXGAlhVa6A9h+pg==} + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-+Qs1Q7Qxfp11n/hU3pweFU+EQ37FnDsdWOOxb7/vCy8QGBysrLUUYRhQ+GSW3s663oMtN6+9Kf82hk3ZT+kXlg==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [darwin] - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-hQ5UsEyOz3ErQE3sKKHMCfJJGQenD0DSCi2ob+ywElXirG2NyFNA8cmx1g+MIm1lpQeEQslWZhe9EGwo9DJAbg==} + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-Wr3GWTRiMgibmhe88cjQ612ZyY7sbgsPYEaWKGPUxBaXtMHFIzgTBIoJMuaQqQx4GEJs6AUDyhnIHG1gx4rJjg==} engines: {node: '>=16.20.0'} cpu: [x64] os: [darwin] - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-fbaFKE1UvtsQ6i1eJjBiNbglR9ywXrW/CH1sqYPEtr0WgTUpixbE6inQOXjB0jlEA9RzQq+QMzDyaCDmU82Dkw==} + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-y1Qai5l55Sl+/3B0hyQtvynq//C22BKFH3CfU35fbLYUo4P/ISUycyAbcA+PAPazpDFO3E56I96QUQrbJL2VVA==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [linux] - '@typescript/native-preview-linux-arm@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-agkTW/t85XSJKWGcXdUV9ZmSi3Akh3POK+HhWehigEJR3W/jebiO9njifETfoUF6cpoYkFn+CZvfAJ00IWGZfA==} + '@typescript/native-preview-linux-arm@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-s8QkhZe0M4QD2xhK1Xiy2JUQv1AOl8kUg5DLx1G8ws0f1BK/oKyqDNbxhZMGINYLFvkjpr9lOxt7qehSnpJMYQ==} engines: {node: '>=16.20.0'} cpu: [arm] os: [linux] - '@typescript/native-preview-linux-x64@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-Sd8D+S88P7K0IH1U+a8pK20ZD+GM54t48/GLw9ebSklfCdt0iKdHgprjKIcl54C3SocGCcvEBPr1thwtTO9Vtg==} + '@typescript/native-preview-linux-x64@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-ngN3Ie3Vin6pFtqeNywxm86RTxgI0Fo0GZyJ1PxokLES8J3xfMPtMYfv85c/+5uz5+7T+m4LRLyY5IoLY4gtuw==} engines: {node: '>=16.20.0'} cpu: [x64] os: [linux] - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-07sJNDnU7KHfo/trv/cBXpgFBELDYJAsTx5kNvBckSQUxbX+p/b9oQ3eFbtK3zDP4EEKdeiD9EelIy22atBnzA==} + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-/GZDJN/CsLbqIe7EdWDkXhNX9C41VjemBeUN6+9ckvEFLH8XyKTmXPYikNOn0N819M1KSeNZltplyUslfROOdw==} engines: {node: '>=16.20.0'} cpu: [arm64] os: [win32] - '@typescript/native-preview-win32-x64@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-8rzd/eQZyBuR+IRiPnIQrCwSuXIGBFiL8LsUMFqQt2WAUlQ0gGWBlLJHUVU4YNlju9QROjNHUGpJ52XGZbFv0Q==} + '@typescript/native-preview-win32-x64@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-EYQBdVZq4xIzhTtKxw6wvee9238hEb7XrPG413AEZBD3kcR3qqvPULXsPzQyEpneCReATSaihscP/LfhMQYUmA==} engines: {node: '>=16.20.0'} cpu: [x64] os: [win32] - '@typescript/native-preview@7.0.0-dev.20260501.1': - resolution: {integrity: sha512-skD0ig8IzPwSY1L8VmNgfaxkfT8ImBwKeIypfZyJA+zHzWvroRKbRbT2GryOSREl22ZqLOuDfcq+7BdA0rjF2Q==} + '@typescript/native-preview@7.0.0-dev.20260504.1': + resolution: {integrity: sha512-bHFGxyIU83qjj6ywn3817A+Ug2ZID0GiBA5WFdbc/T7EjcrKnUUylexq0fU81N/mTbfw3FyP6ZCEdO2Ntcl/VQ==} engines: {node: '>=16.20.0'} hasBin: true @@ -4512,44 +4516,44 @@ packages: resolution: {tarball: https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67} version: 2.0.1 - '@zed-industries/codex-acp-darwin-arm64@0.12.0': - resolution: {integrity: sha512-RvTXH21sLpswEo8xLeQXcA/uWZauyNP1y+WI6b355+/o7sQ5wrvBkxt+NyhaJXJIQvbfdpl04LND4cmM+DTcNg==} + '@zed-industries/codex-acp-darwin-arm64@0.13.0': + resolution: {integrity: sha512-SNJbpxOD1b98pK1Qw2pZjFJbfYBICheRs3mYvLMgHABehdypaeYKnEmEGp3Bu/gUT6JFAtOPRtaU+sfxKzgCvw==} cpu: [arm64] os: [darwin] hasBin: true - '@zed-industries/codex-acp-darwin-x64@0.12.0': - resolution: {integrity: sha512-N7EhrUTioix3L21qnm6kZzAESc+B7Mac+/uW3khn/UQe7fJJ7u1ojbgMPDdGo/8Xm6HBBXgak2NOj7mJ+NNXSw==} + '@zed-industries/codex-acp-darwin-x64@0.13.0': + resolution: {integrity: sha512-R5CQi2mmi9Nk2P6t48T5JoOQx0jWnP9DzLf5jcTnCLqk1tsg9XtASpLBtsedll9MesBax6aflDvz+0dyWW+3Mw==} cpu: [x64] os: [darwin] hasBin: true - '@zed-industries/codex-acp-linux-arm64@0.12.0': - resolution: {integrity: sha512-Kq35FclgZiSMBKyf80PnCvvJ3xfMjZIkPJXpci35U/VqXVQelhHCwYWwA3waTxvW07tNHxsehv1eQICz7wZdVQ==} + '@zed-industries/codex-acp-linux-arm64@0.13.0': + resolution: {integrity: sha512-Z3f2D94SOgy+BVFEIWxoR64IQB+d4/zgjHB1oeBS5yAYKaX7Wv3W6x+XGktDx+KnfD7c9vSSdFdknI6cZ8hO7g==} cpu: [arm64] os: [linux] hasBin: true - '@zed-industries/codex-acp-linux-x64@0.12.0': - resolution: {integrity: sha512-twmX9noSqfgWgVkGG1dd9u20Pxp8vNRXggvJ61RQSrNYITGuqHil2F3ViYICZoXyr9w1gok28bWG5DU2d9adPg==} + '@zed-industries/codex-acp-linux-x64@0.13.0': + resolution: {integrity: sha512-sWNfyeuwEHPo6DSbcjklnBr7M8+MWd2b9oVbIqgwxryTPpm0ZPF3U28PWR3/vGxS5UmhGiZIShe9tqx8FsvvBg==} cpu: [x64] os: [linux] hasBin: true - '@zed-industries/codex-acp-win32-arm64@0.12.0': - resolution: {integrity: sha512-VoFsTIrQopO917x2EpxYXm3jTIoSknCbzP76FwX9uOThlRms+M+fHWJ4kJttOPpeofz1ulAS3vPVMQ3WNlvnhw==} + '@zed-industries/codex-acp-win32-arm64@0.13.0': + resolution: {integrity: sha512-oxd6IF5dVHsa7zLnK1VAClzGADqn4N9TVSPb+3X4CqnOs4y4M9JPHSEEPiRYF44ibDJTWR+9EZ673djRYEGraw==} cpu: [arm64] os: [win32] hasBin: true - '@zed-industries/codex-acp-win32-x64@0.12.0': - resolution: {integrity: sha512-HImgXGIYgW6Wxr3rylrHS7Dzs35zvcQQB7eqAEWZ2Lj+3AxP/7TViW9KkjS+PTPnVWqpTkz0hYDQhk63Ruw3JA==} + '@zed-industries/codex-acp-win32-x64@0.13.0': + resolution: {integrity: sha512-675+tZlhzDMBJUrgiTnbcCMB15MQ8B0Ih/GmzB9MqW/FDFJqOFjXe4P+M7joePzQqa7QYwf36le50sDokXDrew==} cpu: [x64] os: [win32] hasBin: true - '@zed-industries/codex-acp@0.12.0': - resolution: {integrity: sha512-0d7gRzOiYTgDmIyh783mCcq50h3mdOg/TtKdLfBIghOLushpQRwhuLjKK8Q9hxZfNlPL0Ua56DoPjnsW8amf8g==} + '@zed-industries/codex-acp@0.13.0': + resolution: {integrity: sha512-Ep3gINMVB8qQL3kozJxEzG4YP7NmWUb5s+8yu8tQ7YSPfaIPXBIQQmO5sQk2Uu2av+gIC2EchbwaSSG3Mo17YQ==} hasBin: true abbrev@1.1.1: @@ -5377,14 +5381,14 @@ packages: fast-string-width@3.0.2: resolution: {integrity: sha512-gX8LrtNEI5hq8DVUfRQMbr5lpaS4nMIWV+7XEbXk2b8kiQIizgnlr12B4dA3ZEx3308ze0O4Q1R+cHts8kyUJg==} - fast-uri@3.1.0: - resolution: {integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==} + fast-uri@3.1.1: + resolution: {integrity: sha512-h2r7rcm6Ee/J8o0LD5djLuFVcfbZxhvho4vvsbeV0aMvXjUgqv4YpxpkEx0d68l6+IleVfLAdVEfhR7QNMkGHQ==} fast-wrap-ansi@0.2.0: resolution: {integrity: sha512-rLV8JHxTyhVmFYhBJuMujcrHqOT2cnO5Zxj37qROj23CP39GXubJRBUFF0z8KFK77Uc0SukZUf7JZhsVEQ6n8w==} - fast-xml-builder@1.1.5: - resolution: {integrity: sha512-4TJn/8FKLeslLAH3dnohXqE3QSoxkhvaMzepOIZytwJXZO69Bfz0HBdDHzOTOon6G59Zrk6VQ2bEiv1t61rfkA==} + fast-xml-builder@1.1.7: + resolution: {integrity: sha512-Yh7/7rQuMXICNr0oMYDR2yHP6oUvmQsTToFeOWj/kIDhAwQ+c4Ol/lbcwOmEM5OHYQmh6S6EQSQ1sljCKP36bQ==} fast-xml-parser@5.7.0: resolution: {integrity: sha512-MTcrUoRQ1GSQ9iG3QJzBGquYYYeA7piZaJoIWbPFGbRn6Jj6z7xgoAyi4DrZX4y2ZIQQBF59gc/zmvvejjgoFQ==} @@ -5738,8 +5742,8 @@ packages: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} - ipaddr.js@2.3.0: - resolution: {integrity: sha512-Zv/pA+ciVFbCSBBjGfaKUya/CcGmUHzTydLMaTwrUUEM2DIEO3iZvueGxmacvmN50fGpGVKeTXpb2LcYQxeVdg==} + ipaddr.js@2.4.0: + resolution: {integrity: sha512-9VGk3HGanVE6JoZXHiCpnGy5X0jYDnN4EA4lntFPj+1vIWlFhIylq2CrrCOJH9EAhc5CYhq18F2Av2tgoAPsYQ==} engines: {node: '>= 10'} ircv3@0.33.1: @@ -6098,8 +6102,8 @@ packages: longest-streak@3.1.0: resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==} - lru-cache@11.3.5: - resolution: {integrity: sha512-NxVFwLAnrd9i7KUBxC4DrUhmgjzOs+1Qm50D3oF1/oL+r1NpZ4gA7xvG0/zJ8evR7zIKn4vLf7qTNduWFtCrRw==} + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} engines: {node: 20 || >=22} lru-cache@6.0.0: @@ -6395,10 +6399,6 @@ packages: resolution: {integrity: sha512-9MdFxmkKaOYVTV+XVRG8ArDwwQ77XIgIPyKASB1k3JPq3M8fGQQQE3YpMOrKm6g//Ktx8ivZr8xo1Qmtqub+GA==} engines: {node: ^18 || ^20 || >= 21} - node-gyp-build@4.8.4: - resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} - hasBin: true - node-downloader-helper@2.1.11: resolution: {integrity: sha512-882fH2C9AWdiPCwz/2beq5t8FGMZK9Dx8TJUOIxzMCbvG7XUKM5BuJwN5f0NKo4SCQK6jR4p2TPm54mYGdGchQ==} engines: {node: '>=14.18'} @@ -6421,6 +6421,10 @@ packages: resolution: {integrity: sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + node-gyp-build@4.8.4: + resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} + hasBin: true + node-sarif-builder@3.4.0: resolution: {integrity: sha512-tGnJW6OKRii9u/b2WiUViTJS+h7Apxx17qsMUjsUeNDiMMX5ZFf8F8Fcz7PAQ6omvOxHZtvDTmOYKJQwmfpjeg==} engines: {node: '>=20'} @@ -6518,8 +6522,8 @@ packages: zod: optional: true - openai@6.35.0: - resolution: {integrity: sha512-L/skwIGnt5xQZHb0UfTu9uAUKbis3ehKypOuJKi20QvG7UStV6C8IC3myGYHcdiF4kms/bAvOJ9UqqNWqi8x/Q==} + openai@6.36.0: + resolution: {integrity: sha512-Has2YbIusMq9wQEierFsgf9c783dy1y9arX459LmphNacEkkM5yxi2RIyXP0LmkOroQyW19iTwALHL8Yf26UKA==} hasBin: true peerDependencies: ws: ^8.18.0 @@ -6746,8 +6750,8 @@ packages: resolution: {integrity: sha512-LKWqWJRhstyYo9pGvgor/ivk2w94eSjE3RGVuzLGlr3NmD8bf7RcYGze1mNdEHRP6TRP6rMuDHk5t44hnTRyow==} engines: {node: '>=14.19.0'} - postcss@8.5.13: - resolution: {integrity: sha512-qif0+jGGZoLWdHey3UFHHWP0H7Gbmsk8T5VEqyYFbWqPr1XqvLGBbk/sl8V5exGmcYJklJOhOQq1pV9IcsiFag==} + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} engines: {node: ^10 || ^12 || >=14} prism-media@1.3.5: @@ -7519,8 +7523,8 @@ packages: resolution: {integrity: sha512-xXnp4kTyor2Zq+J1FfPI6Eq3ew5h6Vl0F/8d9XU5zZQf1tX9s2Su1/3PiMmUANFULpmksxkClamIZcaUqryHsQ==} engines: {node: '>=20.18.1'} - undici@8.1.0: - resolution: {integrity: sha512-E9MkTS4xXLnRPYqxH2e6Hr2/49e7WFDKczKcCaFH4VaZs2iNvHMqeIkyUAD9vM8kujy9TjVrRlQ5KkdEJxB2pw==} + undici@8.2.0: + resolution: {integrity: sha512-Z+4Hx9GE26Lh9Upwfnc8C7SsrpBPGaM/Gm6kMFtiG7c+5IvQKlXi/t+9x9DrrCh29cww5TSP9YdVaBcnLDs5fQ==} engines: {node: '>=22.19.0'} unhomoglyph@1.0.6: @@ -7800,8 +7804,8 @@ packages: resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} engines: {node: '>=18'} - yaml@2.8.3: - resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} + yaml@2.8.4: + resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==} engines: {node: '>= 14.6'} hasBin: true @@ -7849,82 +7853,82 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.4.1: - resolution: {integrity: sha512-a6ENMBBGZBsnlSebQ/eKCguSBeGKSf4O7BPnqVPmYGtpBYI7VSqoVqw+QcB7kPRjbqPwhYTpFbVj/RqNz/CT0Q==} + zod@4.4.3: + resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} zwitch@2.0.4: resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==} snapshots: - '@agentclientprotocol/claude-agent-acp@0.31.4(patch_hash=e8b472d71289ac8de9813c57d79abac524889ca96f279f6f3ad08043434f6615)': + '@agentclientprotocol/claude-agent-acp@0.32.0(patch_hash=1fe782f9679d7a725cbe59e51d61419fbb25d4c463d186c43c95644770cb2b98)': dependencies: - '@agentclientprotocol/sdk': 0.21.0(zod@4.4.1) - '@anthropic-ai/claude-agent-sdk': 0.2.121(zod@4.4.1) - zod: 4.4.1 + '@agentclientprotocol/sdk': 0.21.0(zod@4.4.3) + '@anthropic-ai/claude-agent-sdk': 0.2.126(zod@4.4.3) + zod: 4.4.3 transitivePeerDependencies: - '@cfworker/json-schema' - supports-color - '@agentclientprotocol/sdk@0.20.0(zod@4.4.1)': + '@agentclientprotocol/sdk@0.20.0(zod@4.4.3)': dependencies: - zod: 4.4.1 + zod: 4.4.3 - '@agentclientprotocol/sdk@0.21.0(zod@4.4.1)': + '@agentclientprotocol/sdk@0.21.0(zod@4.4.3)': dependencies: - zod: 4.4.1 + zod: 4.4.3 - '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.2.121': + '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-darwin-x64@0.2.121': + '@anthropic-ai/claude-agent-sdk-darwin-x64@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.2.121': + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-linux-arm64@0.2.121': + '@anthropic-ai/claude-agent-sdk-linux-arm64@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.2.121': + '@anthropic-ai/claude-agent-sdk-linux-x64-musl@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-linux-x64@0.2.121': + '@anthropic-ai/claude-agent-sdk-linux-x64@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-win32-arm64@0.2.121': + '@anthropic-ai/claude-agent-sdk-win32-arm64@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk-win32-x64@0.2.121': + '@anthropic-ai/claude-agent-sdk-win32-x64@0.2.126': optional: true - '@anthropic-ai/claude-agent-sdk@0.2.121(zod@4.4.1)': + '@anthropic-ai/claude-agent-sdk@0.2.126(zod@4.4.3)': dependencies: - '@anthropic-ai/sdk': 0.92.0(zod@4.4.1) - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.1) - zod: 4.4.1 + '@anthropic-ai/sdk': 0.93.0(zod@4.4.3) + '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) + zod: 4.4.3 optionalDependencies: - '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.2.121 - '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.2.121 - '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.2.121 - '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.2.121 - '@anthropic-ai/claude-agent-sdk-linux-x64': 0.2.121 - '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.2.121 - '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.2.121 - '@anthropic-ai/claude-agent-sdk-win32-x64': 0.2.121 + '@anthropic-ai/claude-agent-sdk-darwin-arm64': 0.2.126 + '@anthropic-ai/claude-agent-sdk-darwin-x64': 0.2.126 + '@anthropic-ai/claude-agent-sdk-linux-arm64': 0.2.126 + '@anthropic-ai/claude-agent-sdk-linux-arm64-musl': 0.2.126 + '@anthropic-ai/claude-agent-sdk-linux-x64': 0.2.126 + '@anthropic-ai/claude-agent-sdk-linux-x64-musl': 0.2.126 + '@anthropic-ai/claude-agent-sdk-win32-arm64': 0.2.126 + '@anthropic-ai/claude-agent-sdk-win32-x64': 0.2.126 transitivePeerDependencies: - '@cfworker/json-schema' - supports-color - '@anthropic-ai/sdk@0.92.0(zod@4.4.1)': + '@anthropic-ai/sdk@0.93.0(zod@4.4.3)': dependencies: json-schema-to-ts: 3.1.1 optionalDependencies: - zod: 4.4.1 + zod: 4.4.3 - '@anthropic-ai/vertex-sdk@0.16.0(zod@4.4.1)': + '@anthropic-ai/vertex-sdk@0.16.0(zod@4.4.3)': dependencies: - '@anthropic-ai/sdk': 0.92.0(zod@4.4.1) + '@anthropic-ai/sdk': 0.93.0(zod@4.4.3) google-auth-library: 9.15.1 transitivePeerDependencies: - encoding @@ -8043,14 +8047,14 @@ snapshots: '@smithy/util-defaults-mode-node': 4.2.54 '@smithy/util-endpoints': 3.4.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/util-stream': 4.5.25 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-bedrock@3.1041.0': + '@aws-sdk/client-bedrock@3.1042.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -8061,7 +8065,7 @@ snapshots: '@aws-sdk/middleware-recursion-detection': 3.972.11 '@aws-sdk/middleware-user-agent': 3.972.38 '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/token-providers': 3.1041.0 + '@aws-sdk/token-providers': 3.1042.0 '@aws-sdk/types': 3.973.8 '@aws-sdk/util-endpoints': 3.996.8 '@aws-sdk/util-user-agent-browser': 3.972.10 @@ -8089,13 +8093,13 @@ snapshots: '@smithy/util-defaults-mode-node': 4.2.54 '@smithy/util-endpoints': 3.4.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-cognito-identity@3.1041.0': + '@aws-sdk/client-cognito-identity@3.1042.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 @@ -8133,13 +8137,13 @@ snapshots: '@smithy/util-defaults-mode-node': 4.2.54 '@smithy/util-endpoints': 3.4.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 transitivePeerDependencies: - aws-crt - '@aws-sdk/client-s3@3.1041.0': + '@aws-sdk/client-s3@3.1042.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 @@ -8191,7 +8195,7 @@ snapshots: '@smithy/util-defaults-mode-node': 4.2.54 '@smithy/util-endpoints': 3.4.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/util-stream': 4.5.25 '@smithy/util-utf8': 4.2.2 '@smithy/util-waiter': 4.3.0 @@ -8212,7 +8216,7 @@ snapshots: '@smithy/types': 4.14.1 '@smithy/util-base64': 4.3.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 @@ -8335,9 +8339,9 @@ snapshots: transitivePeerDependencies: - aws-crt - '@aws-sdk/credential-providers@3.1041.0': + '@aws-sdk/credential-providers@3.1042.0': dependencies: - '@aws-sdk/client-cognito-identity': 3.1041.0 + '@aws-sdk/client-cognito-identity': 3.1042.0 '@aws-sdk/core': 3.974.8 '@aws-sdk/credential-provider-cognito-identity': 3.972.31 '@aws-sdk/credential-provider-env': 3.972.34 @@ -8466,7 +8470,7 @@ snapshots: '@smithy/core': 3.23.17 '@smithy/protocol-http': 5.3.14 '@smithy/types': 4.14.1 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 tslib: 2.8.1 '@aws-sdk/middleware-websocket@3.972.16': @@ -8522,7 +8526,7 @@ snapshots: '@smithy/util-defaults-mode-node': 4.2.54 '@smithy/util-endpoints': 3.4.2 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 transitivePeerDependencies: @@ -8536,7 +8540,7 @@ snapshots: '@smithy/types': 4.14.1 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.1041.0': + '@aws-sdk/s3-request-presigner@3.1042.0': dependencies: '@aws-sdk/signature-v4-multi-region': 3.996.25 '@aws-sdk/types': 3.973.8 @@ -8580,6 +8584,18 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.1042.0': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/nested-clients': 3.997.6 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.2.14 + '@smithy/shared-ini-file-loader': 4.4.9 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + '@aws-sdk/types@3.973.8': dependencies: '@smithy/types': 4.14.1 @@ -8633,7 +8649,7 @@ snapshots: '@aws/bedrock-token-generator@1.1.0': dependencies: - '@aws-sdk/credential-providers': 3.1041.0 + '@aws-sdk/credential-providers': 3.1042.0 '@aws-sdk/util-format-url': 3.972.10 '@smithy/config-resolver': 4.4.17 '@smithy/hash-node': 4.2.14 @@ -8817,14 +8833,14 @@ snapshots: '@clawdbot/lobster@2026.4.6': dependencies: ajv: 8.20.0 - yaml: 2.8.3 + yaml: 2.8.4 '@colors/colors@1.5.0': optional: true - '@copilotkit/aimock@1.16.4(vitest@4.1.5)': + '@copilotkit/aimock@1.17.0(vitest@4.1.5)': optionalDependencies: - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) '@create-markdown/preview@2.0.3(shiki@3.23.0)': optionalDependencies: @@ -9046,14 +9062,14 @@ snapshots: optionalDependencies: '@noble/hashes': 2.0.1 - '@google/genai@1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))': + '@google/genai@1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))': dependencies: google-auth-library: 10.6.2 p-retry: 4.6.2 protobufjs: 7.5.5 ws: 8.20.0 optionalDependencies: - '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.1) + '@modelcontextprotocol/sdk': 1.29.0(zod@4.4.3) transitivePeerDependencies: - bufferutil - supports-color @@ -9089,7 +9105,7 @@ snapshots: '@hapi/hoek@9.3.0': {} - '@homebridge/ciao@1.3.7': + '@homebridge/ciao@1.3.8': dependencies: debug: 4.4.3 fast-deep-equal: 3.1.3 @@ -9627,9 +9643,9 @@ snapshots: std-env: 3.10.0 yoctocolors: 2.1.2 - '@mariozechner/pi-agent-core@0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1)': + '@mariozechner/pi-agent-core@0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': dependencies: - '@mariozechner/pi-ai': 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) + '@mariozechner/pi-ai': 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) typebox: 1.1.37 transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -9640,19 +9656,19 @@ snapshots: - ws - zod - '@mariozechner/pi-ai@0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1)': + '@mariozechner/pi-ai@0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': dependencies: - '@anthropic-ai/sdk': 0.92.0(zod@4.4.1) + '@anthropic-ai/sdk': 0.93.0(zod@4.4.3) '@aws-sdk/client-bedrock-runtime': 3.1024.0 - '@google/genai': 1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1)) + '@google/genai': 1.51.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)) '@mistralai/mistralai': 2.2.1 chalk: 5.6.2 - openai: 6.26.0(ws@8.20.0)(zod@4.4.1) + openai: 6.26.0(ws@8.20.0)(zod@4.4.3) partial-json: 0.1.7 proxy-agent: 6.5.0 typebox: 1.1.37 undici: 7.25.0 - zod-to-json-schema: 3.25.2(zod@4.4.1) + zod-to-json-schema: 3.25.2(zod@4.4.3) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - aws-crt @@ -9662,12 +9678,12 @@ snapshots: - ws - zod - '@mariozechner/pi-coding-agent@0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1)': + '@mariozechner/pi-coding-agent@0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3)': dependencies: '@mariozechner/jiti': 2.6.5 - '@mariozechner/pi-agent-core': 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) - '@mariozechner/pi-ai': 0.71.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.1))(ws@8.20.0)(zod@4.4.1) - '@mariozechner/pi-tui': 0.71.1 + '@mariozechner/pi-agent-core': 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@mariozechner/pi-ai': 0.73.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.20.0)(zod@4.4.3) + '@mariozechner/pi-tui': 0.73.0 '@silvia-odwyer/photon-node': 0.3.4 chalk: 5.6.2 cli-highlight: 2.1.11 @@ -9684,7 +9700,7 @@ snapshots: typebox: 1.1.37 undici: 7.25.0 uuid: 14.0.0 - yaml: 2.8.3 + yaml: 2.8.4 optionalDependencies: '@mariozechner/clipboard': 0.3.5 transitivePeerDependencies: @@ -9696,7 +9712,7 @@ snapshots: - ws - zod - '@mariozechner/pi-tui@0.71.1': + '@mariozechner/pi-tui@0.73.0': dependencies: '@types/mime-types': 2.1.4 chalk: 5.6.2 @@ -9788,13 +9804,13 @@ snapshots: '@mistralai/mistralai@2.2.1': dependencies: ws: 8.20.0 - zod: 4.4.1 - zod-to-json-schema: 3.25.2(zod@4.4.1) + zod: 4.4.3 + zod-to-json-schema: 3.25.2(zod@4.4.3) transitivePeerDependencies: - bufferutil - utf-8-validate - '@modelcontextprotocol/sdk@1.29.0(zod@4.4.1)': + '@modelcontextprotocol/sdk@1.29.0(zod@4.4.3)': dependencies: '@hono/node-server': 1.19.14(hono@4.12.14) ajv: 8.20.0 @@ -9811,8 +9827,8 @@ snapshots: json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 - zod: 4.4.1 - zod-to-json-schema: 3.25.2(zod@4.4.1) + zod: 4.4.3 + zod-to-json-schema: 3.25.2(zod@4.4.3) transitivePeerDependencies: - supports-color @@ -9917,7 +9933,7 @@ snapshots: dependencies: '@emnapi/core': 1.10.0 '@emnapi/runtime': 1.10.0 - '@tybys/wasm-util': 0.10.1 + '@tybys/wasm-util': 0.10.2 optional: true '@noble/ciphers@2.1.1': {} @@ -9983,7 +9999,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.7.1(@opentelemetry/api@1.9.1) - yaml: 2.8.3 + yaml: 2.8.4 '@opentelemetry/context-async-hooks@2.7.1(@opentelemetry/api@1.9.1)': dependencies: @@ -10500,8 +10516,8 @@ snapshots: '@slack/logger': 4.0.1 '@slack/oauth': 3.0.5 '@slack/socket-mode': 2.0.7 - '@slack/types': 2.20.1 - '@slack/web-api': 7.15.1 + '@slack/types': 2.21.0 + '@slack/web-api': 7.15.2 '@types/express': 5.0.6 axios: 1.15.0 express: 5.2.1 @@ -10521,7 +10537,7 @@ snapshots: '@slack/oauth@3.0.5': dependencies: '@slack/logger': 4.0.1 - '@slack/web-api': 7.15.1 + '@slack/web-api': 7.15.2 '@types/jsonwebtoken': 9.0.10 '@types/node': 25.6.0 jsonwebtoken: 9.0.3 @@ -10531,7 +10547,7 @@ snapshots: '@slack/socket-mode@2.0.7': dependencies: '@slack/logger': 4.0.1 - '@slack/web-api': 7.15.1 + '@slack/web-api': 7.15.2 '@types/node': 25.6.0 '@types/ws': 8.18.1 eventemitter3: 5.0.4 @@ -10541,12 +10557,12 @@ snapshots: - debug - utf-8-validate - '@slack/types@2.20.1': {} + '@slack/types@2.21.0': {} - '@slack/web-api@7.15.1': + '@slack/web-api@7.15.2': dependencies: '@slack/logger': 4.0.1 - '@slack/types': 2.20.1 + '@slack/types': 2.21.0 '@types/node': 25.6.0 '@types/retry': 0.12.0 axios: 1.15.0 @@ -10702,7 +10718,7 @@ snapshots: '@smithy/smithy-client': 4.12.13 '@smithy/types': 4.14.1 '@smithy/util-middleware': 4.2.14 - '@smithy/util-retry': 4.3.6 + '@smithy/util-retry': 4.3.8 '@smithy/uuid': 1.1.2 tslib: 2.8.1 @@ -10853,7 +10869,7 @@ snapshots: '@smithy/types': 4.14.1 tslib: 2.8.1 - '@smithy/util-retry@4.3.6': + '@smithy/util-retry@4.3.8': dependencies: '@smithy/service-error-classification': 4.3.1 '@smithy/types': 4.14.1 @@ -11061,7 +11077,7 @@ snapshots: klona: 2.0.6 tslib: 2.8.1 - '@tybys/wasm-util@0.10.1': + '@tybys/wasm-util@0.10.2': dependencies: tslib: 2.8.1 optional: true @@ -11189,36 +11205,36 @@ snapshots: '@types/node': 25.6.0 optional: true - '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260501.1': + '@typescript/native-preview-darwin-arm64@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview-darwin-x64@7.0.0-dev.20260501.1': + '@typescript/native-preview-darwin-x64@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview-linux-arm64@7.0.0-dev.20260501.1': + '@typescript/native-preview-linux-arm64@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview-linux-arm@7.0.0-dev.20260501.1': + '@typescript/native-preview-linux-arm@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview-linux-x64@7.0.0-dev.20260501.1': + '@typescript/native-preview-linux-x64@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview-win32-arm64@7.0.0-dev.20260501.1': + '@typescript/native-preview-win32-arm64@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview-win32-x64@7.0.0-dev.20260501.1': + '@typescript/native-preview-win32-x64@7.0.0-dev.20260504.1': optional: true - '@typescript/native-preview@7.0.0-dev.20260501.1': + '@typescript/native-preview@7.0.0-dev.20260504.1': optionalDependencies: - '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260501.1 - '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260501.1 - '@typescript/native-preview-linux-arm': 7.0.0-dev.20260501.1 - '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260501.1 - '@typescript/native-preview-linux-x64': 7.0.0-dev.20260501.1 - '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260501.1 - '@typescript/native-preview-win32-x64': 7.0.0-dev.20260501.1 + '@typescript/native-preview-darwin-arm64': 7.0.0-dev.20260504.1 + '@typescript/native-preview-darwin-x64': 7.0.0-dev.20260504.1 + '@typescript/native-preview-linux-arm': 7.0.0-dev.20260504.1 + '@typescript/native-preview-linux-arm64': 7.0.0-dev.20260504.1 + '@typescript/native-preview-linux-x64': 7.0.0-dev.20260504.1 + '@typescript/native-preview-win32-arm64': 7.0.0-dev.20260504.1 + '@typescript/native-preview-win32-x64': 7.0.0-dev.20260504.1 '@typespec/ts-http-runtime@0.3.5': dependencies: @@ -11232,29 +11248,29 @@ snapshots: '@urbit/aura@3.0.0': {} - '@vitest/browser-playwright@4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.5)': + '@vitest/browser-playwright@4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5)': dependencies: - '@vitest/browser': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.5) - '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/browser': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) playwright: 1.59.1 tinyrainbow: 3.1.0 - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.5)': + '@vitest/browser@4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5)': dependencies: '@blazediff/core': 1.9.1 - '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) '@vitest/utils': 4.1.5 magic-string: 0.30.21 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.0 - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) ws: 8.20.0 transitivePeerDependencies: - bufferutil @@ -11274,9 +11290,9 @@ snapshots: obug: 2.1.1 std-env: 4.1.0 tinyrainbow: 3.1.0 - vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + vitest: 4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) optionalDependencies: - '@vitest/browser': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.5) + '@vitest/browser': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) '@vitest/expect@4.1.5': dependencies: @@ -11287,13 +11303,13 @@ snapshots: chai: 6.2.2 tinyrainbow: 3.1.0 - '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))': + '@vitest/mocker@4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))': dependencies: '@vitest/spy': 4.1.5 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4) '@vitest/pretty-format@4.1.5': dependencies: @@ -11347,7 +11363,7 @@ snapshots: '@hapi/boom': 9.1.4 async-mutex: 0.5.0 libsignal: '@whiskeysockets/libsignal-node@https://codeload.github.com/whiskeysockets/libsignal-node/tar.gz/1c30d7d7e76a3b0aa120b04dc6a26f5a12dccf67' - lru-cache: 11.3.5 + lru-cache: 11.3.6 music-metadata: 11.12.3 p-queue: 9.2.0 pino: 9.14.0 @@ -11367,32 +11383,32 @@ snapshots: curve25519-js: 0.0.4 protobufjs: 7.5.5 - '@zed-industries/codex-acp-darwin-arm64@0.12.0': + '@zed-industries/codex-acp-darwin-arm64@0.13.0': optional: true - '@zed-industries/codex-acp-darwin-x64@0.12.0': + '@zed-industries/codex-acp-darwin-x64@0.13.0': optional: true - '@zed-industries/codex-acp-linux-arm64@0.12.0': + '@zed-industries/codex-acp-linux-arm64@0.13.0': optional: true - '@zed-industries/codex-acp-linux-x64@0.12.0': + '@zed-industries/codex-acp-linux-x64@0.13.0': optional: true - '@zed-industries/codex-acp-win32-arm64@0.12.0': + '@zed-industries/codex-acp-win32-arm64@0.13.0': optional: true - '@zed-industries/codex-acp-win32-x64@0.12.0': + '@zed-industries/codex-acp-win32-x64@0.13.0': optional: true - '@zed-industries/codex-acp@0.12.0': + '@zed-industries/codex-acp@0.13.0': optionalDependencies: - '@zed-industries/codex-acp-darwin-arm64': 0.12.0 - '@zed-industries/codex-acp-darwin-x64': 0.12.0 - '@zed-industries/codex-acp-linux-arm64': 0.12.0 - '@zed-industries/codex-acp-linux-x64': 0.12.0 - '@zed-industries/codex-acp-win32-arm64': 0.12.0 - '@zed-industries/codex-acp-win32-x64': 0.12.0 + '@zed-industries/codex-acp-darwin-arm64': 0.13.0 + '@zed-industries/codex-acp-darwin-x64': 0.13.0 + '@zed-industries/codex-acp-linux-arm64': 0.13.0 + '@zed-industries/codex-acp-linux-x64': 0.13.0 + '@zed-industries/codex-acp-win32-arm64': 0.13.0 + '@zed-industries/codex-acp-win32-x64': 0.13.0 abbrev@1.1.1: optional: true @@ -11420,11 +11436,11 @@ snapshots: acpx@0.6.1: dependencies: - '@agentclientprotocol/sdk': 0.20.0(zod@4.4.1) + '@agentclientprotocol/sdk': 0.20.0(zod@4.4.3) commander: 14.0.3 skillflag: 0.1.4 tsx: 4.21.0 - zod: 4.4.1 + zod: 4.4.3 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -11448,7 +11464,7 @@ snapshots: ajv@8.20.0: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.1.0 + fast-uri: 3.1.1 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 @@ -12229,20 +12245,20 @@ snapshots: dependencies: fast-string-truncated-width: 3.0.3 - fast-uri@3.1.0: {} + fast-uri@3.1.1: {} fast-wrap-ansi@0.2.0: dependencies: fast-string-width: 3.0.2 - fast-xml-builder@1.1.5: + fast-xml-builder@1.1.7: dependencies: path-expression-matcher: 1.5.0 fast-xml-parser@5.7.0: dependencies: '@nodable/entities': 2.1.0 - fast-xml-builder: 1.1.5 + fast-xml-builder: 1.1.7 path-expression-matcher: 1.5.0 strnum: 2.2.3 @@ -12607,7 +12623,7 @@ snapshots: hosted-git-info@9.0.3: dependencies: - lru-cache: 11.3.5 + lru-cache: 11.3.6 html-encoding-sniffer@6.0.0(@noble/hashes@2.0.1): dependencies: @@ -12715,7 +12731,7 @@ snapshots: ipaddr.js@1.9.1: {} - ipaddr.js@2.3.0: {} + ipaddr.js@2.4.0: {} ircv3@0.33.1: dependencies: @@ -12882,7 +12898,7 @@ snapshots: decimal.js: 10.6.0 html-encoding-sniffer: 6.0.0(@noble/hashes@2.0.1) is-potential-custom-element-name: 1.0.1 - lru-cache: 11.3.5 + lru-cache: 11.3.6 parse5: 8.0.1 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -13105,7 +13121,7 @@ snapshots: longest-streak@3.1.0: {} - lru-cache@11.3.5: {} + lru-cache@11.3.6: {} lru-cache@6.0.0: dependencies: @@ -13121,7 +13137,7 @@ snapshots: lru-memoizer@3.0.0: dependencies: lodash.clonedeep: 4.5.0 - lru-cache: 11.3.5 + lru-cache: 11.3.6 lru_map@0.4.1: {} @@ -13588,8 +13604,6 @@ snapshots: node-addon-api@8.7.0: {} - node-gyp-build@4.8.4: {} - node-downloader-helper@2.1.11: {} node-edge-tts@1.2.10: @@ -13612,6 +13626,8 @@ snapshots: fetch-blob: 3.2.0 formdata-polyfill: 4.0.10 + node-gyp-build@4.8.4: {} + node-sarif-builder@3.4.0: dependencies: '@types/sarif': 2.1.7 @@ -13706,15 +13722,15 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 - openai@6.26.0(ws@8.20.0)(zod@4.4.1): + openai@6.26.0(ws@8.20.0)(zod@4.4.3): optionalDependencies: ws: 8.20.0 - zod: 4.4.1 + zod: 4.4.3 - openai@6.35.0(ws@8.20.0)(zod@4.4.1): + openai@6.36.0(ws@8.20.0)(zod@4.4.3): optionalDependencies: ws: 8.20.0 - zod: 4.4.1 + zod: 4.4.3 openshell@0.1.0: dependencies: @@ -13915,7 +13931,7 @@ snapshots: path-scurry@2.0.2: dependencies: - lru-cache: 11.3.5 + lru-cache: 11.3.6 minipass: 7.1.3 path-to-regexp@8.4.0: {} @@ -13974,7 +13990,7 @@ snapshots: pngjs@7.0.0: {} - postcss@8.5.13: + postcss@8.5.14: dependencies: nanoid: 3.3.12 picocolors: 1.1.1 @@ -14311,7 +14327,7 @@ snapshots: glob: 7.2.3 optional: true - rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260501.1)(rolldown@1.0.0-rc.17)(typescript@6.0.3): + rolldown-plugin-dts@0.23.2(@typescript/native-preview@7.0.0-dev.20260504.1)(rolldown@1.0.0-rc.17)(typescript@6.0.3): dependencies: '@babel/generator': 8.0.0-rc.3 '@babel/helper-validator-identifier': 8.0.0-rc.3 @@ -14325,7 +14341,7 @@ snapshots: picomatch: 4.0.4 rolldown: 1.0.0-rc.17 optionalDependencies: - '@typescript/native-preview': 7.0.0-dev.20260501.1 + '@typescript/native-preview': 7.0.0-dev.20260504.1 typescript: 6.0.3 transitivePeerDependencies: - oxc-resolver @@ -14606,6 +14622,7 @@ snapshots: sqlite-vec-linux-arm64: 0.1.9 sqlite-vec-linux-x64: 0.1.9 sqlite-vec-windows-x64: 0.1.9 + optional: true stackback@0.0.2: {} @@ -14798,7 +14815,7 @@ snapshots: ts-algebra@2.0.0: {} - tsdown@0.21.10(@typescript/native-preview@7.0.0-dev.20260501.1)(typescript@6.0.3): + tsdown@0.21.10(@typescript/native-preview@7.0.0-dev.20260504.1)(typescript@6.0.3): dependencies: ansis: 4.2.0 cac: 7.0.0 @@ -14809,7 +14826,7 @@ snapshots: obug: 2.1.1 picomatch: 4.0.4 rolldown: 1.0.0-rc.17 - rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260501.1)(rolldown@1.0.0-rc.17)(typescript@6.0.3) + rolldown-plugin-dts: 0.23.2(@typescript/native-preview@7.0.0-dev.20260504.1)(rolldown@1.0.0-rc.17)(typescript@6.0.3) semver: 7.7.4 tinyexec: 1.1.2 tinyglobby: 0.2.16 @@ -14873,7 +14890,7 @@ snapshots: undici@7.25.0: {} - undici@8.1.0: {} + undici@8.2.0: {} unhomoglyph@1.0.6: {} @@ -14949,11 +14966,11 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3): + vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4): dependencies: lightningcss: 1.32.0 picomatch: 4.0.4 - postcss: 8.5.13 + postcss: 8.5.14 rolldown: 1.0.0-rc.17 tinyglobby: 0.2.16 optionalDependencies: @@ -14962,12 +14979,12 @@ snapshots: fsevents: 2.3.3 jiti: 2.6.1 tsx: 4.21.0 - yaml: 2.8.3 + yaml: 2.8.4 - vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)): + vitest@4.1.5(@opentelemetry/api@1.9.1)(@types/node@25.6.0)(@vitest/browser-playwright@4.1.5)(@vitest/coverage-v8@4.1.5)(jsdom@29.1.1(@noble/hashes@2.0.1))(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)): dependencies: '@vitest/expect': 4.1.5 - '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3)) + '@vitest/mocker': 4.1.5(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4)) '@vitest/pretty-format': 4.1.5 '@vitest/runner': 4.1.5 '@vitest/snapshot': 4.1.5 @@ -14984,12 +15001,12 @@ snapshots: tinyexec: 1.1.2 tinyglobby: 0.2.16 tinyrainbow: 3.1.0 - vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3) + vite: 8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 '@types/node': 25.6.0 - '@vitest/browser-playwright': 4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.3))(vitest@4.1.5) + '@vitest/browser-playwright': 4.1.5(playwright@1.59.1)(vite@8.0.10(@types/node@25.6.0)(esbuild@0.27.7)(jiti@2.6.1)(tsx@4.21.0)(yaml@2.8.4))(vitest@4.1.5) '@vitest/coverage-v8': 4.1.5(@vitest/browser@4.1.5)(vitest@4.1.5) jsdom: 29.1.1(@noble/hashes@2.0.1) transitivePeerDependencies: @@ -15102,7 +15119,7 @@ snapshots: yallist@5.0.0: {} - yaml@2.8.3: {} + yaml@2.8.4: {} yargs-parser@18.1.3: dependencies: @@ -15168,12 +15185,12 @@ snapshots: - bufferutil - utf-8-validate - zod-to-json-schema@3.25.2(zod@4.4.1): + zod-to-json-schema@3.25.2(zod@4.4.3): dependencies: - zod: 4.4.1 + zod: 4.4.3 zod@3.25.76: {} - zod@4.4.1: {} + zod@4.4.3: {} zwitch@2.0.4: {} diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.test.ts b/src/agents/pi-embedded-subscribe.handlers.tools.test.ts index d263d05b07c..89e53214f6a 100644 --- a/src/agents/pi-embedded-subscribe.handlers.tools.test.ts +++ b/src/agents/pi-embedded-subscribe.handlers.tools.test.ts @@ -8,6 +8,7 @@ import type { MessagingToolSend } from "./pi-embedded-messaging.types.js"; import { handleToolExecutionEnd, handleToolExecutionStart, + handleToolExecutionUpdate, } from "./pi-embedded-subscribe.handlers.tools.js"; import type { ToolCallSummary, @@ -713,6 +714,47 @@ describe("handleToolExecutionEnd exec approval prompts", () => { }); describe("handleToolExecutionEnd derived tool events", () => { + it("emits command output deltas for exec update results", async () => { + const { ctx, onAgentEvent } = createTestContext(); + + await handleToolExecutionStart( + ctx as never, + { + type: "tool_execution_start", + toolName: "exec", + toolCallId: "tool-exec-update-output", + args: { command: "npm test" }, + } as never, + ); + + handleToolExecutionUpdate( + ctx as never, + { + type: "tool_execution_update", + toolName: "exec", + toolCallId: "tool-exec-update-output", + partialResult: { + details: { + status: "running", + aggregated: "RUN src/example.test.ts", + }, + }, + } as never, + ); + + expect(onAgentEvent).toHaveBeenCalledWith( + expect.objectContaining({ + stream: "command_output", + data: expect.objectContaining({ + itemId: "command:tool-exec-update-output", + phase: "delta", + output: "RUN src/example.test.ts", + status: "running", + }), + }), + ); + }); + it("emits command output events for exec results", async () => { const { ctx, onAgentEvent } = createTestContext(); diff --git a/src/agents/pi-embedded-subscribe.handlers.tools.ts b/src/agents/pi-embedded-subscribe.handlers.tools.ts index ecc1445f287..3df28deeb87 100644 --- a/src/agents/pi-embedded-subscribe.handlers.tools.ts +++ b/src/agents/pi-embedded-subscribe.handlers.tools.ts @@ -772,7 +772,11 @@ export function handleToolExecutionUpdate( }, }); if (isExecToolName(toolName)) { - const output = extractToolResultText(sanitized); + const execDetails = readExecToolDetails(sanitized); + const output = + execDetails && "aggregated" in execDetails + ? execDetails.aggregated + : extractToolResultText(sanitized); const commandData: AgentItemEventData = { itemId: buildCommandItemId(toolCallId), phase: "update", From 7e229f0d3d63acc52a831d5017b22e45c4feffa5 Mon Sep 17 00:00:00 2001 From: Vincent Koc Date: Mon, 4 May 2026 15:11:14 -0700 Subject: [PATCH 6/6] fix(docker): prune external plugin dist (#77547) --- CHANGELOG.md | 1 + Dockerfile | 1 + scripts/prune-docker-plugin-dist.d.mts | 6 +++ scripts/prune-docker-plugin-dist.mjs | 52 ++++++++++++++++++ src/dockerfile.test.ts | 3 ++ src/plugins/prune-docker-plugin-dist.test.ts | 56 ++++++++++++++++++++ 6 files changed, 119 insertions(+) create mode 100644 scripts/prune-docker-plugin-dist.d.mts create mode 100644 scripts/prune-docker-plugin-dist.mjs create mode 100644 src/plugins/prune-docker-plugin-dist.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index 101b3d967e6..98500da708f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -55,6 +55,7 @@ Docs: https://docs.openclaw.ai ### Fixes - Agents/OpenAI: default direct OpenAI Responses models to the SSE transport instead of WebSocket auto-selection, preventing pi runtime chat turns from hanging on servers where the WebSocket path stalls while the OpenAI HTTP stream works. Thanks @vincentkoc. +- Docker: prune package-excluded plugin dist directories from runtime images unless the build explicitly opts that plugin in, so official external plugins such as Feishu stay install-on-demand instead of shipping partial metadata without compiled runtime output. Fixes #77424. Thanks @vincentkoc. - CLI/update: disable and skip plugins that fail package-update plugin sync, so a broken npm/ClawHub/git/marketplace plugin cannot turn a successful OpenClaw package update into a failed update result. Thanks @vincentkoc. - CLI/update: use an absolute POSIX npm script shell during package-manager updates, so restricted PATH environments can still run dependency lifecycle scripts while updating from `--tag main`. Fixes #77530. Thanks @PeterTremonti. - Diagnostics: grant the internal diagnostics event bus to official installed diagnostics exporter plugins, so npm-installed `@openclaw/diagnostics-prometheus` can emit metrics without broadening the capability to arbitrary global plugins. Fixes #76628. Thanks @RayWoo. diff --git a/Dockerfile b/Dockerfile index 60b50869fbc..d14c730132e 100644 --- a/Dockerfile +++ b/Dockerfile @@ -124,6 +124,7 @@ RUN printf 'packages:\n - .\n - ui\n' > /tmp/pnpm-workspace.runtime.yaml && \ cp /tmp/pnpm-workspace.runtime.yaml pnpm-workspace.yaml && \ CI=true NPM_CONFIG_FROZEN_LOCKFILE=false pnpm prune --prod && \ node scripts/postinstall-bundled-plugins.mjs && \ + OPENCLAW_EXTENSIONS="$OPENCLAW_EXTENSIONS" node scripts/prune-docker-plugin-dist.mjs && \ find dist -type f \( -name '*.d.ts' -o -name '*.d.mts' -o -name '*.d.cts' -o -name '*.map' \) -delete && \ node scripts/check-package-dist-imports.mjs /app diff --git a/scripts/prune-docker-plugin-dist.d.mts b/scripts/prune-docker-plugin-dist.d.mts new file mode 100644 index 00000000000..cdc7d9163bd --- /dev/null +++ b/scripts/prune-docker-plugin-dist.d.mts @@ -0,0 +1,6 @@ +export function parseDockerPluginKeepList(value: unknown): Set; +export function pruneDockerPluginDist(params?: { + cwd?: string; + repoRoot?: string; + env?: NodeJS.ProcessEnv; +}): string[]; diff --git a/scripts/prune-docker-plugin-dist.mjs b/scripts/prune-docker-plugin-dist.mjs new file mode 100644 index 00000000000..cd01d591bc6 --- /dev/null +++ b/scripts/prune-docker-plugin-dist.mjs @@ -0,0 +1,52 @@ +import fs from "node:fs"; +import path from "node:path"; +import { pathToFileURL } from "node:url"; +import { collectRootPackageExcludedExtensionDirs } from "./lib/bundled-plugin-build-entries.mjs"; +import { removePathIfExists } from "./runtime-postbuild-shared.mjs"; + +function parsePluginList(value) { + if (typeof value !== "string") { + return new Set(); + } + return new Set( + value + .split(/[\s,]+/u) + .map((entry) => entry.trim()) + .filter(Boolean), + ); +} + +export function parseDockerPluginKeepList(value) { + return parsePluginList(value); +} + +export function pruneDockerPluginDist(params = {}) { + const repoRoot = params.cwd ?? params.repoRoot ?? process.cwd(); + const env = params.env ?? process.env; + const keepPluginIds = parseDockerPluginKeepList(env.OPENCLAW_EXTENSIONS); + const excludedPluginIds = collectRootPackageExcludedExtensionDirs({ cwd: repoRoot }); + const removed = []; + + for (const pluginId of [...excludedPluginIds].toSorted((left, right) => + left.localeCompare(right), + )) { + if (keepPluginIds.has(pluginId)) { + continue; + } + + for (const root of ["dist", "dist-runtime"]) { + const pluginDistDir = path.join(repoRoot, root, "extensions", pluginId); + if (!fs.existsSync(pluginDistDir)) { + continue; + } + removePathIfExists(pluginDistDir); + removed.push(path.relative(repoRoot, pluginDistDir).replaceAll("\\", "/")); + } + } + + return removed; +} + +if (import.meta.url === pathToFileURL(process.argv[1] ?? "").href) { + pruneDockerPluginDist(); +} diff --git a/src/dockerfile.test.ts b/src/dockerfile.test.ts index d550f9dd45d..b795f19f9a0 100644 --- a/src/dockerfile.test.ts +++ b/src/dockerfile.test.ts @@ -111,6 +111,9 @@ describe("Dockerfile", () => { expect(dockerfile).toContain("pnpm-workspace.runtime.yaml"); expect(dockerfile).toContain(" - ui\\n"); expect(dockerfile).toContain("CI=true NPM_CONFIG_FROZEN_LOCKFILE=false pnpm prune --prod"); + expect(dockerfile).toContain( + 'OPENCLAW_EXTENSIONS="$OPENCLAW_EXTENSIONS" node scripts/prune-docker-plugin-dist.mjs', + ); expect(dockerfile).toContain("prune must not rediscover unrelated workspaces"); expect(dockerfile).not.toContain( `npm install --prefix "${BUNDLED_PLUGIN_ROOT_DIR}/$ext" --omit=dev --silent`, diff --git a/src/plugins/prune-docker-plugin-dist.test.ts b/src/plugins/prune-docker-plugin-dist.test.ts new file mode 100644 index 00000000000..d162c83f334 --- /dev/null +++ b/src/plugins/prune-docker-plugin-dist.test.ts @@ -0,0 +1,56 @@ +import fs from "node:fs"; +import path from "node:path"; +import { afterEach, describe, expect, it } from "vitest"; +import { + parseDockerPluginKeepList, + pruneDockerPluginDist, +} from "../../scripts/prune-docker-plugin-dist.mjs"; +import { cleanupTempDirs, makeTempRepoRoot, writeJsonFile } from "../../test/helpers/temp-repo.js"; + +const tempDirs: string[] = []; + +function makeRepoRoot(prefix: string): string { + return makeTempRepoRoot(tempDirs, prefix); +} + +function writeDistPluginFile(repoRoot: string, root: "dist" | "dist-runtime", pluginId: string) { + const pluginDir = path.join(repoRoot, root, "extensions", pluginId); + fs.mkdirSync(pluginDir, { recursive: true }); + fs.writeFileSync(path.join(pluginDir, "openclaw.plugin.json"), "{}\n", "utf8"); +} + +afterEach(() => { + cleanupTempDirs(tempDirs); +}); + +describe("pruneDockerPluginDist", () => { + it("parses space and comma separated Docker plugin keep lists", () => { + expect([...parseDockerPluginKeepList("diagnostics-otel feishu,discord")]).toEqual([ + "diagnostics-otel", + "feishu", + "discord", + ]); + }); + + it("removes package-excluded plugin dist unless Docker explicitly opts it in", () => { + const repoRoot = makeRepoRoot("openclaw-docker-plugin-dist-"); + writeJsonFile(path.join(repoRoot, "package.json"), { + files: ["dist/**", "!dist/extensions/diagnostics-otel/**", "!dist/extensions/feishu/**"], + }); + writeDistPluginFile(repoRoot, "dist", "diagnostics-otel"); + writeDistPluginFile(repoRoot, "dist", "feishu"); + writeDistPluginFile(repoRoot, "dist-runtime", "feishu"); + writeDistPluginFile(repoRoot, "dist", "telegram"); + + const removed = pruneDockerPluginDist({ + repoRoot, + env: { OPENCLAW_EXTENSIONS: "diagnostics-otel" } as NodeJS.ProcessEnv, + }); + + expect(removed).toEqual(["dist/extensions/feishu", "dist-runtime/extensions/feishu"]); + expect(fs.existsSync(path.join(repoRoot, "dist", "extensions", "diagnostics-otel"))).toBe(true); + expect(fs.existsSync(path.join(repoRoot, "dist", "extensions", "feishu"))).toBe(false); + expect(fs.existsSync(path.join(repoRoot, "dist-runtime", "extensions", "feishu"))).toBe(false); + expect(fs.existsSync(path.join(repoRoot, "dist", "extensions", "telegram"))).toBe(true); + }); +});