From f78f51359da004faff2a246ac59c48ec2ffb250e Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Wed, 16 Sep 2026 09:06:40 -0700 Subject: [PATCH] chore(deps): refresh dependencies with seven-day cutoff (#149908) * chore(deps): refresh dependencies with seven-day cutoff Advance eligible application, native, release, and development dependencies published by 2026-09-09T06:51:52Z. Audit new registry resolutions and native artifact hashes, preserving existing security pins and compatibility holds. Adapt MCP Apps 2 tool discovery and host context, retain Clack cancellation handling, and align the updater fixture with its runtime assembly owner. Synchronize native artifact checks, operational docs, and tooling pins. Validation includes frozen installation, full build, CLI rebuild, typechecks, lint, 96 npm package locks, dependency audits, focused runtime and native proofs, and independent review. Exact-head hosted CI is required before land. * fix(deps): preserve scroll ownership and synchronize toolchain contracts * fix(cli): preserve generic wizard option values after Clack update * docs(lobster): clarify credentials for embedded remote calls * test(cli): use Clack cancellation sentinel in prompt fixtures * fix(ios): avoid opening audio input during relay cancellation * test: reuse dependency update fixtures within line limits * fix(crabbox): retain the previous trusted pnpm pin * test(gateway): synchronize task access churn with page selection * test(macos): isolate the challenge timeout transport fixture * fix(macos): preserve hidden windows through deminiaturization * fix(macos): exclude hidden dashboards from window selection --- .../setup-android-toolchain/action.yml | 4 +- .github/release/vercel-cli/package-lock.json | 320 +-- .github/release/vercel-cli/package.json | 4 +- .github/workflows/android-beta-release.yml | 2 +- .github/workflows/ci.yml | 8 +- .../codeql-android-critical-security.yml | 6 +- .github/workflows/codeql-critical-quality.yml | 60 +- .../codeql-macos-critical-security.yml | 6 +- .github/workflows/codeql.yml | 4 +- .github/workflows/install-smoke-reusable.yml | 12 +- .github/workflows/ios-beta-release.yml | 4 +- .github/workflows/live-media-runner-image.yml | 2 +- .github/workflows/npm-telegram-beta-e2e.yml | 2 +- .../openclaw-live-and-e2e-checks-reusable.yml | 2 +- .github/workflows/openclaw-performance.yml | 4 +- .github/workflows/opengrep-precise-full.yml | 6 +- .github/workflows/opengrep-precise.yml | 6 +- .github/workflows/plugin-prerelease.yml | 4 +- apps/android/Gemfile | 2 +- apps/android/Gemfile.lock | 43 +- apps/android/gradle/libs.versions.toml | 2 +- apps/ios/Gemfile | 2 +- apps/ios/Gemfile.lock | 43 +- .../Voice/RealtimeTalkRelaySession.swift | 7 +- apps/ios/fastlane/SETUP.md | 2 +- apps/linux/src-tauri/Cargo.lock | 143 +- apps/linux/src-tauri/Cargo.toml | 4 +- apps/macos-mlx-tts/Package.resolved | 8 +- apps/macos/Package.resolved | 6 +- apps/macos/Package.swift | 2 +- .../OpenClaw/DashboardWindowController.swift | 5 +- .../Sources/OpenClaw/ExperienceWindow.swift | 29 + .../Sources/OpenClaw/WebChatSwiftUI.swift | 18 +- .../AppKitWindowTransitionTestSupport.swift | 39 + .../DashboardExperienceTests.swift | 38 +- .../GatewayChannelConnectTests.swift | 28 +- .../WebChatSwiftUISmokeTests.swift | 33 +- apps/shared/OpenClawWatchRTC/Cargo.lock | 8 +- docs/plugins/building-plugins.md | 2 +- docs/plugins/sdk-setup.md | 2 +- .../plugin-publish/minimal-package.json | 2 +- docs/tools/acp-agents-setup.md | 4 + docs/tools/acp-agents/troubleshooting.md | 12 + docs/tools/lobster.md | 10 + extensions/acpx/package.json | 2 +- extensions/amazon-bedrock/package.json | 4 +- extensions/browser/package.json | 2 +- extensions/canvas/package.json | 2 +- extensions/codex/package.json | 2 +- extensions/cua-computer/package.json | 22 +- .../src/driver-artifacts-resolution.test.ts | 6 +- extensions/diffs/package.json | 2 +- extensions/discord/package.json | 2 +- extensions/document-extract/package.json | 6 +- extensions/feishu/package.json | 2 +- extensions/file-transfer/package.json | 2 +- extensions/firecrawl/package.json | 2 +- extensions/google-meet/package.json | 4 +- extensions/imap/package.json | 4 +- extensions/imessage/package.json | 2 +- extensions/line/package.json | 2 +- extensions/llm-task/package.json | 2 +- extensions/lobster/package.json | 4 +- extensions/matrix/package.json | 2 +- extensions/memory-core/package.json | 2 +- extensions/memory-lancedb/package.json | 4 +- extensions/memory-wiki/package.json | 2 +- extensions/msteams/package.json | 2 +- extensions/ollama/package.json | 2 +- extensions/qa-channel/package.json | 2 +- extensions/qa-lab/package.json | 6 +- extensions/slack/package.json | 2 +- extensions/tavily/package.json | 2 +- extensions/teams-meetings/package.json | 2 +- extensions/telegram/package.json | 2 +- extensions/tlon/package.json | 4 +- extensions/visitor-access/package.json | 2 +- extensions/voice-call/package.json | 2 +- extensions/whatsapp/package.json | 2 +- extensions/workboard/openclaw.plugin.json | 4 +- extensions/workboard/package.json | 2 +- extensions/xai/package.json | 2 +- extensions/zalouser/package.json | 2 +- extensions/zoom-meetings/package.json | 2 +- package.json | 34 +- packages/agent-core/package.json | 2 +- packages/ai/package.json | 4 +- packages/gateway-protocol/package.json | 2 +- packages/llm-core/package.json | 2 +- packages/mermaid-renderer/package.json | 2 +- packages/normalization-core/package.json | 2 +- packages/terminal-core/package.json | 2 +- pnpm-lock.yaml | 2354 ++++++++--------- pnpm-workspace.yaml | 4 +- qa/convex-credential-broker/package.json | 2 +- scripts/cloudflare/Dockerfile | 4 +- scripts/cloudflare/package.json | 2 +- scripts/crabbox-untrusted-bootstrap.sh | 23 +- scripts/docker/sandbox/Dockerfile | 2 +- scripts/docker/sandbox/Dockerfile.browser | 2 +- scripts/docs-i18n/go.mod | 2 +- scripts/docs-i18n/go.sum | 4 +- scripts/install-cli.sh | 2 +- scripts/install.sh | 2 +- scripts/lib/vitest-pair-benchmark.mts | 4 +- scripts/materialize-vercel-cli.sh | 6 +- scripts/run-opengrep.sh | 4 +- src/cli/resume-cli.runtime.ts | 4 +- src/cli/update-cli.test.ts | 59 +- src/cli/update-cli/cleanup.ts | 4 +- src/cli/update-cli/wizard.ts | 4 +- src/commands/migrate.test.ts | 13 +- src/commands/migrate.ts | 2 +- src/commands/models/accounts.test.ts | 9 +- src/commands/models/auth.test.ts | 13 +- src/commands/models/scan.ts | 4 +- src/commands/onboard-helpers.ts | 4 +- src/commands/reset.ts | 2 +- src/commands/sandbox.test.ts | 6 +- src/commands/uninstall.ts | 2 +- src/gateway/http-stream.test-support.ts | 27 + src/gateway/openai-http.test.ts | 219 +- .../server.tasks-list-performance.test.ts | 62 +- .../npm-spec-install-test-helpers.ts | 19 +- src/wizard/clack-prompter.test.ts | 42 +- src/wizard/clack-prompter.ts | 7 +- .../android-release-fastlane-gates.test.ts | 4 +- test/scripts/ci-workflow-guards.test.ts | 6 +- .../crabbox-untrusted-bootstrap.test.ts | 37 +- .../ios-release-fastlane-gates.test.ts | 4 +- test/scripts/ios-release-inspection.test.ts | 2 +- test/scripts/package-mac-app.test.ts | 4 +- test/scripts/run-opengrep.test.ts | 2 +- .../vercel-container-registry-publish.test.ts | 10 +- ui/package.json | 15 +- ui/src/components/mcp-app-view.ts | 22 +- ui/src/e2e/mcp-app-conformance.e2e.test.ts | 6 + ...chat-transcript-end-follow.browser.test.ts | 56 +- .../chat-transcript-geometry.test.ts | 2 + .../chat-transcript-offset-observer.ts | 19 +- .../chat-transcript-scroll-ownership.test.ts | 16 +- .../chat-transcript-virtualizer-host.ts | 16 +- .../mcp-app-conformance-fixture.ts | 12 +- 143 files changed, 2137 insertions(+), 2141 deletions(-) create mode 100644 apps/macos/Sources/OpenClaw/ExperienceWindow.swift create mode 100644 apps/macos/Tests/OpenClawIPCTests/AppKitWindowTransitionTestSupport.swift diff --git a/.github/actions/setup-android-toolchain/action.yml b/.github/actions/setup-android-toolchain/action.yml index 2db099884004..104867f21b25 100644 --- a/.github/actions/setup-android-toolchain/action.yml +++ b/.github/actions/setup-android-toolchain/action.yml @@ -44,7 +44,7 @@ runs: esac - name: Setup Java - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0 with: distribution: temurin # Keep sdkmanager on the stable JDK path for Linux CI runners. @@ -52,7 +52,7 @@ runs: - name: Setup Gradle Java id: gradle-java - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0 with: distribution: temurin # Pin Gradle's runtime without changing later SDK tool invocations. diff --git a/.github/release/vercel-cli/package-lock.json b/.github/release/vercel-cli/package-lock.json index 479fcdd1ed9b..76072521f45c 100644 --- a/.github/release/vercel-cli/package-lock.json +++ b/.github/release/vercel-cli/package-lock.json @@ -8,8 +8,8 @@ "name": "openclaw-release-vercel-cli", "version": "1.0.0", "dependencies": { - "sandbox": "4.2.1", - "vercel": "59.11.7" + "sandbox": "4.3.0", + "vercel": "59.13.1" } }, "node_modules/@bytecodealliance/preview2-shim": { @@ -1881,9 +1881,9 @@ } }, "node_modules/@vercel/backends": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@vercel/backends/-/backends-7.0.2.tgz", - "integrity": "sha512-tC1EQ7g7wJTUH4MYc1ve9dDn6l92aLR5VOSChan9slLctLmhOPFfZGD8R0ZlYzkTZLE50NVi6bMwE3jlvdza4Q==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@vercel/backends/-/backends-7.0.3.tgz", + "integrity": "sha512-iSPLDAILYUtMEOgJr4n+HhJ/YQH6WG7jV0oADWs9Av/VB6Er5MHXEwKnZhOvhv4QBS2QCsD0Jh00gg78MxTOuA==", "license": "Apache-2.0", "dependencies": { "@vercel/nft": "1.10.0", @@ -1901,7 +1901,7 @@ "zod": "3.22.4" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/backends/node_modules/zod": { @@ -1945,9 +1945,9 @@ } }, "node_modules/@vercel/build-utils": { - "version": "14.9.1", - "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-14.9.1.tgz", - "integrity": "sha512-d7Ov4+TA+UAxopVsgh698LPs0Um/LrW430FRU/qPlI7WFWWU55XwGJ2+aXCY8ZbA2zoZ8XjbZJVGjwnTCBG52Q==", + "version": "14.9.2", + "resolved": "https://registry.npmjs.org/@vercel/build-utils/-/build-utils-14.9.2.tgz", + "integrity": "sha512-AmprppA5kD+hGOb9l62dvN89zjgS4J0qr+0PsGzgrLgEBmtf03IDdcIJY7pt0UhKhUeI99u7y7xLUI46PHKfww==", "license": "Apache-2.0", "dependencies": { "cjs-module-lexer": "1.2.3", @@ -1955,29 +1955,39 @@ } }, "node_modules/@vercel/cervel": { - "version": "0.1.61", - "resolved": "https://registry.npmjs.org/@vercel/cervel/-/cervel-0.1.61.tgz", - "integrity": "sha512-cm3WyokqnHwtLIK+k9C+NbUSmu+yGldnCPnn/rYB0ZzPZTlwdI3k7/d93Zq7/TEcsbHFpo7fxAwWr+DUAh3ufw==", + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@vercel/cervel/-/cervel-0.1.62.tgz", + "integrity": "sha512-cZd1d07HkX0utwA8SkDlmbgDO6OhhZmDGqhLD0FXTs2UqTP/s5X4juGLcGr7TxYD0AMIlaX7SozOTb3jbJVe1w==", "license": "Apache-2.0", "dependencies": { - "@vercel/backends": "7.0.2" + "@vercel/backends": "7.0.3" }, "bin": { "cervel": "bin/cervel.mjs" } }, "node_modules/@vercel/cli-auth": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@vercel/cli-auth/-/cli-auth-0.3.5.tgz", - "integrity": "sha512-DSkTWamJrhgCUrymOSCWysbiVeLsvPINhoKVTw+mypoyIJxKQxDgQaafvZ0OYGS2qg8wVUY30HgDugzaEdwo6Q==", + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@vercel/cli-auth/-/cli-auth-0.3.6.tgz", + "integrity": "sha512-DUWj0+Yio1Ii7G6sileE84cnuojHBi6yX4PBEQYuTWEBKKbI+Ghk9a5evNADXSB4Du8Y+oE/ldBf/uADFnVvlg==", "dependencies": { "@napi-rs/keyring": "1.2.0", - "@vercel/cli-config": "0.2.4", + "@vercel/cli-config": "0.2.5", "async-listen": "3.0.0", "open": "8.4.0", "zod": "4.1.11" } }, + "node_modules/@vercel/cli-auth/node_modules/@vercel/cli-config": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@vercel/cli-config/-/cli-config-0.2.5.tgz", + "integrity": "sha512-WniFxgznIPZ3h1USCLxArTyvR2a3/lvZW5mSSkuI2r8rQWEzUV8qnKXJEOFrVnVWe2YDxeCVMgZoxIH4kHA92Q==", + "license": "Apache-2.0", + "dependencies": { + "xdg-app-paths": "5", + "zod": "4.1.11" + } + }, "node_modules/@vercel/cli-config": { "version": "0.2.4", "resolved": "https://registry.npmjs.org/@vercel/cli-config/-/cli-config-0.2.4.tgz", @@ -2051,12 +2061,12 @@ "license": "ISC" }, "node_modules/@vercel/container": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/container/-/container-7.0.1.tgz", - "integrity": "sha512-kAN2pV5u3kj6AoyqeFa/PrlO9yxceTRBJM5YNJObdqpVVyLC7wlZ3GUx0VpP3TPsSFKK+B12xJPAP0xxxF6CWQ==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/container/-/container-7.0.2.tgz", + "integrity": "sha512-XjJHH9X4ApqZapsgHEC4PDAB0jA7S7XssGTmnSQB7AUaYugmLnnkFsR+8nD85LGh90EHruW4Ux1LUkOW+dBq1g==", "license": "Apache-2.0", "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/detect-agent": { @@ -2069,16 +2079,16 @@ } }, "node_modules/@vercel/elysia": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/elysia/-/elysia-7.0.1.tgz", - "integrity": "sha512-bOCgbU/d0qwOi+3vEOtkQ9oGzrs7CQ6PNcUM8L8iZ/cUirD6lra+T+wQgNEeOPi1q6xNcXCkj92J4uk/jEmMuw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/elysia/-/elysia-7.0.2.tgz", + "integrity": "sha512-793gCh4lDmYKniCmph82sXoEmbUfwBg+o1wCw/FYIjU9f4/tqo2KX9rf3lAYL7p5vTmlMDDSDwqi3UJcw2VsJQ==", "license": "Apache-2.0", "dependencies": { - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/error-utils": { @@ -2088,14 +2098,14 @@ "license": "Apache-2.0" }, "node_modules/@vercel/express": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@vercel/express/-/express-7.0.2.tgz", - "integrity": "sha512-pRsUuf0YNg0gTypzV1Ne0Z1oO76KnLNVht8HP4ERHit3QS5RrCSh468CgqAB1tbVFexcSgFFTtJ/90oPwDEO9g==", + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@vercel/express/-/express-7.0.3.tgz", + "integrity": "sha512-6zJ/GR6Y3JWfs4xKYWNTf+oIJ2vVU6yy534h8YY2AB/ILDezYCYpvHR1TutCWRgh73ewyCI4UZpn3IbIZTL4uA==", "license": "Apache-2.0", "dependencies": { - "@vercel/cervel": "0.1.61", + "@vercel/cervel": "0.1.62", "@vercel/nft": "1.10.0", - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3", "fs-extra": "11.1.0", "path-to-regexp": "8.3.0", @@ -2103,7 +2113,7 @@ "zod": "3.22.4" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/express/node_modules/zod": { @@ -2116,16 +2126,16 @@ } }, "node_modules/@vercel/fastify": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/fastify/-/fastify-7.0.1.tgz", - "integrity": "sha512-oXnXkK7ydsQQO+Ds2Ivfsyqc1MeqJZxbiUvDX+oAG+jZjtTDjkJfs0sD8acKdVUtShFO55m9k8WzTILVaQVVRg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/fastify/-/fastify-7.0.2.tgz", + "integrity": "sha512-HtpYjkctoXpDDL/4GAfB4/5CDGj2X4tgSc52VulbYwf7EFcWnIESxJHxtKASs29xOXJiu3iBdOFrWXKgTFYQKQ==", "license": "Apache-2.0", "dependencies": { - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/fun": { @@ -2185,48 +2195,48 @@ } }, "node_modules/@vercel/gatsby-plugin-vercel-builder": { - "version": "2.2.53", - "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.2.53.tgz", - "integrity": "sha512-2AaKdNQGz5nQDQ9hMG8SeE7NdysDG7DYNK90YlNvRTqVopCvC6ZLAz33QuFc8dnAMAHiqYDOO0UKw+Px1KlBkg==", + "version": "2.2.54", + "resolved": "https://registry.npmjs.org/@vercel/gatsby-plugin-vercel-builder/-/gatsby-plugin-vercel-builder-2.2.54.tgz", + "integrity": "sha512-u7pc6kHv3I3YabuwG1J0+C86aROlamg1UsSUcifhwDBgeYYQgVkzXVqFC1iNUYycWcE9loKKLpX5trdHKooZhg==", "license": "Apache-2.0", "dependencies": { "@sinclair/typebox": "0.25.24", - "@vercel/build-utils": "14.9.1", + "@vercel/build-utils": "14.9.2", "esbuild": "0.27.0", "etag": "1.8.1", "fs-extra": "11.1.0" } }, "node_modules/@vercel/go": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@vercel/go/-/go-10.0.1.tgz", - "integrity": "sha512-qtxY5K4I5c/ll9JgGvxJ2as9mQDKzoiCsvxVB1F4VzsGh03EXJVYdYZoDdBcumdC+q3sy9G4a3UYhIpOspY+8Q==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@vercel/go/-/go-10.1.0.tgz", + "integrity": "sha512-XDWGWLbfe5KYJWw0Q/2CIc1FrUCichQhIzU55ktJ604RaiGrVeeJsl4TqaiPqzL5Rju+qiy1X65XgWb8LrY7ow==", "license": "Apache-2.0", "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/h3": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/h3/-/h3-7.0.1.tgz", - "integrity": "sha512-91utvhU1sigL/MfWgshQ8okSfR4Dfx8iA4kMuA1l2iCRW9cfS3YZxZh6F3IMPyiC/J75e9pCevpf9ze4OHWaNg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/h3/-/h3-7.0.2.tgz", + "integrity": "sha512-dSa/jOZBDKoIqwcarSlNjwZAa+Kr55VEEYv+8VyXoADvJFY5+dBUdBG7ofRTXF1Zjy368KF+ZUrYy4i1jXAJVA==", "license": "Apache-2.0", "dependencies": { - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/hono": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/hono/-/hono-7.0.1.tgz", - "integrity": "sha512-ZMDgAZ3RML7M05dUfogmLLLfE2JCJkJTfaCnF6oq9cH/BA0DTxn6QFQvQbIgiA18Ot0FcypuYRl9uge8hdCiYA==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/hono/-/hono-7.0.2.tgz", + "integrity": "sha512-Vl9JlU5ihQGJg/bU7JFl5P5ly5LPJzQOYIbXtRB0mlkeXbZnZXXfKNDXnGtm3SRdhIjMZMsA+UGOWpi226ZnSA==", "license": "Apache-2.0", "dependencies": { "@vercel/nft": "1.10.0", - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3", "fs-extra": "11.1.0", "path-to-regexp": "8.3.0", @@ -2234,7 +2244,7 @@ "zod": "3.22.4" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/hono/node_modules/zod": { @@ -2247,54 +2257,54 @@ } }, "node_modules/@vercel/hydrogen": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@vercel/hydrogen/-/hydrogen-8.0.1.tgz", - "integrity": "sha512-2CfTbi2XujdyNK/YQxs23j0Llm+jwyZYkysu+NSD8FO/vrpFzK9ozAmlWN+88S4phXoJjnfq35nDGf23YKRkDg==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@vercel/hydrogen/-/hydrogen-8.0.2.tgz", + "integrity": "sha512-oVk/zufemogJ42LMSxVaz8R3UvxNlyeUJ8N9cpeuDaJfj7R+Ym1L9zoxg2G7y7AjQCqkgx5aBcZMPtjalKXkWw==", "license": "Apache-2.0", "dependencies": { "@vercel/static-config": "3.4.3", "ts-morph": "12.0.0" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/koa": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/koa/-/koa-7.0.1.tgz", - "integrity": "sha512-FnQHRkRaL3w1NI+xBznOgFwuu0YfDvqdIdB384KdXTRYjZs3yhBfIC9GY0qmTu69Bh3Sln7ZANANZAK+7hbwmg==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/koa/-/koa-7.0.2.tgz", + "integrity": "sha512-jBYj+caD2TukyqECMl+0WFxxGhOPsV8O7Gl0n57p0FrgmnAM0jAqFElEZAdXmKRIA5mcJ1SkIGGX8UgcQbgEjw==", "license": "Apache-2.0", "dependencies": { - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/nestjs": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@vercel/nestjs/-/nestjs-7.0.1.tgz", - "integrity": "sha512-kRmI/lJ3w4SpRjtCKZMxt69JSZDQn6ulRGAmrkr/p6ioYVstC1Uf94zRPjafkBIVYJFW0KExNq/kwv5XYU59bw==", + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/@vercel/nestjs/-/nestjs-7.0.2.tgz", + "integrity": "sha512-JBVrHRWZ141duQa+HdX0Jig0Q9d0OUJnNui2dd8+Y+ncLCrxS7OiC1P8EcyLwSKTBc7Akpvp9tj4HzSpZWByOQ==", "license": "Apache-2.0", "dependencies": { - "@vercel/node": "12.0.1", + "@vercel/node": "12.0.2", "@vercel/static-config": "3.4.3" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/next": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/@vercel/next/-/next-11.0.2.tgz", - "integrity": "sha512-c97ybY1jpF7534R0DkxlydWOOcFg93X24rdEdljBHtnho3wWD2RE+E9beC5dzq98uXSYSXrUQUghQko8oiY8sg==", + "version": "11.0.3", + "resolved": "https://registry.npmjs.org/@vercel/next/-/next-11.0.3.tgz", + "integrity": "sha512-34jZL6fFuiZn9Quoytz1jIczPrBmJ61bigvj98bnZjjga6yvk1CJlAb9vC/1IJlULMvmtp2+GV/zd8LYURc/yA==", "license": "Apache-2.0", "dependencies": { "@vercel/nft": "1.10.0" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/nft": { @@ -2324,9 +2334,9 @@ } }, "node_modules/@vercel/node": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@vercel/node/-/node-12.0.1.tgz", - "integrity": "sha512-aKxdgnp31N/clDxZM69Z9McoZ0gfBo48Ms+iiuFxJ5wt2SilTVvmS3Rn/LZjlTvQwHGKlJPUwamiuDs/Qsfszw==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@vercel/node/-/node-12.0.2.tgz", + "integrity": "sha512-9W+wTqem3zk6XywPb4c+shCtaQS9b520RVc9x7F2qX+bKi6Ox5w9x4SHj4h97iqbrAZ1B3OSRJsAzmG10zouEA==", "license": "Apache-2.0", "dependencies": { "@edge-runtime/node-utils": "2.3.0", @@ -2352,7 +2362,7 @@ "undici": "5.28.4" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/node/node_modules/es-module-lexer": { @@ -2403,15 +2413,15 @@ "license": "MIT" }, "node_modules/@vercel/python": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/@vercel/python/-/python-13.0.1.tgz", - "integrity": "sha512-w96ozfdjVQxkPXKcY6GEi7/gqc9ZLriiWiflrUS/fBq66gTBkWtga2CFhK166ZaQT+cqgN3/X0NED7gUUzoLGw==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/@vercel/python/-/python-13.0.2.tgz", + "integrity": "sha512-hEnPMjvYzRARoZvhWlnU/0oNrbswQHLFTdo3M+8eW1as6Jv8ccV4/is30I1aQzCjO03pRy16VbBt1U1QIn2AfA==", "license": "Apache-2.0", "dependencies": { "@vercel/python-analysis": "0.14.0" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/python-analysis": { @@ -2453,9 +2463,9 @@ } }, "node_modules/@vercel/redwood": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-9.0.1.tgz", - "integrity": "sha512-gamcb5L0T5HA11+10kBxypGbxSm3wTzWcor6qCpJdO3YMNzbvf74PZmwPfEMEsMo9BBb0MV03XgsVObra5lriw==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@vercel/redwood/-/redwood-9.0.2.tgz", + "integrity": "sha512-mnMGPaXeRYdYhb6ltVO01a+sOI6J14atyu1VHs6+7jSyGywuS7AP7aG64XzD+1nqvknqz88fnI6NqS2WVVOO1g==", "license": "Apache-2.0", "dependencies": { "@vercel/nft": "1.10.0", @@ -2464,7 +2474,7 @@ "ts-morph": "12.0.0" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/redwood/node_modules/semver": { @@ -2477,9 +2487,9 @@ } }, "node_modules/@vercel/remix-builder": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-12.0.1.tgz", - "integrity": "sha512-7X5F2f61bUANZ1NawaXRZh322sHR4RLMADrOKIbteCeMUw1me2FhgM5EjYWxGwCwkD2tmveo+CtDU5cESsmLag==", + "version": "12.0.2", + "resolved": "https://registry.npmjs.org/@vercel/remix-builder/-/remix-builder-12.0.2.tgz", + "integrity": "sha512-wRhUUJoohhHthbucuF1+h6LArTIu2MUepB054M1rDnEj9NeafqQ4RoxkS1BPj8d+2BCt6QUiQzr6wZFrCBvTUw==", "license": "Apache-2.0", "dependencies": { "@vercel/error-utils": "2.2.1", @@ -2490,7 +2500,7 @@ "ts-morph": "12.0.0" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/remix-builder/node_modules/path-to-regexp": { @@ -2500,18 +2510,18 @@ "license": "MIT" }, "node_modules/@vercel/ruby": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-9.0.1.tgz", - "integrity": "sha512-DwqWxQiA7DSnA1/Xr5EkZ8tCfeZ/yc/zbX15DfwBbHsXdcX4dnKLjjQNZan/6zCehHRWstEQja9JMohRK39oeQ==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@vercel/ruby/-/ruby-9.0.2.tgz", + "integrity": "sha512-EAfqC12wKQhR7RJuDVulq8Ae72U2WGr+X8PsCKFhL7RloahiDeE/uX6gVHr/yVcshyFeA63WL4Vu893ZACZE4w==", "license": "Apache-2.0", "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/rust": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@vercel/rust/-/rust-8.0.1.tgz", - "integrity": "sha512-rCXhlyA4P80cXpIsMAueVeymsia8dlyZwFJNXyYKOxeMnVasZsDJ06/xuObwLndww16IaNrGtkf9GQ7uU1JVwA==", + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@vercel/rust/-/rust-8.0.2.tgz", + "integrity": "sha512-o957wFH2OY0BzZ2YfvJVH6Rw7tPp99M+z3Q7NFpgkXG44bna3XEL/o1LtJYvRqh48w4zSphaNgcfFIyvgKXocA==", "license": "Apache-2.0", "dependencies": { "execa": "5", @@ -2519,7 +2529,7 @@ "smol-toml": "1.5.2" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/rust/node_modules/execa": { @@ -2573,9 +2583,9 @@ "license": "ISC" }, "node_modules/@vercel/sandbox": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@vercel/sandbox/-/sandbox-3.2.1.tgz", - "integrity": "sha512-Yw/UJl5T5OwO+TmnMAVgHTWlu2vYmMUAA9x7RhTHCge9y3cx90kvrjvNDDiqtt3euoFnLeoP2kvZFDbNwgWaww==", + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/@vercel/sandbox/-/sandbox-3.2.2.tgz", + "integrity": "sha512-ak2r3AZWi/vokms/BdMJPtf73sb2k1BT9dIuYRadmMBhHKacnK4+FlsLMcWLCFPsqA/HVE7SlUognDiTUQ7Qyg==", "license": "Apache-2.0", "dependencies": { "@vercel/oidc": "3.2.0", @@ -2629,18 +2639,18 @@ } }, "node_modules/@vercel/static-build": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-9.0.1.tgz", - "integrity": "sha512-n/4AxdEBprOo/1WEHyQfZdYKw1fmAn54SQGWww0ZP3WRkbYRKui1KjkfqeHLdSkhu6AAsZGpRlYZmK5sghFErA==", + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/@vercel/static-build/-/static-build-9.0.2.tgz", + "integrity": "sha512-vi9+XLdesajLXt9g/ujwS28dNEAcssguJh9G3QP1UYLydgIQYSzI4L5ExWYigF/aKSX+RoHCngBpR3pYVEXYxA==", "license": "Apache-2.0", "dependencies": { "@vercel/gatsby-plugin-vercel-analytics": "1.0.12", - "@vercel/gatsby-plugin-vercel-builder": "2.2.53", + "@vercel/gatsby-plugin-vercel-builder": "2.2.54", "@vercel/static-config": "3.4.3", "ts-morph": "12.0.0" }, "peerDependencies": { - "@vercel/build-utils": "14.9.1" + "@vercel/build-utils": "14.9.2" } }, "node_modules/@vercel/static-config": { @@ -2656,9 +2666,9 @@ } }, "node_modules/@vercel/vc-native-darwin-arm64": { - "version": "59.11.7", - "resolved": "https://registry.npmjs.org/@vercel/vc-native-darwin-arm64/-/vc-native-darwin-arm64-59.11.7.tgz", - "integrity": "sha512-SeYVrBni2n2GiUdyfLQb8R5ZSzujljsAePMPOlXg3nIC+oxyFjfmZn/vZmDfjfa5bV/Qme/LRtsU5GJQiSE08w==", + "version": "59.13.1", + "resolved": "https://registry.npmjs.org/@vercel/vc-native-darwin-arm64/-/vc-native-darwin-arm64-59.13.1.tgz", + "integrity": "sha512-PGNDXWhQQ0oTcISSr9JzrPY0zSW7yp30X1byCtZhm6DCdo3pWK+vuoHrJ1NHvkesTeSRNk14ejDPWfDYWNgHDg==", "cpu": [ "arm64" ], @@ -2669,9 +2679,9 @@ ] }, "node_modules/@vercel/vc-native-darwin-x64": { - "version": "59.11.7", - "resolved": "https://registry.npmjs.org/@vercel/vc-native-darwin-x64/-/vc-native-darwin-x64-59.11.7.tgz", - "integrity": "sha512-SAwmxo3kfCXWO32Iq9A1VMVRVWi0B0G1zCPO16Fiuz0eFK/PZRnWXbA2J68U6W3hkf4nCpC6IEagNBhJudA72w==", + "version": "59.13.1", + "resolved": "https://registry.npmjs.org/@vercel/vc-native-darwin-x64/-/vc-native-darwin-x64-59.13.1.tgz", + "integrity": "sha512-syRdmkuvIoUWRqWUobfLd4QJN72PfB7KgPS29ah3h0Bivj9N8WL8ofJNv2UYO/59jugmWroCcTHAtuBvXTPdqg==", "cpu": [ "x64" ], @@ -2682,9 +2692,9 @@ ] }, "node_modules/@vercel/vc-native-linux-arm64": { - "version": "59.11.7", - "resolved": "https://registry.npmjs.org/@vercel/vc-native-linux-arm64/-/vc-native-linux-arm64-59.11.7.tgz", - "integrity": "sha512-UbyQVlA59SPsQmSfUUAdMm37bOVJti/GbcsEF4QwFIsWjjV2wPFJkfzSICeE25xw/TSWCNmVD4GqjXJEnzAGcQ==", + "version": "59.13.1", + "resolved": "https://registry.npmjs.org/@vercel/vc-native-linux-arm64/-/vc-native-linux-arm64-59.13.1.tgz", + "integrity": "sha512-vWLGdCrQSGUuS4csFCAZ2rpQ2MJkxfFoLFcOkPA5xT0Nwgoc7CQLBLxZm3ri0DUXTFU4phrdav00e3rlgV6C+Q==", "cpu": [ "arm64" ], @@ -2695,9 +2705,9 @@ ] }, "node_modules/@vercel/vc-native-linux-x64": { - "version": "59.11.7", - "resolved": "https://registry.npmjs.org/@vercel/vc-native-linux-x64/-/vc-native-linux-x64-59.11.7.tgz", - "integrity": "sha512-zabEvXd4VDxV8kYl1vXHBqJGiG354EWrEAoJD+zTuwQxu4bM38nZON96OvsQEGJt4Q1WG0cjFwPFfqEugrUOfQ==", + "version": "59.13.1", + "resolved": "https://registry.npmjs.org/@vercel/vc-native-linux-x64/-/vc-native-linux-x64-59.13.1.tgz", + "integrity": "sha512-sZlkpA+1NqeLEilNSeo/A0QnxtnvY8hT5C2YAzRupfAmXQFcPvppfu2bz7eQOua1msJJFQDi9V9Au+KJCbSfdg==", "cpu": [ "x64" ], @@ -4251,12 +4261,12 @@ "license": "MIT" }, "node_modules/sandbox": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/sandbox/-/sandbox-4.2.1.tgz", - "integrity": "sha512-e7D/gnq4Q8M4SUDRCtKo8CtsZX9jntdzzteIBhuuTOe5+wpfEqOZsNnAqbqiEakOnoctRAbAuc2fdoj+iopmuA==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/sandbox/-/sandbox-4.3.0.tgz", + "integrity": "sha512-AmxuGAe8kbQNOUl8WeAbr42H8UXJ2w2MJyDCGClkKvRwxPA9Hvz+5BgYoLNmO9N66RzAetpB+8Ix/bVlMJ5pPg==", "license": "Apache-2.0", "dependencies": { - "@vercel/sandbox": "3.2.1", + "@vercel/sandbox": "3.2.2", "async-retry": "1.3.3", "debug": "^4.4.1", "ws": "^8.21.0", @@ -4673,38 +4683,38 @@ } }, "node_modules/vercel": { - "version": "59.11.7", - "resolved": "https://registry.npmjs.org/vercel/-/vercel-59.11.7.tgz", - "integrity": "sha512-C+L/JKmlGDypKGcTU/atckydeK/AKa/7fKwUbvcwveguV1QPlY8beiIGgbwkdbb80bbIpPFHRQYrhi5XPAmCBA==", + "version": "59.13.1", + "resolved": "https://registry.npmjs.org/vercel/-/vercel-59.13.1.tgz", + "integrity": "sha512-sBxGOvWru8BFdCaqlRhtARTAWDL4FV+Q8APcN63lnOEryTXRce1z3DBWzaakpsts+uF1Sy9MdrTft0zPOWpGuA==", "license": "Apache-2.0", "dependencies": { - "@vercel/backends": "7.0.2", + "@vercel/backends": "7.0.3", "@vercel/blob": "2.8.0", - "@vercel/build-utils": "14.9.1", - "@vercel/cli-auth": "0.3.5", - "@vercel/cli-config": "0.2.4", - "@vercel/container": "7.0.1", + "@vercel/build-utils": "14.9.2", + "@vercel/cli-auth": "0.3.6", + "@vercel/cli-config": "0.2.5", + "@vercel/container": "7.0.2", "@vercel/detect-agent": "1.2.5", - "@vercel/elysia": "7.0.1", - "@vercel/express": "7.0.2", - "@vercel/fastify": "7.0.1", + "@vercel/elysia": "7.0.2", + "@vercel/express": "7.0.3", + "@vercel/fastify": "7.0.2", "@vercel/fun": "1.3.0", - "@vercel/go": "10.0.1", - "@vercel/h3": "7.0.1", - "@vercel/hono": "7.0.1", - "@vercel/hydrogen": "8.0.1", - "@vercel/koa": "7.0.1", - "@vercel/nestjs": "7.0.1", - "@vercel/next": "11.0.2", - "@vercel/node": "12.0.1", + "@vercel/go": "10.1.0", + "@vercel/h3": "7.0.2", + "@vercel/hono": "7.0.2", + "@vercel/hydrogen": "8.0.2", + "@vercel/koa": "7.0.2", + "@vercel/nestjs": "7.0.2", + "@vercel/next": "11.0.3", + "@vercel/node": "12.0.2", "@vercel/prepare-flags-definitions": "0.3.0", - "@vercel/python": "13.0.1", + "@vercel/python": "13.0.2", "@vercel/python-analysis": "0.14.0", - "@vercel/redwood": "9.0.1", - "@vercel/remix-builder": "12.0.1", - "@vercel/ruby": "9.0.1", - "@vercel/rust": "8.0.1", - "@vercel/static-build": "9.0.1", + "@vercel/redwood": "9.0.2", + "@vercel/remix-builder": "12.0.2", + "@vercel/ruby": "9.0.2", + "@vercel/rust": "8.0.2", + "@vercel/static-build": "9.0.2", "chokidar": "4.0.0", "esbuild": "0.27.0", "jose": "5.9.6", @@ -4724,10 +4734,20 @@ "node": ">= 18" }, "optionalDependencies": { - "@vercel/vc-native-darwin-arm64": "59.11.7", - "@vercel/vc-native-darwin-x64": "59.11.7", - "@vercel/vc-native-linux-arm64": "59.11.7", - "@vercel/vc-native-linux-x64": "59.11.7" + "@vercel/vc-native-darwin-arm64": "59.13.1", + "@vercel/vc-native-darwin-x64": "59.13.1", + "@vercel/vc-native-linux-arm64": "59.13.1", + "@vercel/vc-native-linux-x64": "59.13.1" + } + }, + "node_modules/vercel/node_modules/@vercel/cli-config": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@vercel/cli-config/-/cli-config-0.2.5.tgz", + "integrity": "sha512-WniFxgznIPZ3h1USCLxArTyvR2a3/lvZW5mSSkuI2r8rQWEzUV8qnKXJEOFrVnVWe2YDxeCVMgZoxIH4kHA92Q==", + "license": "Apache-2.0", + "dependencies": { + "xdg-app-paths": "5", + "zod": "4.1.11" } }, "node_modules/vercel/node_modules/@vercel/sandbox": { diff --git a/.github/release/vercel-cli/package.json b/.github/release/vercel-cli/package.json index 11b71b07506b..026383f76781 100644 --- a/.github/release/vercel-cli/package.json +++ b/.github/release/vercel-cli/package.json @@ -3,8 +3,8 @@ "private": true, "version": "1.0.0", "dependencies": { - "sandbox": "4.2.1", - "vercel": "59.11.7" + "sandbox": "4.3.0", + "vercel": "59.13.1" }, "overrides": { "@tootallnate/once@2.0.0": "2.0.1", diff --git a/.github/workflows/android-beta-release.yml b/.github/workflows/android-beta-release.yml index 689530d4c842..da9e998318b1 100644 --- a/.github/workflows/android-beta-release.yml +++ b/.github/workflows/android-beta-release.yml @@ -253,7 +253,7 @@ jobs: set -euo pipefail bundle _2.6.9_ install --jobs 4 --retry 3 bundle _2.6.9_ check - test "$(bundle _2.6.9_ exec ruby -e 'require "fastlane"; print Fastlane::VERSION')" = "2.238.0" + test "$(bundle _2.6.9_ exec ruby -e 'require "fastlane"; print Fastlane::VERSION')" = "2.239.0" - name: Revalidate release authority immediately before signing access uses: ./apps/android/build/mobile-release-ci/authority/.github/actions/mobile-release-authority diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4c5acab63c9..dfe83e5c677a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -81,7 +81,7 @@ concurrency: env: FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: "true" - IOS_SCREENSHOT_FASTLANE_VERSION: "2.238.0" + IOS_SCREENSHOT_FASTLANE_VERSION: "2.239.0" IOS_SCREENSHOT_NODE_VERSION: "24.16.0" IOS_SCREENSHOT_XCODE_VERSION: "Xcode 26.6 Build version 17F113" NODE_VERSION: "24.x" @@ -3814,7 +3814,7 @@ jobs: # protected boundary lane may publish this repository-global snapshot. - name: Mount extension boundary sticky disk if: matrix.task == 'lint' && steps.extension-boundary-inputs.outputs.enabled == 'true' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') - uses: useblacksmith/stickydisk@35ba2e331a80056a42af053ee54968511de2b7c7 # v1.5.0 + uses: useblacksmith/stickydisk@74f3f01ab1392726dd6ee06904f0452b0ec1e151 # v1.6.0 with: # One stable disk for the whole repository. The v1 per-PR/per-config # keys minted a new backing disk for every PR and toolchain change @@ -4306,7 +4306,7 @@ jobs: # repository-global snapshots, so they keep the GitHub cache path. - name: Mount extension boundary sticky disk if: matrix.group == 'extension-package-boundary' && steps.extension-boundary-inputs.outputs.enabled == 'true' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && vars.OPENCLAW_CI_RUNNER_BACKEND != 'hybrid' && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') - uses: useblacksmith/stickydisk@35ba2e331a80056a42af053ee54968511de2b7c7 # v1.5.0 + uses: useblacksmith/stickydisk@74f3f01ab1392726dd6ee06904f0452b0ec1e151 # v1.6.0 with: # One stable disk for the whole repository. The v1 per-PR/per-config # keys minted a new backing disk for every PR and toolchain change @@ -5697,7 +5697,7 @@ jobs: # runs-on already selects non-Blacksmith ubuntu-24.04 runners). - name: Mount Gradle sticky disk if: vars.OPENCLAW_CI_RUNNER_BACKEND != 'github' && !(vars.OPENCLAW_CI_RUNNER_BACKEND == 'hybrid' && github.run_attempt > 1) && github.event_name != 'workflow_dispatch' && github.repository == 'openclaw/openclaw' && (github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name == 'openclaw/openclaw') - uses: useblacksmith/stickydisk@35ba2e331a80056a42af053ee54968511de2b7c7 # v1.5.0 + uses: useblacksmith/stickydisk@74f3f01ab1392726dd6ee06904f0452b0ec1e151 # v1.6.0 with: # One stable disk per matrix task. The v1 per-PR/per-dependency-hash # keys minted a new backing disk for every PR and dependency bump diff --git a/.github/workflows/codeql-android-critical-security.yml b/.github/workflows/codeql-android-critical-security.yml index 70b4e9881bad..1ac8b99a13cc 100644 --- a/.github/workflows/codeql-android-critical-security.yml +++ b/.github/workflows/codeql-android-critical-security.yml @@ -29,7 +29,7 @@ jobs: submodules: false - name: Setup Java - uses: actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961 # v5.7.0 + uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0 with: distribution: temurin java-version: "21" @@ -41,7 +41,7 @@ jobs: install-bun: "false" - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: java-kotlin build-mode: manual @@ -52,6 +52,6 @@ jobs: run: ./gradlew --no-daemon :app:assemblePlayDebug - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-security/android" diff --git a/.github/workflows/codeql-critical-quality.yml b/.github/workflows/codeql-critical-quality.yml index ccbb9fe0c050..25c1e82d7a95 100644 --- a/.github/workflows/codeql-critical-quality.yml +++ b/.github/workflows/codeql-critical-quality.yml @@ -342,13 +342,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-core-auth-secrets-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/core-auth-secrets" @@ -365,13 +365,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-config-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/config-boundary" @@ -388,13 +388,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-gateway-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/gateway-runtime-boundary" @@ -411,13 +411,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-channel-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/channel-runtime-boundary" @@ -487,7 +487,7 @@ jobs: - name: Initialize CodeQL id: init-network-codeql if: ${{ github.event_name != 'pull_request' || steps.network-diff-scan.outputs.full_codeql == 'true' }} - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-network-runtime-boundary-critical-quality.yml @@ -503,7 +503,7 @@ jobs: - name: Analyze id: analyze if: ${{ github.event_name != 'pull_request' || steps.network-diff-scan.outputs.full_codeql == 'true' }} - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: output: sarif-results category: "/codeql-critical-quality/network-runtime-boundary" @@ -553,13 +553,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-agent-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/agent-runtime-boundary" @@ -576,13 +576,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-mcp-process-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/mcp-process-runtime-boundary" @@ -599,13 +599,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-memory-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/memory-runtime-boundary" @@ -622,13 +622,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-session-diagnostics-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/session-diagnostics-boundary" @@ -645,13 +645,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-plugin-sdk-reply-runtime-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/plugin-sdk-reply-runtime" @@ -668,13 +668,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-provider-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/provider-runtime-boundary" @@ -690,13 +690,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-ui-control-plane-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/ui-control-plane" @@ -712,13 +712,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-web-media-runtime-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/web-media-runtime-boundary" @@ -735,13 +735,13 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-plugin-boundary-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/plugin-boundary" @@ -758,12 +758,12 @@ jobs: submodules: false - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: javascript-typescript config-file: ./.github/codeql/codeql-plugin-sdk-package-contract-critical-quality.yml - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-critical-quality/plugin-sdk-package-contract" diff --git a/.github/workflows/codeql-macos-critical-security.yml b/.github/workflows/codeql-macos-critical-security.yml index da9ccd5b7373..b5aed62d00d0 100644 --- a/.github/workflows/codeql-macos-critical-security.yml +++ b/.github/workflows/codeql-macos-critical-security.yml @@ -98,7 +98,7 @@ jobs: path: apps/shared/OpenClawKit/Sources/OpenClawChatUI/Resources/Mermaid - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: swift build-mode: manual @@ -110,7 +110,7 @@ jobs: - name: Analyze id: analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: output: sarif-results upload: failure-only @@ -147,7 +147,7 @@ jobs: done - name: Upload filtered SARIF - uses: github/codeql-action/upload-sarif@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: sarif_file: sarif-results-filtered category: "/codeql-critical-security/macos" diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 2b02d51761d5..ab493a5425f2 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -119,12 +119,12 @@ jobs: .github/codeql - name: Initialize CodeQL - uses: github/codeql-action/init@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/init@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: languages: ${{ matrix.language }} config-file: ${{ matrix.config_file }} - name: Analyze - uses: github/codeql-action/analyze@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/analyze@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 with: category: "/codeql-security-high/${{ matrix.category }}" diff --git a/.github/workflows/install-smoke-reusable.yml b/.github/workflows/install-smoke-reusable.yml index 593a8c5ede4f..9b867da366ee 100644 --- a/.github/workflows/install-smoke-reusable.yml +++ b/.github/workflows/install-smoke-reusable.yml @@ -158,7 +158,7 @@ jobs: persist-credentials: false - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: Dockerfile @@ -373,7 +373,7 @@ jobs: NODE - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: Dockerfile @@ -710,7 +710,7 @@ jobs: test -s "${RUNNER_TEMP}/candidate.tar.gz" - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: scripts/docker/install-sh-smoke/Dockerfile @@ -859,7 +859,7 @@ jobs: - *trusted_workflow_subdir_identity_step - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: scripts/docker/install-sh-smoke/Dockerfile @@ -932,7 +932,7 @@ jobs: - *trusted_workflow_subdir_identity_step - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: scripts/docker/install-sh-nonroot/Dockerfile @@ -1474,7 +1474,7 @@ jobs: persist-credentials: false - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: scripts/e2e/Dockerfile diff --git a/.github/workflows/ios-beta-release.yml b/.github/workflows/ios-beta-release.yml index 97f703fc1683..5ef6b9c17be5 100644 --- a/.github/workflows/ios-beta-release.yml +++ b/.github/workflows/ios-beta-release.yml @@ -210,7 +210,7 @@ jobs: set -euo pipefail bundle _2.6.9_ install --jobs 4 --retry 3 bundle _2.6.9_ check - test "$(bundle _2.6.9_ exec ruby -e 'require "fastlane"; print Fastlane::VERSION')" = "2.238.0" + test "$(bundle _2.6.9_ exec ruby -e 'require "fastlane"; print Fastlane::VERSION')" = "2.239.0" - name: Select Xcode 26 run: | @@ -458,7 +458,7 @@ jobs: set -euo pipefail bundle _2.6.9_ install --jobs 4 --retry 3 bundle _2.6.9_ check - test "$(bundle _2.6.9_ exec ruby -e 'require "fastlane"; print Fastlane::VERSION')" = "2.238.0" + test "$(bundle _2.6.9_ exec ruby -e 'require "fastlane"; print Fastlane::VERSION')" = "2.239.0" - name: Revalidate inspection authority immediately before credential access id: inspection-authority diff --git a/.github/workflows/live-media-runner-image.yml b/.github/workflows/live-media-runner-image.yml index 77bb48ac92d7..7ae132821ca2 100644 --- a/.github/workflows/live-media-runner-image.yml +++ b/.github/workflows/live-media-runner-image.yml @@ -35,7 +35,7 @@ jobs: password: ${{ github.token }} - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: .github/images/live-media-runner/Dockerfile diff --git a/.github/workflows/npm-telegram-beta-e2e.yml b/.github/workflows/npm-telegram-beta-e2e.yml index 08c29195693b..20dab8c23455 100644 --- a/.github/workflows/npm-telegram-beta-e2e.yml +++ b/.github/workflows/npm-telegram-beta-e2e.yml @@ -299,7 +299,7 @@ jobs: persist-credentials: false - name: Set up Blacksmith Docker Builder - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: scripts/e2e/Dockerfile diff --git a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml index bd209d2a2340..36c606000bd1 100644 --- a/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml +++ b/.github/workflows/openclaw-live-and-e2e-checks-reusable.yml @@ -3597,7 +3597,7 @@ jobs: - name: Setup Docker builder if: inputs.shared_image_policy == 'no-push-artifact' - uses: useblacksmith/setup-docker-builder@a5256a73e30f09e37e3eceb8ca36043d17621d24 # v2.1.0 + uses: useblacksmith/setup-docker-builder@19215110ab936351210feebdfa5b440b4493e184 # v2.2.0 with: cache-key: Dockerfile diff --git a/.github/workflows/openclaw-performance.yml b/.github/workflows/openclaw-performance.yml index 6d511be45a69..c13f4b7f36d2 100644 --- a/.github/workflows/openclaw-performance.yml +++ b/.github/workflows/openclaw-performance.yml @@ -1663,9 +1663,9 @@ jobs: set -euo pipefail pnpm_prefix="$RUNNER_TEMP/vitest-pair-pnpm" npm_config_cache="$RUNNER_TEMP/vitest-pair-npm-cache" \ - npm install --global --prefix "$pnpm_prefix" pnpm@12.3.4 + npm install --global --prefix "$pnpm_prefix" pnpm@12.4.0 pnpm_bin="$pnpm_prefix/bin/pnpm" - [[ "$("$pnpm_bin" --version)" == "12.3.4" ]] + [[ "$("$pnpm_bin" --version)" == "12.4.0" ]] echo "VITEST_PAIR_PNPM_BIN=$pnpm_bin" >> "$GITHUB_ENV" - name: Run Vitest pair benchmark diff --git a/.github/workflows/opengrep-precise-full.yml b/.github/workflows/opengrep-precise-full.yml index 56b8521c52e2..6c552531c694 100644 --- a/.github/workflows/opengrep-precise-full.yml +++ b/.github/workflows/opengrep-precise-full.yml @@ -34,8 +34,8 @@ jobs: # Pin the official Linux asset and its published digest. The upstream # installer validates tags through an unauthenticated GitHub API and # can fail before scanning even when this fixed release is available. - OPENGREP_VERSION: v1.27.1 - OPENGREP_LINUX_X64_SHA256: 58053da76672bbeb5b0a5441021c58338707052e10f81d777140ca879bd491ce + OPENGREP_VERSION: v1.30.0 + OPENGREP_LINUX_X64_SHA256: 35779bdd72e92129c8df2a77f0c55e8c08356801ea92591ef32108d6b28d564c run: | set -euo pipefail binary="$(mktemp "${RUNNER_TEMP}/opengrep.XXXXXX")" @@ -68,7 +68,7 @@ jobs: > .opengrep-out/precise.github.sarif - name: Upload SARIF to GitHub Code Scanning - uses: github/codeql-action/upload-sarif@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 # Never publish a partial conversion; the raw audit artifact stays intact. if: always() && steps.github-sarif.outcome == 'success' with: diff --git a/.github/workflows/opengrep-precise.yml b/.github/workflows/opengrep-precise.yml index a76e7af19fed..f9ef6f987d04 100644 --- a/.github/workflows/opengrep-precise.yml +++ b/.github/workflows/opengrep-precise.yml @@ -74,8 +74,8 @@ jobs: # Pin the official Linux asset and its published digest. The upstream # installer validates tags through an unauthenticated GitHub API and # can fail before scanning even when this fixed release is available. - OPENGREP_VERSION: v1.27.1 - OPENGREP_LINUX_X64_SHA256: 58053da76672bbeb5b0a5441021c58338707052e10f81d777140ca879bd491ce + OPENGREP_VERSION: v1.30.0 + OPENGREP_LINUX_X64_SHA256: 35779bdd72e92129c8df2a77f0c55e8c08356801ea92591ef32108d6b28d564c run: | set -euo pipefail binary="$(mktemp "${RUNNER_TEMP}/opengrep.XXXXXX")" @@ -112,7 +112,7 @@ jobs: > .opengrep-out/precise.github.sarif - name: Upload SARIF to GitHub Code Scanning - uses: github/codeql-action/upload-sarif@ff2f1c621b7f889edc0d3c761ac2e6a3f8cdb0dd # v4.37.7 + uses: github/codeql-action/upload-sarif@cdf488f595d80d6e07e03d4674febd5ab45fa938 # v4.37.9 # Never publish a partial conversion; the raw audit artifact stays intact. if: always() && steps.github-sarif.outcome == 'success' with: diff --git a/.github/workflows/plugin-prerelease.yml b/.github/workflows/plugin-prerelease.yml index 8c4b18cbbba8..124a50aadca9 100644 --- a/.github/workflows/plugin-prerelease.yml +++ b/.github/workflows/plugin-prerelease.yml @@ -483,7 +483,7 @@ jobs: submodules: false - name: Setup trusted scanner TypeScript runtime - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: "24.x" @@ -532,7 +532,7 @@ jobs: submodules: false - name: Setup trusted scanner TypeScript runtime - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6.4.0 + uses: actions/setup-node@249970729cb0ef3589644e2896645e5dc5ba9c38 # v6.5.0 with: node-version: "24.x" diff --git a/apps/android/Gemfile b/apps/android/Gemfile index 2cb1fc09f069..693dc3cf76a9 100644 --- a/apps/android/Gemfile +++ b/apps/android/Gemfile @@ -2,4 +2,4 @@ source "https://rubygems.org" ruby "3.4.10" -gem "fastlane", "2.238.0" +gem "fastlane", "2.239.0" diff --git a/apps/android/Gemfile.lock b/apps/android/Gemfile.lock index 1d32831aff51..30876f275f57 100644 --- a/apps/android/Gemfile.lock +++ b/apps/android/Gemfile.lock @@ -8,7 +8,7 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1283.0) + aws-partitions (1.1284.0) aws-sdk-core (3.254.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) @@ -20,7 +20,7 @@ GEM aws-sdk-kms (1.130.0) aws-sdk-core (~> 3, >= 3.254.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.229.0) + aws-sdk-s3 (1.230.0) aws-sdk-core (~> 3, >= 3.254.1) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) @@ -39,7 +39,7 @@ GEM declarative (0.0.20) digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) - domain_name (0.6.20260829) + domain_name (0.6.20260902) dotenv (2.8.1) emoji_regex (3.2.3) erb (6.0.7) @@ -61,7 +61,7 @@ GEM faraday-retry (2.4.0) faraday (~> 2.0) fastimage (2.4.1) - fastlane (2.238.0) + fastlane (2.239.0) CFPropertyList (>= 2.3, < 5.0.0) abbrev (~> 0.1) addressable (>= 2.9.0, < 3.0.0) @@ -85,12 +85,11 @@ GEM fastimage (>= 2.1.0, < 3.0.0) fastlane-sirp (>= 1.1.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-apis-androidpublisher_v3 (~> 0.3) + google-apis-androidpublisher_v3 (~> 0.99.0) google-apis-playcustomapp_v1 (~> 0.1) - google-cloud-env (>= 1.6.0, < 2.3.0) + google-cloud-env (>= 1.6.0, < 2.4.0) google-cloud-storage (~> 1.31) highline (~> 2.0) - http-cookie (~> 1.0.5) irb (>= 1.8) json (< 3.0.0) jwt (>= 2.10.3, < 4) @@ -117,7 +116,7 @@ GEM xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-sirp (1.1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.107.0) + google-apis-androidpublisher_v3 (0.99.0) google-apis-core (>= 0.15.0, < 2.a) google-apis-core (1.2.5) addressable (~> 2.9) @@ -132,12 +131,12 @@ GEM google-apis-core (>= 0.15.0, < 2.a) google-apis-playcustomapp_v1 (0.18.0) google-apis-core (>= 0.15.0, < 2.a) - google-apis-storage_v1 (0.66.0) + google-apis-storage_v1 (0.67.0) google-apis-core (>= 0.15.0, < 2.a) google-cloud-core (1.9.0) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) - google-cloud-env (2.2.2) + google-cloud-env (2.3.1) base64 (~> 0.2) faraday (>= 1.0, < 3.a) google-cloud-errors (1.7.0) @@ -160,7 +159,7 @@ GEM pstore (~> 0.1) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.8) + http-cookie (1.1.6) domain_name (~> 0.5) io-console (0.9.2) irb (1.18.0) @@ -175,7 +174,7 @@ GEM logger (1.7.0) mini_magick (4.13.2) mini_mime (1.1.5) - multi_json (1.21.1) + multi_json (1.21.2) multipart-post (2.4.1) mutex_m (0.3.0) nanaimo (0.4.0) @@ -257,7 +256,7 @@ PLATFORMS x86_64-linux DEPENDENCIES - fastlane (= 2.238.0) + fastlane (= 2.239.0) CHECKSUMS CFPropertyList (3.0.8) sha256=2c99d0d980536d3d7ab252f7bd59ac8be50fbdd1ff487c98c949bb66bb114261 @@ -266,10 +265,10 @@ CHECKSUMS artifactory (3.0.17) sha256=3023d5c964c31674090d655a516f38ca75665c15084140c08b7f2841131af263 atomos (0.1.3) sha256=7d43b22f2454a36bace5532d30785b06de3711399cb1c6bf932573eda536789f aws-eventstream (1.4.0) sha256=116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b - aws-partitions (1.1283.0) sha256=125ba9cb65eb7ec2b0a2041a47d204d403b3f6d9aa62bffa53a6b95b04b1f1de + aws-partitions (1.1284.0) sha256=026432da13da430a31ba7c30c0c210b35fa7d738399977f033d4a5a354de58dc aws-sdk-core (3.254.1) sha256=518089e32134c3478cd4ec63d07fb966546a45e9e4cbf5f80d2cf16d5699d29b aws-sdk-kms (1.130.0) sha256=a2e83662ca31b77a2a19c9aa2f40a98165a67270c18c718fe1c70d0cbd7cd749 - aws-sdk-s3 (1.229.0) sha256=7dd11a111875b3505d2ec0a0a383a6aab6c1badb3d4e94e7fbb958a24451f596 + aws-sdk-s3 (1.230.0) sha256=cf9157b0760fd8260b5890ce4d5d841539b423c0333b6394362a76d797d3fc73 aws-sigv4 (1.12.1) sha256=6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00 babosa (1.0.4) sha256=18dea450f595462ed7cb80595abd76b2e535db8c91b350f6c4b3d73986c5bc99 base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b @@ -282,7 +281,7 @@ CHECKSUMS csv (3.3.6) sha256=aba61e7e507a66f03d45cb1f3c4b6359861c3504038b422962875dce099e4456 declarative (0.0.20) sha256=8021dd6cb17ab2b61233c56903d3f5a259c5cf43c80ff332d447d395b17d9ff9 digest-crc (0.7.0) sha256=64adc23a26a241044cbe6732477ca1b3c281d79e2240bcff275a37a5a0d78c07 - domain_name (0.6.20260829) sha256=a9c1aa678423b9db3a4193b300fd76b9c21cb2a5f60d7dcf0a832b82d13764f0 + domain_name (0.6.20260902) sha256=4fac7f8e0a77dc85ec02f6534fdeff38e143d434ab8a86528fe68ca5bc45a042 dotenv (2.8.1) sha256=c5944793349ae03c432e1780a2ca929d60b88c7d14d52d630db0508c3a8a17d8 emoji_regex (3.2.3) sha256=ecd8be856b7691406c6bf3bb3a5e55d6ed683ffab98b4aa531bb90e1ddcc564b erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92 @@ -294,22 +293,22 @@ CHECKSUMS faraday-net_http (3.4.4) sha256=0e78af151747ed1b00f33e25973b4bc220d7f16c00c39676817c8b12331eb588 faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe fastimage (2.4.1) sha256=c64bebd46b6fd8943ab70c1e6e85ff728f970f2e48f92ecd249b6bc3a540ad20 - fastlane (2.238.0) sha256=78e9252df2224c7e427012638e41051edfa29b133a40fda883fd2f1c13a77b98 + fastlane (2.239.0) sha256=6d99c0ea639f44fd4ebb53d442e5557e9a64159e6ca60ba1f38517cfe02c5689 fastlane-sirp (1.1.0) sha256=10bc94f9682efd8e1badfb31452a76dd8981f1f3a33717c765fde6d75b54d847 gh_inspector (1.1.3) sha256=04cca7171b87164e053aa43147971d3b7f500fcb58177698886b48a9fc4a1939 - google-apis-androidpublisher_v3 (0.107.0) sha256=b8207eecc89e6a9f7ea11aa88a07bccdcae5ca90121330079db4ef4696a2f3ff + google-apis-androidpublisher_v3 (0.99.0) sha256=a0452fdd99cb7672cc95cac07429305f8aaee54c22e4875224cf675b1ab59729 google-apis-core (1.2.5) sha256=e21562b5627a0fc6a0c3165e429c3afed0f6a628eaa514e83f7204dda1adff69 google-apis-iamcredentials_v1 (0.28.0) sha256=0a92ffe6cc39c569554af2a77a25dfc61519ed8bbb64ab04cffdd352dc5ef106 google-apis-playcustomapp_v1 (0.18.0) sha256=44b277b9dee4a59ac5e9d98be1485edc5e382d2f9d73c79ae8908a455786a254 - google-apis-storage_v1 (0.66.0) sha256=fdf6d65d3fc77e7046b3494333a818ece9e2afd763bb161e1a7a9e70cf198351 + google-apis-storage_v1 (0.67.0) sha256=13befc89bf03512783f535d214590f15993b0c56411155fd8090ca607e1b8d20 google-cloud-core (1.9.0) sha256=ab55409f51488e8deefb6edcc1ce4771dfb5da2fe7b3bc075709a030c2b682a4 - google-cloud-env (2.2.2) sha256=94bed40e05a67e9468ce1cb38389fba9a90aa8fc62fc9e173204c1dca59e21e7 + google-cloud-env (2.3.1) sha256=0faac01eb27be78c2591d64433663b1a114f8f7af55a4f819755426cac9178e7 google-cloud-errors (1.7.0) sha256=6e682f42d89aae08689f36f28495de629d756da076bafff0003bac7f8042ebb3 google-cloud-storage (1.62.0) sha256=e2c3c08bf8fd40d50be92304084942203314d4fc0ee52028e99f9359c3ad1330 google-logging-utils (0.2.0) sha256=675462b4ea5affa825a3442694ca2d75d0069455a1d0956127207498fca3df7b googleauth (1.17.4) sha256=acc2cac2a6011048f149c922cbc6c9675719e165aa5000c7fa3876c480fe9ae3 highline (2.0.3) sha256=2ddd5c127d4692721486f91737307236fe005352d12a4202e26c48614f719479 - http-cookie (1.0.8) sha256=b14fe0445cf24bf9ae098633e9b8d42e4c07c3c1f700672b09fbfe32ffd41aa6 + http-cookie (1.1.6) sha256=ba4b82be64de61dc281243dac70e3c382c45142f20268ed9276a3670c93feaa9 io-console (0.9.2) sha256=efa74f891dd03c0939a931dfc6e74c2813d904763d456ea9762b0525e748db08 irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1 @@ -318,7 +317,7 @@ CHECKSUMS logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 mini_magick (4.13.2) sha256=71d6258e0e8a3d04a9a0a09784d5d857b403a198a51dd4f882510435eb95ddd9 mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef - multi_json (1.21.1) sha256=e6126a31808e3b4d19f483c775ceac34df190dffa62adfb63a165ee14ba68080 + multi_json (1.21.2) sha256=245531eaf54bdba57aba515ff08b4503505c5e09911daa89c5a561e2f85bea8e multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8 mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751 nanaimo (0.4.0) sha256=faf069551bab17f15169c1f74a1c73c220657e71b6e900919897a10d991d0723 diff --git a/apps/android/gradle/libs.versions.toml b/apps/android/gradle/libs.versions.toml index 2528b5c5ebb6..7922a00aa45a 100644 --- a/apps/android/gradle/libs.versions.toml +++ b/apps/android/gradle/libs.versions.toml @@ -28,7 +28,7 @@ junit-vintage = "6.1.3" ksp = "2.3.11" ktlint-cli = "1.8.0" ktlint-gradle = "14.2.0" -kotlin = "2.4.10" +kotlin = "2.4.20" material = "1.14.0" media3 = "1.11.0" okhttp = "5.5.0" diff --git a/apps/ios/Gemfile b/apps/ios/Gemfile index 2cb1fc09f069..693dc3cf76a9 100644 --- a/apps/ios/Gemfile +++ b/apps/ios/Gemfile @@ -2,4 +2,4 @@ source "https://rubygems.org" ruby "3.4.10" -gem "fastlane", "2.238.0" +gem "fastlane", "2.239.0" diff --git a/apps/ios/Gemfile.lock b/apps/ios/Gemfile.lock index fd8aecf9a7df..7a12a409ad13 100644 --- a/apps/ios/Gemfile.lock +++ b/apps/ios/Gemfile.lock @@ -8,7 +8,7 @@ GEM artifactory (3.0.17) atomos (0.1.3) aws-eventstream (1.4.0) - aws-partitions (1.1283.0) + aws-partitions (1.1284.0) aws-sdk-core (3.254.1) aws-eventstream (~> 1, >= 1.3.0) aws-partitions (~> 1, >= 1.992.0) @@ -20,7 +20,7 @@ GEM aws-sdk-kms (1.130.0) aws-sdk-core (~> 3, >= 3.254.0) aws-sigv4 (~> 1.5) - aws-sdk-s3 (1.229.0) + aws-sdk-s3 (1.230.0) aws-sdk-core (~> 3, >= 3.254.1) aws-sdk-kms (~> 1) aws-sigv4 (~> 1.5) @@ -39,7 +39,7 @@ GEM declarative (0.0.20) digest-crc (0.7.0) rake (>= 12.0.0, < 14.0.0) - domain_name (0.6.20260829) + domain_name (0.6.20260902) dotenv (2.8.1) emoji_regex (3.2.3) erb (6.0.7) @@ -61,7 +61,7 @@ GEM faraday-retry (2.4.0) faraday (~> 2.0) fastimage (2.4.1) - fastlane (2.238.0) + fastlane (2.239.0) CFPropertyList (>= 2.3, < 5.0.0) abbrev (~> 0.1) addressable (>= 2.9.0, < 3.0.0) @@ -85,12 +85,11 @@ GEM fastimage (>= 2.1.0, < 3.0.0) fastlane-sirp (>= 1.1.0) gh_inspector (>= 1.1.2, < 2.0.0) - google-apis-androidpublisher_v3 (~> 0.3) + google-apis-androidpublisher_v3 (~> 0.99.0) google-apis-playcustomapp_v1 (~> 0.1) - google-cloud-env (>= 1.6.0, < 2.3.0) + google-cloud-env (>= 1.6.0, < 2.4.0) google-cloud-storage (~> 1.31) highline (~> 2.0) - http-cookie (~> 1.0.5) irb (>= 1.8) json (< 3.0.0) jwt (>= 2.10.3, < 4) @@ -117,7 +116,7 @@ GEM xcpretty-travis-formatter (>= 0.0.3, < 2.0.0) fastlane-sirp (1.1.0) gh_inspector (1.1.3) - google-apis-androidpublisher_v3 (0.107.0) + google-apis-androidpublisher_v3 (0.99.0) google-apis-core (>= 0.15.0, < 2.a) google-apis-core (1.2.5) addressable (~> 2.9) @@ -132,12 +131,12 @@ GEM google-apis-core (>= 0.15.0, < 2.a) google-apis-playcustomapp_v1 (0.18.0) google-apis-core (>= 0.15.0, < 2.a) - google-apis-storage_v1 (0.66.0) + google-apis-storage_v1 (0.67.0) google-apis-core (>= 0.15.0, < 2.a) google-cloud-core (1.9.0) google-cloud-env (>= 1.0, < 3.a) google-cloud-errors (~> 1.0) - google-cloud-env (2.2.2) + google-cloud-env (2.3.1) base64 (~> 0.2) faraday (>= 1.0, < 3.a) google-cloud-errors (1.7.0) @@ -160,7 +159,7 @@ GEM pstore (~> 0.1) signet (>= 0.16, < 2.a) highline (2.0.3) - http-cookie (1.0.8) + http-cookie (1.1.6) domain_name (~> 0.5) io-console (0.9.2) irb (1.18.0) @@ -175,7 +174,7 @@ GEM logger (1.7.0) mini_magick (4.13.2) mini_mime (1.1.5) - multi_json (1.21.1) + multi_json (1.21.2) multipart-post (2.4.1) mutex_m (0.3.0) nanaimo (0.4.0) @@ -255,7 +254,7 @@ PLATFORMS x86_64-darwin DEPENDENCIES - fastlane (= 2.238.0) + fastlane (= 2.239.0) CHECKSUMS CFPropertyList (3.0.8) sha256=2c99d0d980536d3d7ab252f7bd59ac8be50fbdd1ff487c98c949bb66bb114261 @@ -264,10 +263,10 @@ CHECKSUMS artifactory (3.0.17) sha256=3023d5c964c31674090d655a516f38ca75665c15084140c08b7f2841131af263 atomos (0.1.3) sha256=7d43b22f2454a36bace5532d30785b06de3711399cb1c6bf932573eda536789f aws-eventstream (1.4.0) sha256=116bf85c436200d1060811e6f5d2d40c88f65448f2125bc77ffce5121e6e183b - aws-partitions (1.1283.0) sha256=125ba9cb65eb7ec2b0a2041a47d204d403b3f6d9aa62bffa53a6b95b04b1f1de + aws-partitions (1.1284.0) sha256=026432da13da430a31ba7c30c0c210b35fa7d738399977f033d4a5a354de58dc aws-sdk-core (3.254.1) sha256=518089e32134c3478cd4ec63d07fb966546a45e9e4cbf5f80d2cf16d5699d29b aws-sdk-kms (1.130.0) sha256=a2e83662ca31b77a2a19c9aa2f40a98165a67270c18c718fe1c70d0cbd7cd749 - aws-sdk-s3 (1.229.0) sha256=7dd11a111875b3505d2ec0a0a383a6aab6c1badb3d4e94e7fbb958a24451f596 + aws-sdk-s3 (1.230.0) sha256=cf9157b0760fd8260b5890ce4d5d841539b423c0333b6394362a76d797d3fc73 aws-sigv4 (1.12.1) sha256=6973ff95cb0fd0dc58ba26e90e9510a2219525d07620c8babeb70ef831826c00 babosa (1.0.4) sha256=18dea450f595462ed7cb80595abd76b2e535db8c91b350f6c4b3d73986c5bc99 base64 (0.3.0) sha256=27337aeabad6ffae05c265c450490628ef3ebd4b67be58257393227588f5a97b @@ -280,7 +279,7 @@ CHECKSUMS csv (3.3.6) sha256=aba61e7e507a66f03d45cb1f3c4b6359861c3504038b422962875dce099e4456 declarative (0.0.20) sha256=8021dd6cb17ab2b61233c56903d3f5a259c5cf43c80ff332d447d395b17d9ff9 digest-crc (0.7.0) sha256=64adc23a26a241044cbe6732477ca1b3c281d79e2240bcff275a37a5a0d78c07 - domain_name (0.6.20260829) sha256=a9c1aa678423b9db3a4193b300fd76b9c21cb2a5f60d7dcf0a832b82d13764f0 + domain_name (0.6.20260902) sha256=4fac7f8e0a77dc85ec02f6534fdeff38e143d434ab8a86528fe68ca5bc45a042 dotenv (2.8.1) sha256=c5944793349ae03c432e1780a2ca929d60b88c7d14d52d630db0508c3a8a17d8 emoji_regex (3.2.3) sha256=ecd8be856b7691406c6bf3bb3a5e55d6ed683ffab98b4aa531bb90e1ddcc564b erb (6.0.7) sha256=c5ca6dc25b0ef974a44dc8f59fe847577122483b1968a38dec305c60bf91ee92 @@ -292,22 +291,22 @@ CHECKSUMS faraday-net_http (3.4.4) sha256=0e78af151747ed1b00f33e25973b4bc220d7f16c00c39676817c8b12331eb588 faraday-retry (2.4.0) sha256=7b79c48fb7e56526faf247b12d94a680071ff40c9fda7cf1ec1549439ad11ebe fastimage (2.4.1) sha256=c64bebd46b6fd8943ab70c1e6e85ff728f970f2e48f92ecd249b6bc3a540ad20 - fastlane (2.238.0) sha256=78e9252df2224c7e427012638e41051edfa29b133a40fda883fd2f1c13a77b98 + fastlane (2.239.0) sha256=6d99c0ea639f44fd4ebb53d442e5557e9a64159e6ca60ba1f38517cfe02c5689 fastlane-sirp (1.1.0) sha256=10bc94f9682efd8e1badfb31452a76dd8981f1f3a33717c765fde6d75b54d847 gh_inspector (1.1.3) sha256=04cca7171b87164e053aa43147971d3b7f500fcb58177698886b48a9fc4a1939 - google-apis-androidpublisher_v3 (0.107.0) sha256=b8207eecc89e6a9f7ea11aa88a07bccdcae5ca90121330079db4ef4696a2f3ff + google-apis-androidpublisher_v3 (0.99.0) sha256=a0452fdd99cb7672cc95cac07429305f8aaee54c22e4875224cf675b1ab59729 google-apis-core (1.2.5) sha256=e21562b5627a0fc6a0c3165e429c3afed0f6a628eaa514e83f7204dda1adff69 google-apis-iamcredentials_v1 (0.28.0) sha256=0a92ffe6cc39c569554af2a77a25dfc61519ed8bbb64ab04cffdd352dc5ef106 google-apis-playcustomapp_v1 (0.18.0) sha256=44b277b9dee4a59ac5e9d98be1485edc5e382d2f9d73c79ae8908a455786a254 - google-apis-storage_v1 (0.66.0) sha256=fdf6d65d3fc77e7046b3494333a818ece9e2afd763bb161e1a7a9e70cf198351 + google-apis-storage_v1 (0.67.0) sha256=13befc89bf03512783f535d214590f15993b0c56411155fd8090ca607e1b8d20 google-cloud-core (1.9.0) sha256=ab55409f51488e8deefb6edcc1ce4771dfb5da2fe7b3bc075709a030c2b682a4 - google-cloud-env (2.2.2) sha256=94bed40e05a67e9468ce1cb38389fba9a90aa8fc62fc9e173204c1dca59e21e7 + google-cloud-env (2.3.1) sha256=0faac01eb27be78c2591d64433663b1a114f8f7af55a4f819755426cac9178e7 google-cloud-errors (1.7.0) sha256=6e682f42d89aae08689f36f28495de629d756da076bafff0003bac7f8042ebb3 google-cloud-storage (1.62.0) sha256=e2c3c08bf8fd40d50be92304084942203314d4fc0ee52028e99f9359c3ad1330 google-logging-utils (0.2.0) sha256=675462b4ea5affa825a3442694ca2d75d0069455a1d0956127207498fca3df7b googleauth (1.17.4) sha256=acc2cac2a6011048f149c922cbc6c9675719e165aa5000c7fa3876c480fe9ae3 highline (2.0.3) sha256=2ddd5c127d4692721486f91737307236fe005352d12a4202e26c48614f719479 - http-cookie (1.0.8) sha256=b14fe0445cf24bf9ae098633e9b8d42e4c07c3c1f700672b09fbfe32ffd41aa6 + http-cookie (1.1.6) sha256=ba4b82be64de61dc281243dac70e3c382c45142f20268ed9276a3670c93feaa9 io-console (0.9.2) sha256=efa74f891dd03c0939a931dfc6e74c2813d904763d456ea9762b0525e748db08 irb (1.18.0) sha256=de9454a0703a54704b9811a5ef31a60c86949fbf4013fcf244fabc7c775248e3 jmespath (1.6.2) sha256=238d774a58723d6c090494c8879b5e9918c19485f7e840f2c1c7532cf84ebcb1 @@ -316,7 +315,7 @@ CHECKSUMS logger (1.7.0) sha256=196edec7cc44b66cfb40f9755ce11b392f21f7967696af15d274dde7edff0203 mini_magick (4.13.2) sha256=71d6258e0e8a3d04a9a0a09784d5d857b403a198a51dd4f882510435eb95ddd9 mini_mime (1.1.5) sha256=8681b7e2e4215f2a159f9400b5816d85e9d8c6c6b491e96a12797e798f8bccef - multi_json (1.21.1) sha256=e6126a31808e3b4d19f483c775ceac34df190dffa62adfb63a165ee14ba68080 + multi_json (1.21.2) sha256=245531eaf54bdba57aba515ff08b4503505c5e09911daa89c5a561e2f85bea8e multipart-post (2.4.1) sha256=9872d03a8e552020ca096adadbf5e3cb1cd1cdd6acd3c161136b8a5737cdb4a8 mutex_m (0.3.0) sha256=cfcb04ac16b69c4813777022fdceda24e9f798e48092a2b817eb4c0a782b0751 nanaimo (0.4.0) sha256=faf069551bab17f15169c1f74a1c73c220657e71b6e900919897a10d991d0723 diff --git a/apps/ios/Sources/Voice/RealtimeTalkRelaySession.swift b/apps/ios/Sources/Voice/RealtimeTalkRelaySession.swift index 3fb47fa86278..78584fa5ca5a 100644 --- a/apps/ios/Sources/Voice/RealtimeTalkRelaySession.swift +++ b/apps/ios/Sources/Voice/RealtimeTalkRelaySession.swift @@ -26,6 +26,7 @@ private func makeRealtimeAudioTapBlock( final class IOSRealtimeTalkAudioCapture: RealtimeTalkAudioCapturing { private static let bufferSize: AVAudioFrameCount = 2048 private let audioEngine = AVAudioEngine() + private var tappedInputNode: AVAudioInputNode? var suppressesInputDuringOutput: Bool { let outputs = AVAudioSession.sharedInstance().currentRoute.outputs @@ -55,12 +56,16 @@ final class IOSRealtimeTalkAudioCapture: RealtimeTalkAudioCapturing { inputSampleRate: format.sampleRate, targetSampleRate: targetSampleRate, onAudio: onAudio)) + self.tappedInputNode = input self.audioEngine.prepare() try self.audioEngine.start() } func stop() { - self.audioEngine.inputNode.removeTap(onBus: 0) + // Reading inputNode creates RemoteIO even when capture never started. + // Cold relay cancellation must only tear down an already installed tap. + self.tappedInputNode?.removeTap(onBus: 0) + self.tappedInputNode = nil self.audioEngine.stop() } } diff --git a/apps/ios/fastlane/SETUP.md b/apps/ios/fastlane/SETUP.md index fb141d799eea..282320533474 100644 --- a/apps/ios/fastlane/SETUP.md +++ b/apps/ios/fastlane/SETUP.md @@ -206,7 +206,7 @@ the uploader's concurrency group and revalidates the live actor, original run attempt, trusted workflow lineage, and unchanged candidate before credential access and again before retaining observations. -Only the trusted workflow-SHA checkout executes Node, Fastlane 2.238.0, and +Only the trusted workflow-SHA checkout executes Node, Fastlane 2.239.0, and locked dependencies. The candidate checkout supplies version/changelog data; none of its scripts, Fastfile, Gemfile, or actions execute. The canonical planner runs against this data without a forced revision/build override. Its `plan.json` diff --git a/apps/linux/src-tauri/Cargo.lock b/apps/linux/src-tauri/Cargo.lock index 96a9e100ef60..261231119566 100644 --- a/apps/linux/src-tauri/Cargo.lock +++ b/apps/linux/src-tauri/Cargo.lock @@ -341,9 +341,9 @@ dependencies = [ [[package]] name = "blocking" -version = "1.6.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e83f8d02be6967315521be875afa792a316e28d57b5a2d401897e2a7921b7f21" +checksum = "a70e4329df6cb94385eed412ec92375c3cdd8a6e502493d1229b6414e4036dfa" dependencies = [ "async-channel", "async-task", @@ -818,9 +818,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25ae13da2f202d56bd7f91c25fba009e7717a1e4a1cc98a76d844b65ae912e9d" +checksum = "ed17f5901b6630b993ca003def43f2f8ef4014fc13b047b57aad617ff32bc2ec" dependencies = [ "darling_core", "darling_macro", @@ -828,26 +828,26 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9865a50f7c335f53564bb694ef660825eb8610e0a53d3e11bf1b0d3df31e03b0" +checksum = "6837e2cf7485aaae18f86181d2f0e9a7ed297a025e220aeabf63fdebd3a2ddff" dependencies = [ "ident_case", "proc-macro2", "quote", "strsim", - "syn 2.0.119", + "syn 3.0.5", ] [[package]] name = "darling_macro" -version = "0.23.0" +version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3984ec7bd6cfa798e62b4a642426a5be0e68f9401cfc2a01e3fa9ea2fcdb8d" +checksum = "2ac7135c3ef02b2f7833bbeb1be5ba7f966dcde8a87c6b87f65a778d71a02785" dependencies = [ "darling_core", "quote", - "syn 2.0.119", + "syn 3.0.5", ] [[package]] @@ -999,7 +999,7 @@ dependencies = [ "libc", "option-ext", "redox_users 0.5.2", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -1227,7 +1227,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -1880,9 +1880,9 @@ checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "hybrid-array" -version = "0.4.14" +version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "707114b52a152fa7bdb290cd7cd5912d9467273b6d74e21b8d81aca1f8533f6b" +checksum = "27f864f10dfb56725ce5ce5472bc52252c8f93a4ab86327122cebf62c5f59a17" dependencies = [ "typenum", ] @@ -1957,7 +1957,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.62.2", + "windows-core", ] [[package]] @@ -2156,9 +2156,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.12.1" +version = "2.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a756c3fac73139e83f14c2d742155dd2b78d3ee56597b419a0579b7bdd6dd78" +checksum = "791930b43c0d5973160d90a8f3894509f2b273430f5c5c73b668636d0287c5c0" [[package]] name = "is-docker" @@ -2523,9 +2523,9 @@ dependencies = [ [[package]] name = "mdns-sd" -version = "0.21.2" +version = "0.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9823c1afc7140b27e22103d37786df2156de7cbc03c39dd4ac7d8247a673f5e4" +checksum = "a63c9b854b5ad0812ac5969f8db92a59f28b45d0a5ae599b9a45b84c5c8a08e8" dependencies = [ "fastrand", "flume", @@ -2622,7 +2622,7 @@ dependencies = [ "png 0.18.1", "serde", "thiserror 2.0.20", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -3050,7 +3050,7 @@ dependencies = [ "webkit2gtk", "webview2-com", "windows", - "windows-core 0.61.2", + "windows-core", "zbus", "zeroize", ] @@ -3281,11 +3281,11 @@ checksum = "f6b464fbc74e149a392436b17d523f769e057cb6877f6a5c4618bc6f11800548" [[package]] name = "plist" -version = "1.10.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7da1d65da6dd5d1e44199ac0f58712d241c0f439f80adea8924d832384087f85" +checksum = "2896bade328c13f7042a297ea5ac5b0951f6cf989dea5f32c2fd98da398195cb" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "indexmap 2.14.2", "quick-xml", "serde", @@ -3438,9 +3438,9 @@ checksum = "d55d956fa96f5ec02be2e13af0e20391a5aa83d6a074e3ad368959d0fab299ea" [[package]] name = "quick-xml" -version = "0.41.0" +version = "0.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e660451e55124f798a69a5af3f49ccfbefbd41910eefd25caf2393e1f3473ec1" +checksum = "41b1177fdf999d2321d3fb46ff47159d9c1fb9ad66a4879f8c50a0b504615e9b" dependencies = [ "memchr", ] @@ -3571,11 +3571,11 @@ checksum = "d6f6ff9a378485b298a5286656da665ba74413d36db0979633275d2e708145d4" [[package]] name = "reqwest" -version = "0.13.4" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219c5811de6525e5416c7d5d53bb656d3afdbc6c5af816e0802bcfa42dbdc1c3" +checksum = "16a1cfa75cc186dd73d5818e510e042e40927bccc9c236b061cea97e1eb08029" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "bytes", "futures-core", "futures-util", @@ -3681,7 +3681,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -3737,7 +3737,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -4006,11 +4006,11 @@ dependencies = [ [[package]] name = "serde_with" -version = "3.22.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee78f1fbe43ac4a0e47aadb3dbd357b69eb0d3793e948624cd03dd2750ab1c0a" +checksum = "935177bb8c0cd8ca1a4e6d1a2ac8988bea69cab4f9d3a31311e012ad27868ea4" dependencies = [ - "base64 0.22.1", + "base64 0.23.1", "bs58", "chrono", "hex", @@ -4027,14 +4027,14 @@ dependencies = [ [[package]] name = "serde_with_macros" -version = "3.22.0" +version = "3.23.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8705578779c2b6bd90d84d66eb2e206b708b1a4d7b9f17641b293545bf1c7e46" +checksum = "1d607aa01a3cb0ad757d6fd216136910db3c97b102fe686585689615a02dbcdc" dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.119", + "syn 3.0.5", ] [[package]] @@ -4181,7 +4181,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c3d1e2c7f27f8d4cb10542a02c49005dbd6e93095799d6f3be745fae9f8fedd4" dependencies = [ "libc", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -4442,7 +4442,7 @@ dependencies = [ "unicode-segmentation", "url", "windows", - "windows-core 0.61.2", + "windows-core", "windows-version", "x11-dl", ] @@ -4637,7 +4637,7 @@ dependencies = [ "tracing", "url", "windows-registry", - "windows-result 0.3.4", + "windows-result", ] [[package]] @@ -4718,7 +4718,7 @@ dependencies = [ "url", "uuid", "windows", - "windows-core 0.61.2", + "windows-core", ] [[package]] @@ -4940,7 +4940,7 @@ dependencies = [ "getrandom 0.4.3", "once_cell", "rustix", - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -5338,7 +5338,7 @@ dependencies = [ "png 0.18.1", "serde", "thiserror 2.0.20", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -5391,7 +5391,7 @@ checksum = "f2f6fb2847f6742cd76af783a2a2c49e9375d0a111c7bef6f71cd9e738c72d6e" dependencies = [ "memoffset", "tempfile", - "windows-sys 0.61.2", + "windows-sys 0.60.2", ] [[package]] @@ -5714,7 +5714,7 @@ dependencies = [ "webview2-com-macros", "webview2-com-sys", "windows", - "windows-core 0.61.2", + "windows-core", "windows-implement", "windows-interface", ] @@ -5738,7 +5738,7 @@ checksum = "381336cfffd772377d291702245447a5251a2ffa5bad679c99e61bc48bacbf9c" dependencies = [ "thiserror 2.0.20", "windows", - "windows-core 0.61.2", + "windows-core", ] [[package]] @@ -5763,7 +5763,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.61.2", + "windows-sys 0.59.0", ] [[package]] @@ -5794,7 +5794,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" dependencies = [ "windows-collections", - "windows-core 0.61.2", + "windows-core", "windows-future", "windows-link 0.1.3", "windows-numerics", @@ -5806,7 +5806,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" dependencies = [ - "windows-core 0.61.2", + "windows-core", ] [[package]] @@ -5818,21 +5818,8 @@ dependencies = [ "windows-implement", "windows-interface", "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", -] - -[[package]] -name = "windows-core" -version = "0.62.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" -dependencies = [ - "windows-implement", - "windows-interface", - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", + "windows-result", + "windows-strings", ] [[package]] @@ -5841,7 +5828,7 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" dependencies = [ - "windows-core 0.61.2", + "windows-core", "windows-link 0.1.3", "windows-threading", ] @@ -5899,7 +5886,7 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" dependencies = [ - "windows-core 0.61.2", + "windows-core", "windows-link 0.1.3", ] @@ -5910,8 +5897,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5b8a9ed28765efc97bbc954883f4e6796c33a06546ebafacbabee9696967499e" dependencies = [ "windows-link 0.1.3", - "windows-result 0.3.4", - "windows-strings 0.4.2", + "windows-result", + "windows-strings", ] [[package]] @@ -5923,15 +5910,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows-result" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" -dependencies = [ - "windows-link 0.2.1", -] - [[package]] name = "windows-strings" version = "0.4.2" @@ -5941,15 +5919,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows-strings" -version = "0.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" -dependencies = [ - "windows-link 0.2.1", -] - [[package]] name = "windows-sys" version = "0.45.0" @@ -6293,7 +6262,7 @@ dependencies = [ "webkit2gtk-sys", "webview2-com", "windows", - "windows-core 0.61.2", + "windows-core", "windows-version", "x11-dl", ] diff --git a/apps/linux/src-tauri/Cargo.toml b/apps/linux/src-tauri/Cargo.toml index ce4e66363ec5..e18870fa717d 100644 --- a/apps/linux/src-tauri/Cargo.toml +++ b/apps/linux/src-tauri/Cargo.toml @@ -18,8 +18,8 @@ ed25519-dalek = "3.0.0" futures-util = "0.3.34" getrandom = "0.4.3" keyring = { version = "4.2.0", default-features = false, features = ["v1"] } -mdns-sd = { version = "0.21.2", default-features = false } -rustls = { version = "0.23.43", default-features = false, features = ["ring", "std", "tls12"] } +mdns-sd = { version = "0.21.3", default-features = false } +rustls = { version = "0.23.44", default-features = false, features = ["ring", "std", "tls12"] } serde = { version = "1.0.229", features = ["derive"] } serde_json = "1.0.151" sha2 = "0.11.0" diff --git a/apps/macos-mlx-tts/Package.resolved b/apps/macos-mlx-tts/Package.resolved index 1c50260e796f..447fab15e728 100644 --- a/apps/macos-mlx-tts/Package.resolved +++ b/apps/macos-mlx-tts/Package.resolved @@ -77,8 +77,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/huggingface/swift-huggingface.git", "state" : { - "revision" : "9ebe9cb568ff9ebe2f1bcd3ae7d925fbb45ec8d2", - "version" : "0.10.0" + "revision" : "b5403ed09403f674601fd1123e07c5b32914d16f", + "version" : "0.10.1" } }, { @@ -86,8 +86,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/huggingface/swift-jinja.git", "state" : { - "revision" : "7d0b8880ef8e567dd4e0089f8b99fb354129017c", - "version" : "2.4.2" + "revision" : "12ea4955e380dae6b0cd98299effe48c7fe584fc", + "version" : "2.5.0" } }, { diff --git a/apps/macos/Package.resolved b/apps/macos/Package.resolved index 9bec47b1ad09..09b412873c5b 100644 --- a/apps/macos/Package.resolved +++ b/apps/macos/Package.resolved @@ -1,5 +1,5 @@ { - "originHash" : "b41cac679f890b9f1583ac2f89ad14c0ddedeba67e113390c9b6e8d77bb1f640", + "originHash" : "3aa70e34f1a9cf93e01986dc25444a20685584880d5e686165430b00fbdb1ee1", "pins" : [ { "identity" : "axorcist", @@ -96,8 +96,8 @@ "kind" : "remoteSourceControl", "location" : "https://github.com/apple/swift-log.git", "state" : { - "revision" : "3ffafb9722d5d918c614feb496c8789a3b59d222", - "version" : "1.15.0" + "revision" : "9c6fb14227f55d8f711ce3847dc2f419fb0ecacb", + "version" : "1.15.1" } }, { diff --git a/apps/macos/Package.swift b/apps/macos/Package.swift index a4312bd5ab07..8ea69dbf4802 100644 --- a/apps/macos/Package.swift +++ b/apps/macos/Package.swift @@ -17,7 +17,7 @@ let package = Package( dependencies: [ .package(url: "https://github.com/sindresorhus/KeyboardShortcuts", exact: "3.0.1"), .package(url: "https://github.com/swiftlang/swift-subprocess.git", from: "1.0.0"), - .package(url: "https://github.com/apple/swift-log.git", from: "1.15.0"), + .package(url: "https://github.com/apple/swift-log.git", from: "1.15.1"), .package(url: "https://github.com/sparkle-project/Sparkle", exact: "2.9.6"), .package(url: "https://github.com/openclaw/Peekaboo.git", exact: "4.4.0"), .package(url: "https://github.com/pointfreeco/swift-concurrency-extras", from: "1.4.1"), diff --git a/apps/macos/Sources/OpenClaw/DashboardWindowController.swift b/apps/macos/Sources/OpenClaw/DashboardWindowController.swift index f3abe3c7e11a..d3ae6a96c733 100644 --- a/apps/macos/Sources/OpenClaw/DashboardWindowController.swift +++ b/apps/macos/Sources/OpenClaw/DashboardWindowController.swift @@ -30,12 +30,11 @@ private final class DashboardWindowContentView: NSView { /// pinned at `--openclaw-native-titlebar-height`, resurrecting the traffic-light /// misalignment. Refusing the toggle keeps the two heights in lockstep. /// Full screen hides this sizing toolbar so it cannot cover the web controls. -private final class DashboardWindow: NSWindow { +private final class DashboardWindow: ExperienceWindow { /// User intent belongs to the native window, not the privileged document it hosts. var userIntentGeneration: UInt64 = 0 var lifetimeRevision: UInt64 = 0 var pendingGatewaySwitch: DashboardGatewaySwitchIntent? - var isHiddenForExperience = false override func toggleToolbarShown(_: Any?) {} @@ -439,7 +438,7 @@ final class DashboardWindowController: NSWindowController, WKNavigationDelegate, /// Miniaturized windows report `isVisible == false` but must still follow /// endpoint changes so deminiaturizing does not land on a dead port. var isWindowOpen: Bool { - guard let window else { return false } + guard let window, !self.isHiddenForExperience else { return false } return window.isVisible || window.isMiniaturized } diff --git a/apps/macos/Sources/OpenClaw/ExperienceWindow.swift b/apps/macos/Sources/OpenClaw/ExperienceWindow.swift new file mode 100644 index 000000000000..17146f733d11 --- /dev/null +++ b/apps/macos/Sources/OpenClaw/ExperienceWindow.swift @@ -0,0 +1,29 @@ +import AppKit + +class ExperienceWindow: NSWindow { + var isHiddenForExperience = false { + didSet { + NotificationCenter.default.removeObserver( + self, name: NSWindow.didDeminiaturizeNotification, object: self) + guard self.isHiddenForExperience else { return } + NotificationCenter.default.addObserver( + self, + selector: #selector(self.finishExperienceDeminiaturization(_:)), + name: NSWindow.didDeminiaturizeNotification, + object: self) + } + } + + deinit { + NotificationCenter.default.removeObserver(self) + } + + @objc private func finishExperienceDeminiaturization(_: Notification) { + // AppKit orders the window on-screen after this notification returns. + // Window-owned intent survives document replacement; a later show clears it. + DispatchQueue.main.async { [weak self] in + guard let self, self.isHiddenForExperience else { return } + self.orderOut(nil) + } + } +} diff --git a/apps/macos/Sources/OpenClaw/WebChatSwiftUI.swift b/apps/macos/Sources/OpenClaw/WebChatSwiftUI.swift index c7fd9b7d7f8c..74ff07eca3ea 100644 --- a/apps/macos/Sources/OpenClaw/WebChatSwiftUI.swift +++ b/apps/macos/Sources/OpenClaw/WebChatSwiftUI.swift @@ -42,7 +42,7 @@ enum WebChatTracePreferences { /// SwiftUI's native toolbar bridge may restore visible title chrome while it /// installs toolbar items. Keep the full-window chat's titlebar merged. -private final class WebChatWindow: NSWindow { +private final class WebChatWindow: ExperienceWindow { var pinnedTitle: String? override var title: String { @@ -1004,12 +1004,12 @@ final class WebChatSwiftUIWindowController: NSObject, NSWindowDelegate { private let speech: OpenClawChatSpeechController private let voiceNoteRecorder: OpenClawVoiceNoteRecorder private var routingIdentityTask: Task? - private var window: NSWindow? - private var isHiddenForExperience = false + private var window: ExperienceWindow? var onBecameKey: (() -> Void)? var isWindowOpen: Bool { - !self.isHiddenForExperience && (self.window?.isVisible == true || self.window?.isMiniaturized == true) + guard let window, !window.isHiddenForExperience else { return false } + return window.isVisible || window.isMiniaturized } var onClosed: (() -> Void)? @@ -1205,7 +1205,7 @@ final class WebChatSwiftUIWindowController: NSObject, NSWindowDelegate { func show() { guard let window else { return } self.ensureWindowSize() - self.isHiddenForExperience = false + window.isHiddenForExperience = false window.isExcludedFromWindowsMenu = false if window.isMiniaturized { window.deminiaturize(nil) } window.makeKeyAndOrderFront(nil) @@ -1216,9 +1216,7 @@ final class WebChatSwiftUIWindowController: NSObject, NSWindowDelegate { func hide() { guard let window else { return } - // Deminiaturization can send focus notifications; fence those before - // removing the retained window from both the Dock and Window menu. - self.isHiddenForExperience = true + window.isHiddenForExperience = true window.isExcludedFromWindowsMenu = true if window.isMiniaturized { window.deminiaturize(nil) } window.orderOut(nil) @@ -1226,7 +1224,7 @@ final class WebChatSwiftUIWindowController: NSObject, NSWindowDelegate { } func windowDidBecomeKey(_ notification: Notification) { - guard notification.object as? NSWindow === self.window, !self.isHiddenForExperience else { return } + guard let window, notification.object as? NSWindow === window, !window.isHiddenForExperience else { return } self.onBecameKey?() } @@ -1295,7 +1293,7 @@ final class WebChatSwiftUIWindowController: NSObject, NSWindowDelegate { private static func makeWindow( contentViewController: NSViewController, title: String, - autosaveName: String) -> NSWindow + autosaveName: String) -> ExperienceWindow { let window = WebChatWindow( contentRect: NSRect(origin: .zero, size: WebChatSwiftUILayout.windowSize), diff --git a/apps/macos/Tests/OpenClawIPCTests/AppKitWindowTransitionTestSupport.swift b/apps/macos/Tests/OpenClawIPCTests/AppKitWindowTransitionTestSupport.swift new file mode 100644 index 000000000000..a56c2c3b01dc --- /dev/null +++ b/apps/macos/Tests/OpenClawIPCTests/AppKitWindowTransitionTestSupport.swift @@ -0,0 +1,39 @@ +import AppKit +import OpenClawKit +import Testing + +extension AppKitTestSupport { + static func performWindowTransition( + _ window: NSWindow, + notification: Notification.Name, + action: @MainActor () async throws -> Void) async throws + { + let events = AsyncStream.makeStream(bufferingPolicy: .bufferingNewest(1)) + let observer = NotificationCenter.default.addObserver( + forName: notification, object: window, queue: nil) + { _ in events.continuation.yield(()) } + defer { + NotificationCenter.default.removeObserver(observer) + events.continuation.finish() + } + try await action() + let observed = try await AsyncTimeout.withTimeout( + seconds: 10, + onTimeout: { + NSError( + domain: "AppKitWindowTransitionTests", + code: 1, + userInfo: [NSLocalizedDescriptionKey: "The window did not emit \(notification.rawValue)"]) + }, + operation: { + var iterator = events.stream.makeAsyncIterator() + return await iterator.next() != nil + }) + try #require(observed) + // Native window ordering continues after the transition notification. + // Assert the settled result after its main-queue completion work can run. + await withCheckedContinuation { continuation in + DispatchQueue.main.async { continuation.resume() } + } + } +} diff --git a/apps/macos/Tests/OpenClawIPCTests/DashboardExperienceTests.swift b/apps/macos/Tests/OpenClawIPCTests/DashboardExperienceTests.swift index a4c568e1068b..195dbe2db383 100644 --- a/apps/macos/Tests/OpenClawIPCTests/DashboardExperienceTests.swift +++ b/apps/macos/Tests/OpenClawIPCTests/DashboardExperienceTests.swift @@ -25,11 +25,21 @@ struct DashboardExperienceTests { try await saved.webView.evaluateJavaScript("window.fixtureDraft = 'Keep this draft'") let savedWindow = try #require(saved.window) let primaryWindow = try #require(primary.window) - primaryWindow.miniaturize(nil) + try await AppKitTestSupport.performWindowTransition( + primaryWindow, notification: NSWindow.didMiniaturizeNotification) + { + primaryWindow.miniaturize(nil) + } saved.show() #expect(manager.hasVisibleWindows) - manager.hideWindows() + try await AppKitTestSupport.performWindowTransition( + primaryWindow, notification: NSWindow.didDeminiaturizeNotification) + { + manager.hideWindows() + await manager.handleEndpointState(.ready( + mode: .remote, url: server.websocketURL(), token: "renewed", password: nil, routeRevision: 2)) + } #expect(!manager.hasVisibleWindows) #expect(!primaryWindow.isVisible && !primaryWindow.isMiniaturized) @@ -48,12 +58,32 @@ struct DashboardExperienceTests { #expect(try await saved.webView.evaluateJavaScript("window.fixtureDraft") as? String == "Keep this draft") manager.hideWindows() - await manager.handleEndpointState(.ready( - mode: .remote, url: server.websocketURL(), token: "renewed", password: nil, routeRevision: 2)) let renewed = try #require(primaryWindow.windowController as? DashboardWindowController) #expect(renewed.auth.token == "renewed") #expect(renewed.isHiddenForExperience) #expect(!primaryWindow.isVisible && primaryWindow.isExcludedFromWindowsMenu) + + // Native ordering must not promote a window the experience owner has hidden. + primaryWindow.orderFront(nil) + #expect(!renewed.isWindowOpen) + #expect(manager.frontmostDashboard() == nil) + manager.hideWindows() + + renewed.show() + try await AppKitTestSupport.performWindowTransition( + primaryWindow, notification: NSWindow.didMiniaturizeNotification) + { + primaryWindow.miniaturize(nil) + } + try await AppKitTestSupport.performWindowTransition( + primaryWindow, notification: NSWindow.didDeminiaturizeNotification) + { + manager.hideWindows() + renewed.show() + } + #expect(primaryWindow.windowController === renewed) + #expect(!renewed.isHiddenForExperience) + #expect(primaryWindow.isVisible && !primaryWindow.isExcludedFromWindowsMenu) } @Test(arguments: ["navigation", "new-window", "focus", "picker"]) diff --git a/apps/macos/Tests/OpenClawIPCTests/GatewayChannelConnectTests.swift b/apps/macos/Tests/OpenClawIPCTests/GatewayChannelConnectTests.swift index d1d0209c25a8..13be039a2a2b 100644 --- a/apps/macos/Tests/OpenClawIPCTests/GatewayChannelConnectTests.swift +++ b/apps/macos/Tests/OpenClawIPCTests/GatewayChannelConnectTests.swift @@ -511,20 +511,22 @@ struct GatewayChannelConnectTests { let channel = try GatewayChannelActor( url: #require(URL(string: "wss://gateway.example.ts.net")), token: nil, - session: WebSocketSessionBox(session: session)) - do { - try await channel.connect() - Issue.record("missing challenge unexpectedly connected") - } catch { - let nsError = error as NSError - #expect(nsError.domain == URLError.errorDomain) - #expect(nsError.code == URLError.timedOut.rawValue) - let problem = try #require(GatewayConnectionProblemMapper.map(error: error)) - #expect(problem.kind == .timeout) - #expect(problem.retryable) - #expect(!problem.pauseReconnect) + session: WebSocketSessionBox(session: session), + connectOptions: GatewayWebSocketTestSupport.identityFreeOperatorConnectOptions) + try await self.withChannel(channel) { channel in + do { + try await channel.connect() + Issue.record("missing challenge unexpectedly connected") + } catch { + let nsError = error as NSError + #expect(nsError.domain == URLError.errorDomain) + #expect(nsError.code == URLError.timedOut.rawValue) + let problem = try #require(GatewayConnectionProblemMapper.map(error: error)) + #expect(problem.kind == .timeout) + #expect(problem.retryable) + #expect(!problem.pauseReconnect) + } } - await channel.shutdown() } @Test func `default operator connect scopes preserve pairing and admin`() async throws { diff --git a/apps/macos/Tests/OpenClawIPCTests/WebChatSwiftUISmokeTests.swift b/apps/macos/Tests/OpenClawIPCTests/WebChatSwiftUISmokeTests.swift index aa0b82c4e999..f297faddef42 100644 --- a/apps/macos/Tests/OpenClawIPCTests/WebChatSwiftUISmokeTests.swift +++ b/apps/macos/Tests/OpenClawIPCTests/WebChatSwiftUISmokeTests.swift @@ -186,7 +186,7 @@ struct WebChatSwiftUISmokeTests { @Test(arguments: [false, true]) func `hiding retains the window and its draft while removing it from the Dock and Window menu`( - minimized: Bool) throws + minimized: Bool) async throws { let controller = WebChatSwiftUIWindowController( sessionKey: "main", @@ -195,10 +195,24 @@ struct WebChatSwiftUISmokeTests { defer { controller.close() } let window = try #require(controller._testWindow) controller.show() - if minimized { window.miniaturize(nil) } + if minimized { + try await AppKitTestSupport.performWindowTransition( + window, notification: NSWindow.didMiniaturizeNotification) + { + window.miniaturize(nil) + } + } #expect(controller.isWindowOpen) - controller.hide() + if minimized { + try await AppKitTestSupport.performWindowTransition( + window, notification: NSWindow.didDeminiaturizeNotification) + { + controller.hide() + } + } else { + controller.hide() + } #expect(controller._testWindow === window) #expect(!controller.isWindowOpen) #expect(!window.isVisible) @@ -207,6 +221,19 @@ struct WebChatSwiftUISmokeTests { #expect(controller._testDraft == "Keep this draft") controller.show() + if minimized { + try await AppKitTestSupport.performWindowTransition( + window, notification: NSWindow.didMiniaturizeNotification) + { + window.miniaturize(nil) + } + try await AppKitTestSupport.performWindowTransition( + window, notification: NSWindow.didDeminiaturizeNotification) + { + controller.hide() + controller.show() + } + } #expect(controller._testWindow === window) #expect(controller.isWindowOpen) #expect(!window.isExcludedFromWindowsMenu) diff --git a/apps/shared/OpenClawWatchRTC/Cargo.lock b/apps/shared/OpenClawWatchRTC/Cargo.lock index a1df4f0dae61..6ea799767bc6 100644 --- a/apps/shared/OpenClawWatchRTC/Cargo.lock +++ b/apps/shared/OpenClawWatchRTC/Cargo.lock @@ -1366,18 +1366,18 @@ dependencies = [ [[package]] name = "zerocopy" -version = "0.8.56" +version = "0.8.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "556764e583adb45a9f8d413c2a147fa7e8d821e48e12b14fd560b607998b75eb" +checksum = "d35102a9f36d089ccae9e4c6802bc118be4487b80aaffc0ab4e0cf5ce92d2873" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.8.56" +version = "0.8.57" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2ab42fc20575779bd240faa45f94a74256f755c0fa9e89f0ede20d91d0cdfc1" +checksum = "146c01f5ab44258da43cf276c74a2763db2ff3969c9c652c3f2de07041d0b2bc" dependencies = [ "proc-macro2", "quote", diff --git a/docs/plugins/building-plugins.md b/docs/plugins/building-plugins.md index a0795a14d4a4..21fd02bd7c05 100644 --- a/docs/plugins/building-plugins.md +++ b/docs/plugins/building-plugins.md @@ -69,7 +69,7 @@ local proof. "version": "1.0.0", "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "peerDependencies": { "openclaw": ">=2026.3.24-beta.2" diff --git a/docs/plugins/sdk-setup.md b/docs/plugins/sdk-setup.md index b45343489e4d..b526124e22ff 100644 --- a/docs/plugins/sdk-setup.md +++ b/docs/plugins/sdk-setup.md @@ -53,7 +53,7 @@ Your `package.json` needs an `openclaw` field that tells the plugin system what "version": "1.0.0", "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "peerDependencies": { "openclaw": ">=2026.3.24-beta.2" diff --git a/docs/snippets/plugin-publish/minimal-package.json b/docs/snippets/plugin-publish/minimal-package.json index 04c3b40fe8f8..6dc93185c2f5 100644 --- a/docs/snippets/plugin-publish/minimal-package.json +++ b/docs/snippets/plugin-publish/minimal-package.json @@ -3,7 +3,7 @@ "version": "1.0.0", "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "peerDependencies": { "openclaw": ">=2026.3.24-beta.2" diff --git a/docs/tools/acp-agents-setup.md b/docs/tools/acp-agents-setup.md index c3f8a4ed0650..b9bbc9d901dd 100644 --- a/docs/tools/acp-agents-setup.md +++ b/docs/tools/acp-agents-setup.md @@ -38,17 +38,21 @@ Built-in acpx harness aliases (from the pinned `acpx` dependency): | `droid` | [Factory Droid](https://www.factory.ai) | | `fast-agent` | [fast-agent](https://fast-agent.ai) | | `gemini` | [Gemini CLI](https://github.com/google-gemini/gemini-cli) | +| `grok-build` | Grok Build (`grok agent stdio`) | | `iflow` | [iFlow CLI](https://github.com/iflow-ai/iflow-cli) | | `kilocode` | [Kilocode](https://kilocode.ai) | | `kimi` | [Kimi CLI](https://github.com/MoonshotAI/kimi-cli) | | `kiro` | [Kiro CLI](https://kiro.dev) | +| `mcode` | MiniMax Code (`mcode acp`; install and authenticate its CLI on the Gateway host) | | `mux` | [Mux](https://mux.coder.com) | | `opencode` | [OpenCode](https://opencode.ai) | | `openclaw` | OpenClaw ACP bridge (native `openclaw acp`) | | `pi` | [Pi Coding Agent](https://github.com/earendil-works/pi) | +| `pool` | Pool (`pool acp`) | | `qoder` | [Qoder CLI](https://docs.qoder.com/cli/acp) | | `qwen` | [Qwen Code](https://github.com/QwenLM/qwen-code) | | `trae` | [Trae CLI](https://docs.trae.cn/cli) | +| `zeroclaw` | ZeroClaw (`zeroclaw acp`) | `factory-droid` and `factorydroid` also resolve to the built-in `droid` adapter. diff --git a/docs/tools/acp-agents/troubleshooting.md b/docs/tools/acp-agents/troubleshooting.md index 5a4d559e15d9..82f88a2e37e8 100644 --- a/docs/tools/acp-agents/troubleshooting.md +++ b/docs/tools/acp-agents/troubleshooting.md @@ -43,3 +43,15 @@ the next native tool call, restart the Codex app-server or OpenClaw Gateway instead of repeating `/new`. See [Codex harness troubleshooting](/plugins/codex-harness/troubleshooting). + +## Oversized harness messages + +The acpx backend limits each incoming ACP message from a harness to 64 MiB of +raw bytes by default. If a run fails with `ACP_MESSAGE_TOO_LARGE` or +`ACP message exceeded ACPX_MAX_ACP_MESSAGE_BYTES`, reduce the harness output or +set `ACPX_MAX_ACP_MESSAGE_BYTES` in the Gateway process environment to a larger +byte count. Setting it to `0` permits unlimited incoming message sizes. + +Restart the Gateway after changing the environment so new harness connections +use the limit. For direct acpx CLI sessions, close the existing warm owner and +start a new session; warm owners keep their startup setting. diff --git a/docs/tools/lobster.md b/docs/tools/lobster.md index dcc9baa039ff..7012947da062 100644 --- a/docs/tools/lobster.md +++ b/docs/tools/lobster.md @@ -201,6 +201,16 @@ Use the example below only when running the **standalone Lobster CLI** in an environment where `openclaw.invoke` is already configured with the correct gateway/auth context. +For `openclaw.invoke` and `clawd.invoke`, ambient `OPENCLAW_TOKEN` or +`CLAWD_TOKEN` credentials are accepted only for `localhost`, `127.0.0.1`, or +`[::1]` destinations. To send credentials to another HTTP(S) endpoint, pass +`--token` explicitly. This rule also applies to embedded workflows that +explicitly configure a remote connection. This command argument is the remote +Gateway credential, not the Lobster tool's approval-resume `token` parameter. +If an invocation times out or fails after dispatch, +Lobster does not retry it automatically, because the Gateway may already have +performed the action. + ```lobster openclaw.invoke --tool llm-task --action json --args-json '{ "prompt": "Given the input email, return intent and draft.", diff --git a/extensions/acpx/package.json b/extensions/acpx/package.json index 3ec148f94474..712ac9af9116 100644 --- a/extensions/acpx/package.json +++ b/extensions/acpx/package.json @@ -10,7 +10,7 @@ "dependencies": { "@agentclientprotocol/claude-agent-acp": "0.75.1", "@agentclientprotocol/codex-acp": "1.10.0", - "acpx": "0.13.2", + "acpx": "0.15.1", "smol-toml": "1.8.0", "zod": "4.5.4" }, diff --git a/extensions/amazon-bedrock/package.json b/extensions/amazon-bedrock/package.json index 33d474db96d7..8435d1a701bf 100644 --- a/extensions/amazon-bedrock/package.json +++ b/extensions/amazon-bedrock/package.json @@ -8,8 +8,8 @@ }, "type": "module", "dependencies": { - "@aws-sdk/client-bedrock": "3.1127.0", - "@aws-sdk/client-bedrock-runtime": "3.1127.0", + "@aws-sdk/client-bedrock": "3.1128.0", + "@aws-sdk/client-bedrock-runtime": "3.1128.0", "@aws-sdk/credential-provider-node": "3.972.82", "@smithy/node-http-handler": "4.12.1", "@smithy/shared-ini-file-loader": "4.7.2", diff --git a/extensions/browser/package.json b/extensions/browser/package.json index 1c25ea79c55a..7586419e6e95 100644 --- a/extensions/browser/package.json +++ b/extensions/browser/package.json @@ -8,7 +8,7 @@ "@modelcontextprotocol/sdk": "1.30.0", "express": "5.2.1", "playwright-core": "1.63.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "yargs-parser": "22.0.0", "zod": "4.5.4" }, diff --git a/extensions/canvas/package.json b/extensions/canvas/package.json index 92f034f5dd1a..fea61abef438 100644 --- a/extensions/canvas/package.json +++ b/extensions/canvas/package.json @@ -12,7 +12,7 @@ "@a2ui/web_core": "0.10.7", "@lit/context": "1.1.6", "lit": "3.3.3", - "typebox": "1.3.27" + "typebox": "1.3.30" }, "openclaw": { "extensions": [ diff --git a/extensions/codex/package.json b/extensions/codex/package.json index 1294134ada50..9e5fe49f78ed 100644 --- a/extensions/codex/package.json +++ b/extensions/codex/package.json @@ -11,7 +11,7 @@ "@openai/codex": "0.154.0", "semver": "7.8.5", "smol-toml": "1.8.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "ws": "8.21.3", "zod": "4.5.4" }, diff --git a/extensions/cua-computer/package.json b/extensions/cua-computer/package.json index 5b7873bd3809..118d2a0a0800 100644 --- a/extensions/cua-computer/package.json +++ b/extensions/cua-computer/package.json @@ -4,8 +4,8 @@ "description": "Experimental CUA Driver computer control for macOS, Windows, and Linux node hosts", "type": "module", "dependencies": { - "@trycua/cua-driver": "0.23.2", - "rastermill": "0.3.2", + "@trycua/cua-driver": "0.24.0", + "rastermill": "0.3.3", "zod": "4.5.4" }, "devDependencies": { @@ -13,30 +13,30 @@ }, "cuaDriverArtifacts": { "darwin-universal-binary": { - "archiveSha256": "0127c82ff17922df4290931a8ebf9b4a8b21656aad24cba6f21ee50e41ed4493" + "archiveSha256": "31790cb49baa206f6455fbc259f8f83ae27e86be908f5c8cac5ec2f8521f8382" }, "linux-arm64-gnu": { "files": { - "cua_driver_node_runtime.node": "7a14e0ed44cd4cfb5069c257d1de9ec510b01832d9d8f57924cab6a2c6484750", - "libcua_driver_sdk.so": "d3bb29556db3bcf04d7f0511823a20241cedde7f4ca514b7b695cbe1ec49fc6f" + "cua_driver_node_runtime.node": "d1f997df97fdda027175e6f824d060ab281e9579e5ebc3040fe2151e3f36f9a6", + "libcua_driver_sdk.so": "3666bfdc98198b7e4e5216c991b758b5f046d44555793433f7c334a4b895096a" } }, "linux-x64-gnu": { "files": { - "cua_driver_node_runtime.node": "b5f7aef8ae08e926923a550137abf1654c93982197c581b21baa162127935fd1", - "libcua_driver_sdk.so": "b50be7598d6b695680435d5d0c9203df1956245b2396d3cdf574fb08f1c8c305" + "cua_driver_node_runtime.node": "1f805d6052ee6c4f5ed3828ecbdf6e0db1f40f4e2fedcd292226e131a307c547", + "libcua_driver_sdk.so": "6a63c34d9551c74eb15c6e304c5558d9b96c93bd59facaa5cd1a3c8c0eeedddd" } }, "win32-arm64-msvc": { "files": { - "cua_driver_sdk.dll": "1752431065fd81daae23dce717cd2281b344cda4cad6b75fe5bf6031ab374f5c", - "cua_driver_node_runtime.node": "b1489b9bc49903aef60c829641a985b8508fc7df4739b282217fab3cfc1e0fa4" + "cua_driver_sdk.dll": "72e677d69e8c457a944ae63dbf3fe3780bd60ea51563bf99cca357ebd6c625a9", + "cua_driver_node_runtime.node": "13c35176c94e2ebf9e168851b9e9bfbbeaedcb77657f2dcf24665b1777b004e7" } }, "win32-x64-msvc": { "files": { - "cua_driver_sdk.dll": "e4700333d4d37bc87f09a45e74ea379e75dcd307bc105562ae6d4e2485e011c7", - "cua_driver_node_runtime.node": "efce78124d5feb2f0ea05bbb8af25e594f4480e8451dcf3b87f883e18ccafca8" + "cua_driver_sdk.dll": "e5ce91e13b781e650eb6f54be61d1af7138bdee4d510b54010d9bf05fd24276e", + "cua_driver_node_runtime.node": "11de7f51a8f5a5b3b418afa317b64ba8f035b4ea3fa2b3afcd7893d5b364e3f4" } } }, diff --git a/extensions/cua-computer/src/driver-artifacts-resolution.test.ts b/extensions/cua-computer/src/driver-artifacts-resolution.test.ts index 2b893ddbf073..f524ef1519ee 100644 --- a/extensions/cua-computer/src/driver-artifacts-resolution.test.ts +++ b/extensions/cua-computer/src/driver-artifacts-resolution.test.ts @@ -17,14 +17,14 @@ it("supplies the accepted artifact record without depending on the bundled modul expect(mocks.inspect).toHaveBeenCalledWith( expect.objectContaining({ pluginManifest: expect.objectContaining({ - dependencies: expect.objectContaining({ "@trycua/cua-driver": "0.23.2" }), + dependencies: expect.objectContaining({ "@trycua/cua-driver": "0.24.0" }), cuaDriverArtifacts: expect.objectContaining({ "win32-arm64-msvc": { files: { "cua_driver_node_runtime.node": - "b1489b9bc49903aef60c829641a985b8508fc7df4739b282217fab3cfc1e0fa4", + "13c35176c94e2ebf9e168851b9e9bfbbeaedcb77657f2dcf24665b1777b004e7", "cua_driver_sdk.dll": - "1752431065fd81daae23dce717cd2281b344cda4cad6b75fe5bf6031ab374f5c", + "72e677d69e8c457a944ae63dbf3fe3780bd60ea51563bf99cca357ebd6c625a9", }, }, }), diff --git a/extensions/diffs/package.json b/extensions/diffs/package.json index 376de308e7af..f2dc24e4fdcc 100644 --- a/extensions/diffs/package.json +++ b/extensions/diffs/package.json @@ -11,7 +11,7 @@ "@pierre/diffs": "1.4.1", "@shikijs/langs": "4.4.3", "playwright-core": "1.63.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/discord/package.json b/extensions/discord/package.json index ecbeb84040d3..4db49fd7cca1 100644 --- a/extensions/discord/package.json +++ b/extensions/discord/package.json @@ -13,7 +13,7 @@ "discord-api-types": "0.38.55", "libopus-wasm": "0.4.0", "mdast-util-from-markdown": "2.0.3", - "typebox": "1.3.27", + "typebox": "1.3.30", "undici": "8.10.2", "ws": "8.21.3", "zod": "4.5.4" diff --git a/extensions/document-extract/package.json b/extensions/document-extract/package.json index 4611bfaa7b16..2e65fba7446e 100644 --- a/extensions/document-extract/package.json +++ b/extensions/document-extract/package.json @@ -5,14 +5,16 @@ "description": "OpenClaw local document extraction plugin", "type": "module", "dependencies": { - "clawpdf": "0.3.1" + "clawpdf": "0.3.2" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" }, "openclaw": { "build": { - "workerEntries": ["./document-extractor.worker.ts"] + "workerEntries": [ + "./document-extractor.worker.ts" + ] }, "extensions": [ "./index.ts" diff --git a/extensions/feishu/package.json b/extensions/feishu/package.json index a1f016d9b640..b6421d098c14 100644 --- a/extensions/feishu/package.json +++ b/extensions/feishu/package.json @@ -12,7 +12,7 @@ "mdast-util-from-markdown": "2.0.3", "mdast-util-gfm-table": "2.0.0", "micromark-extension-gfm-table": "2.1.1", - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/file-transfer/package.json b/extensions/file-transfer/package.json index 170d5fe9287e..10622089da7b 100644 --- a/extensions/file-transfer/package.json +++ b/extensions/file-transfer/package.json @@ -6,7 +6,7 @@ "dependencies": { "@openclaw/fs-safe": "0.12.0", "minimatch": "10.2.6", - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/firecrawl/package.json b/extensions/firecrawl/package.json index b944817fe6c4..ca85dd31b08a 100644 --- a/extensions/firecrawl/package.json +++ b/extensions/firecrawl/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/google-meet/package.json b/extensions/google-meet/package.json index b51350084dad..68c14b44bfe3 100644 --- a/extensions/google-meet/package.json +++ b/extensions/google-meet/package.json @@ -8,8 +8,8 @@ }, "type": "module", "dependencies": { - "jszip": "3.10.1", - "typebox": "1.3.27" + "jszip": "3.10.2", + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/imap/package.json b/extensions/imap/package.json index ae1073535457..9fa4b8beded8 100644 --- a/extensions/imap/package.json +++ b/extensions/imap/package.json @@ -5,9 +5,9 @@ "description": "OpenClaw inbound IMAP email trigger plugin", "type": "module", "dependencies": { - "imapflow": "1.7.8", + "imapflow": "2.0.0", "mailauth": "5.0.3", - "mailparser": "3.9.20" + "mailparser": "3.9.23" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/imessage/package.json b/extensions/imessage/package.json index 73340d690968..7b4144eed4e7 100644 --- a/extensions/imessage/package.json +++ b/extensions/imessage/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/line/package.json b/extensions/line/package.json index dc09a4820268..816553444b26 100644 --- a/extensions/line/package.json +++ b/extensions/line/package.json @@ -9,7 +9,7 @@ "type": "module", "dependencies": { "@line/bot-sdk": "11.2.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/llm-task/package.json b/extensions/llm-task/package.json index 7687bb71518a..273fff6d75f0 100644 --- a/extensions/llm-task/package.json +++ b/extensions/llm-task/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw JSON-only LLM task plugin", "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/lobster/package.json b/extensions/lobster/package.json index 11348aea9867..48279ffb18e1 100644 --- a/extensions/lobster/package.json +++ b/extensions/lobster/package.json @@ -8,8 +8,8 @@ }, "type": "module", "dependencies": { - "@clawdbot/lobster": "2026.6.11", - "typebox": "1.3.27" + "@clawdbot/lobster": "2026.9.8", + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/matrix/package.json b/extensions/matrix/package.json index 941a6ffa674b..7b5413cf06f3 100644 --- a/extensions/matrix/package.json +++ b/extensions/matrix/package.json @@ -14,7 +14,7 @@ "markdown-it": "15.0.2", "matrix-js-sdk": "42.3.0", "music-metadata": "11.15.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/memory-core/package.json b/extensions/memory-core/package.json index 740bab787fb1..bac8e5534108 100644 --- a/extensions/memory-core/package.json +++ b/extensions/memory-core/package.json @@ -11,7 +11,7 @@ "chokidar": "5.0.0", "json5": "2.2.3", "p-limit": "7.3.2", - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/memory-lancedb/package.json b/extensions/memory-lancedb/package.json index 8ef41dc0502d..dcffb9662f38 100644 --- a/extensions/memory-lancedb/package.json +++ b/extensions/memory-lancedb/package.json @@ -9,8 +9,8 @@ "type": "module", "dependencies": { "apache-arrow": "18.1.0", - "openai": "7.10.0", - "typebox": "1.3.27" + "openai": "7.12.1", + "typebox": "1.3.30" }, "devDependencies": { "@lancedb/lancedb": "0.38.0", diff --git a/extensions/memory-wiki/package.json b/extensions/memory-wiki/package.json index 9f9f4cdffca3..183b11b88be8 100644 --- a/extensions/memory-wiki/package.json +++ b/extensions/memory-wiki/package.json @@ -6,7 +6,7 @@ "type": "module", "dependencies": { "mdast-util-from-markdown": "2.0.3", - "typebox": "1.3.27", + "typebox": "1.3.30", "yaml": "2.9.0", "zod": "4.5.4" }, diff --git a/extensions/msteams/package.json b/extensions/msteams/package.json index 4916eed1aa05..2c5a935643d9 100644 --- a/extensions/msteams/package.json +++ b/extensions/msteams/package.json @@ -12,7 +12,7 @@ "@microsoft/teams.api": "2.0.16", "@microsoft/teams.apps": "2.0.16", "express": "5.2.1", - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/ollama/package.json b/extensions/ollama/package.json index 1f3443e1e56f..8db8d4a24656 100644 --- a/extensions/ollama/package.json +++ b/extensions/ollama/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw Ollama provider plugin", "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/qa-channel/package.json b/extensions/qa-channel/package.json index 533ffe04c9fb..d935962cf5c7 100644 --- a/extensions/qa-channel/package.json +++ b/extensions/qa-channel/package.json @@ -11,7 +11,7 @@ "./test-api.js": "./test-api.ts" }, "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/qa-lab/package.json b/extensions/qa-lab/package.json index 831c52927108..d1ae216511da 100644 --- a/extensions/qa-lab/package.json +++ b/extensions/qa-lab/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw QA lab plugin with private debugger UI and scenario runner", "type": "module", "dependencies": { - "@copilotkit/aimock": "1.39.0", + "@copilotkit/aimock": "1.40.0", "@modelcontextprotocol/sdk": "1.30.0", "@openclaw/crabline": "0.1.24", "playwright-core": "1.63.0", @@ -37,7 +37,9 @@ "./index.ts" ], "build": { - "workerEntries": ["./src/execution-identity-storage-inspection.worker.ts"] + "workerEntries": [ + "./src/execution-identity-storage-inspection.worker.ts" + ] }, "compat": { "pluginApi": ">=2026.9.4" diff --git a/extensions/slack/package.json b/extensions/slack/package.json index a9d06f1f13d6..61c5ab11b0df 100644 --- a/extensions/slack/package.json +++ b/extensions/slack/package.json @@ -12,7 +12,7 @@ "@slack/types": "3.1.0", "@slack/web-api": "8.1.1", "get-east-asian-width": "1.6.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "undici": "7.29.1", "zod": "4.5.4" }, diff --git a/extensions/tavily/package.json b/extensions/tavily/package.json index 116f1ce4013d..3611b10632d3 100644 --- a/extensions/tavily/package.json +++ b/extensions/tavily/package.json @@ -4,7 +4,7 @@ "description": "OpenClaw Tavily plugin", "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*" diff --git a/extensions/teams-meetings/package.json b/extensions/teams-meetings/package.json index 7759876016c6..f69122dca3bd 100644 --- a/extensions/teams-meetings/package.json +++ b/extensions/teams-meetings/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/telegram/package.json b/extensions/telegram/package.json index 5c0dcc5e454c..5c6e6e7cd837 100644 --- a/extensions/telegram/package.json +++ b/extensions/telegram/package.json @@ -9,7 +9,7 @@ "@grammyjs/transformer-throttler": "1.2.1", "abort-controller": "3.0.0", "grammy": "1.46.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "undici": "8.10.2", "zod": "4.5.4" }, diff --git a/extensions/tlon/package.json b/extensions/tlon/package.json index c4e146f34005..2c4399759ace 100644 --- a/extensions/tlon/package.json +++ b/extensions/tlon/package.json @@ -8,8 +8,8 @@ }, "type": "module", "dependencies": { - "@aws-sdk/client-s3": "3.1127.0", - "@aws-sdk/s3-request-presigner": "3.1127.0", + "@aws-sdk/client-s3": "3.1128.0", + "@aws-sdk/s3-request-presigner": "3.1128.0", "@tloncorp/tlon-skill": "0.5.0", "@urbit/aura": "3.0.0", "zod": "4.5.4" diff --git a/extensions/visitor-access/package.json b/extensions/visitor-access/package.json index eeb4290a4084..9c50fca875eb 100644 --- a/extensions/visitor-access/package.json +++ b/extensions/visitor-access/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw internal Cloudflare Access visitor grants plugin", "type": "module", "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/voice-call/package.json b/extensions/voice-call/package.json index 57f3f92ab111..4083c8c8dd99 100644 --- a/extensions/voice-call/package.json +++ b/extensions/voice-call/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "ws": "8.21.3", "zod": "4.5.4" }, diff --git a/extensions/whatsapp/package.json b/extensions/whatsapp/package.json index 09e08dabcfd9..3f75c9a8a601 100644 --- a/extensions/whatsapp/package.json +++ b/extensions/whatsapp/package.json @@ -10,7 +10,7 @@ "dependencies": { "audio-decode": "2.2.3", "baileys": "7.0.0-rc14", - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/extensions/workboard/openclaw.plugin.json b/extensions/workboard/openclaw.plugin.json index 36c66a9b3cba..bf50030f9ae4 100644 --- a/extensions/workboard/openclaw.plugin.json +++ b/extensions/workboard/openclaw.plugin.json @@ -223,9 +223,9 @@ "properties": {} }, "controlUi": { - "entry": "dist/control-ui/10b93364550bfdabd0d863ea84c87a40bdd9bf11ba015c9f62200dc7235eebe5/index.js", + "entry": "dist/control-ui/6086f99d70e67af1883e874484afd2d64d2dfd7274d7749d8e1ec344afbb57fa/index.js", "styles": [ - "dist/control-ui/10b93364550bfdabd0d863ea84c87a40bdd9bf11ba015c9f62200dc7235eebe5/index.css" + "dist/control-ui/6086f99d70e67af1883e874484afd2d64d2dfd7274d7749d8e1ec344afbb57fa/index.css" ] } } diff --git a/extensions/workboard/package.json b/extensions/workboard/package.json index 999cc08fe751..7e890ab17922 100644 --- a/extensions/workboard/package.json +++ b/extensions/workboard/package.json @@ -8,7 +8,7 @@ "@openclaw/gateway-protocol": "workspace:*", "@openclaw/workboard-contract": "workspace:*", "lit": "3.3.3", - "typebox": "1.3.27", + "typebox": "1.3.30", "zod": "4.5.4" }, "devDependencies": { diff --git a/extensions/xai/package.json b/extensions/xai/package.json index 994d4bcc3426..8bc1e8d3f5da 100644 --- a/extensions/xai/package.json +++ b/extensions/xai/package.json @@ -5,7 +5,7 @@ "description": "OpenClaw xAI plugin", "type": "module", "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "ws": "8.21.3" }, "devDependencies": { diff --git a/extensions/zalouser/package.json b/extensions/zalouser/package.json index a6132a22d52f..804afe5e03e0 100644 --- a/extensions/zalouser/package.json +++ b/extensions/zalouser/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "typebox": "1.3.27", + "typebox": "1.3.30", "zca-js": "2.1.2", "zod": "4.5.4" }, diff --git a/extensions/zoom-meetings/package.json b/extensions/zoom-meetings/package.json index 88d1b2268204..1b3277497d28 100644 --- a/extensions/zoom-meetings/package.json +++ b/extensions/zoom-meetings/package.json @@ -8,7 +8,7 @@ }, "type": "module", "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/plugin-sdk": "workspace:*", diff --git a/package.json b/package.json index c1763faf09cf..8e0421cb424e 100644 --- a/package.json +++ b/package.json @@ -2177,8 +2177,8 @@ "dependencies": { "@agentclientprotocol/sdk": "1.4.0", "@anthropic-ai/sdk": "0.124.0", - "@clack/core": "1.4.3", - "@clack/prompts": "1.7.0", + "@clack/core": "1.5.0", + "@clack/prompts": "1.8.0", "@earendil-works/pi-tui": "0.85.1", "@google/genai": "2.21.0", "@grammyjs/runner": "2.0.3", @@ -2192,16 +2192,16 @@ "@openclaw/fs-safe": "0.12.0", "@openclaw/proxyline": "0.3.12", "@silvia-odwyer/photon-node": "0.3.4", - "@trycua/cua-driver": "0.23.2", + "@trycua/cua-driver": "0.24.0", "acorn": "8.18.0", "chalk": "6.0.0", "chokidar": "5.0.0", - "clawpdf": "0.3.1", + "clawpdf": "0.3.2", "commander": "15.0.0", "croner": "10.0.1", "diff": "9.0.0", "dotenv": "17.4.2", - "entities": "8.0.0", + "entities": "8.1.0", "execa": "10.0.1", "express": "5.2.1", "file-type": "22.0.2", @@ -2209,7 +2209,7 @@ "highlight.js": "11.12.0", "hosted-git-info": "10.1.1", "iconv-lite": "0.7.3", - "ignore": "7.0.8", + "ignore": "7.0.9", "import-meta-resolve": "4.2.0", "jiti": "2.7.0", "json5": "2.2.3", @@ -2220,7 +2220,7 @@ "minimatch": "10.2.6", "ms": "2.1.3", "node-edge-tts": "1.2.10", - "openai": "7.10.0", + "openai": "7.12.1", "p-limit": "7.3.2", "p-map": "7.0.7", "partial-json": "0.1.7", @@ -2228,12 +2228,12 @@ "pretty-ms": "9.3.1", "qrcode": "1.5.4", "quickjs-wasi": "3.6.0", - "rastermill": "0.3.2", + "rastermill": "0.3.3", "semver": "7.8.5", "tar": "7.5.22", "tree-sitter-bash": "0.25.1", "tslog": "5.1.0", - "typebox": "1.3.27", + "typebox": "1.3.30", "typescript": "6.0.3", "undici": "8.10.2", "web-push": "3.6.7", @@ -2245,7 +2245,7 @@ "devDependencies": { "@a2ui/lit": "0.10.3", "@a2ui/web_core": "0.10.7", - "@copilotkit/aimock": "1.39.0", + "@copilotkit/aimock": "1.40.0", "@lit-labs/signals": "0.3.0", "@lit/context": "1.1.6", "@lit/task": "1.0.3", @@ -2264,28 +2264,28 @@ "@types/markdown-it": "14.2.0", "@types/mdast": "4.0.4", "@types/ms": "2.1.0", - "@types/node": "26.4.1", + "@types/node": "26.5.0", "@types/semver": "7.8.0", "@types/web-push": "3.6.4", "@types/ws": "8.18.1", "@vitest/coverage-v8": "5.0.0", - "acpx": "0.13.2", + "acpx": "0.15.1", "apache-arrow": "21.2.0", "baileys": "7.0.0-rc14", "esbuild": "0.28.2", "htmlparser2": "12.0.0", "ipaddr.js": "2.5.0", - "jscpd": "5.1.2", + "jscpd": "5.2.0", "jsdom": "30.0.1", "lit": "3.3.3", "lit-analyzer": "2.0.3", "markdown-it": "15.0.2", "markdown-it-anchor": "10.0.0", - "marked": "18.0.11", + "marked": "18.0.12", "minipass": "7.1.3", "nostr-tools": "2.25.2", - "oxfmt": "0.66.0", - "oxlint": "1.81.0", + "oxfmt": "0.67.0", + "oxlint": "1.82.0", "oxlint-tsgolint": "7.0.2001", "pako": "3.0.1", "playwright": "1.63.0", @@ -2312,5 +2312,5 @@ "engines": { "node": ">=24.16.0 <25 || >=26.1.0" }, - "packageManager": "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457" + "packageManager": "pnpm@12.4.0+sha512.37536c26ed40ab4134b6511e09f6b27f3ebb45687468f2406ca3805279a4e5ca158c1931350ad9774d6ab2108d71b3dbaeb39943159294375e4d053e8e05685c" } diff --git a/packages/agent-core/package.json b/packages/agent-core/package.json index c6677e9efe51..08509ecc4d69 100644 --- a/packages/agent-core/package.json +++ b/packages/agent-core/package.json @@ -66,6 +66,6 @@ "@openclaw/ai": "workspace:*", "@openclaw/llm-core": "workspace:*", "@openclaw/normalization-core": "workspace:*", - "typebox": "1.3.27" + "typebox": "1.3.30" } } diff --git a/packages/ai/package.json b/packages/ai/package.json index a0179e09faa8..cb73ada42d5e 100644 --- a/packages/ai/package.json +++ b/packages/ai/package.json @@ -121,9 +121,9 @@ "@anthropic-ai/sdk": "0.124.0", "@google/genai": "2.21.0", "@mistralai/mistralai": "2.6.4", - "openai": "7.10.0", + "openai": "7.12.1", "partial-json": "0.1.7", - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/model-catalog-core": "workspace:*", diff --git a/packages/gateway-protocol/package.json b/packages/gateway-protocol/package.json index 09d455739e19..15905865a929 100644 --- a/packages/gateway-protocol/package.json +++ b/packages/gateway-protocol/package.json @@ -83,7 +83,7 @@ "prepack": "pnpm run build && node --import tsx ../../scripts/protocol-gen.ts --out ./protocol.schema.json" }, "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" }, "devDependencies": { "@openclaw/normalization-core": "workspace:*" diff --git a/packages/llm-core/package.json b/packages/llm-core/package.json index f98043918a61..42b62a7093eb 100644 --- a/packages/llm-core/package.json +++ b/packages/llm-core/package.json @@ -41,6 +41,6 @@ } }, "dependencies": { - "typebox": "1.3.27" + "typebox": "1.3.30" } } diff --git a/packages/mermaid-renderer/package.json b/packages/mermaid-renderer/package.json index 0ac19ee438f5..e16abdccebb6 100644 --- a/packages/mermaid-renderer/package.json +++ b/packages/mermaid-renderer/package.json @@ -11,7 +11,7 @@ }, "dependencies": { "@openclaw/normalization-core": "workspace:*", - "dompurify": "3.4.14", + "dompurify": "3.4.15", "mermaid": "11.17.2" }, "devDependencies": { diff --git a/packages/normalization-core/package.json b/packages/normalization-core/package.json index f6d2bc2b115f..5758dd9050db 100644 --- a/packages/normalization-core/package.json +++ b/packages/normalization-core/package.json @@ -135,6 +135,6 @@ }, "dependencies": { "libphonenumber-js": "1.13.12", - "typebox": "1.3.27" + "typebox": "1.3.30" } } diff --git a/packages/terminal-core/package.json b/packages/terminal-core/package.json index 4a523b2ad018..1a23f2cafa20 100644 --- a/packages/terminal-core/package.json +++ b/packages/terminal-core/package.json @@ -101,7 +101,7 @@ } }, "dependencies": { - "@clack/prompts": "1.7.0", + "@clack/prompts": "1.8.0", "@openclaw/normalization-core": "workspace:*", "chalk": "6.0.0", "string-width": "8.2.2" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5c334db5d26d..148c8a1f5276 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,96 +7,153 @@ importers: configDependencies: {} packageManagerDependencies: pnpm: - specifier: 12.3.4 - version: 12.3.4 + specifier: 12.4.0 + version: 12.4.0 packages: - '@pnpm/exe.darwin-arm64@12.3.4': - resolution: {integrity: sha512-PAyUol8T1+/+ViOiXAt51ECA+QnfXCqz6foL4bW+LsoX0NcVd5XVEM2mRQu+LV4oc7uRz9zf9U0P+XFfuQeDAw==} + '@pnpm/exe.android-arm64@12.4.0': + resolution: {integrity: sha512-sAwslzCw74OpqK2P9l39cgdrRWHSqf5wEjB58JEzeVX6wdLvaHyg9i/GeRK5Ou6PZNA3AkD4yLO3c/y7UqOf8w==} + cpu: [arm64] + os: [android] + + '@pnpm/exe.android-x64@12.4.0': + resolution: {integrity: sha512-Ps3Gz0OrqYjuRfhzeNqcvIow6QmNrU3BSzMxJu5rUCSl7inVUUFX2gZbNL9naQsNLoorKCdxUf4N+WI9Mr1WBg==} + cpu: [x64] + os: [android] + + '@pnpm/exe.darwin-arm64@12.4.0': + resolution: {integrity: sha512-75EYiF8GuiTsnvP4cbZsviMBjohXUYtg2zjD4gdfhqxlU1y9Nj+KdEsbH4jfgB/FgyJSYPB2rqfmvvgLnRlVug==} cpu: [arm64] os: [darwin] - '@pnpm/exe.darwin-x64@12.3.4': - resolution: {integrity: sha512-fxP9JCk0Cdye+ePuj+GJJLMUMTqHGWRdb1dtv4How876uQ2ehxvenpgiYAir/ceO9PsYUZkFTtyZdx+rRu5QOA==} + '@pnpm/exe.darwin-x64@12.4.0': + resolution: {integrity: sha512-b74TzBg8lxl0lqZImGOXpRbAGcqVKX+UMckl3wG+KH52yYHI86VBJP86HbJX30HJ/EFeC6Tgbz2E4b5hhKRvdA==} cpu: [x64] os: [darwin] - '@pnpm/exe.linux-arm64-musl@12.3.4': - resolution: {integrity: sha512-FBOt0/7ye6O6q4AllVV5QMviB6qE6fqkeczV/+MDWQsmo+QJrlfsh6X7CpH/tClVpBZEyIbjpUoT8bNhCYBxEg==} + '@pnpm/exe.freebsd-x64@12.4.0': + resolution: {integrity: sha512-A45d6axdQIFNyNTYZAC64wh5+6LJ6dNKhNAoNMNi/EC5y9CRfv0GL3ZYDBqpkmsN9KMAkVsFWizq/Ng6xtjnhw==} + cpu: [x64] + os: [freebsd] + + '@pnpm/exe.linux-arm64-musl@12.4.0': + resolution: {integrity: sha512-yS6DNel7twfEUoW1yka1hpQrnhRe/s1JZ1MThVfgrmNQrNaPyHxQvAihm/GtL2CM6OeMV6z5532H/W/yDjQp5g==} cpu: [arm64] os: [linux] libc: [musl] - '@pnpm/exe.linux-arm64@12.3.4': - resolution: {integrity: sha512-t71AVA7LRqiKTyZ5xMYaZc2n5DfdpMbfokZuiIOXHBOM03ECnF0t4iYwaBDqJgVjlKYUOwaF/bRQajGNA4cJ4w==} + '@pnpm/exe.linux-arm64@12.4.0': + resolution: {integrity: sha512-6npQUwq3D/WXbTgR4evApEKQ9ITznZ6Iz/dptcjBzA7+wSLTaYkK98Od2wsHCoPmEFb9tGtM+cvG82+wy0o9uA==} cpu: [arm64] os: [linux] libc: [glibc] - '@pnpm/exe.linux-x64-musl@12.3.4': - resolution: {integrity: sha512-RPmk7Jb/aYaFvL2iyDN/AtMY+hUEsue732WmXpcuQ9tBpMnGyA5py7Z3+e+qmQaJ0zY/4ni9jJiyPBQHujmv6w==} + '@pnpm/exe.linux-ppc64@12.4.0': + resolution: {integrity: sha512-7shJ4WytyvBEdjrbIDqx2gDAH7sr0HBDooTmnNQ7DlzcLeeGi7Yqir7gJjOTm6s9S1cVnT56IwmqnnwQMP1HTQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-riscv64@12.4.0': + resolution: {integrity: sha512-q03EGUFoe/oOU/67E3sEAePr3qjFu8xrsX+WOXTodcFXfO5FondC6TPs7BSwhTiV27j3jeDP56qhJP05pXn+vw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-s390x@12.4.0': + resolution: {integrity: sha512-GZ5YellCtNnaLe9zVj9l3avlw9CbSzExUFDh7v+tVbLfOOfkkRLpx2lsw1ytJ/nFWvxF2TO6M6Q9JDT7q8svRg==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@pnpm/exe.linux-x64-musl@12.4.0': + resolution: {integrity: sha512-c8YyjVL39L48tRg9i3iw3d90fN6q84UjxlgWBhplcBOpzCgmglDVkPMtEAVDC+t9iobvYzs2hJnmTqLaA87MVA==} cpu: [x64] os: [linux] libc: [musl] - '@pnpm/exe.linux-x64@12.3.4': - resolution: {integrity: sha512-2ZqOlSPkfwX1h5cR+FPiWf8+F+2hZT/3TvhUK5sigHqwaQCIiq8R7CGxhndKs63JtcLi2a1Qpo+wX/EoyfjyJQ==} + '@pnpm/exe.linux-x64@12.4.0': + resolution: {integrity: sha512-SQVgRkcR4Xyqf8+VNbtY0rtcEnfDq48RhH30HWo2/UfqKEfle2rOMyGZOmN1DbMw4ZzG5mWYoC81O7ZqHFZcPw==} cpu: [x64] os: [linux] libc: [glibc] - '@pnpm/exe.win32-arm64@12.3.4': - resolution: {integrity: sha512-ANyrHqyqco6SXBysUTRF74itDyyraea7IbFsKFdNXTjcFnfycTDx37EwuhdpPYFNSIh2JhUG4fByclsRfiHX7w==} + '@pnpm/exe.win32-arm64@12.4.0': + resolution: {integrity: sha512-ZamXPhx0X6APZJAIkcH+K9KAsKcTYwxEgOyTQ/NXE+2UHBT9bRnSQ91sBeY6ELNd58V5cmMAkXSW5xmU+2ry+w==} cpu: [arm64] os: [win32] - '@pnpm/exe.win32-x64@12.3.4': - resolution: {integrity: sha512-WH/KqBPY/hq2Tb7SgQltEZytimcjgKRaCRL/aM9CI0c67iKc5TVmHUhIiL3Ux9FB4bWn36i6XewUcScQI+zG8w==} + '@pnpm/exe.win32-x64@12.4.0': + resolution: {integrity: sha512-b8bLaprnpYi/2zN0M3H9RDAHuxCP3fmV5agPPwdp9fIdjNSUkV7V/RC3L4oWwbZvVgYEjjFLx1RuJOdltoKP6g==} cpu: [x64] os: [win32] - pnpm@12.3.4: - resolution: {integrity: sha512-lhqkH7B32joEpEHZ+OFevAyW2o73ELLrZ7+e58sGEOq9SPH9hfUc/+c4RnhfoPh8VqOocqHYk/hEZ0G1zORUVw==} + pnpm@12.4.0: + resolution: {integrity: sha512-N1NsJu1Aq0E0tlEeCfayfz67RWh0aPJAbKOAUnmk5coVjBkxNQrZd01qshCNcbPbrrOZQxWSlDdeTQU+jgVoXA==} engines: {node: '>=18.*'} hasBin: true snapshots: - '@pnpm/exe.darwin-arm64@12.3.4': + '@pnpm/exe.android-arm64@12.4.0': optional: true - '@pnpm/exe.darwin-x64@12.3.4': + '@pnpm/exe.android-x64@12.4.0': optional: true - '@pnpm/exe.linux-arm64-musl@12.3.4': + '@pnpm/exe.darwin-arm64@12.4.0': optional: true - '@pnpm/exe.linux-arm64@12.3.4': + '@pnpm/exe.darwin-x64@12.4.0': optional: true - '@pnpm/exe.linux-x64-musl@12.3.4': + '@pnpm/exe.freebsd-x64@12.4.0': optional: true - '@pnpm/exe.linux-x64@12.3.4': + '@pnpm/exe.linux-arm64-musl@12.4.0': optional: true - '@pnpm/exe.win32-arm64@12.3.4': + '@pnpm/exe.linux-arm64@12.4.0': optional: true - '@pnpm/exe.win32-x64@12.3.4': + '@pnpm/exe.linux-ppc64@12.4.0': optional: true - pnpm@12.3.4: + '@pnpm/exe.linux-riscv64@12.4.0': + optional: true + + '@pnpm/exe.linux-s390x@12.4.0': + optional: true + + '@pnpm/exe.linux-x64-musl@12.4.0': + optional: true + + '@pnpm/exe.linux-x64@12.4.0': + optional: true + + '@pnpm/exe.win32-arm64@12.4.0': + optional: true + + '@pnpm/exe.win32-x64@12.4.0': + optional: true + + pnpm@12.4.0: optionalDependencies: - '@pnpm/exe.darwin-arm64': 12.3.4 - '@pnpm/exe.darwin-x64': 12.3.4 - '@pnpm/exe.linux-arm64': 12.3.4 - '@pnpm/exe.linux-arm64-musl': 12.3.4 - '@pnpm/exe.linux-x64': 12.3.4 - '@pnpm/exe.linux-x64-musl': 12.3.4 - '@pnpm/exe.win32-arm64': 12.3.4 - '@pnpm/exe.win32-x64': 12.3.4 + '@pnpm/exe.android-arm64': 12.4.0 + '@pnpm/exe.android-x64': 12.4.0 + '@pnpm/exe.darwin-arm64': 12.4.0 + '@pnpm/exe.darwin-x64': 12.4.0 + '@pnpm/exe.freebsd-x64': 12.4.0 + '@pnpm/exe.linux-arm64': 12.4.0 + '@pnpm/exe.linux-arm64-musl': 12.4.0 + '@pnpm/exe.linux-ppc64': 12.4.0 + '@pnpm/exe.linux-riscv64': 12.4.0 + '@pnpm/exe.linux-s390x': 12.4.0 + '@pnpm/exe.linux-x64': 12.4.0 + '@pnpm/exe.linux-x64-musl': 12.4.0 + '@pnpm/exe.win32-arm64': 12.4.0 + '@pnpm/exe.win32-x64': 12.4.0 --- lockfileVersion: '9.0' @@ -133,13 +190,13 @@ overrides: ip-address: 10.7.0 mailauth@5.0.3>nodemailer: 10.0.8 mailauth@5.0.3>undici: 8.10.2 - mailparser@3.9.20>nodemailer: 10.0.8 + mailparser@3.9.23>nodemailer: 10.0.8 minimatch: 10.2.6 path-to-regexp: 8.4.2 proxy-addr: 2.0.8 qs: 6.16.0 node-domexception: npm:@nolyfill/domexception@1.0.28 - typebox: 1.3.27 + typebox: 1.3.30 tar: 7.5.22 tough-cookie: 6.0.2 tsdown>rolldown-plugin-dts: 0.28.5 @@ -167,11 +224,11 @@ importers: specifier: 0.124.0 version: 0.124.0(zod@4.5.4) '@clack/core': - specifier: 1.4.3 - version: 1.4.3 + specifier: 1.5.0 + version: 1.5.0 '@clack/prompts': - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 '@earendil-works/pi-tui': specifier: 0.85.1 version: 0.85.1 @@ -192,7 +249,7 @@ importers: version: 1.2.0-beta.15 '@mistralai/mistralai': specifier: 2.6.4 - version: 2.6.4(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)) + version: 2.6.4(@opentelemetry/api@1.9.1) '@modelcontextprotocol/sdk': specifier: 1.30.0 version: 1.30.0(supports-color@10.2.2)(zod@4.5.4) @@ -212,8 +269,8 @@ importers: specifier: 0.3.4 version: 0.3.4 '@trycua/cua-driver': - specifier: 0.23.2 - version: 0.23.2 + specifier: 0.24.0 + version: 0.24.0 acorn: specifier: 8.18.0 version: 8.18.0 @@ -224,8 +281,8 @@ importers: specifier: 5.0.0 version: 5.0.0 clawpdf: - specifier: 0.3.1 - version: 0.3.1 + specifier: 0.3.2 + version: 0.3.2 commander: specifier: 15.0.0 version: 15.0.0 @@ -239,8 +296,8 @@ importers: specifier: 17.4.2 version: 17.4.2 entities: - specifier: 8.0.0 - version: 8.0.0 + specifier: 8.1.0 + version: 8.1.0 execa: specifier: 10.0.1 version: 10.0.1 @@ -263,8 +320,8 @@ importers: specifier: 0.7.3 version: 0.7.3 ignore: - specifier: 7.0.8 - version: 7.0.8 + specifier: 7.0.9 + version: 7.0.9 import-meta-resolve: specifier: 4.2.0 version: 4.2.0 @@ -296,8 +353,8 @@ importers: specifier: 1.2.10 version: 1.2.10(supports-color@10.2.2) openai: - specifier: 7.10.0 - version: 7.10.0(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4) + specifier: 7.12.1 + version: 7.12.1(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4) p-limit: specifier: 7.3.2 version: 7.3.2 @@ -320,8 +377,8 @@ importers: specifier: 3.6.0 version: 3.6.0 rastermill: - specifier: 0.3.2 - version: 0.3.2 + specifier: 0.3.3 + version: 0.3.3 semver: specifier: 7.8.5 version: 7.8.5 @@ -335,8 +392,8 @@ importers: specifier: 5.1.0 version: 5.1.0 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 typescript: specifier: 6.0.3 version: 6.0.3 @@ -366,8 +423,8 @@ importers: specifier: 0.10.7 version: 0.10.7 '@copilotkit/aimock': - specifier: 1.39.0 - version: 1.39.0(vitest@5.0.0) + specifier: 1.40.0 + version: 1.40.0(vitest@5.0.0) '@lit-labs/signals': specifier: 0.3.0 version: 0.3.0 @@ -423,8 +480,8 @@ importers: specifier: 2.1.0 version: 2.1.0 '@types/node': - specifier: 26.4.1 - version: 26.4.1 + specifier: 26.5.0 + version: 26.5.0 '@types/semver': specifier: 7.8.0 version: 7.8.0 @@ -438,8 +495,8 @@ importers: specifier: 5.0.0 version: 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) acpx: - specifier: 0.13.2 - version: 0.13.2 + specifier: 0.15.1 + version: 0.15.1 apache-arrow: specifier: 21.2.0 version: 21.2.0 @@ -456,11 +513,11 @@ importers: specifier: 2.5.0 version: 2.5.0 jscpd: - specifier: 5.1.2 - version: 5.1.2 + specifier: 5.2.0 + version: 5.2.0 jsdom: specifier: 30.0.1 - version: 30.0.1(@noble/hashes@2.3.0) + version: 30.0.1(@noble/hashes@2.4.0) lit: specifier: 3.3.3 version: 3.3.3 @@ -474,8 +531,8 @@ importers: specifier: 10.0.0 version: 10.0.0(@types/markdown-it@14.2.0)(markdown-it@15.0.2) marked: - specifier: 18.0.11 - version: 18.0.11 + specifier: 18.0.12 + version: 18.0.12 minipass: specifier: 7.1.3 version: 7.1.3 @@ -483,11 +540,11 @@ importers: specifier: 2.25.2 version: 2.25.2(typescript@6.0.3) oxfmt: - specifier: 0.66.0 - version: 0.66.0 + specifier: 0.67.0 + version: 0.67.0 oxlint: - specifier: 1.81.0 - version: 1.81.0(oxlint-tsgolint@7.0.2001) + specifier: 1.82.0 + version: 1.82.0(oxlint-tsgolint@7.0.2001) oxlint-tsgolint: specifier: 7.0.2001 version: 7.0.2001 @@ -541,10 +598,10 @@ importers: version: 0.3.1 vite: specifier: 8.2.2 - version: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) + version: 8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) vitest: specifier: 5.0.0 - version: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + version: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) optionalDependencies: sqlite-vec: specifier: 0.1.9 @@ -578,8 +635,8 @@ importers: specifier: 1.10.0 version: 1.10.0 acpx: - specifier: 0.13.2 - version: 0.13.2 + specifier: 0.15.1 + version: 0.15.1 smol-toml: specifier: 1.8.0 version: 1.8.0 @@ -606,11 +663,11 @@ importers: extensions/amazon-bedrock: dependencies: '@aws-sdk/client-bedrock': - specifier: 3.1127.0 - version: 3.1127.0 + specifier: 3.1128.0 + version: 3.1128.0 '@aws-sdk/client-bedrock-runtime': - specifier: 3.1127.0 - version: 3.1127.0 + specifier: 3.1128.0 + version: 3.1128.0 '@aws-sdk/credential-provider-node': specifier: 3.972.82 version: 3.972.82 @@ -715,8 +772,8 @@ importers: specifier: 1.63.0 version: 1.63.0 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 yargs-parser: specifier: 22.0.0 version: 22.0.0 @@ -771,8 +828,8 @@ importers: specifier: 3.3.3 version: 3.3.3 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -830,8 +887,8 @@ importers: specifier: 1.8.0 version: 1.8.0 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 ws: specifier: 8.21.3 version: 8.21.3 @@ -880,11 +937,11 @@ importers: extensions/cua-computer: dependencies: '@trycua/cua-driver': - specifier: 0.23.2 - version: 0.23.2 + specifier: 0.24.0 + version: 0.24.0 rastermill: - specifier: 0.3.2 - version: 0.3.2 + specifier: 0.3.3 + version: 0.3.3 zod: specifier: 4.5.4 version: 4.5.4 @@ -970,7 +1027,7 @@ importers: dependencies: '@pierre/diffs': specifier: 1.4.1 - version: 1.4.1(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8) + version: 1.4.1(@shikijs/themes@4.4.3) '@shikijs/langs': specifier: 4.4.3 version: 4.4.3 @@ -978,8 +1035,8 @@ importers: specifier: 1.63.0 version: 1.63.0 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1012,8 +1069,8 @@ importers: specifier: 2.0.3 version: 2.0.3(supports-color@10.2.2) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 undici: specifier: 8.10.2 version: 8.10.2 @@ -1034,8 +1091,8 @@ importers: extensions/document-extract: dependencies: clawpdf: - specifier: 0.3.1 - version: 0.3.1 + specifier: 0.3.2 + version: 0.3.2 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1086,8 +1143,8 @@ importers: specifier: 2.1.1 version: 2.1.1 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1108,8 +1165,8 @@ importers: specifier: 10.2.6 version: 10.2.6 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1118,8 +1175,8 @@ importers: extensions/firecrawl: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1181,11 +1238,11 @@ importers: extensions/google-meet: dependencies: jszip: - specifier: 3.10.1 - version: 3.10.1 + specifier: 3.10.2 + version: 3.10.2 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1237,14 +1294,14 @@ importers: extensions/imap: dependencies: imapflow: - specifier: 1.7.8 - version: 1.7.8 + specifier: 2.0.0 + version: 2.0.0 mailauth: specifier: 5.0.3 version: 5.0.3 mailparser: - specifier: 3.9.20 - version: 3.9.20 + specifier: 3.9.23 + version: 3.9.23 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1256,8 +1313,8 @@ importers: extensions/imessage: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1303,8 +1360,8 @@ importers: specifier: 11.2.0 version: 11.2.0 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1341,8 +1398,8 @@ importers: extensions/llm-task: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1353,11 +1410,11 @@ importers: extensions/lobster: dependencies: '@clawdbot/lobster': - specifier: 2026.6.11 - version: 2026.6.11 + specifier: 2026.9.8 + version: 2026.9.8 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1399,8 +1456,8 @@ importers: specifier: 11.15.0 version: 11.15.0(supports-color@10.2.2) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1437,8 +1494,8 @@ importers: specifier: 7.3.2 version: 7.3.2 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1453,15 +1510,15 @@ importers: specifier: 18.1.0 version: 18.1.0 openai: - specifier: 7.10.0 - version: 7.10.0(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4) + specifier: 7.12.1 + version: 7.12.1(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@lancedb/lancedb': specifier: 0.38.0 - version: 0.38.0(@types/node@26.4.1)(apache-arrow@18.1.0) + version: 0.38.0(@types/node@26.5.0)(apache-arrow@18.1.0) '@openclaw/plugin-sdk': specifier: workspace:* version: link:../../packages/plugin-sdk @@ -1494,8 +1551,8 @@ importers: specifier: 2.0.3 version: 2.0.3(supports-color@10.2.2) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 yaml: specifier: 2.9.0 version: 2.9.0 @@ -1593,8 +1650,8 @@ importers: specifier: 5.2.1 version: 5.2.1(supports-color@10.2.2) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1691,8 +1748,8 @@ importers: extensions/ollama: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -1798,8 +1855,8 @@ importers: extensions/qa-channel: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -1814,8 +1871,8 @@ importers: extensions/qa-lab: dependencies: '@copilotkit/aimock': - specifier: 1.39.0 - version: 1.39.0(vitest@5.0.0) + specifier: 1.40.0 + version: 1.40.0(vitest@5.0.0) '@modelcontextprotocol/sdk': specifier: 1.30.0 version: 1.30.0(supports-color@10.2.2)(zod@4.5.4) @@ -1861,7 +1918,7 @@ importers: version: link:../.. vite: specifier: 8.2.2 - version: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) + version: 8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) extensions/qianfan: devDependencies: @@ -1971,8 +2028,8 @@ importers: specifier: 1.6.0 version: 1.6.0 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 undici: specifier: 7.29.1 version: 7.29.1 @@ -2022,8 +2079,8 @@ importers: extensions/tavily: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -2045,8 +2102,8 @@ importers: extensions/teams-meetings: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -2070,8 +2127,8 @@ importers: specifier: 1.46.0 version: 1.46.0(supports-color@10.2.2) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 undici: specifier: 8.10.2 version: 8.10.2 @@ -2092,11 +2149,11 @@ importers: extensions/tlon: dependencies: '@aws-sdk/client-s3': - specifier: 3.1127.0 - version: 3.1127.0 + specifier: 3.1128.0 + version: 3.1128.0 '@aws-sdk/s3-request-presigner': - specifier: 3.1127.0 - version: 3.1127.0 + specifier: 3.1128.0 + version: 3.1128.0 '@tloncorp/tlon-skill': specifier: 0.5.0 version: 0.5.0 @@ -2179,8 +2236,8 @@ importers: extensions/visitor-access: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -2198,8 +2255,8 @@ importers: extensions/voice-call: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 ws: specifier: 8.21.3 version: 8.21.3 @@ -2264,8 +2321,8 @@ importers: specifier: 7.0.0-rc14 version: 7.0.0-rc14(audio-decode@2.2.3)(supports-color@10.2.2) typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -2286,8 +2343,8 @@ importers: specifier: 3.3.3 version: 3.3.3 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zod: specifier: 4.5.4 version: 4.5.4 @@ -2308,8 +2365,8 @@ importers: extensions/xai: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 ws: specifier: 8.21.3 version: 8.21.3 @@ -2346,8 +2403,8 @@ importers: extensions/zalouser: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 zca-js: specifier: 2.1.2 version: 2.1.2 @@ -2365,8 +2422,8 @@ importers: extensions/zoom-meetings: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/plugin-sdk': specifier: workspace:* @@ -2393,8 +2450,8 @@ importers: specifier: workspace:* version: link:../normalization-core typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 packages/ai: dependencies: @@ -2406,16 +2463,16 @@ importers: version: 2.21.0(@modelcontextprotocol/sdk@1.30.0(supports-color@10.2.2)(zod@4.5.4))(supports-color@10.2.2) '@mistralai/mistralai': specifier: 2.6.4 - version: 2.6.4(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)) + version: 2.6.4(@opentelemetry/api@1.9.1) openai: - specifier: 7.10.0 - version: 7.10.0(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4) + specifier: 7.12.1 + version: 7.12.1(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4) partial-json: specifier: 0.1.7 version: 0.1.7 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/model-catalog-core': specifier: workspace:* @@ -2443,8 +2500,8 @@ importers: packages/gateway-protocol: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 devDependencies: '@openclaw/normalization-core': specifier: workspace:* @@ -2453,8 +2510,8 @@ importers: packages/llm-core: dependencies: typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 packages/markdown-core: dependencies: @@ -2519,15 +2576,15 @@ importers: specifier: workspace:* version: link:../normalization-core dompurify: - specifier: 3.4.14 - version: 3.4.14 + specifier: 3.4.15 + version: 3.4.15 mermaid: specifier: 11.17.2 version: 11.17.2 devDependencies: vite: specifier: 8.2.2 - version: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) + version: 8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) packages/model-catalog-core: dependencies: @@ -2553,8 +2610,8 @@ importers: specifier: 1.13.12 version: 1.13.12 typebox: - specifier: 1.3.27 - version: 1.3.27 + specifier: 1.3.30 + version: 1.3.30 packages/plugin-package-contract: {} @@ -2583,8 +2640,8 @@ importers: packages/terminal-core: dependencies: '@clack/prompts': - specifier: 1.7.0 - version: 1.7.0 + specifier: 1.8.0 + version: 1.8.0 '@openclaw/normalization-core': specifier: workspace:* version: link:../normalization-core @@ -2607,7 +2664,7 @@ importers: dependencies: '@awesome.me/webawesome': specifier: 3.12.0 - version: 3.12.0(patch_hash=a366a1422e3d8f0b9699205e969a73294877cbff761550bb360380e3ab9428f1)(@floating-ui/utils@0.2.12)(@types/node@26.4.1)(@types/react@19.2.18) + version: 3.12.0(patch_hash=a366a1422e3d8f0b9699205e969a73294877cbff761550bb360380e3ab9428f1)(@floating-ui/utils@0.2.12)(@types/node@26.5.0)(@types/react@19.2.18) '@codemirror/commands': specifier: 6.11.0 version: 6.11.0 @@ -2632,12 +2689,15 @@ importers: '@lit/task': specifier: 1.0.3 version: 1.0.3 + '@modelcontextprotocol/client': + specifier: 2.0.0 + version: 2.0.0 + '@modelcontextprotocol/core': + specifier: 2.0.0 + version: 2.0.0 '@modelcontextprotocol/ext-apps': - specifier: 1.7.5 - version: 1.7.5(@modelcontextprotocol/sdk@1.30.0(supports-color@10.2.2)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4) - '@modelcontextprotocol/sdk': - specifier: 1.30.0 - version: 1.30.0(supports-color@10.2.2)(zod@4.5.4) + specifier: 2.0.0 + version: 2.0.0(@modelcontextprotocol/client@2.0.0)(@modelcontextprotocol/core@2.0.0)(zod@4.5.4) '@noble/ed25519': specifier: 3.2.0 version: 3.2.0 @@ -2654,8 +2714,8 @@ importers: specifier: workspace:* version: link:../packages/gateway-protocol '@openclaw/libterminal': - specifier: 0.3.3 - version: 0.3.3 + specifier: 0.3.5 + version: 0.3.5 '@openclaw/media-core': specifier: workspace:* version: link:../packages/media-core @@ -2684,17 +2744,17 @@ importers: specifier: 4.6.2 version: 4.6.2 '@tanstack/lit-virtual': - specifier: 3.13.37 - version: 3.13.37(lit@3.3.3) + specifier: 3.14.0 + version: 3.14.0(lit@3.3.3) '@tanstack/virtual-core': - specifier: 3.17.8 - version: 3.17.8 + specifier: 3.17.9 + version: 3.17.9 diff: specifier: 9.0.0 version: 9.0.0 dompurify: - specifier: 3.4.14 - version: 3.4.14 + specifier: 3.4.15 + version: 3.4.15 ghostty-web: specifier: 0.4.0 version: 0.4.0 @@ -2714,8 +2774,8 @@ importers: specifier: 3.0.0 version: 3.0.0(@types/markdown-it@14.2.0)(markdown-it@15.0.2) markdown-it-emoji: - specifier: 3.0.0 - version: 3.0.0 + specifier: 3.1.0 + version: 3.1.0 markdown-it-task-lists: specifier: 2.1.1 version: 2.1.1 @@ -2731,10 +2791,10 @@ importers: version: 14.2.0 '@vitest/browser': specifier: 5.0.0 - version: 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) + version: 5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) '@vitest/browser-playwright': specifier: 5.0.0 - version: 5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) + version: 5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) fake-indexeddb: specifier: 6.2.5 version: 6.2.5 @@ -2755,10 +2815,10 @@ importers: version: 8.5.28 vite: specifier: 8.2.2 - version: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) + version: 8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) vitest: specifier: 5.0.0 - version: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + version: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) packages: @@ -2787,8 +2847,8 @@ packages: peerDependencies: zod: ^3.25.0 || ^4.0.0 - '@antfu/install-pkg@1.1.0': - resolution: {integrity: sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==} + '@antfu/install-pkg@2.0.1': + resolution: {integrity: sha512-iCKVQcIC0e3oDxEfs3SHQGW+ovhBMZmS1TE+bTk50rVyMCBmCfClv7Qi3HQKlumYwvjb/iIMeWCW2i67q6kFfQ==} '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.257': resolution: {integrity: sha512-ITjFPYB8riu9tbxbrWArokiZ/90w/NDrYbtEvyr3ScilVtu1iupkComxkhvbUxoyT4JRDpKsdw/ZOfwSl/pkpA==} @@ -2870,16 +2930,16 @@ packages: resolution: {integrity: sha512-Dtu0gr4dnATZAPwEYbpCsG+MpLM7OAliy2gTepEFQwl1vZ6DL3QMH2FveMa3HLvPsOdhJsPRB3KtxVhph9T75A==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-bedrock-runtime@3.1127.0': - resolution: {integrity: sha512-IDl/lrPb90aH+pZFHGNDmgH9nAUQj5PlZH1sJ3w7RikctyjHSnY3oNjZhrLoaBoQn/rNK0zsP6OHEqEhj2tdLA==} + '@aws-sdk/client-bedrock-runtime@3.1128.0': + resolution: {integrity: sha512-NAO5vPNhrrog4GuHaHaBruIetrnZZmYG3e4In2u05tgAZeVcHlgfZsaPhrNCOPuTATwGCiHPPPL3GkC6zHJuCA==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-bedrock@3.1127.0': - resolution: {integrity: sha512-/26o4KbAYnWiCIu2k9SAXsragT5RuYg4lJKkgLnQ0CMEwRSiloe/Smh8ZfWnGidhGoW1jX0IqPEMrB0+BC78GQ==} + '@aws-sdk/client-bedrock@3.1128.0': + resolution: {integrity: sha512-rakouwzgMzduUgu3yZ6LeO/aXOke2ATaQBuEEsM62ksRfXSBF0qnPIqaYcjQ/yrJJdq8BpZmJTzxKqw0723pIA==} engines: {node: '>=20.0.0'} - '@aws-sdk/client-s3@3.1127.0': - resolution: {integrity: sha512-0ZSAgmEda33xPqVPt+bx2KzrXV1cUCKRRVPGliLu+V7DzHPa04CqPSi1maGEM4O0LDP0iI6HRSW5ULloNwayNw==} + '@aws-sdk/client-s3@3.1128.0': + resolution: {integrity: sha512-tYEB4058LdhTiSS7sCVVSpqSAdjIc1jTaf1dDPoIRJbR/XI5A2ZOuCiV1Aebo/pria/pUJBOT0WjdZVIwaZtDA==} engines: {node: '>=20.0.0'} '@aws-sdk/core@3.977.9': @@ -2922,8 +2982,8 @@ packages: resolution: {integrity: sha512-d3AGyVu759PGr35mEB2s22xxlNEA5rpdxtSPJthfPFJvoQ8dt357iVPECqWfUxXp1toJAvKmbtcIYVGigaGsCA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-providers@3.1117.0': - resolution: {integrity: sha512-ronfFql+JiuS43r05PqmI7bb/qz3S/E1/1HszvLkCOxemPSaJsrHNRAisw3Mf0+v4XEP73vIZ9cRQOyRlChOXQ==} + '@aws-sdk/credential-providers@3.1128.0': + resolution: {integrity: sha512-yKAD0B1YcucqTPSJKWU1QH/MSk8NZAheqCoqmVetC1rlX9IYG10Vzb6pStkRNEDjpoOeQ97W3W/DAT1o12TtuQ==} engines: {node: '>=20.0.0'} '@aws-sdk/eventstream-handler-node@3.972.34': @@ -2946,8 +3006,8 @@ packages: resolution: {integrity: sha512-NhEgryjlBF9w38ZXqGymQV28IhkYa1mKhlbYnqIis57AYwWGVYfUPgg/qC2rLRqOUfblxx++irvju10kVTa8Vw==} engines: {node: '>=20.0.0'} - '@aws-sdk/s3-request-presigner@3.1127.0': - resolution: {integrity: sha512-vl3WBaE2fMqfnEhyqulKT6ZIPNsCR2caCps92tyt1yGfLVlDXScSXBDXf4m3E2ejXBb4pplX0EdwBukJyBXtBg==} + '@aws-sdk/s3-request-presigner@3.1128.0': + resolution: {integrity: sha512-0wTgUw97lUKx94e4liC53V5z9giwqMaPsFjbXXy8qLC9Q/AaxUySmri+NFkHaOAd908sGsZ6ERMyFO4WMvYxLQ==} engines: {node: '>=20.0.0'} '@aws-sdk/signature-v4-multi-region@3.996.46': @@ -2958,8 +3018,8 @@ packages: resolution: {integrity: sha512-ygIivKqh8aHzNkucOCXHyIBgBpLPfrSI0mCqXF+vLBsPTUKqj0VSqAY0GFPe7lQl4HntjOcQ+KSyS7oUV2C54Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1127.0': - resolution: {integrity: sha512-Dv2TMWBshJ+tF6ahs2Sy5bh4Iabsd4GAQqVvE9XZmYmnoaVbpS2QKIKE/HRacc7bTtbjEEvP+laGzHvHlf1CiQ==} + '@aws-sdk/token-providers@3.1128.0': + resolution: {integrity: sha512-PNEgPb8E9HBjb8nC/sVuX6+Jx4J3/yBnq1HZD6GJcO4xHfpq+zthAzdnge1SOLKkDwR4gjmduQknCHGMrOnKDA==} engines: {node: '>=20.0.0'} '@aws-sdk/types@3.974.5': @@ -2990,8 +3050,8 @@ packages: resolution: {integrity: sha512-IUZydyTUkDnYdstOW9pFOOUQlBjAepK5teihDE3x6yxsPJs/hsAaaYpeGxdxrgtOiJbBKSjKW7MDk7AEhb4LRg==} engines: {node: '>=22.0.0'} - '@azure/core-client@1.11.0': - resolution: {integrity: sha512-JjQWO6akOck45PH/XBrxzsQGAiKrfFl4m5iggJ0ItMIz5omRufOXWpqCPpdjKN3vKDzlSUvFjaMb7Zwf0gvAdA==} + '@azure/core-client@1.11.1': + resolution: {integrity: sha512-2QygG2F76ZpMP2eMztiJvAiFMu71M9rDeU7vO/QKg5Css7MgM4frUOslFjhVjRhbGaCNPtz/S8M6y46/fFKVuQ==} engines: {node: '>=22.0.0'} '@azure/core-process@1.0.0': @@ -3018,14 +3078,18 @@ packages: resolution: {integrity: sha512-rbAE25KUfjU/s3XHUdJgceoCP5dEOpMx85J04kF+QMdta73XkuG9JGHHinch+XIoKpBdqljin+KqURpJriSzLA==} engines: {node: '>=22.0.0'} - '@azure/msal-browser@5.19.0': - resolution: {integrity: sha512-DHe9iRcyByGJuLPkl0K31a1JjOdRY2zX38Q07mQpSbR8zOj1EIgsWfTXhSQVyyijUxlcofVy/br7qWJbrMwVXQ==} + '@azure/msal-browser@5.21.0': + resolution: {integrity: sha512-80OcuXDErmcEDAIH9pBtSqBsed2sPT/IWmbG3xHLoPMl5zc8TINd6SlJAbVSmN5huGa3xGAg5qR7VnpaIEK0Zw==} engines: {node: '>=0.8.0'} '@azure/msal-common@16.13.0': resolution: {integrity: sha512-rOAy0KUcyBbdwVJ+f3uPpthXatFLLZN+/KWAsTLzk1aB23Xl9DRmmXYwSvBFOZyXj4jUQQ5FKxxRkhAFW1fOow==} engines: {node: '>=0.8.0'} + '@azure/msal-common@16.14.0': + resolution: {integrity: sha512-A4rb55hI86Q9tBl/+jBj7TMz7iX2RFgQs/nExFzcAtoI/BFRVdaH5SL/MivrYD7qvweMpN8AgVvVMHV8UBYxew==} + engines: {node: '>=0.8.0'} + '@azure/msal-node@5.6.0': resolution: {integrity: sha512-uFY9NxrWHw8PwZx7gAX6PDn+9vdfS05+levc/kwkx77IkjfaldnQbbcQzzDIZ5Hq5Zdr6/z92oAIoRWKp6MnOA==} engines: {node: '>=20'} @@ -3104,16 +3168,16 @@ packages: '@chevrotain/types@11.1.2': resolution: {integrity: sha512-U+HFai5+zmJCkK86QsaJtoITlboZHBqrVketcO2ROv865xfCMSFpELQoz1GkX5GzME8pTa+3kbKrZHQtI0gdbw==} - '@clack/core@1.4.3': - resolution: {integrity: sha512-/kr3UWNtdJfxZtPgDqUOmG2pvwlmcLGheex5yiZKdwbzZJxhV+HMNR9QNmyY5cGwTNV6LrR7Jtp+KjhUAP1qBQ==} + '@clack/core@1.5.0': + resolution: {integrity: sha512-zNikCcd8BbcEvzzG1sbXFrRHFk5kHPrpwZwksPvf9qyQO1Teb7JaXaOAxXZei9nZLDW0gaZawiuTCji88bTBhw==} engines: {node: '>= 20.12.0'} - '@clack/prompts@1.7.0': - resolution: {integrity: sha512-y7/yvZ2TPAnR9+jnc00klvNNLkJiXFFrQA/hlLCcxA9a2A4zQIOimyFQ9XfwYKiGD1fb5GY8vbKIIgO8d5Tb2A==} + '@clack/prompts@1.8.0': + resolution: {integrity: sha512-PXzLZ8N34rxmuo4dJg3xtOXhcBse94qGjDqsteoEYrFrrZ5FSjIGwMAuOcv64ln8rHVBBD06XeVGr+/JX+plcA==} engines: {node: '>= 20.12.0'} - '@clawdbot/lobster@2026.6.11': - resolution: {integrity: sha512-zeNyXvDqYajDHxFlMy7wn6TfBUsMOIJgiw0lDn+ltGiQUH/F3w+8SWHCOyMNmzoZfXSQw9uJK44SVCzEkxXsUw==} + '@clawdbot/lobster@2026.9.8': + resolution: {integrity: sha512-+R5KBiox7q4e1xVHF5Pmoj4nZCvLAorjMy6bsQa7lCji6iknyiNnTY83j8RUxBvwNIX/4wqiiICFX1jlZusIpg==} engines: {node: '>=22'} hasBin: true @@ -3192,8 +3256,8 @@ packages: '@codemirror/language@6.12.4': resolution: {integrity: sha512-1q4PaT+o6PbgpkJt4Q8Fv5XJxTy4FUZ4MWETtyiDw3J0Pyr9E2vqcKL+k9wcvjNTIsauxvE7OfmWj3FRPHQ76A==} - '@codemirror/legacy-modes@6.5.3': - resolution: {integrity: sha512-xCsmIzH78MyWkib9jlPaaun57XNkfbMIhagfaZVd0iLTqlpw3jXaIcbZm72MTmmn64eTZpBVNjbyYh+QXnxRsg==} + '@codemirror/legacy-modes@6.5.4': + resolution: {integrity: sha512-/cZr6qZyl08iYNLGsJ862CXXNI51LryRFRE40ejgoIjXZz0C1rGkD3/Ek5jM/8w1ceRjqtt4qx/KLMh4zBTgew==} '@codemirror/lint@6.9.7': resolution: {integrity: sha512-28/+iWLYxKxsvGYhSYL7zaCZqLz5+FFFDq9tVsvGv9kv8RY4fFAchJ5WX9M3YrrRlTIsECjsXPqeNgnSmNP2dg==} @@ -3204,8 +3268,8 @@ packages: '@codemirror/view@6.43.11': resolution: {integrity: sha512-2+esucbQX6wB2JYi1eDvdCPFTA31BN8oSy6xCmk3G6CloV11yOvEjYk+gH7kLrP0MuHG94E8WDhjs5oMiu3+Wg==} - '@copilotkit/aimock@1.39.0': - resolution: {integrity: sha512-AWw4vmW2hBchHoggh0G4McWGmGZD6wtXAehL6K5ncWF5lVIjlv++bPmxmRwrpQCi/K4/xK10N9Zp9srJYipEJw==} + '@copilotkit/aimock@1.40.0': + resolution: {integrity: sha512-r9l28T83aVfLf+uRouuI4bAjLan4jOWVyY9PVllwfdcOQpIsCvzFG55dFajlUSTbgNN2vk6HY9aKAZ/xiooBxA==} engines: {node: '>=20.15.0'} hasBin: true peerDependencies: @@ -3228,8 +3292,8 @@ packages: '@csstools/css-parser-algorithms': ^4.0.0 '@csstools/css-tokenizer': ^4.0.0 - '@csstools/css-color-parser@4.2.0': - resolution: {integrity: sha512-5+5LEmFuY1AjXdYhmgjTJogtQnP1evJ1zrBZGUNZ0thkpwnnmKxcHdAMn/OtFjAb25zA+jKDVYVRl+5G7rjv1A==} + '@csstools/css-color-parser@4.2.2': + resolution: {integrity: sha512-3QKjR/vxyjcSXBLgb6lP0S3MGdvwbmqSsvLPbYdVORqPDc8FX1HAJ0Spk38bxaRXgvENTA47tlhhbb5Z2e8hEg==} engines: {node: '>=20.19.0'} peerDependencies: '@csstools/css-parser-algorithms': ^4.0.0 @@ -3638,8 +3702,8 @@ packages: '@iconify/types@2.0.0': resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} - '@iconify/utils@3.1.4': - resolution: {integrity: sha512-b1S7B1k9ohZ+iNTi2ATxbRYG9fTrJmUT0rc46bvVnNxqNRGW7dyo/vRREwyniI5IRN2RSJHDcm+s3BjWrSAjHw==} + '@iconify/utils@3.1.7': + resolution: {integrity: sha512-JZHlwdID+dy+lTgbYC8NEC4zeugqeYsc6jewvzb4c58kHauJn+X7rNwQjxz5p2qSjqaEeQoLkCIQ9v/H4PK0/w==} '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} @@ -3652,8 +3716,8 @@ packages: resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} engines: {node: '>=6.0.0'} - '@jridgewell/sourcemap-codec@1.5.5': - resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + '@jridgewell/sourcemap-codec@1.6.0': + resolution: {integrity: sha512-T7jf+5zgsZHwNJ4lvQ7/aezbyk0nNX+zJVWpmHA7VYsEx7a7qr5Rg5IbtJFqkgze5Y2sruq1RUY8Q837Od7iFw==} '@jridgewell/trace-mapping@0.3.31': resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} @@ -3845,8 +3909,8 @@ packages: '@lezer/html@1.3.13': resolution: {integrity: sha512-oI7n6NJml729m7pjm9lvLvmXbdoMoi2f+1pwSDJkl9d68zGr7a9Btz8NdHTGQZtW2DA25ybeuv/SyDb9D5tseg==} - '@lezer/java@1.1.3': - resolution: {integrity: sha512-yHquUfujwg6Yu4Fd1GNHCvidIvJwi/1Xu2DaKl/pfWIA2c1oXkVvawH3NyXhCaFx4OdlYBVX5wvz2f7Aoa/4Xw==} + '@lezer/java@1.1.4': + resolution: {integrity: sha512-gQylJ2xHV2xXsVqtnAcJrcROvLZJaQiC0tR//+q0k961BxqvyYttusPkJ8d9T1fPDJKHJW2etUH8XbIn9jhVUg==} '@lezer/javascript@1.5.4': resolution: {integrity: sha512-vvYx3MhWqeZtGPwDStM2dwgljd5smolYD2lR2UyFcHfxbBQebqx8yjmFmxtJ/E6nN6u1D9srOiVWm3Rb4tmcUA==} @@ -3860,8 +3924,8 @@ packages: '@lezer/markdown@1.7.2': resolution: {integrity: sha512-iTkYvoVcKt3WkeL7qUDyXHONZEwLio4wj8KTNi2dnjQEXBZKMV63BpQrPqfsM+OkvuRbiSTAcycYAsQzLhRNoQ==} - '@lezer/php@1.0.5': - resolution: {integrity: sha512-W7asp9DhM6q0W6DYNwIkLSKOvxlXRrif+UXBMxzsJUuqmhE7oVU+gS3THO4S/Puh7Xzgm858UNaFi6dxTP8dJA==} + '@lezer/php@1.0.6': + resolution: {integrity: sha512-QJ2xNXPmsm/Z3IpThq8fnJrEIVpxhsIoj6GZBW0JYEd/l9zxpJZW216X4fzqQY4vgpdGIumypvI4uQjd4tnYtw==} '@lezer/python@1.1.19': resolution: {integrity: sha512-MhQIURHRytsNzP/YXnqpYKW6la6voAH3kyplTOOiCdjyFY6cWWGFVmYVdHIPrElqSDf4iCDktQCockB9FxuhzQ==} @@ -4005,15 +4069,27 @@ packages: '@opentelemetry/sdk-trace-base': optional: true - '@modelcontextprotocol/ext-apps@1.7.5': - resolution: {integrity: sha512-TjPH2S2y5UEGKhmI6+XGFuqfqOV4ppe1x6DA3txnUaEWkgtA4G5vo14jGKFZmegdkZ1H4QMLyujLvoU1BEdnAg==} + '@modelcontextprotocol/client@2.0.0': + resolution: {integrity: sha512-8f1OghQ2rjzIOfqgUCP+8GiUWqRs89njoWLNqAe8kWmDePv3s1fZXseej+QXemssEuuOvLLmLO/kqM3IQHtISw==} + engines: {node: '>=20'} + + '@modelcontextprotocol/core@2.0.0': + resolution: {integrity: sha512-pJCEwGG7Lfr/+PQp9ZTwKXNeO5wzbfKL7H3MYpCorM4oFBoQrdjnBgEoqG+RjhsvS1FKrDbKux+M1HhlnGWqcA==} + engines: {node: '>=20'} + + '@modelcontextprotocol/ext-apps@2.0.0': + resolution: {integrity: sha512-a6tXzFcIbIIdnqumQ7W8Oxd8W/KAPkAKYpoxpD9nDgxZ24ywgxG5pK/8G9W5pOFUygS7gWHQhPv8cwRB44/8yg==} engines: {node: '>=20'} peerDependencies: - '@modelcontextprotocol/sdk': ^1.29.0 + '@modelcontextprotocol/client': ^2.0.0 + '@modelcontextprotocol/core': ^2.0.0 + '@modelcontextprotocol/server': ^2.0.0 react: ^17.0.0 || ^18.0.0 || ^19.0.0 react-dom: ^17.0.0 || ^18.0.0 || ^19.0.0 - zod: ^3.25.0 || ^4.0.0 + zod: ^4.2.0 peerDependenciesMeta: + '@modelcontextprotocol/server': + optional: true react: optional: true react-dom: @@ -4071,10 +4147,6 @@ packages: resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} engines: {node: '>= 20.19.0'} - '@noble/hashes@2.3.0': - resolution: {integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==} - engines: {node: '>= 20.19.0'} - '@noble/hashes@2.4.0': resolution: {integrity: sha512-X5XaVWZIBCT7HHZGm5I7ZQXDwLG+bGXuSrMQAW+7Zvl87h1kmc1ZB1VSRJcpUfoUrGQp4Fkoxm5kZ+Ms+aW+eA==} engines: {node: '>= 20.19.0'} @@ -4209,8 +4281,8 @@ packages: resolution: {integrity: sha512-Dwu2BZL6+n9pTeSLwijjL+dUBN0ktOjyucZPDjwSpuIkiPx9aussFWdyiWUD9UvNu3gwfLRAcktz1HfYT8QW1w==} engines: {node: '>=22'} - '@openclaw/libterminal@0.3.3': - resolution: {integrity: sha512-LbjmH51H2tYYgaMzRnEeYJyihd/m3vCmIv2vIY6Q6xMgM3L0I7kTMkxWlqwk2afgD6AufDe4SCbCNUSGWlWK5g==} + '@openclaw/libterminal@0.3.5': + resolution: {integrity: sha512-s0A8wbLCj1+zXMU5qk0BK6coy9xWUAxPKP/BQ48Bgs5qzOmEpzGn/Wpm+cArTY9Z5GokwnjjrBdKP2mM2FB+NQ==} engines: {node: ^22.18.0 || >=24.11.0} peerDependencies: node-pty: '>=1.0.0' @@ -4356,12 +4428,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/resources@2.10.0': - resolution: {integrity: sha512-q6MMm2zhggzsHVNbabYwut+a6nbuQQe3URUoxaojM/8K1IBfwwPzvxIjNi2/lI1TFe+fMHMW9MWhrtDLEXEnkA==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/resources@2.11.0': resolution: {integrity: sha512-Ie7+8q8MDF4FAEQCKVMTx3ReUvxiIAgIiiW3c9JdmP8+HMcDy20puT+AHjexnExgnbvBxjQ9fjkFDWrikJ2jQA==} engines: {node: ^18.19.0 || >=20.6.0} @@ -4386,12 +4452,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.10.0': - resolution: {integrity: sha512-GuYQQT7QD2EeO8lcZLRQzcbOyhqAzL+6WWTKTU9mSUBYBazkEDl+VrQcXQhbB08OWM9anD1aHleVadzulpOaUQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace-base@2.11.0': resolution: {integrity: sha512-H19x/TX/LZdqiYOjM7fqtSxwlplC5pgelavqbQdHbhdq0q/AI/TGkM2dfGuuynTXmJPeF2HoZVoPDu+TGoW78A==} engines: {node: ^18.19.0 || >=20.6.0} @@ -4404,12 +4464,6 @@ packages: peerDependencies: '@opentelemetry/api': '>=1.0.0 <1.10.0' - '@opentelemetry/sdk-trace@2.10.0': - resolution: {integrity: sha512-MfQGq3GRmTh5fM/y+OjaO0vj6+luCB1XO2gfXCalKCfgKw0eHL++sm75DNweC6ohlp+aFvACqeE0fYayqdRaoQ==} - engines: {node: ^18.19.0 || >=20.6.0} - peerDependencies: - '@opentelemetry/api': '>=1.3.0 <1.10.0' - '@opentelemetry/sdk-trace@2.11.0': resolution: {integrity: sha512-fFnTqGm8/G73GQVnxYi7LXa1ZVYEUvgL6XI1LpvV0bPC7WQ/ZGgKxCSl8FnlZBKto9JHHEFTO6s6CUpvvtwFrA==} engines: {node: ^18.19.0 || >=20.6.0} @@ -4420,130 +4474,127 @@ packages: resolution: {integrity: sha512-eSYWTm620tTk45EKSedaUL8MFYI8hW164hIXsgIHyxu3VobUB3fFCu5t0hQby6OoWRPsG1KkKUG2M5UadiLiVg==} engines: {node: '>=14'} - '@oxc-project/types@0.146.0': - resolution: {integrity: sha512-XC0QsnnhVe7sLIWmYmdPw7x5P0h4W8vUU3Nv1ySgWXtvCz8NizoAEpGXA0sOYoJQV2Rl13LgURAHQ5cI5ILCSA==} - '@oxc-project/types@0.148.0': resolution: {integrity: sha512-Nm4s/jB+4FpFsPhWGEC4h7rzksesmtnMXomo6rCMcg/b8zLQuOziRgkCS1fxDCXOlJB/6Q8oABOZ/OP6RIPj9A==} - '@oxfmt/binding-android-arm-eabi@0.66.0': - resolution: {integrity: sha512-2Me9eoptv6ERdEuI2P8AOlYdHHraXebJaM6SC0kc2Dfb+mLrep2db+fedBPKaYn673h/vBgvP4tkOdAbaudX6w==} + '@oxfmt/binding-android-arm-eabi@0.67.0': + resolution: {integrity: sha512-2olh3ioEmc4gRzQm7jxyB1b/PFBoFvTq8KdgYySeNpysDtA6DEg2Mvya4/I6flhL7G0eOrE8RD7JCNCIMhE16Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxfmt/binding-android-arm64@0.66.0': - resolution: {integrity: sha512-u7O+bSSF0HGsDKkQQxBqvLGVepu93RA+JKu+ONqvfh4sCnCEbj31wZj4iG5gk3XfRwrmYj0/8catkO2LcblQKQ==} + '@oxfmt/binding-android-arm64@0.67.0': + resolution: {integrity: sha512-ulfw8EHN1MBq/MFFDXw2/M1VAFu5mRUcnuZ8Hqbv9viAnFzO9t1jKSAsDqKYYDGMlytF/uj6Z5z5n/tHupnKhw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxfmt/binding-darwin-arm64@0.66.0': - resolution: {integrity: sha512-/ikyMIVjX/sdo7KtjxoEsSUosfPzveVhT9RWMx9yGqFDKFJ89JAEKuEeLBmurDjrkb4w8tOnAdSO3SBaplY3bw==} + '@oxfmt/binding-darwin-arm64@0.67.0': + resolution: {integrity: sha512-MfONZx/O2o9M5v2jDFol556G9+A+P9xCuJ4DZ+qhE+RnaCdoscy6Eu5nq1dbuNxhwdJyZ6kLI7fnG9mwEeOeGg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxfmt/binding-darwin-x64@0.66.0': - resolution: {integrity: sha512-q5xUsKeFqawa9NXa6ZGXWimFV19m8MogKPdTaSVDAAk2EQKBmBZRDeluwcl1p8ty/OFc9s9888OKEh3xfPVH0g==} + '@oxfmt/binding-darwin-x64@0.67.0': + resolution: {integrity: sha512-CYnIx5LvFVJnyJcCqwH2jxMKjFjqo5678MPjdmNFoSGMhlOvZ/xRZqvhDcolKrXc8fezW3AKh+C4wyoFuWOSSg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxfmt/binding-freebsd-x64@0.66.0': - resolution: {integrity: sha512-CR+x4VzMY0pRXLK/xFQ/RzsSFkP5t2Z2mef0QY6OP/rTRcMUoMLCOM62/3Fp/t0K+UDoBKxvMyeb6D0zPMjleA==} + '@oxfmt/binding-freebsd-x64@0.67.0': + resolution: {integrity: sha512-7/iF1orvIS9mxhKUqnmtMgm+OrSQ5acPwuvdQrm6ECgqbwPmC+Pw9cdke3sNfVN6pT2hbJ58+jP8BCThl5HXOg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxfmt/binding-linux-arm-gnueabihf@0.66.0': - resolution: {integrity: sha512-ZEYmO/LbH9tTQCADILHGZE4GeOXOAj2VzedHkASNwjmwlwtutJCLpCJbIs37wRGTFgWRoEcD72jpMX+IBJUGjQ==} + '@oxfmt/binding-linux-arm-gnueabihf@0.67.0': + resolution: {integrity: sha512-yy+OGys07IZOpOmYPZoObKyUQLkfxeQqeCypk+1jaZd8HGo77hzvU1Jg8X3+W75o+9lszOjBfg0nkGtlwYywXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm-musleabihf@0.66.0': - resolution: {integrity: sha512-hNtR9/oU0CeTkq7JnRkmBQwqe17v2ZaAMLC4VcN7IIOWeRyWDk0knSPWS9iiLmtbZ2RRBBtsG01jQgkZmKCJeQ==} + '@oxfmt/binding-linux-arm-musleabihf@0.67.0': + resolution: {integrity: sha512-wPIeeigXgJpwNw3wydYRt3U9iN9Y/ejpOZuYL9IA7igxWs7LIQMOkhKxTumRvy6dIv0iXKk3RTw3Vmjg0i+2sg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxfmt/binding-linux-arm64-gnu@0.66.0': - resolution: {integrity: sha512-uwOVQ8i6I1LT/+eDzfsgrrcZp8Fn6NPVUPn8fF5gdFGekFf0PddF+LEuwsD0/pbNUcKZhDj2rQ5UpITh9gF4iQ==} + '@oxfmt/binding-linux-arm64-gnu@0.67.0': + resolution: {integrity: sha512-0+XNxcdbkTfxdcD4qW6Ci9n+mBNJ8xTBumnxKvKBmRFOdx0Wf8/KiHjCJayooXmYkqRpRVd98Q5egvzx5BLSgQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-arm64-musl@0.66.0': - resolution: {integrity: sha512-tTkF2Dmx4nGAjmBlZb+UtTGqR/EK4ZrW9qBfzte07a9XWqzoGGKzpFFlyNDhQe+Uwql94+ReCTeNbhOXscw1Dg==} + '@oxfmt/binding-linux-arm64-musl@0.67.0': + resolution: {integrity: sha512-I75LKPJyNOYUzkqAiAMIE31+Ye7xtQXZdoty1IXn4B+bw5Zpmez5wfG19ejGpNnS/BzQ7LFS+7jxuTPb+vHiZw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-ppc64-gnu@0.66.0': - resolution: {integrity: sha512-F3cKHUav4yXOHn6GFnwpBhSYsJOYKKf9eqO/9jlEuqPxNw9zb98E9ZFct79gcg8pibUGkbveEu9WDlmXJpDzKw==} + '@oxfmt/binding-linux-ppc64-gnu@0.67.0': + resolution: {integrity: sha512-c2M5iRpe1QMZSRE/UvZoPdXBWb5Ic/ycvOyNiKCqPwQ/OyOKIMiJs02ynlNnjb7ZZJnRXYLmGcohoINOcwDK3w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-gnu@0.66.0': - resolution: {integrity: sha512-K5fDaNZfDyQMYA/3qL21bqyN0X9T15LLwwbFPt2aHc94+ZG7bh0vZEsy2y7NlRnjjHFSwN+Hzg6ldJtbOriH4Q==} + '@oxfmt/binding-linux-riscv64-gnu@0.67.0': + resolution: {integrity: sha512-dQzzYlV24Udhfm5ECuSdgqRvFJU/CGHzcYYEO3dLM6W6+CHiBFrq9OjIllkdCcPhsoSQ8o223Dja84MOSzed9A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-riscv64-musl@0.66.0': - resolution: {integrity: sha512-44Yc+I+qOmTElRcEhm5hUKIUJEQIOugymz4ua4tB0Wox7tGAfIbjzmXz/HDAtw1Ij6gmBwZlzh4hc9679RhWeA==} + '@oxfmt/binding-linux-riscv64-musl@0.67.0': + resolution: {integrity: sha512-rFNq1CgX4qMJANOq42LkAs90JE80GpiaEohAV2qn/gT2hGjQTW1zBO5zQBxArI4926pM1OSzo3CN0tBszGBIaA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxfmt/binding-linux-s390x-gnu@0.66.0': - resolution: {integrity: sha512-1e29Eg9hEj2kRBB19M0seIehPbbXHCk35GvImjDvb79rjjYjXCRmtbUNHJcgoktZAMIzXrTbxDBKmTc1V4bg3A==} + '@oxfmt/binding-linux-s390x-gnu@0.67.0': + resolution: {integrity: sha512-Sky6rEdz2o5IGq01lPhS12yEvDdChVEcaYrcLHkveh4Fx0qPjljE/Iul6SX/bRMl6lNc8J7J/mDQdzgBdA++Pg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-gnu@0.66.0': - resolution: {integrity: sha512-vODY1UQo10gngn0+D4xHKU84F1Twm1LqrzV4SqPXvmQKSd87paehvZ6jqA5wKs6XQrlWul9clYMDVHcoW9CPMA==} + '@oxfmt/binding-linux-x64-gnu@0.67.0': + resolution: {integrity: sha512-vPXmlNORV8AZq2Ocxh07pxwMjfENUWCV/eZArnao0qC3NO/hDeTVkQvee7SJJUbIiF5PZbBa4kYmaXnu7Rk58w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxfmt/binding-linux-x64-musl@0.66.0': - resolution: {integrity: sha512-YDzXx2JsT4+HL4MdkVrYjO55NS5lUKNm8rLC4ZPou8+seu0v0jhecSh+ufoO6+xEa8gccEezMlI2WHJi4ApUgw==} + '@oxfmt/binding-linux-x64-musl@0.67.0': + resolution: {integrity: sha512-x/WAtFqYtVr3vZ9ni8nr4kn9whSitg8fOljq/pZzBpxopRdY1BMLZCZkrbIbaBcYkm46qGbqVea2FCWmtQ2P9w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxfmt/binding-openharmony-arm64@0.66.0': - resolution: {integrity: sha512-mJjUYd8lj0+j4JkYyEM+5qKBf1Rnrpgjn/SVYKJhicVDqLz566ooa7Fs8zflPqt+dnZDV7X054rVIQX6ZcQNlQ==} + '@oxfmt/binding-openharmony-arm64@0.67.0': + resolution: {integrity: sha512-eRw9Neh4/aA6i+q/R3WU1gGQINhVM0J4fXIm6t27caOamkr/37uAkp1IdBx4zlJH97hmXR63z/q9n5c5dN7MzA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxfmt/binding-win32-arm64-msvc@0.66.0': - resolution: {integrity: sha512-soV+0vESv7e5ntCHWC61x4gg8OSak6IHHnWsZmHrJFlvMj2AK+kmldErCNkVkrvc1Ts2/++rJXn+IuAb2WMXhw==} + '@oxfmt/binding-win32-arm64-msvc@0.67.0': + resolution: {integrity: sha512-YIMvb+sGNYN2uc6+QK2HLPeEKM2vl7QZ5onQzpAJRb6pnf0DwUFP5R8tdS9R0l8hdUil2gu4Uxd0Yxrop0iT4w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxfmt/binding-win32-ia32-msvc@0.66.0': - resolution: {integrity: sha512-YCPi23uRIEYuIKTZohAkKbPFpujQ5QBuUM5iDv+UqbCmTPAkaFsxjsSuB8xlBpRT0G7eP/4HMF+cPDSqHtOD9A==} + '@oxfmt/binding-win32-ia32-msvc@0.67.0': + resolution: {integrity: sha512-LzmU9MyACPzwNDIK0ItMedHPz735Ug7ELWguxo4/kuy6zWuDoeglOAEFCY8jLg0PzRpFO3hDyLFe2Gu2eFDeGA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxfmt/binding-win32-x64-msvc@0.66.0': - resolution: {integrity: sha512-bwTQcv/JVRPkOqQtMF0X7vpvpncDQiBcXHxZ9S2hR12Hlo8bvBdUR5x5XnxzDZ3kM0qoZw1rv7KaD66Ly+pFWA==} + '@oxfmt/binding-win32-x64-msvc@0.67.0': + resolution: {integrity: sha512-sbQOIDNLUEeVZcAJcSL5VURn7kfjvilPviody4Yl5n8lQCDtUm+C9oHTTwZS/m4d/Z6Vv3jNEiAofH932NPPCg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4578,124 +4629,124 @@ packages: cpu: [x64] os: [win32] - '@oxlint/binding-android-arm-eabi@1.81.0': - resolution: {integrity: sha512-IcCRsXiedJoJopY6mpZUBEeVFsUrutmrG7dZ87zMuKJlhg70Ora9bBl1WcCxZQtyI10YpnVdEso5oCg7YcfSHw==} + '@oxlint/binding-android-arm-eabi@1.82.0': + resolution: {integrity: sha512-a3LB+C5Dsj5b/qtmG/mv5WrzuiXEpg1KF5nXWcEvaoN5TYAqkIvxPOwTPp3Jy/FoGpRo8zsTFhMElMXfeoOEzA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@oxlint/binding-android-arm64@1.81.0': - resolution: {integrity: sha512-GRrIPyTGVhx3L3h+0T5xT2A0jFAcdPv4+IfuXpGDLIdl6XeYhgg/zw72A5ILZoUgRqZuM8F1y+V/gfDriXSxzQ==} + '@oxlint/binding-android-arm64@1.82.0': + resolution: {integrity: sha512-OBlhRgNqFblGpGenno/aqOfJLOkQ2B8Ig3iDAalfn0H8hJGZKXPeexCRTDm6uwv6YUjSA9Xnwt1y/Bgj5ZH8uw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@oxlint/binding-darwin-arm64@1.81.0': - resolution: {integrity: sha512-qNQ9tXRgLuKbqSV1S2h9h4KPHjbovO7RRR2/enUOtHzTkFZ7B9X5zqqHJua8dRyc7dBy7Aoyq5pqTSLFVcAzGQ==} + '@oxlint/binding-darwin-arm64@1.82.0': + resolution: {integrity: sha512-dsopxqtY5ZdyT9uLHyGt1SyiLop6hi7hWI3PKpePodkRQOkLaCm+OE4fR9CAz9qdfjiFO8531tX/QDyP/psjFg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@oxlint/binding-darwin-x64@1.81.0': - resolution: {integrity: sha512-q0QTm32jWga2Gv4j7IaVZN0jYMi9UV73sWVgFtDA4iIfqwMCLLZ3ve+9KwfYtsaKZSgQhmPaogeZWqDZpcY1Pw==} + '@oxlint/binding-darwin-x64@1.82.0': + resolution: {integrity: sha512-94Lu0SgTClKColU66g1VDuigV3HkcbkJBnTtZjGYfE8UPugaWDgKrm2icjC6HJVUYler2OXaHP/X0TBy8+CowQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@oxlint/binding-freebsd-x64@1.81.0': - resolution: {integrity: sha512-/+8wVWDXEC7wHVAhOc59Fw/SkMc1arLkFD8iQCaSsmzenK1X4doFqquL9H1wrtGUzaiycVqkf/sSpcILK6W1UA==} + '@oxlint/binding-freebsd-x64@1.82.0': + resolution: {integrity: sha512-hne/V06ewhh1i0w8+l7GDNROAGCGPmyFuOwiP7YTRu0JycyStJ4785dmF8xU5p0uUwt2emvIF9vc7Xjis+cJ0g==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@oxlint/binding-linux-arm-gnueabihf@1.81.0': - resolution: {integrity: sha512-4xt422FEgioRq9hAL4Tq7fujGUWnc8z1BJ+Oi8RN8vB8axaP+sdK6a2xdlcQCCYnJg9QMuMFS0AucuIFx/EacA==} + '@oxlint/binding-linux-arm-gnueabihf@1.82.0': + resolution: {integrity: sha512-aWY2xtbZf1LneW9Qsv/n2Sp8gOu74JrlQzEtj4coHX2SHFrCfhmAumaU+sI/A5nr+yoTRTSmI/pL2s6ADlNSkw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm-musleabihf@1.81.0': - resolution: {integrity: sha512-u3vna8KdGplH4DRCW9K54D68fcMo7IxVrkCJWwXnIhwtBdnDnYrmzOUA/XjmBlPpcLsgw9Z5BNdY4za9+Dj+MQ==} + '@oxlint/binding-linux-arm-musleabihf@1.82.0': + resolution: {integrity: sha512-Fe+TtXCXMh/5f7kWlZ2VAwsMumZWtraFlKVk1NJlL52/beGwfDE7ov+/8gVirHzWokzGu7X65hSPq0ucPDskWQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@oxlint/binding-linux-arm64-gnu@1.81.0': - resolution: {integrity: sha512-3j9k+gsYsE7nv71GWotXsqsa2l9/aJenD7dVHNt/CBvsb0SgRjSMnHFeP59IXUAl1wvVFhqGl2wJNMwWU3UBlA==} + '@oxlint/binding-linux-arm64-gnu@1.82.0': + resolution: {integrity: sha512-6azCZ6OJudlvipNttXCCQcyeFfcJ/NvUZdSN1z8elo73kCHtyQC7WTiUcSjWYvJ1jaq9KDUyMAoAS/vNzhBomA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-arm64-musl@1.81.0': - resolution: {integrity: sha512-k5iAp3dNxW0/uDCBY+WSm8jKB2szu7SkEQZdgRRpDXvuDd69vvDcqhB3A/pWCfCwXyenjNjFn9Td1fVoyAc+Yg==} + '@oxlint/binding-linux-arm64-musl@1.82.0': + resolution: {integrity: sha512-PLEaSD8IAIIlwW4dwOd9YaxuxeOpwiXL4J24rcnE4iNtyM5j9Q9/3+gti08oXpx0u2ygNjRDx9xjWWpQonuJEw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [linux] libc: [musl] - '@oxlint/binding-linux-ppc64-gnu@1.81.0': - resolution: {integrity: sha512-TFqLja3uYmVSte6nof9GWrex9Z8WgdZrNiLC6Te5rXGDqXB2y4j/26iFhwosXiAFqDhE9JJVuuCkDKLwptTn1g==} + '@oxlint/binding-linux-ppc64-gnu@1.82.0': + resolution: {integrity: sha512-D94em/BwknNTn4vqxjHh5wb2oL566eFhArabqKIr0cNZMHOJuiraFp1A8tXpH05bbE5tqwEfLXTI0MWEGtn3Dw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ppc64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-gnu@1.81.0': - resolution: {integrity: sha512-UEcySvGS0NOVo7h7n7CYyJL9+6gFAh7Zc/ToDXVScFvzHSTIxtzkMVU30rmQ6+nQ1LF+UdiRDdJajpDu+OylLg==} + '@oxlint/binding-linux-riscv64-gnu@1.82.0': + resolution: {integrity: sha512-MOprxBaoYU2D4VgxXCl3ghydThWtx7Um1lL51kGYNeQ5Al7WzsH7/tqGdNtbLrIWnjq3bsm13+nz/gRIxjrOXw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-riscv64-musl@1.81.0': - resolution: {integrity: sha512-H+diDbhD00+wI1IRP8Kz88x/lat+DgtoBJzoTthS16xkTJGNaEkfb8gzmd1rzc/2uDQQMl7GNl+JFUacVeWxIA==} + '@oxlint/binding-linux-riscv64-musl@1.82.0': + resolution: {integrity: sha512-5h55QsfJ/luDXZzC20k6SNOY1Az+dCP9WvntKtcUWh2JhckAdwApY2ZusaBTwLENnReXU+A2fJtSrYvZJNKNPg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [riscv64] os: [linux] libc: [musl] - '@oxlint/binding-linux-s390x-gnu@1.81.0': - resolution: {integrity: sha512-8znJ/5TekjOKg1j1Acho4PJMdiAHLtlcXuWEiipOhAMV6rQcXdmDdXCbheyDczN6TjBwiNfjcP81k4AthrKRzw==} + '@oxlint/binding-linux-s390x-gnu@1.82.0': + resolution: {integrity: sha512-IE8NJNLlHr0CaXyGJPGVn0eTkUyoj1I2UfA8x7I4PSOYKsQ/6btVC7Pywrj5onk0cMH25r6Z38SoN3AvE5Zuog==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [s390x] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-gnu@1.81.0': - resolution: {integrity: sha512-Q2Wj70yFsvn5QjlmifFzbj4H+kJy53bwqc41o1fzoM7MpLV1NIbhg/LpWXRfC6KOkSAdUx1Wd8VJsdPmhp/HRA==} + '@oxlint/binding-linux-x64-gnu@1.82.0': + resolution: {integrity: sha512-XUUUxaBo9XKl+J1B9EmP1cTGQPddzeURvoGkfwh/94PGnbW+hBprDljneoI2M1jzC1bzrIV3ihc7iM9UXl8+tg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [glibc] - '@oxlint/binding-linux-x64-musl@1.81.0': - resolution: {integrity: sha512-cPInHp/ddEe5qkyK2IiyQ8Q3Mp2oLLEhhsGgTK2oZx4L6+llGam1H1yBvJZ7qHfOXj8N3hxBS8sj4tO+gtFlIg==} + '@oxlint/binding-linux-x64-musl@1.82.0': + resolution: {integrity: sha512-SWLSFulX9TDuH6yvbPYp4+VNn6jkkIvvI+KiujDM5rWBRHEfkesCC/pCneIIUr6ovkxZ5fRtpi2v5Cz5FrMJZg==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [linux] libc: [musl] - '@oxlint/binding-openharmony-arm64@1.81.0': - resolution: {integrity: sha512-0CQxSX4ajqm07AHBf5U33qQzXKdd7wtq/oTL/7vpY6RNNuxrRi8W4bqUV1Jyu/vj+9KmxQyDhxfeVX1nQL6kfg==} + '@oxlint/binding-openharmony-arm64@1.82.0': + resolution: {integrity: sha512-BQy35f6ZUdNr9a6c7B7orxQTcLjByGT2z3WAgmRovpRwmPYAaJ+NTplmMzhdjdJ4qSchfMNZy/Ukg+qRg6zseQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@oxlint/binding-win32-arm64-msvc@1.81.0': - resolution: {integrity: sha512-l0hbeISm9673hVrrQU8j/p2M7YH9Ouoj7p7E/QM55NTrKVLP+P3PF8hLu+OY+x0VtGRW+ggiQKZqmdYps9H+TA==} + '@oxlint/binding-win32-arm64-msvc@1.82.0': + resolution: {integrity: sha512-V4QhSTg5gctZue8RJjsGi7NpQPThr/p1/HfmiMC5kfe1KFEup9SQRVub4A6kijQjdHfxj7bLL1KO3QO7/5bwMQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@oxlint/binding-win32-ia32-msvc@1.81.0': - resolution: {integrity: sha512-ksqPP5jbFXcYreEQ7zdJh06rJQBymCTyGRCdaXjfcf2aG4f8KxUWY5wcgYHmaTK+FJ4bPG5sUAdOX+6trnH1JA==} + '@oxlint/binding-win32-ia32-msvc@1.82.0': + resolution: {integrity: sha512-TUSCLaKB2yktpFAJ/r3HAUYsaV/3DT7JS4iNKyoh3a9YNwD0UG7Ezh4D8m23654vQcU6P/RQrCAjRPKe4peP/A==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [ia32] os: [win32] - '@oxlint/binding-win32-x64-msvc@1.81.0': - resolution: {integrity: sha512-IZuUCwGw9emG5JtCp+fYGB+Z4OWEoeEcM8R5BA1pYw63/ieYFVdcU2ylxTpHbVHSenZnsYE+ZZ20uHAJszQ4cA==} + '@oxlint/binding-win32-x64-msvc@1.82.0': + resolution: {integrity: sha512-VTVoRIWJTb+wvUX8EYoPArfFH02whuR10goFXE/LHRRX33ajRrFgqbcONXZMiF4C5rnattfkm87HqYn8jb8hmQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [win32] @@ -4840,85 +4891,42 @@ packages: '@quansync/fs@1.0.0': resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} - '@rolldown/binding-android-arm-eabi@1.2.5': - resolution: {integrity: sha512-DLe/i+l8ynIBY7XEQ191TeZvCoowIGa18R+dIV30GW7DiOtp74i/xX8hs8GUjW5ARV7VZuie3d6AumSmCwbeRA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [android] - '@rolldown/binding-android-arm-eabi@1.2.7': resolution: {integrity: sha512-EypzgnYCwyVY4NDHKzGmNJT5b+XaQEBniHxsMdeIQLB/tcCzZnhqrzHpZFbX9iaxx+5RiB8caATBtfvZP7zVxQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [android] - '@rolldown/binding-android-arm64@1.2.5': - resolution: {integrity: sha512-zXcwKlQApYAOELHd8PwKDFkagYF9Wy4e0RJ+0qnzl9Pjnpj75TEG8ufv40p2J7kCEfwZAsNiuzRIyNNMWT38ig==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [android] - '@rolldown/binding-android-arm64@1.2.7': resolution: {integrity: sha512-l17HE9EweWaqJZhuUuNBN/FzM62xw+DECVnJyvMsxn8vJFAGLy5QfLDoYAcronkAN8VxKZHezDpulHDPx95vFw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [android] - '@rolldown/binding-darwin-arm64@1.2.5': - resolution: {integrity: sha512-dK4QakI42nzWgJT5sm4y4y/O//D4OxM75/cH28RLV+nzIN9AY+YsbuUVrUTjlLjXR6vpyxFbSsbmNuJ6BP9sww==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [darwin] - '@rolldown/binding-darwin-arm64@1.2.7': resolution: {integrity: sha512-8ED8ELFvHXc6OCETIn4gXObPiaR6bckM/ipXtbzlPVDRMBfEGjCKgO90F9YtfdpDatVx/ZQw7aZ1vUMf/+T3Mw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] - '@rolldown/binding-darwin-x64@1.2.5': - resolution: {integrity: sha512-fqSALaUu1Wjd1nK2uW2kJDWdLCc8lx1IcY+MTY26Aurfdx19anlzhqXOgCFbBFQnlFDTn4TC1/7Nz4Bl2mLP3A==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [darwin] - '@rolldown/binding-darwin-x64@1.2.7': resolution: {integrity: sha512-/WPripjtiAIZ2tWY7ddijORT0Ujg87wxWW/qcoFVCKAWVDPhtY0xr7Dj0M3GyNGz60jGwTElhro/mkF9dT7dDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] - '@rolldown/binding-freebsd-x64@1.2.5': - resolution: {integrity: sha512-/vCnNxlkxs9tKxNDcyWUePpJ/PgTzxIaVhoM5SmG8UV+GR/IcPam4VYxi7GIMo7PSDuNqlJqvprqii9NqqVCMw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [freebsd] - '@rolldown/binding-freebsd-x64@1.2.7': resolution: {integrity: sha512-14DI4NcqpvbICxSnGLx3PmtDaWqRP/KGSGb6C+JLLVPeZRl6dKdHba3pGsqT3vpdTqhEYIPG0MMQ8c0xYqoJxA==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': - resolution: {integrity: sha512-abk0NLA519LxRCszmbE0jYKuQ9YPocOXTiOXOo6Yr+YAT95VH+PtqYAjOJvGKt3viEd/x4qzabAlwd5bHOOARg==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm] - os: [linux] - '@rolldown/binding-linux-arm-gnueabihf@1.2.7': resolution: {integrity: sha512-bxrWIRvHWQvbJwi+VIie/kDJmQxcNE6xxWwZdqF/ExVAigtHkv54WTLQPb+QsZdnFy18fg7JPfWGL0RH6vwIlQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] - '@rolldown/binding-linux-arm64-gnu@1.2.5': - resolution: {integrity: sha512-Y7eALiJ8lr0M2HH103Js+g7V34wf6snlpZLAsHI90uLhr3PVlNsbFVAXJC9d/V6BnPyKtpSwI+NcB/RLxsQxuA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-arm64-gnu@1.2.7': resolution: {integrity: sha512-toOY2BChBZyuxU7OYX6Tn389di4IzAqPTycVcci0O7FSfBqzRB3RZn+K5Is6ANf4tmgRd/K1yZTsNTXbkXsnLg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4926,13 +4934,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-arm64-musl@1.2.5': - resolution: {integrity: sha512-xMvZgnbZg4YVnR/AX2b3oOPDTFYJvUVaJg5FedA/LuvexAtXibZQej4cnTkw3rjsJ/ggUROB64TdtETiim+FYA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [linux] - libc: [musl] - '@rolldown/binding-linux-arm64-musl@1.2.7': resolution: {integrity: sha512-lAIXTH/aiLRLxsTgQvfhjo4K1ydWIp00+V0voOr9beb/9ZmkUFrSIb03dXNFRgMNvkE6oGsF10ioQ6UsI+vS5Q==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4940,13 +4941,6 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-linux-ppc64-gnu@1.2.5': - resolution: {integrity: sha512-GRjeqTUDHTo5GwntsLaAMcBahG3nlpjftXWZLN73HiYQlhwEowvarFgQnRnQZtIp4keXX7quXFbG38uPZBa2EA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [ppc64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-ppc64-gnu@1.2.7': resolution: {integrity: sha512-kdnwS28Pkenp/mZMRwjXXXwxQ7pIsm+bF919LUK93BOyhcLsrVKdP2p9fxpiPNPAbNuch8ypQt0pm2P2LYCAGg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4954,13 +4948,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.5': - resolution: {integrity: sha512-vLNTR45F2Uwc8AufkNXPmB4VliaXs+FvcheEogIzOXzO4l+LzieXF5A/TWxLy5HtqpsRCHUfd0lPVrrdgXdLHQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [s390x] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-s390x-gnu@1.2.7': resolution: {integrity: sha512-516OdsyLdr5E65paF3yBF55t8mfm9+gmtCsK3xI7XKXIT7EfRlHhxL8K/NR6Hu8BWSgF5+1w74lTL0+nxcc8Qw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4968,13 +4955,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.5': - resolution: {integrity: sha512-Mgj59/HTuYeK9Gz2MA+mBWKnHsAgkBSec15ZMb1st3oIfFbX7gCjOae7GydHhzcyQi9Z/7M1QuN9bR3oFqF0jQ==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [glibc] - '@rolldown/binding-linux-x64-gnu@1.2.7': resolution: {integrity: sha512-r8/z8n7GFaYRln3xmP1Cxy0HH/HLM0uBUPkEuSVEfKGDA89M0FsZRZJRSwe/tJjRx+fpH/gjorfhB8tmEbSFLA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4982,13 +4962,6 @@ packages: os: [linux] libc: [glibc] - '@rolldown/binding-linux-x64-musl@1.2.5': - resolution: {integrity: sha512-mY8AP0/ichsbhAxGnLa3d3+MwV0EfgrPND2bplI3Ym8T6R2pJ0N87bvrKVwNXmdy3jnr6eQBecdqx/HMknBmpA==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [linux] - libc: [musl] - '@rolldown/binding-linux-x64-musl@1.2.7': resolution: {integrity: sha512-pAsE8iiDxUg1xBqdhrTfg45AVDVpirjz00sblEYClGNNcMnDb+e8beQgqIAw6LvauX/APvgxUnwrgun/YYGBhw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -4996,36 +4969,18 @@ packages: os: [linux] libc: [musl] - '@rolldown/binding-openharmony-arm64@1.2.5': - resolution: {integrity: sha512-8SLssA2oweAxyRgDp789ACfRb/3P+zNRJpzZxSizxF9m8NUDQ4+3xjo8ttjhVGGw6Qxb70oZiEtIjaKikCO7Yw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [openharmony] - '@rolldown/binding-openharmony-arm64@1.2.7': resolution: {integrity: sha512-lTcIYmmnQQA8Or/2DatS6oSqcdLHvendjS+zLu+FwgToynWMRSmQdpM65fTANJgIS4mjbMOo5KT2lnT9SAb96w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] - '@rolldown/binding-win32-arm64-msvc@1.2.5': - resolution: {integrity: sha512-vGbruD5zquhoc8D9SViXgN2FBJtNdTyQ4DtG+SWiEGlJiAzoKcZ2xp+xuXCffhubVdt0NJlTZqkeRuERy7g8Cw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [arm64] - os: [win32] - '@rolldown/binding-win32-arm64-msvc@1.2.7': resolution: {integrity: sha512-e3Gu3WxbNk/UqQhxqU7YIYO+9ZBvWNz3U+h/qRFosscMFzdRPbXYSaSWgSnklv2fz1TgzBTcti2z35c/7irsHw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.5': - resolution: {integrity: sha512-e/SXpgISz+IoqVcSSI0rx/d/he8zqLex+/rCWpnHpmVfmPIUjag9H6P7zotf0gJHwPUhQxZ/mF8tr6acebT9yw==} - engines: {node: ^20.19.0 || >=22.12.0} - cpu: [x64] - os: [win32] - '@rolldown/binding-win32-x64-msvc@1.2.7': resolution: {integrity: sha512-W/jg5qoRSqjsEv0+dZi4e687mcHqmVuU0P4fK6qS/xjetW2Gmc1W8j//z5nAeNcC8Ttm0hV46IjcYeuVwYhuiw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -5176,8 +5131,8 @@ packages: resolution: {integrity: sha512-A9uSdn72ozbRUSit0eib0TW7nXuNPlaeM0zcGkJ+nE6tFcSDbnmtwoxbTCFBukVQcszDAyvsd7+rTduPTXpygg==} engines: {node: '>=18.0.0'} - '@smithy/fetch-http-handler@5.7.2': - resolution: {integrity: sha512-nZyWTmSpJEXl6VtWVMBJve/7x12DZu6sIX1z1a+ZMaHlQQRs9Zpu6NbTe/gmxYXVRpkjxyDYpZ5gx2IM6f/Wkw==} + '@smithy/fetch-http-handler@5.8.0': + resolution: {integrity: sha512-ycSJu3tFAQ4v04CBB0agqFMVsSQ1iG3yw+SpgxRqKfaURpQD4CZ8Wn0zPMmSnOuTpTh65Vz+EA0rMrw089wvkA==} engines: {node: '>=18.0.0'} '@smithy/hash-node@4.5.2': @@ -5312,20 +5267,20 @@ packages: '@swc/helpers@0.5.23': resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} - '@tanstack/lit-virtual@3.13.37': - resolution: {integrity: sha512-ZBX/yYKwJmTrGgJa7Sg2nZ3bm7MI9c5CLUi8jS8nldFxoByf6PpVyBLtbaUNOmro2xDKgiTaRaGu1+1pn2Jptw==} + '@tanstack/lit-virtual@3.14.0': + resolution: {integrity: sha512-Wr72W0act2kKqiUhNo+B37htTgIGL5J7P+meFtjNiaTNpxZjRUGO2ZMaiMJ5eJRvRl9rcJXo8NG3tD2BUJjnkg==} peerDependencies: lit: ^3.1.0 - '@tanstack/virtual-core@3.17.8': - resolution: {integrity: sha512-BfEvehNpOT75r5Ksc5xW6NZuXujTfb7nlSEyVu4XHG3gdxNg1KqXruWbDewXOUaUYIo4oRbSfkjIajz4MAT8tA==} + '@tanstack/virtual-core@3.17.9': + resolution: {integrity: sha512-M8Bzy7CCMvUjRiuoHVH9mRjyUVczRs8v8RcUEphLFGc445ZP4KQ15Y1sLqhQqJi/HgGJrxfCHnEnIX0x9mVrBg==} - '@thi.ng/bitstream@2.4.54': - resolution: {integrity: sha512-uInkAJge5O0bWWEaYKrQpMccPbFg0z6eIA5NDCJXPm7l3rjlDje6RBHBXll3LiQz9Y051EdzlAEQRaB5hEifdg==} + '@thi.ng/bitstream@2.4.55': + resolution: {integrity: sha512-9Oj7k8SrPZ/T+ke7nivbNnoTm+fnICzz8jbgN/+JdpeohfplVW64rSiTqgbhzq8BakFa3yxeFjxeFlFZ+2gFYg==} engines: {node: '>=18'} - '@thi.ng/errors@2.6.16': - resolution: {integrity: sha512-a7Lv/G0La5eTNUEIyLldpeYziyFSj3rOlWNeXFu8v+ZSb8w8EnQ/L0r0sKHux7Ru6RhUkAXrcaHU7xd1ZkWovA==} + '@thi.ng/errors@2.6.17': + resolution: {integrity: sha512-momw7wo3EXes1wa6Smckr+l4BaJi/h+E67R3furYOBjQpciie1OgoTa43PXPb1POsuWxynkEF8OCnQgreE8twg==} engines: {node: '>=18'} '@tloncorp/tlon-skill-darwin-arm64@0.5.0': @@ -5363,40 +5318,40 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} - '@trycua/cua-driver-darwin-arm64@0.23.2': - resolution: {integrity: sha512-gWNCPIhR5KOAcxjtybzLhyxwj5T9TjBP9qEyLA78zAVABnVsqUdTaJOBx+ba8Leo3ZNc8WtvHnJJ15gsrluvjg==} + '@trycua/cua-driver-darwin-arm64@0.24.0': + resolution: {integrity: sha512-V6C580ZFIYmB6fxjqM3eEoXahvzGjWc34I1SoVSBjDRjQSn2fXLldlNsCBxEUHs4TH/JopTyP1hTChbNtCC06w==} cpu: [arm64] os: [darwin] - '@trycua/cua-driver-darwin-x64@0.23.2': - resolution: {integrity: sha512-2uGLvU/HhkSN0EQTEzbBUoTBriHbS2nskfMG+vi1KIfunuQS8OtHlI3ZsfDgD+P8s6BsoAoMpuWYAXiOZjlCkw==} + '@trycua/cua-driver-darwin-x64@0.24.0': + resolution: {integrity: sha512-4KmFTUsGegTXmt+Crr/M+Zf/92zI+tGmJWFfM3CkCNGaCBw+wqJFmAYp9mVaR2F+zmdpaWyptB/movaHC88Lcg==} cpu: [x64] os: [darwin] - '@trycua/cua-driver-linux-arm64-gnu@0.23.2': - resolution: {integrity: sha512-+lFr/hvPAKEgYYqrlAJYr/TwTcMAt63DZ9j/2TcC8BdrgZ9CAuzFvAvgK7LObexUpxAl2uJFGLJOA5m/aS95yA==} + '@trycua/cua-driver-linux-arm64-gnu@0.24.0': + resolution: {integrity: sha512-SWiyMz8z6Oax/Q+Fp2zN4WjxcXE1pSQH9SsET63W2+C6t2CZdhLzypB1h4xNStcX8eCQZ/dl0ayiV2h0U2c/Zw==} cpu: [arm64] os: [linux] libc: [glibc] - '@trycua/cua-driver-linux-x64-gnu@0.23.2': - resolution: {integrity: sha512-0sWPd4LkL1hqvsGqougwwZdufAOZxLosAE/Wwq7tBYOJuPbP+1jpGiyPdCrZrCejnlVrR440RAKs+0TsMxOcqw==} + '@trycua/cua-driver-linux-x64-gnu@0.24.0': + resolution: {integrity: sha512-7FDtyemjyaZwNIOahfYPr6NcJOr86i3WXGcaJ9Q+a5wG13srkr3vhA0K7mPQcGd/tZTyZAulXA0fnjYv7oZiXg==} cpu: [x64] os: [linux] libc: [glibc] - '@trycua/cua-driver-win32-arm64-msvc@0.23.2': - resolution: {integrity: sha512-ZRD1cxu2v9b23AUr3/o7AzHzPmHjrAYK9v24qsifSt9bw7nH5zrs81QuuO6WoaBzrUUCyOvEGLh38Tyb3cvEyw==} + '@trycua/cua-driver-win32-arm64-msvc@0.24.0': + resolution: {integrity: sha512-NktveoX98qafCjgBePzqTsHqjlFHdz6ositvEtwVTS3xA7hNEgCsr9w55sRQYuUSGfz5xjxpFioSn6Mh/f5brw==} cpu: [arm64] os: [win32] - '@trycua/cua-driver-win32-x64-msvc@0.23.2': - resolution: {integrity: sha512-Ax0DobXvVSrOIaKWINIhW/VbWKfdCYoQ27M6zFsfHlNT1paXaJYCgiRmoZiVItcfCgsQBzU7Yth046Le0TDedw==} + '@trycua/cua-driver-win32-x64-msvc@0.24.0': + resolution: {integrity: sha512-8tudsgdnfgCgeavIyhIOVCAAkfKezTkhTaZvPqZnikYN+5xKrO4o+vPhyyuEurYZLBLKluAxRwGr9DP/7syZjw==} cpu: [x64] os: [win32] - '@trycua/cua-driver@0.23.2': - resolution: {integrity: sha512-OQZGxEbiPO5wHuxROptGF8D9HDiN4R8M1E58TsUsq0pyQ73fkWpLrVY6JEo3ZnE9e+cgH7mG36NV1cqaXj8BTw==} + '@trycua/cua-driver@0.24.0': + resolution: {integrity: sha512-OVYuBBvo7HNxGmqZDaWlfQ5tdr7FruA0YfytJ0p+aTZ9QF/1T8G5nQNsLVJht7JBAybktxO6JW+lxBNn9QHp8A==} '@tufjs/canonical-json@2.0.0': resolution: {integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==} @@ -5621,8 +5576,8 @@ packages: '@types/node@25.9.5': resolution: {integrity: sha512-OScDchr2fwuUmWdf4kZ9h7PcJiYDVInhJizG/biAq3cAvqwYktuy/TYGGdZNMtNTFUP7rnb0NU4TUdm82kt4Rg==} - '@types/node@26.4.1': - resolution: {integrity: sha512-k97ENvZWtvA6yqz5/FS6a7duDgOPEeOQOc2iKS/nY6mX6qJUKtLnWzQS+Xj6tXweyj6ZcTAK2Qecetnvi9nCLA==} + '@types/node@26.5.0': + resolution: {integrity: sha512-dVSGpriSoCgz8WnDNTuSSuSv1PC/ALXihO4ulRZt7Md8k9mlbdin3lGOcDE8SnWOgf513ByWlXd7BK4azmyg/A==} '@types/qs@6.15.1': resolution: {integrity: sha512-GZHUBZR9hckSUhrxmp1nG6NwdpM9fCunJwyThLW1X3AyHgd9IlHb6VANpQQqDr2o/qQp6McZ3y/IA2rVzKzSbw==} @@ -5792,8 +5747,8 @@ packages: cpu: [x64] os: [win32] - '@typespec/ts-http-runtime@0.3.8': - resolution: {integrity: sha512-bLMpVcWZNzq6lYOybwFwOAR1IXKcHnhUNqYeHjl1bET/qE3jFPFH+p8Wrh3rU4xwdnifPxmKNESBYnvnmc75aA==} + '@typespec/ts-http-runtime@0.3.9': + resolution: {integrity: sha512-edSdeAqkdxBVzA1yL1LrLCml1YjyCVvPMtMqJpbF+6K609tHe8V6sQUzFQSGcYNhcuhOceZtjvN32+mpIth30A==} engines: {node: '>=22.0.0'} '@ubjs/core@0.31.0-3': @@ -5846,8 +5801,8 @@ packages: '@ubjs/node@0.31.0-3': resolution: {integrity: sha512-qNMpi2LICNwxGXZyRF8fSDBSpbezyZbEsydrbiMPJOmtOWr4tmZIEl7jkWGHVGShoBvHfFo4eHp5B4UVP928Cg==} - '@ungap/structured-clone@1.3.3': - resolution: {integrity: sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==} + '@ungap/structured-clone@1.4.0': + resolution: {integrity: sha512-1mEZtMKPM09vDmQt5y7YvmN2+DFTP7Tg0EWXdic8/C6VRnpb33e4ghisCIE3WZjsE2N8mf+QV1Zqh7ZFYLWInQ==} '@upsetjs/venn.js@2.0.0': resolution: {integrity: sha512-WbBhLrooyePuQ1VZxrJjtLvTc4NVfpOyKx0sKqioq9bX1C1m7Jgykkn8gLrtwumBioXIqam8DLxp88Adbue6Hw==} @@ -5876,12 +5831,12 @@ packages: '@vitest/browser': optional: true - '@vitest/istanbul-lib-coverage@1.0.0': - resolution: {integrity: sha512-BScRXlnT3d8tN39mDZuZgS6OmczgyLNO55FGka+CO0LO5458m7hBnEvDm/Dc12f07R4ChdDst66YfKtCr2T8mg==} + '@vitest/istanbul-lib-coverage@1.0.1': + resolution: {integrity: sha512-k3DJZ8LhMBK9NS4SclF1ASD3OgXEWDorbIcPTRDK0/Zae6fRvu+fJRxtFdLfHsa9Y24beCdPnoNZ4LviTNstfA==} engines: {node: '>=22'} - '@vitest/istanbul-lib-report@1.0.0': - resolution: {integrity: sha512-NYqaFIc2vKd069hB+oRPf2ckkEq/lYg1W+12l4t0M0c3LYrGgMz8Sj7v+fgONanDsZMBqxQySQkChcwN/ajUBw==} + '@vitest/istanbul-lib-report@1.0.1': + resolution: {integrity: sha512-1EOLRfsTMnyAr3+kEAsP4o9dhaDlGPpD7H5iLBBeq//YpNB1VIahkPhB+eRp9N2Dkfw8oySROjE3yf9XDeaIkQ==} engines: {node: '>=22'} '@vitest/mocker@5.0.0': @@ -5915,149 +5870,149 @@ packages: '@wasm-audio-decoders/common@9.0.7': resolution: {integrity: sha512-WRaUuWSKV7pkttBygml/a6dIEpatq2nnZGFIoPTc5yPLkxL6Wk4YaslPM98OPQvWacvNZ+Py9xROGDtrFBDzag==} - '@wasm-audio-decoders/flac@0.2.10': - resolution: {integrity: sha512-YfcyoD2rYRBa6ffawZKNi5qvV5HArJmNmuMVUPoutuZ2hhGi6WNSWIzgvbROGmPbFivLL764Am7xxJENWJDhjw==} + '@wasm-audio-decoders/flac@0.2.11': + resolution: {integrity: sha512-bbSGuDDxY89CrS7FYc2cBBfvtgk3EY9As8dVe8PFIgX7ECd/wefdi8UbGlvcdQZczRwE500KBt4cqf/+mMVsfw==} '@wasm-audio-decoders/ogg-vorbis@0.1.20': resolution: {integrity: sha512-zaQPasU5usRjUDXtXOHYED5tfkR4QMXd+EH3Nrz1+4+M5pCsdD+s9YxJqb0oqnTyRu/KUujOmu5Z/m/NT47vwg==} - '@wasm-audio-decoders/opus-ml@0.0.2': - resolution: {integrity: sha512-58rWEqDGg+CKCyEeKm2KoxxSwTWtHh/NLTW9ObR4K8CGF6VwuuGudEI1CtniS/oSRmL1nJq/eh8MKARiluw4DQ==} + '@wasm-audio-decoders/opus-ml@0.0.3': + resolution: {integrity: sha512-SEeTmk0eb3q5etJA/NHCRWW6BivTx9tqvNTmG0kg2ynuATEQRUZnwQE6Ibvl1BBvqIGHqI57+qyJMWmJBwb5XQ==} - '@yuku-codegen/binding-android-arm64@0.9.3': - resolution: {integrity: sha512-viote6xAyL5cKLquV2X2wRfopSckH+msDYbaI8Hh8JAaogYs8MJZVRUbSrbsY29TaPrIFZwNRwQ8+YSxs0dkGw==} + '@yuku-codegen/binding-android-arm64@0.9.5': + resolution: {integrity: sha512-jrOY5WM+AaAqkv51fHP1x28ifto4WgcZVzodLUyMU1jMWn5Sq+VciRdk/n8E0Ey5w4p4cWWE+m5GfXWOYh7Kzw==} cpu: [arm64] os: [android] - '@yuku-codegen/binding-darwin-arm64@0.9.3': - resolution: {integrity: sha512-y2PGOLyxc724EJ+Et/5PxGfutQuV1Z2J9cxHo6W1I5CR3nk0i03J4yPrnw6rNJOfrtlISzcc7q0RrSyfPndpIg==} + '@yuku-codegen/binding-darwin-arm64@0.9.5': + resolution: {integrity: sha512-4O4lkCQIzPZGjiNB1GORSI6hBECbiiSBS/APZXPvNKYH+nhY4uuqv03LNXA+SET3hoBjvr95P5rIhY8KQaQUBA==} cpu: [arm64] os: [darwin] - '@yuku-codegen/binding-darwin-x64@0.9.3': - resolution: {integrity: sha512-xZ9UpXUOLmsrKVUp7MRXxWU3drNiilRC42OLpjWEhnOehIGVF1bZgzHcqRYJxVyU53RMrkRMsaxplkGd6Qo/ow==} + '@yuku-codegen/binding-darwin-x64@0.9.5': + resolution: {integrity: sha512-9EvoUO0SEhD6/d8VHdWuPerepPMSR1y84+UEgz8Un1Ope14Oe7xMvePpEQLTLovoIFZ8Zg3iZ8z8E11pZMqC3g==} cpu: [x64] os: [darwin] - '@yuku-codegen/binding-freebsd-x64@0.9.3': - resolution: {integrity: sha512-RGCYSZw3VonreVTpur9iOfnbMngR2/f7UOE7gwcDx5WoHjIhtmTK9EIq9qs78ARdMFAPzKp5OzHljl5QMaGJ7g==} + '@yuku-codegen/binding-freebsd-x64@0.9.5': + resolution: {integrity: sha512-HqT78WwgHTmp8lwujoUa9CrIortX4DdpuiVC18ZPSGvuuJf4ylpIEI6QrQEM78Zwz3muhAWAOXZ5irdiYY+AyA==} cpu: [x64] os: [freebsd] - '@yuku-codegen/binding-linux-arm-gnu@0.9.3': - resolution: {integrity: sha512-kjIJIw39GSPTF0hnq+jnM0tR+J5WlariAAWetxMtawNskITDT1ZigaK3YF5hMhDz2mAofaM1t+63qtx+7aXjeg==} + '@yuku-codegen/binding-linux-arm-gnu@0.9.5': + resolution: {integrity: sha512-QJXwIW6Ms3QIawbcBIedmrmXnfdpuAOjZJ/eAABq5XTzWvSxZ7lutu9W5yIHahlaTaFnBo7ikrVMD1szLTpPUw==} cpu: [arm] os: [linux] libc: [glibc] - '@yuku-codegen/binding-linux-arm-musl@0.9.3': - resolution: {integrity: sha512-TVHeVdzaS4ub86URrQufiy4t01ZtdyKDZ5sTPqWFKAUbQJ7rQ0o5vIT+/jCeHQbP+Yf9p5peRdmPbcZewoDNiA==} + '@yuku-codegen/binding-linux-arm-musl@0.9.5': + resolution: {integrity: sha512-eHbFy3IHGb+IYarrYwAo0yWSEQV3eAmEn6VrsKA6I1Wy1YPJxWqSJlV69JhqsHtJuJlljUIF3ex0y46yaKIu9w==} cpu: [arm] os: [linux] libc: [musl] - '@yuku-codegen/binding-linux-arm64-gnu@0.9.3': - resolution: {integrity: sha512-9aQeeLh1qaCa2GcyzHnwLKGfFrsI+KOyhnh4+fICSq5kyhzCWQfXVCCK4RTEZPLcyuVwfN5Id0JEYavRN4oNTQ==} + '@yuku-codegen/binding-linux-arm64-gnu@0.9.5': + resolution: {integrity: sha512-ByoJMbySTaDhjAXSu8q6Lh7HKg3YoesXpcT72aYk0Aiw4PCznmY4ybpLTq0RCvp0RIPhFm/6yECFiGBwyCC1nw==} cpu: [arm64] os: [linux] libc: [glibc] - '@yuku-codegen/binding-linux-arm64-musl@0.9.3': - resolution: {integrity: sha512-TLXA5Hd1nr8VSP2MtxcFddsBIHj+DPpyG5eberEGMATndgG7STlKQmle51MV0MZ8UgsdYM6CybIVpzlCPQwP9w==} + '@yuku-codegen/binding-linux-arm64-musl@0.9.5': + resolution: {integrity: sha512-gD9vfXIoBw1toSxhO9rgmSu/FEfy3PMznJAxVjIuH8DrWEiDKXmJO0pJKfj1Ltbe/TmtWVZR+TjISqeSIGQzMg==} cpu: [arm64] os: [linux] libc: [musl] - '@yuku-codegen/binding-linux-x64-gnu@0.9.3': - resolution: {integrity: sha512-tk0BFbF3Clb9k9biPH3qmr+Qwk24rRM26+HY91hYXmZlzlepZG0scQ6OffZFWtzwKE5JjlZpMdcWj1lTiHbEjA==} + '@yuku-codegen/binding-linux-x64-gnu@0.9.5': + resolution: {integrity: sha512-BARvdnvqMGjOr5Iel2JH+9H5vAIE0R6H0Z2fsT02xrvmI/1ZXNB8lkuX+ZGevPhZb3zJ9WeC/R8JZstrsUOK5g==} cpu: [x64] os: [linux] libc: [glibc] - '@yuku-codegen/binding-linux-x64-musl@0.9.3': - resolution: {integrity: sha512-xo+pXshsCXruEEkDMbwHqkeTyC4XHb6A6oXr6x2YK3jOMcS5kZz0e26BmTCr40J0nY/K3ysmwG9R1xHygtiuwQ==} + '@yuku-codegen/binding-linux-x64-musl@0.9.5': + resolution: {integrity: sha512-x8flcevS1fbb7ESrmpOY/pON4eInSaE/7Ktjqx2udOE2W33BNSZmJuwpyUgo54AoHNqrcaM7szqydyJn5fNvew==} cpu: [x64] os: [linux] libc: [musl] - '@yuku-codegen/binding-win32-arm64@0.9.3': - resolution: {integrity: sha512-70gAQo6HZzMgIJTjeMZOEO2XaRj4GcNGP/n81R9tXQv0x8d4ZHnZDv+ygeWfHo+xchAUPwpnrVZA4p6RhJa3GQ==} + '@yuku-codegen/binding-win32-arm64@0.9.5': + resolution: {integrity: sha512-KOL/rBatWqH4ZpCNoF8ZtSNdOJbAxBJLmk/VeRciepGROPTbPum1A9t67GpFgOU7qrkUWlPJdJ+KHKbvbmOt+w==} cpu: [arm64] os: [win32] - '@yuku-codegen/binding-win32-x64@0.9.3': - resolution: {integrity: sha512-7Hz3NGlq6qBBR8zMEk6GMZivofNjnYZpMXSoUwUgz9Ur2LaivuP23HQh0ern+T6HVkTJEvilw4VJrg1rX1Ugcg==} + '@yuku-codegen/binding-win32-x64@0.9.5': + resolution: {integrity: sha512-FxENahEjWSan59Syh/us/Kf4wNq8qrJLFJ3R2N4Oiwtb6yNdz/rWLNTIoNSssnsp7IoWJdUP6o/Z8ppg7lXMcg==} cpu: [x64] os: [win32] - '@yuku-parser/binding-android-arm64@0.9.3': - resolution: {integrity: sha512-z3tDGTaUXD5Q4IuebFOY/QHxhR/SqujMhkMv9C5bh25upyFEXdafp0MsXQIIheWhVZzn5VMOniyxFni/7s9LgQ==} + '@yuku-parser/binding-android-arm64@0.9.5': + resolution: {integrity: sha512-A2JCFCSHfnficqYEw4Iujpx7XrkMM3UfFcgJFmYpZSo9zM4nyhmdIIE0FogSduuU60lhM0/UcfuUBXIVNBMlGQ==} cpu: [arm64] os: [android] - '@yuku-parser/binding-darwin-arm64@0.9.3': - resolution: {integrity: sha512-hzKvKSKS7z3ufnu1VkQYEoxmS6A5uNnkwukKnc2atxpWdq648nLVOqut4h1jUXjbM2WcoTfuZLF6AHAGFf8cmg==} + '@yuku-parser/binding-darwin-arm64@0.9.5': + resolution: {integrity: sha512-3PiyU+Eare4YuKaQ22N98/yAiROPY5o/NQJHraICzDvk4pgS+m+bgLKOvkGBRn33OnV95Vdv1Mn38b+MQHpULQ==} cpu: [arm64] os: [darwin] - '@yuku-parser/binding-darwin-x64@0.9.3': - resolution: {integrity: sha512-OM2PiVlPATvzlj/KGHNlu+t8FC3YzM5joVNjhsz/EaigQ8x2UUQ1Q0agQLiv5GZ2L8TSzrLUwBCZ7YOvP8q+tw==} + '@yuku-parser/binding-darwin-x64@0.9.5': + resolution: {integrity: sha512-blFMAFI7AInI83XaiOF8cIeiRM46Nz9EfpZtZPRLbKxSA9aAr5v8aHYpmfN6NoyXxAv/10pwS4gsAuc1W6fy5Q==} cpu: [x64] os: [darwin] - '@yuku-parser/binding-freebsd-x64@0.9.3': - resolution: {integrity: sha512-WMn9M4LHNVysGNwsAJ9gpRPqQIW2lcPrDNGcyk0agx3IYqCJq1MQugh6Be8Otc5U08eGdE39o8Kx9YWJmXz7GA==} + '@yuku-parser/binding-freebsd-x64@0.9.5': + resolution: {integrity: sha512-TsNuL4qsZdO0tHp5GW43Y5fHeLPpPHA675wdcPNTcdq2ZO5AvsQWFFoiDg8CH4oBktfsQ9tdvKhjLnLYwKvp4g==} cpu: [x64] os: [freebsd] - '@yuku-parser/binding-linux-arm-gnu@0.9.3': - resolution: {integrity: sha512-vqKjwiyW1FWvbykYMEQIcAJwA17WxK3rxxqDuyCvQwcNVaLEUxI4BXiUdlF3kHucc7MnoFQhoRPkySgOzlLM+Q==} + '@yuku-parser/binding-linux-arm-gnu@0.9.5': + resolution: {integrity: sha512-b0afYK5gHeV8RdmOcqAlgM8ONsye4cax4DMnIBaoJyPMd1UTGvTbpkqQcPVdhmHlcfcGVGMV1laeVovlr/dscw==} cpu: [arm] os: [linux] libc: [glibc] - '@yuku-parser/binding-linux-arm-musl@0.9.3': - resolution: {integrity: sha512-qohilhYOT+zkt2gYzym4F1T6BzRdvPqS9/sFB03pmnVV8LrvjOXVsGwEBAa3CEvzJKhAZjdTmVz7zsVdjyHWLg==} + '@yuku-parser/binding-linux-arm-musl@0.9.5': + resolution: {integrity: sha512-fD3lKzl+r6j6n8DwiMY53qnh5DLqD8KJjCp+NbVud54Nnh3Q9Wprqss3YzyMHP3NSJk663Wlg1E1X5qOuFVFig==} cpu: [arm] os: [linux] libc: [musl] - '@yuku-parser/binding-linux-arm64-gnu@0.9.3': - resolution: {integrity: sha512-tvTIyUvTGkeee68i4JIo9o27As+Ug6LXOZvElGgFbTs6+KBdb5LGhvugaIQljdfIsm2XnIbOLG6OnQSXHMLB9w==} + '@yuku-parser/binding-linux-arm64-gnu@0.9.5': + resolution: {integrity: sha512-aRU/aCphV1MWCl/lvI6NX8LgucHQ68Fx+vz7NBb/5MEr2EuzCxiPOQqeFcMdWh+2AED/p0AvAREch0c+cSnlhA==} cpu: [arm64] os: [linux] libc: [glibc] - '@yuku-parser/binding-linux-arm64-musl@0.9.3': - resolution: {integrity: sha512-OWZBHW1wuChBpFlrF+On1yiBcFPMRrj2g0VKsM/PCBGffu1OM0ORkS+vLS3Snu6wYwndM5Dd9Ctvux6eUlrQjA==} + '@yuku-parser/binding-linux-arm64-musl@0.9.5': + resolution: {integrity: sha512-5+Guro0l8H473YXlEjVNBRLN/IbPbJdnQh1zo0OLt49xxnON+XMJRRaEyTOTfkn9QSRg0+BhEKGR4W9Gu2uZJQ==} cpu: [arm64] os: [linux] libc: [musl] - '@yuku-parser/binding-linux-x64-gnu@0.9.3': - resolution: {integrity: sha512-/tbk1h0dlADOCngbiQO9V3SHwBIJkoGBq8BDEraSw2CC3nGxPEPTCCYUDp5738Ij2FxVwy1FWVuhFkHvpMrPbQ==} + '@yuku-parser/binding-linux-x64-gnu@0.9.5': + resolution: {integrity: sha512-pwwSyV9q+GlvzSXlsMZBMlgk22L5bud714/vqZCdeUTivzeUVltQzUaf3IQXOGXdpc59JYTeuMCtbGquaAUoCA==} cpu: [x64] os: [linux] libc: [glibc] - '@yuku-parser/binding-linux-x64-musl@0.9.3': - resolution: {integrity: sha512-u3+0sCso/mcjDvtc3866D2giV7l34PDyDVBkMesAWa3DWbIWPlybehi2SSnmScgArV22ctqSSgUzdBBVJ6zYAg==} + '@yuku-parser/binding-linux-x64-musl@0.9.5': + resolution: {integrity: sha512-z18j6JN3lBHH8vzN7gG1M8fI0nlgItSfnC9PfbmUbt97iHViKfw2iA2G9fGwRMe5LyPRZBrejIlapbygPbpdaw==} cpu: [x64] os: [linux] libc: [musl] - '@yuku-parser/binding-win32-arm64@0.9.3': - resolution: {integrity: sha512-xnGEvdhyjRkXozHtpXVpEEkyGZWAxJ3RoILv7XRV5SvTEztaTCk5GQyfcOzI9An/EJtcL4ERCI8QmS0TpDPJiA==} + '@yuku-parser/binding-win32-arm64@0.9.5': + resolution: {integrity: sha512-s6Gwttb1dQvtPX6Bgkw+UPC9IO3UBDXc6Zezog8MMgvu3UfJBBB9TQqKBX/2quu0Eyh+lLSAyNlIyyecaagUPg==} cpu: [arm64] os: [win32] - '@yuku-parser/binding-win32-x64@0.9.3': - resolution: {integrity: sha512-N5eShGcuwnrXEprePFmEjtng6acZmtnC4zgazK9xxkavcx1q1uX8Nz8lU5RS973EMlNr902cIc6Cd2D4tqZDBg==} + '@yuku-parser/binding-win32-x64@0.9.5': + resolution: {integrity: sha512-FrERt9YWatY3bJfSUdi4YWY+6iQcyo3MzCC821BxlWM5TFZEHijnpz/bknR79VHlXY/9CvXz8ZlaAGPsTtN3nw==} cpu: [x64] os: [win32] - '@yuku-toolchain/types@0.9.3': - resolution: {integrity: sha512-rFE+5P4g2wxko5C85MugJOlVjBHEQq87dIkhLkniLXLp63PEtgaFjD954i5HXlfnyzLxPcZHsSOVDVgmo1HToA==} + '@yuku-toolchain/types@0.9.5': + resolution: {integrity: sha512-KiuLNNgX9uNealaWAR+G3/cMXnRk9x4TY2EkYe/KIag+UPdwiA0RRf1hr1WAxzTP8KGzCTkqUdLPvqh32sEO3w==} '@zone-eu/mailsplit@5.4.16': resolution: {integrity: sha512-zQ9iXvlT3Wi/hazeC1MdI4rQc1UJwJ6IQ6QzSZ5KDxLZZWQSazWLOzImLFluXadKShJ9WJvI1xH+AyVS8b9azg==} @@ -6080,8 +6035,8 @@ packages: engines: {node: '>=0.4.0'} hasBin: true - acpx@0.13.2: - resolution: {integrity: sha512-4hOLEo2kE/nCrPr50StbzU3G1WvzHkmKE/r3vxFAIr6GRI3VSmSRH62XCtnDpVcQNpBM8fVPAeTj39ewVhJwdQ==} + acpx@0.15.1: + resolution: {integrity: sha512-8+5MS2QU+p7HV2KaEooNjUD/GaUfU43nPeO7iZJ1xngekCz5sA9+jxDGbHGAybMh6hjOXKKAm8GhU5N5dAK+Ew==} engines: {node: '>=22.13.0'} hasBin: true @@ -6145,8 +6100,8 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - argparse@3.0.0: - resolution: {integrity: sha512-BOp5NMrHqKxmq/OLr+clzzrRxgOKSLkcjmkWuChp7Irqwn4s74WjOBPIgWfA/HMcBnVkZ5XEuf9uUqzlpfCQ6A==} + argparse@3.0.1: + resolution: {integrity: sha512-nM4mHF/KM1v59ZNKX7zfusQz5wUAxR511YG8Vo6TyiV4aqhu++rbJW4v04xsWhpSsHFj66flT8P7znVpyO20xQ==} array-back@3.1.0: resolution: {integrity: sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==} @@ -6167,8 +6122,8 @@ packages: resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} engines: {node: '>=12'} - ast-v8-to-istanbul@1.0.5: - resolution: {integrity: sha512-UPAgKJFSEGMWSDr3LX4tqnAb4f7KGT8O40Tyx8wbYmmZ/yn58lNCm8h3svs3eXgiGd5AXxz8NDOvXWvicq+rJA==} + ast-v8-to-istanbul@1.0.6: + resolution: {integrity: sha512-fvpl29helSO2w/z7utIbrkNXILdrLwDwAMH2I/zPKlGf5244+gf+B4cyS1sANcrPY2h+hWCGSgC8N61s/+AF9A==} astral-regex@2.0.0: resolution: {integrity: sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==} @@ -6195,8 +6150,8 @@ packages: resolution: {integrity: sha512-Z0lHvMayR/Pad9+O9ddzaBJE0DrhZkQlStrC1RwcAHF3AhQAsdwKHeLGK8fYKyp2DDU6xHxzGb4CLMui12yVrg==} deprecated: Renamed to @audio/decode — same API; this name remains a thin alias. npm i @audio/decode - audio-type@2.4.2: - resolution: {integrity: sha512-E9Bl1FGGDS81H/mKvaoPq0iQ8uT3qTBe6XWjipOo5kYrhLMAbjD7hREAVle0YJFahZOVbztxTdkwi0VBDJutSA==} + audio-type@2.7.0: + resolution: {integrity: sha512-macErCCilP6JsoJGLguH2wVDNA1qsBAMNp9yq+ZFndBbD+KqRxjSUQahjKmXbIkSH5LRU0ybcR8fNbOLvOo/bg==} engines: {node: '>=14'} axios@1.20.0: @@ -6235,8 +6190,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bare-events@2.9.1: - resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} + bare-events@2.9.2: + resolution: {integrity: sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: @@ -6252,11 +6207,11 @@ packages: bare-buffer: optional: true - bare-path@3.1.1: - resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==} + bare-path@3.1.2: + resolution: {integrity: sha512-ZyKbsuuqK6Ag0K8pX6V5Txq6XeJRvY+wXucnFGRjiyVYP9YWDpIQugk/b+enRYrEYBJaqLzghRQpXPMR7341Nw==} - bare-stream@2.13.3: - resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==} + bare-stream@2.13.4: + resolution: {integrity: sha512-PcrQ8lVLbiJscNm1Kez+Yp4Gy4AHGcN1lzwjvf5NybWen7VvEgUfyfnXYJ2zNqWnzOfCb1Abq6lH8ti0syQszA==} peerDependencies: bare-abort-controller: '*' bare-buffer: '*' @@ -6269,8 +6224,8 @@ packages: bare-events: optional: true - bare-url@2.5.2: - resolution: {integrity: sha512-L13PCJzKG8RGvx8V1/DdMi12ERhC3tprr7/8a94BxpmnRsFqxh5XZNdhtMxu5HPkRshYOOWRGY8lDP7ZhpG9Cg==} + bare-url@2.5.4: + resolution: {integrity: sha512-Gxa7UVWBr0/edU1b+TJhn/AZvMQUj9OGspvYsaTYQrAbZA4BOTZGL3LiZxvD+CeMlDH4juwD84+eTAp/bLYW5g==} base-64@0.1.0: resolution: {integrity: sha512-Y5gU45svrR5tI2Vt/X9GPd3L0HNIKzGu202EjxrXMpuc2V2CiKgemAbUUsqYmZJvPtCXoUKjNZwBJzsNScUbXA==} @@ -6281,8 +6236,8 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - bidi-js@1.0.3: - resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + bidi-js@1.1.0: + resolution: {integrity: sha512-fX1Onk0tdVPC7obPWB5EbJ1z7NVhLq4m2xZLq2YXBkxzMXIGRpNMU88n0EPgWseKl12J7zXs7qrDxPK4sRs2fg==} big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} @@ -6415,8 +6370,8 @@ packages: cjs-module-lexer@2.2.1: resolution: {integrity: sha512-Ca8swihM+/4yKecYHY52kgJd300hi2lADU/a1RxNTRe+RJ9jvqQlESpbz9DnG9mowez8qwXHB8qYdIUw9e+F5Q==} - clawpdf@0.3.1: - resolution: {integrity: sha512-HZ8gz3cm8arzT/V2CnMZlHlRJbsrUYQ71u+A4nymeyvNnYzpZ8RQwkr2EIZiXCOzRkzFy8sOiHBXBuSUDDcXqQ==} + clawpdf@0.3.2: + resolution: {integrity: sha512-1JudW0rZ5B7O2E9+cgnU5F4As7K6HZ3/s/3CHUXm5uG0+965uPOk11gvhmprpwXGJaRXhrmywZ1WWc5a+GZ7TQ==} engines: {node: '>=22'} hasBin: true @@ -6584,8 +6539,8 @@ packages: peerDependencies: cytoscape: ^3.2.0 - cytoscape@3.34.1: - resolution: {integrity: sha512-Lr0RvH9H75y9ar8h9Toy6u4lxRSCcxUq+hHcQ26sVWo6BnaQp1gwEZOYqwuYTZhyW7npyKnNLP8oJ2p1/3OZ7g==} + cytoscape@3.34.3: + resolution: {integrity: sha512-yfYGhRcGAntq6YBD583j4n0Eg3jIxvWmZtz/5uz9UYkeIStSlMxuUja+ec5j3iBD8nv1rwaOAYMW09tBdkSeaQ==} engines: {node: '>=0.10'} d3-array@2.12.1: @@ -6859,8 +6814,8 @@ packages: resolution: {integrity: sha512-gYzvtM72ZtxQO0T048kd6HWSbbGCNOUwcnfQ01cqIJ4X2IYKFFHZ5mKvrQETcFXxsRObZulDaKmy//R7TPtsBg==} engines: {node: '>=20.19.0'} - dompurify@3.4.14: - resolution: {integrity: sha512-dVoH9z+MY+C9IilgGCk3YfFqjLi3fChm2OiKJMzh6axrJ5qwxqWaZamgmHrpv22CN/KdbZJuGEGgfQoL00LTdg==} + dompurify@3.4.15: + resolution: {integrity: sha512-EUBjM+B+lkDE41iE82DDSCfkoPGfXx8IxFxPMjNzm/Uk4xDet77rTN9wqlxlVg71kK7XGuUMv6wUxJUwwv+Xyw==} domutils@3.2.2: resolution: {integrity: sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==} @@ -6927,8 +6882,8 @@ packages: resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} engines: {node: '>=0.12'} - entities@8.0.0: - resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + entities@8.1.0: + resolution: {integrity: sha512-kxL7msIffSuh9aaFAMD7rxAIuTRMAHMeBtgHW2yUdWw732ZNh4MehkF2gdjvtdmikkaIP9bFDDJOPlsvm7avrA==} engines: {node: '>=20.19.0'} env-paths@2.2.1: @@ -6949,6 +6904,9 @@ packages: es-module-lexer@2.3.2: resolution: {integrity: sha512-poHGpORABojJJucnV9KbOavETW8lBVnphkW77ER5/BQ5Fz7oXSoCNek7IH3vR5nRjdsEz926ibFYX8KtLQmdyw==} + es-module-lexer@3.0.2: + resolution: {integrity: sha512-BuIB67FngDSyQ/dpQNOZybwdEBDUGJQvOqwWr4ha/ufYiqzuEwPkKO2zLhRAgay28tStRIHUeWmszZAJo3GCOg==} + es-object-atoms@1.1.2: resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} engines: {node: '>= 0.4'} @@ -6957,8 +6915,8 @@ packages: resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} engines: {node: '>= 0.4'} - es-toolkit@1.51.0: - resolution: {integrity: sha512-zC2lQGkM7QX+Gm6iM3+WIdZJzthsEd14LvRNJneSO2hzyz/zNBENR8+YXWo1cKxgPBtV6ksPYHELbcwBRzmdCw==} + es-toolkit@1.52.0: + resolution: {integrity: sha512-XTNEJQh1tY1ZJVcf6ayP/2n4ZPyaHlW2FWs7xvw5ddPuhUVjLD3olQVQS7kf58JbAB48iL0uL/jerTrjtV3lDA==} esast-util-from-estree@2.0.0: resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==} @@ -6995,8 +6953,8 @@ packages: estree-util-is-identifier-name@3.0.0: resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==} - estree-util-scope@1.0.0: - resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==} + estree-util-scope@1.0.1: + resolution: {integrity: sha512-B0np3dcdxqILX5e9nEi5/Fr4K7gL4oYFVPV1zRa2e9wRCbQoZZNWOZFYyoInvXUPJXBXjss+QXlWLJChDEHDkA==} estree-util-to-js@2.0.0: resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==} @@ -7044,8 +7002,8 @@ packages: resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} engines: {node: '>=12.0.0'} - express-rate-limit@8.6.2: - resolution: {integrity: sha512-YH4ru+eOJxQABscKFfRCy9R7x9QFGdezclVMwwgFFndzS2Xnm0uo6B0ABZsLhcpeptGv2qvuJVWlQr9gQZoC3A==} + express-rate-limit@8.7.0: + resolution: {integrity: sha512-hOwV7WOxXfjRpAM1DSJWZDXx3GhplwD8IfwuwvogD8i1Qnkgosw/H45s4ZnFAUHDAhPjlY9hLBvJhKmGMyY26g==} engines: {node: '>= 16'} peerDependencies: express: '>= 4.11' @@ -7100,8 +7058,8 @@ packages: resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} engines: {node: '>= 4.9.1'} - fastq@1.20.1: - resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + fastq@1.20.3: + resolution: {integrity: sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==} fdir@6.5.0: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} @@ -7279,10 +7237,6 @@ packages: resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} - google-logging-utils@1.2.0: - resolution: {integrity: sha512-WE9av4wKDZgRjBwgVUabocx8T6/7o3Ca1Fat46FXDhXVAFibzNadedcOXrdgd1Kzmk8tsk/9ZH89Wyf/SqeZ3A==} - engines: {node: '>=18'} - google-logging-utils@2.0.1: resolution: {integrity: sha512-HMhaQghlOTvbcb3c4T5jmmOMtG3JUF1iOQMezaJXL86CDS+Tm2vHd0IeLFRAx3+ewd+bo9E1HFHoy17X5aJa9A==} engines: {node: '>=22'} @@ -7349,8 +7303,8 @@ packages: resolution: {integrity: sha512-nbfWpyRMcMrPMmDwJB+dhX/eiaPKtc2RB+0QZskqJ3WjRA/FDS0e9hZrx8EC/lbEv8gXy98FcDbNa/dspAaJMg==} engines: {node: '>=12.0.0'} - hono@4.13.4: - resolution: {integrity: sha512-AGEwKIyRMHRv1t8Wjwa3LHxQ61X5CqrdFT+4BRNTpqS5aJNnpl5WLjADb7vFlJzI/8uK7T5QLVApCMQKNa3LgQ==} + hono@4.13.7: + resolution: {integrity: sha512-c8/gF9ac8Y78/agExVocyLevgR+JlpNB444Py0FSX8pJoPdYUfUzRcXtYEYGwt6l19qIlVZPN5Mfsw9jFShmQQ==} engines: {node: '>=16.9.0'} hookable@6.1.1: @@ -7440,12 +7394,13 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@7.0.8: - resolution: {integrity: sha512-YYNsSlXBjMk92SKnkwvB5LOVSa6OznlFUGcsvrFgNJbJCd0M1XKeFVRc8ZByeCqz32FivYNHJVooLmdqrmvp/Q==} + ignore@7.0.9: + resolution: {integrity: sha512-brTTsvFRt5C1gGHtPst/281UjPD5t9fBqbgoMPlVWy11ZLTPfu7HxK4ZYqO9H7o/yC9rSTCI85EaQ4OoY12qYw==} engines: {node: '>= 4'} - imapflow@1.7.8: - resolution: {integrity: sha512-dJoCIdZOJh26Rn2PdwEzwj0bRDgGBxxX38pio534FagIHVuR2l0SAfLr6sJo32YfuJHiSs/U2ntNDHnMg3/Hlg==} + imapflow@2.0.0: + resolution: {integrity: sha512-41/FyMfOCSEdY04XNDqDEoor5sVF1bDFEGM8t36tIYyM7Hi2GFKWedHaaT4CUrwEsjr6CowQS2rALBdpq3Hnyw==} + engines: {node: '>=20.0.0'} immediate@3.0.6: resolution: {integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==} @@ -7454,8 +7409,8 @@ packages: resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} engines: {node: '>=6'} - import-in-the-middle@3.3.3: - resolution: {integrity: sha512-AiohS3H80sXO6owEltjGX+glb7qXaDhBoJb9XcQVH4UI207xu/bDLUcadVKp7Qe576reg9yr/PXZjV5qx8gfbA==} + import-in-the-middle@3.5.0: + resolution: {integrity: sha512-O6wo8l0lhBuytKz3x8S65TvacFtoopji+gCVeEBbjCaRy75gkk4bCBQoVmY7OEZ63cbFK+yf77pDCTWaadV7hQ==} engines: {node: '>=18'} import-meta-resolve@4.2.0: @@ -7605,9 +7560,6 @@ packages: jose@4.15.9: resolution: {integrity: sha512-1vUQX+IdDMVPj4k8kOxgUqlcK518yluMuGZwqlr44FS1ppZB/5GWh4rZG89erpOBOJjU/OBsnCVFfapsRz6nEA==} - jose@6.2.11: - resolution: {integrity: sha512-A5NPn7g8EAzGU3IzRs+Yiq8K5n3ypYS75M5+KKiVHdUexfpWK1kP4ZMq7QnTGDoMj6TJ1dtcEJjW60yZDXS4hg==} - jose@6.2.12: resolution: {integrity: sha512-9NiFmJEex0sy2Dk58j2UGBSHgUs2ypF9eZSu4L6vjOX3Dp96Sw1F3uL+H+D1sx02jZZdzUT0HgvCy59CuvXcWw==} @@ -7617,56 +7569,56 @@ packages: js-tokens@4.0.0: resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} - js-yaml@4.3.1: - resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + js-yaml@4.3.2: + resolution: {integrity: sha512-SFNOvSJ+Dgf/9An904Yx+CgSlIPCkIpao4qo51lpee25TIRejdH3rhR4EZMGoNx3/TP3O+wzWuiTFl4sqbltzA==} hasBin: true - jscpd-darwin-arm64@5.1.2: - resolution: {integrity: sha512-6fYVCBHgE154jVVYcRA+9K17q5AXe0/V9wfPf3hBrDQMxqOiI+99ii2CfMT6OkcEtJULqpi+uJENCsjtYn+nmQ==} + jscpd-darwin-arm64@5.2.0: + resolution: {integrity: sha512-QnEDfTH2MymizVHiEQpqfYEj63k1DW7QC0QBZoevh+o/iHQrHxKlgrakMysUIwIJlnmvqPB6iP/G3dBpFmnmeQ==} cpu: [arm64] os: [darwin] - jscpd-darwin-x64@5.1.2: - resolution: {integrity: sha512-udNKAqu7ty6NcHvSwaZ7qCktyN+JwET0Z81e6/s1WmRtHkdd6Hnv0Gix04gRN3aVkfqZzI6YKle0YnYPJe4hOA==} + jscpd-darwin-x64@5.2.0: + resolution: {integrity: sha512-P2lYEK0Yyn+0z7618+9A0NErywjaPrwSYcId3gRSt5l0cyKBwhMmyFLX/2t3G2HRi+GX+OT2A/YpWvvTzLJJ1A==} cpu: [x64] os: [darwin] - jscpd-linux-arm64-gnu@5.1.2: - resolution: {integrity: sha512-FYX3IZPXwEooiDn7fQzHEytRbbsSBNqqHUEzxu32EKBXNyQ1Fx1/8hms26X1RFUJ80zpcKkRQCz1J3hPYsYhFA==} + jscpd-linux-arm64-gnu@5.2.0: + resolution: {integrity: sha512-UhdX9vvCFwoG1cViNqFyvxfqNtJ+xWbGsgZ5PbcgUx2OLWnvjhkjihPw/fOUM9IoxHaT66AE5pipaV/oQE/76A==} cpu: [arm64] os: [linux] libc: [glibc] - jscpd-linux-arm64-musl@5.1.2: - resolution: {integrity: sha512-SuoKN9xv4pIopLS2yPx3E+ysnmZPNAKdxxAYTwvd6ixrEcO36xIKUma+DGKUw1PLXq1HO6A9M3FlqmnrTCnzYA==} + jscpd-linux-arm64-musl@5.2.0: + resolution: {integrity: sha512-13DsZCQ58fOMUX6mU8DZtiTdIk+9Gp2xLu6mtc6fmqqZRJoRHQSSDvMqRVedCqArquxc0I+tqQtZO4n7/8QJxA==} cpu: [arm64] os: [linux] libc: [musl] - jscpd-linux-x64-gnu@5.1.2: - resolution: {integrity: sha512-1B+rqrw7Jt7/5Sye7ssedRnN8I1qatjUq9tFRcUQvlteR1OgW4lZuGV+DTYOgNaPNzeJN21aLzBGBa9OsxRWMA==} + jscpd-linux-x64-gnu@5.2.0: + resolution: {integrity: sha512-p88BpA5QzyZzyF8uYeVCz9ZBoZYg8s6AwcDc3NkIDNTbrrF0sKqgGjclGWAoJvYAiGExiFNqV768pVHsE//l0Q==} cpu: [x64] os: [linux] libc: [glibc] - jscpd-linux-x64-musl@5.1.2: - resolution: {integrity: sha512-46Astr0LnVh/prpqq5/Vehtx18MCvcs0KL8vi49kAIksOe6QdlQ/hdBKH8V61pAAmAgCr64hU9p0dv6DDKHJdg==} + jscpd-linux-x64-musl@5.2.0: + resolution: {integrity: sha512-6DgIxJpS7L4bb1DkYrqC0SflMY2/2/3Dl0kZJ1In6SeSENcTaZ12W1zX3kNf7wVUDFgPi94TuSxrw3N2TqRhRg==} cpu: [x64] os: [linux] libc: [musl] - jscpd-windows-arm64-msvc@5.1.2: - resolution: {integrity: sha512-19gpnY+Mid71EGGytBcFwsif/Y1+Vfu2Qp0IJ+L3WFD32Zui9O4vvASwvxocgA7z77kiZNh9zF5sZY9+oQB62A==} + jscpd-windows-arm64-msvc@5.2.0: + resolution: {integrity: sha512-DI84oCG+L5sYhmYanXjjydXlFzC194/NJA6F7W8cmOI1rKSnWrgIjUtvTmXumygwTK/eAXkK7rFBqFnyiLEzdw==} cpu: [arm64] os: [win32] - jscpd-windows-x64-msvc@5.1.2: - resolution: {integrity: sha512-RZlAnXP7Jmx39LBC66IIpFIGl/Bg4FcSkz4Jr6ThrDm5D1NvM201MDG70Z1i+N3wRrfI8UcDkWp5rsHzGHViSA==} + jscpd-windows-x64-msvc@5.2.0: + resolution: {integrity: sha512-EH4chck2EIehosfy7q6hxaKgzlaZv/dZhUHtjBmBf81d5/ZDfa6BsKw2gM8PSoNC0QXznWXv9uQcFWsV+P9v8A==} cpu: [x64] os: [win32] - jscpd@5.1.2: - resolution: {integrity: sha512-7innyzaMstgJcluIwLxUESsP7znUFtRxiENhcUzv34aDrjzH3mJOF7m/5ecNyQGST8BBlmz8alpTuId0c6OdkQ==} + jscpd@5.2.0: + resolution: {integrity: sha512-6f4qhJGIeR/ZvAkZByfpPw5H28SNEE4fgJ4GXxVuLMiEg7xWrAlUdm0crIJPY6dmykvgdM83ZRrWJXg11fQlYg==} engines: {node: '>=18'} hasBin: true @@ -7719,9 +7671,6 @@ packages: resolution: {integrity: sha512-MT/xP0CrubFRNLNKvxJ2BYfy53Zkm++5bX9dtuPbqAeQpTVe0MQTFhao8+Cp//EmJp244xt6Drw/GVEGCUj40g==} engines: {node: '>=12', npm: '>=6'} - jszip@3.10.1: - resolution: {integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==} - jszip@3.10.2: resolution: {integrity: sha512-3l+rb15IOWtUhU0H5MFqES/T6Kh7abYwjosBey/vD6hDt8zoEffkSC5Ws5SGtgVw3gBx2NEbhTeSW1+kWkpyTQ==} @@ -8001,8 +7950,9 @@ packages: engines: {node: '>=22.19.0'} hasBin: true - mailparser@3.9.20: - resolution: {integrity: sha512-PZ9RD6B7SkmyQ9rj8JvYNS18rL6pWoNkSw9KGVuJQrrdouFxFIB05ugnR3ubInlnjLXV3KHXhGyz8MlTz1VGzw==} + mailparser@3.9.23: + resolution: {integrity: sha512-5jpsKltHt9oudhMu6mXxiwWMWV/CILfly+m9xhKiKW6cdmfOVvcAZ/NCuChV6QlADJqx1e5E2hwDAkP7lTP+Lg==} + engines: {node: '>=20.0.0'} make-fetch-happen@16.0.1: resolution: {integrity: sha512-uUv1yxHzaKVVEPfcFeGSNov/Cehjv08ovlY8ImTljgL7Q+SiA0dAYLQ6SYVa2kkKqNj4Y3aZEI7xv2teadie0A==} @@ -8028,8 +7978,8 @@ packages: '@types/markdown-it': optional: true - markdown-it-emoji@3.0.0: - resolution: {integrity: sha512-+rUD93bXHubA4arpEZO3q80so0qgoFJEKRkRbjKX8RTdca89v2kfyF+xR3i2sQTwql9tpPZPOQN5B+PunspXRg==} + markdown-it-emoji@3.1.0: + resolution: {integrity: sha512-NhmMEH2ywduD4Nty1E8uB5NqfLhAT1VR0dyvoJyStKOqCzbZmVdn/+8wj7zpDsb/fLBikpCPsWwxqKlvMmbz4g==} markdown-it-task-lists@2.1.1: resolution: {integrity: sha512-TxFAc76Jnhb2OUu+n3yz9RMu4CwGfaT788br6HhEDlvWfdeJcLUsxk1Hgw2yJio0OXsxv7pyIPmvECY7bMbluA==} @@ -8051,8 +8001,8 @@ packages: engines: {node: '>= 20'} hasBin: true - marked@18.0.11: - resolution: {integrity: sha512-HnslJfsZkRPBDJRHvVtAaWlZHEpSu7u8LgQuJCELjRKuWR+hpq4A7sLq3p8HaI9ypVoXDXxV34CsQJEe1+J5Aw==} + marked@18.0.12: + resolution: {integrity: sha512-LEm4ga2YeI2T3GVHj9b0BaDPPk93LLTHMFeMyQbNIzPxc8vCI0y/scy0ZA6z6lXKyT9j9Nhl/OC6ZYKYGuFScA==} engines: {node: '>= 20'} hasBin: true @@ -8075,8 +8025,8 @@ packages: resolution: {integrity: sha512-jXXFLlaA25zQ2oxXCgbAEubGC8KpF8OabSf387W0RXfkwqhNXEbU+veeUaZMT+bCbyE5nDxkN3iBy038VbntQg==} engines: {node: '>=22.0.0'} - matrix-widget-api@1.18.0: - resolution: {integrity: sha512-4T2f2koWmx05p1BLcT/9YGGGPSXpPT+PA4Oap/5fjhXsWPxMGJiGL97YpANMYLKsnE1sScYFeuyxIgdc1Qo+Ew==} + matrix-widget-api@1.19.0: + resolution: {integrity: sha512-Qe7L6G1mQJphBC47/Bzp5ljPIK1UARgLiuGgS+/KmEs/eaNHkQ3+ArD0/0kvMV+d6kCGAZ9OKRqsnuPjizI+tw==} maxmind@5.0.7: resolution: {integrity: sha512-+w637dwfv01MKjkrp4sKDBTEKHLPvWLYb647QTjiz3wG/teSemqudIKNShaS6eqZ7ffxC9oZlQQgIqY0rGojog==} @@ -8129,8 +8079,8 @@ packages: resolution: {integrity: sha512-kOy3OxT2HH39N70UnKgu4NWDZjLOz8W/mfyvniHjRH/DrL3f2pOfvWQ4p60offbbtDAnXWp0v9LfMIqMec269Q==} engines: {node: '>=18'} - mediabunny@1.55.2: - resolution: {integrity: sha512-EEx4O6qYddAdCyWPMZNDwI7uc5hewNHrPAf9jLcVhIbXoPsiqNQ+D9i1pfadmGkjN2V318jSrZljkpoziYm6Lg==} + mediabunny@1.56.0: + resolution: {integrity: sha512-VLVYEVXI4fA2PabQoZs3XOmxDsio4gpG1Npz0iVICRNCQ+XYI3fBOngnwHljafaEjHUbYzrIDoctZbxcVfQpgQ==} meow@14.1.0: resolution: {integrity: sha512-EDYo6VlmtnumlcBCbh1gLJ//9jvM/ndXHfVXIFrZVr6fGcwTUyCTFNTLCKuY3ffbK8L/+3Mzqnd58RojiZqHVw==} @@ -8368,8 +8318,8 @@ packages: resolution: {integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==} hasBin: true - node-pty@1.2.0-beta.14: - resolution: {integrity: sha512-XORU9BQgpxVgqr7WivjJ17mLenOHUgKKWzuZZNaw3NDYgHc/wPJQMSaoLDrpEgqV6aU1nNwil1o/OqYj6lWmUA==} + node-pty@1.2.0-beta.15: + resolution: {integrity: sha512-vORSzHXi4Ofl7HemVWpuudLqCPdaQb4LfpRCUpE5HPxhp4JYscl8zZwxh11p26v2wvW24WMwnMfLjhRLixrfxA==} node-wav@0.0.2: resolution: {integrity: sha512-M6Rm/bbG6De/gKGxOpeOobx/dnGuP0dz40adqx38boqHhlWssBJZgLCPBNtb9NkrmnKYiV04xELq+R6PFOnoLA==} @@ -8410,12 +8360,12 @@ packages: resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} engines: {node: '>= 0.4'} - obug@2.1.4: - resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + obug@2.2.1: + resolution: {integrity: sha512-XrsrhT5sybtKI6wakr2SPOlGZWWYbUXZ7a0jT8/QOeAPau+1X/bSegNe5YR75oJmEZQbKningirmGOEJCIk61Q==} engines: {node: '>=12.20.0'} - ogg-opus-decoder@1.7.3: - resolution: {integrity: sha512-w47tiZpkLgdkpa+34VzYD8mHUj8I9kfWVZa82mBbNwDvB1byfLXSSzW/HxA4fI3e9kVlICSpXGFwMLV1LPdjwg==} + ogg-opus-decoder@1.7.5: + resolution: {integrity: sha512-08WfRbuBBew1H63PqQ3zj2B/J0Eh9ISfNOTi+Dk6vuXmkBGSx8BiPJGOJ470EYeKezTa7/GhOAwHe3XlXwOZMw==} on-exit-leak-free@2.1.2: resolution: {integrity: sha512-0eJJY6hXLGf1udHwfNftBqH+g73EU4B504nZeKpz1sYRKafAghwxEJunB2O7rDZkL4PGfsMVnTXZ2EjibbqcsA==} @@ -8438,16 +8388,16 @@ packages: resolution: {integrity: sha512-YgBpdJHPyQ2UE5x+hlSXcnejzAvD0b22U2OuAP+8OnlJT+PjWPxtgmGqKKc+RgTM63U9gN0YzrYc71R2WT/hTA==} engines: {node: '>=18'} - open@11.0.1: - resolution: {integrity: sha512-NzwMUB6C1D0+Kd+9iMS/H4k+Ck3cTX6Ckyfr/gAGlmvSE1LUQZnEZvWBi4PYmMwH/S5SMeTXnE+9uAz8uF+pWw==} + open@11.0.2: + resolution: {integrity: sha512-RWqF+pBSkqecEvCKOn8QYhaNdRMJDZRIrlS/7rTDdLHaPcfXGCZ/h8zb413NfvdeAV0MR7T1yJcA34/q+CSm1Q==} engines: {node: '>=20'} openai@4.29.2: resolution: {integrity: sha512-cPkT6zjEcE4qU5OW/SoDDuXEsdOLrXlAORhzmaguj5xZSPlgKvLhi27sFWhLKj07Y6WKNWxcwIbzm512FzTBNQ==} hasBin: true - openai@7.10.0: - resolution: {integrity: sha512-sn9t2Kls7O52PwuF9BUTYNu4Gk/r0lXJyrgaNht4TNRlZFb3dJIGO0RciSgjARGCBRtWjySubAQFJttlzUvGQQ==} + openai@7.12.1: + resolution: {integrity: sha512-D0d8NevCWPe+cxE5kw/ZaBRh1Od4FfhRmD6FlNeLN1j96Xll5MYEJTbaFF9/F3eQHJANjrSuq2nWBCpVT+TmnQ==} engines: {node: '>=22.0.0'} peerDependencies: '@aws-sdk/credential-provider-node': 3.972.82 @@ -8470,11 +8420,11 @@ packages: zod: optional: true - opus-decoder@0.7.11: - resolution: {integrity: sha512-+e+Jz3vGQLxRTBHs8YJQPRPc1Tr+/aC6coV/DlZylriA29BdHQAYXhvNRKtjftof17OFng0+P4wsFIqQu3a48A==} + opus-decoder@0.7.12: + resolution: {integrity: sha512-6zpHFDi/MhYvMwyYiuJPqJ2lcRkfm7wHblSvT3lUtx/kLvHkunoe/rhTn1dLKxqVGLeQj3gQi7CnR0N2p3RuOg==} - oxfmt@0.66.0: - resolution: {integrity: sha512-FfvqR8RFtV6JJpRrpkfqyVCQ7HDvZ/VriWFx7veftCgL1B5ZO9qNr+1rvPieycMQnNfVG0PWyJQiy7p0hq1I5w==} + oxfmt@0.67.0: + resolution: {integrity: sha512-vV7sSiPsaO0mSxdoUdayipVDFPzW/UQ+hrezEHa20+Tx1dnMdZLSRHMT0PdS67FFbhd74M1n08asW21aLGeCrA==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -8490,8 +8440,8 @@ packages: resolution: {integrity: sha512-KjK/XLcXr1DSyonKhsuFqJRiuKqcyG9j3LJ8nkOsrLzGvodBPqzHOKauy10asLMDI0sUpvb+1sxlzff3udZvfg==} hasBin: true - oxlint@1.81.0: - resolution: {integrity: sha512-HyrJYqeoOCL0iqaLEzGewGT48ZX99P3hxYh8udAF9RGGIghSamkXE4ClUyBpEDNqasamThgmlPbuMOe7SAZmHg==} + oxlint@1.82.0: + resolution: {integrity: sha512-+iFM1BGw1ntYJt3QngbJmjbrGxPaKMUADOXOijpWGnYcBPq8YZnQftSS1C+pVcDYy9YxqDVJKQqQkTazTQMboQ==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -8535,8 +8485,8 @@ packages: resolution: {integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==} engines: {node: '>=8'} - p-retry@8.0.0: - resolution: {integrity: sha512-kFVqH1HxOHp8LupNsOys7bSV09VYTRLxarH/mokO4Rqhk6wGi70E0jh4VzvVGXfEVNggHoHLAMWsQqHyU1Ey9A==} + p-retry@8.0.1: + resolution: {integrity: sha512-NAigyu8hfvJe7MsS18mnc4is0MZtau3QMdBklaJKK23oBQb6occO3UPM3vHmTckW8KhfyjMZaUOqdTFEYliHgg==} engines: {node: '>=22'} p-timeout@3.2.0: @@ -8708,8 +8658,8 @@ packages: yaml: optional: true - postcss-safe-parser@7.0.1: - resolution: {integrity: sha512-0AioNCJZ2DPYz5ABT6bddIqlhgwhpHZ/l65YAYo0BCIn0xiDpsnTHz0gnoTGk0OXZW0JRs+cDwL8u/teRdz+8A==} + postcss-safe-parser@7.1.0: + resolution: {integrity: sha512-1WzZxRLaAFwEh6Do+zyGpjWV3nGJNxxhuh7Ubu/q1ICImMgZJnLwhoaEpRbG4pJppp2Y1ncL9ffA2f+LhrefQg==} engines: {node: '>=18.0'} peerDependencies: postcss: ^8.4.31 @@ -8729,8 +8679,8 @@ packages: resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} engines: {node: '>=20'} - powershell-utils@0.2.0: - resolution: {integrity: sha512-ZlsFlG7MtSFCoc5xreOvBAozCJ6Pf06opgJjh9ONEv418xpZSAzNjstD36C6+JwOnfSqOW/9uDkqKjezTdxZhw==} + powershell-utils@0.2.1: + resolution: {integrity: sha512-C+y9x90UElAddDZmV4qOx9W53B61PO7cIqWz2dQsWlwswuq4mr8NEwytdGKboYbQlGZ3awrkTeNvcZiZNHnQ8A==} engines: {node: '>=20'} pretty-ms@9.3.1: @@ -8838,8 +8788,8 @@ packages: resolution: {integrity: sha512-hek2mFQpPuI4E1BBKrSto+BU3e3x4xuarsbiwr3+lf7p44juvFMV0XFWQAP3xUyqXA4RrXLIoaSUGbSt056ZMw==} engines: {node: '>= 0.6'} - rastermill@0.3.2: - resolution: {integrity: sha512-Qr4Q+PKsAyAPn4sHwY+hJ2P7rv+WJ4HZ8X+KjwVmm0tOpkb1IrtCb7sbwDZ8iJLUgiYafhmG4VHwo7Pjej0pgQ==} + rastermill@0.3.3: + resolution: {integrity: sha512-tnNH+jymMZxcGfR+w32fbD9xpDytCrHEyYx/OCFTTIf2gAcaiasUSurBA3lObRrRHy1leitG0QRfJB6mV/SJ4w==} engines: {node: '>=22'} raw-body@3.0.2: @@ -8850,15 +8800,6 @@ packages: resolution: {integrity: sha512-xLgQil4kIUCrAzVk9fRSkxkFNwmygLFjVxXrLc65aE1F0+Zsb8rxumFBy4XKyvgMCTL6kilDq3EZ0piE2dP/Dg==} engines: {node: '>=18.0.0'} - react-dom@19.2.8: - resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} - peerDependencies: - react: ^19.2.8 - - react@19.2.8: - resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} - engines: {node: '>=0.10.0'} - readable-stream@2.3.8: resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} @@ -8970,11 +8911,6 @@ packages: vue-tsc: optional: true - rolldown@1.2.5: - resolution: {integrity: sha512-VD2IE5PUG4Oj8zz2VGykiYd5wbnjdIiSsNQb8Qu5B+noEp+A78mu2iVvpp27g8es14Tk9rofNs5Tku9iQCS4fA==} - engines: {node: ^20.19.0 || >=22.12.0} - hasBin: true - rolldown@1.2.7: resolution: {integrity: sha512-g0EtLvBjTUB7jhyV0S/TCup3v/XSVl45vUIGbOGU4QPiyjTenCe4mKuFvW9fEgYmS2Fo42AUssRmNuMziXdrig==} engines: {node: ^20.19.0 || >=22.12.0} @@ -9014,9 +8950,6 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.27.0: - resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} - sdp-transform@3.0.0: resolution: {integrity: sha512-gfYVRGxjHkGF2NPeUWHw5u6T/KGFtS5/drPms73gaSuMaVHKCY3lpLnGDfswVQO0kddeePoti09AwhYP4zA8dQ==} hasBin: true @@ -9131,8 +9064,8 @@ packages: resolution: {integrity: sha512-WlMj/67cEJ6MDI1OcsnjuYKDNDoyPCCYZ249kuuXPiMDw9F8PXkVaQ7YWu3siTydfQ/4BEZcvGzu+aYvz7dDCQ==} engines: {node: '>= 20'} - socks@2.8.9: - resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} + socks@2.8.10: + resolution: {integrity: sha512-e0VyvkVTwVYViNovRkZ9aodhxVlyoMn7eJhVUPxZ+eK9P/7CBkxvvsBOHqFPEH416726W8tLXXXjKwqgTErrCQ==} engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} sonic-boom@4.2.1: @@ -9198,8 +9131,8 @@ packages: stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} - standardwebhooks@1.0.0: - resolution: {integrity: sha512-BbHGOQK9olHPMvQNHWul6MYlrRTAOKn03rOe4A8O3CLWhNf4YHBqq2HJKKC+sfqpxiBY52pNeesD6jIiLDz8jg==} + standardwebhooks@1.1.1: + resolution: {integrity: sha512-bCbX9ZEyFkWPsRz7Bl3NuQUJohmwGSev/yhr7vhaGPlc4AfIrspIRa6cPTBuI1ItmrTDJ4d/S2hCsfe4+vQGnQ==} statuses@2.0.2: resolution: {integrity: sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==} @@ -9208,8 +9141,8 @@ packages: std-env@4.2.0: resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} - streamx@2.28.0: - resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} + streamx@2.28.1: + resolution: {integrity: sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==} strictdom@1.0.1: resolution: {integrity: sha512-cEmp9QeXXRmjj/rVp9oyiqcvyocWab/HaoN4+bwFeZ7QzykJD6L3yD4v12K1x0tHpqRqVpJevN3gW7kyM39Bqg==} @@ -9304,8 +9237,8 @@ packages: resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} engines: {node: '>=6'} - tar-stream@3.2.0: - resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} + tar-stream@3.2.1: + resolution: {integrity: sha512-nqsEO8zLZJvrOMdEwkA0QdCLFbetHMn95Zqu4fKwX+hkaTWJPZZOrxx/PwtxoK0MMGQmBQNRW3CPs8IFYQz4cQ==} tar@7.5.22: resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} @@ -9347,8 +9280,8 @@ packages: resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} engines: {node: '>=12.0.0'} - tinypool@2.1.0: - resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + tinypool@2.1.2: + resolution: {integrity: sha512-9YodfrxS9g9IbFr/KOjE5bAeJ0p61n3bW6mqvy0jtoeKd1kTW1Cxm0oulm6KX2lyM9Gl6WIe8nEbY7LWv5ZJww==} engines: {node: ^20.0.0 || >=22.0.0} tinyrainbow@3.1.1: @@ -9359,15 +9292,15 @@ packages: resolution: {integrity: sha512-QXqwfEl9ddlGBaRFXIvNKK6OhipSiLXuRuLJX5DErz0o0Q0rYxulWLdFryTkV5PkdZct5iMInwYEGe/eR++1AA==} hasBin: true - tldts-core@7.4.11: - resolution: {integrity: sha512-CW3WN2rIIE/Of21mulhgnGOwoDyEFNygyIBOONSdyAuSATgMMUCpLeUlB+E8sAwA5xRV9hYPl+kyZ9citHCaKg==} + tldts-core@7.4.12: + resolution: {integrity: sha512-nYNzS2WRf4QJmjzFFgAxLOBjyBxAGRbCy9PVBPaglcYyYajh40VBn+v5Ngr96ZMc7oM0+aCJdtQnNejvdBnXMQ==} tldts@7.4.10: resolution: {integrity: sha512-GgouD1B+sWwvkaEq8vXC15DjQitxbvs12oIXELpconwm+Tg3zfcEv4jgzq3vtKverDXsg3VI8aRgNL2Nra0Iog==} hasBin: true - tldts@7.4.11: - resolution: {integrity: sha512-aBiNayCfTQxuIJBm06M+xR14cYaYlDlSXZbgsnKzKNxDKUVq7KFwTjwBSsb7m9Y5xO8WfPnBc63WaYFMTGlvqw==} + tldts@7.4.12: + resolution: {integrity: sha512-WylhSDKVeYnWXL3a+vKTaOxjnOeEGw938hImY8zoRWJjRRK/Jp1K+IihBzIONpUmW4e3WmXT6q5FW6vlESVZCA==} hasBin: true to-regex-range@5.0.1: @@ -9499,8 +9432,8 @@ packages: resolution: {integrity: sha512-faYHw0anBbc/kWF3zFTEnxSFOAGUX9GFbOBthvDdLsIlEoWOFOtS0zgCiQYwIskL9iGXZL3kAXD8OoZ4GmMATA==} engines: {node: '>= 18'} - typebox@1.3.27: - resolution: {integrity: sha512-zu+jc1pcy4UiNThxikUr36f0Rybk9PEeCg/NE6adeWr/SKsdNO4EzZHYRDlv2YCVAfj3Odq3dESSo/jNyoBXzA==} + typebox@1.3.30: + resolution: {integrity: sha512-vRmBLzlaq9O9dvfGmI5CssLGvDC/R594kH6N/Q1uUU5VPO3PTgQMlWe/UVNdNVTr2EET+FX8BWZkFdYgxTglbQ==} typescript@5.2.2: resolution: {integrity: sha512-mI4WrpHsbCIcwT9cF4FZvr80QUeKvsUsUvKDoR+X/7XHQH98xYD8YHZg7ANtz2GtZt/CBq2QJ0thkGJMHfqc1w==} @@ -9553,11 +9486,11 @@ packages: undici-types@7.24.6: resolution: {integrity: sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==} - undici-types@8.10.0: - resolution: {integrity: sha512-ibvdovq3nCFs8Msrd95BW+zUOq+aOVbT+wpHUoPWhztbHEoPc6oof51iFDB6Es8lTKvNvVW9jNSAB8dwrKTMGg==} + undici-types@8.10.2: + resolution: {integrity: sha512-7/+aSjzkUoLc92hV22bTW4aGanXf800zbwguhcICs0OAoCF9wDOE4wkopQ+SqfhXZm8mCK8gHpdTs7pZUWzK3w==} - undici-types@8.3.0: - resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + undici-types@8.9.0: + resolution: {integrity: sha512-KTDyRTYX8sWmKXAikPHHSyc63CRPETMctyjKFupcC6OBLXT3xsN0e9aF7m+mIXutFWpUXuedtowG7iLOzp0kQg==} undici@7.29.1: resolution: {integrity: sha512-RYONW2MeafgYlkVOKYKkA/Ag7BmXqgIWCa8t1m0JcxrQg9pI9lEqRhAOruOBCbAohOa/gkCF+iPi9hrgvTzu6Q==} @@ -9732,12 +9665,12 @@ packages: resolution: {integrity: sha512-kdjOSJ2lLIn7r1rtrMbbNCHjyMPfRnowdKjBQ+mGq6NAW5QY2bEZC/khaC5OR8svbbjvLEaIXkOq45e2X9BIbQ==} engines: {node: '>=14.0.0'} - vscode-jsonrpc@9.0.1: - resolution: {integrity: sha512-rfuA6T75H6m5EkbhtEPzre9pT0HPcDI2MMy4+nPFIBks5J8JBAUHD4tRYSgaBOijIEC7SRkC1kKyXTLqbmh9jw==} + vscode-jsonrpc@9.0.2: + resolution: {integrity: sha512-SbQSV9yRemARxeXw6LU5sS6Zq0e9/DgCCX5yelH263ZQWukbTk8EF8fjTrr1dziasf4GwlJbvTwFnTrnQFWZXQ==} engines: {node: '>=14.0.0'} - vscode-languageserver-textdocument@1.0.13: - resolution: {integrity: sha512-nx0ZHwMGIsVkzFG3/VLeJYBLTaFBRuNdGDvevvjuoayU5EOS2fEYazOhtCM3PI9ClMMg5igc0uwXtAq4tJj+Dw==} + vscode-languageserver-textdocument@1.0.14: + resolution: {integrity: sha512-EQyqJMi552E4ZTf46izQ4Fj6XquqxCySR3J5ZSD1SisMf6RfpeOWHxGBE8Gr6V0/3GHIGdAzDn8F8+1nTGCnoQ==} vscode-languageserver-types@3.16.0-next.2: resolution: {integrity: sha512-QjXB7CKIfFzKbiCJC4OWC8xUncLsxo19FzGVp/ADFvvi87PlmBSCAtZI5xwGjF5qE0xkLf0jjKUn3DzmpDP52Q==} @@ -9926,14 +9859,14 @@ packages: resolution: {integrity: sha512-xYqdZFUK/VYazNl/oCDYN+3WloWQwMfZxBoiNt6qNyk+xfOdi598muWE42rNZFp1kNOiqW936q5RhUdnpqElSg==} engines: {node: '>=18'} - yuku-ast@0.9.3: - resolution: {integrity: sha512-Kt0PXlPCXdKF1fWFTl7N3DaxsVk6DHF8VAXHJMkwPtJnWYgbx20pYgGSweuC/86mIM7k1NUITQ4JffgOLUWTCw==} + yuku-ast@0.9.5: + resolution: {integrity: sha512-Q8qW8WwQnN5Cm0ZZivdRIfv0sRLTjUq0YumXJkw8CYN1aCdICH9rk4C47/4n6kA5EqDtlj+F608twoTSV2MwdQ==} - yuku-codegen@0.9.3: - resolution: {integrity: sha512-7oTWwetHiMSyrVPFb8089lBBqkU1gaeQZyumNBJ0t5hocMQRaWhnMeSXTz7J1xm/rcw9+ePsajORdZbub2C35w==} + yuku-codegen@0.9.5: + resolution: {integrity: sha512-zGUVyDpSK4b6c9B0yyxi2P0wujn1XZTbG9dCb7d6gyAoP63EMgyLzUwPUvwxPG5jgYqhlI7w+S3oCyapqGr4PA==} - yuku-parser@0.9.3: - resolution: {integrity: sha512-96wPoHnwaXfkZv7UIOUkDb+s7ZH8lv8Qtg+MxdvHUV1LFa5jV9iKOaams1942YQt+krFQrWiD6lSg2ermv5kHA==} + yuku-parser@0.9.5: + resolution: {integrity: sha512-IBnAdNVMswWbJcM7woPluOudectJzFjJ1N8jVRxP9Uq4CIv5hZdBIcdmtRbFDYF/Ph2j2gVup4YJ4N9mh0jYFA==} zca-js@2.1.2: resolution: {integrity: sha512-82+zCqoIXnXEF6C9YuN3Kf7WKlyyujY/6Ejl2n8PkwazYkBK0k7kiPd8S7nHvC5Wl7vjwGRhDYeAM8zTHyoRxQ==} @@ -9947,9 +9880,6 @@ packages: zod@3.25.76: resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} - zod@4.4.3: - resolution: {integrity: sha512-ytENFjIJFl2UwYglde2jchW2Hwm4GJFLDiSXWdTrJQBIN9Fcyp7n4DhxJEiWNAJMV1/BqWfW/kkg71UDcHJyTQ==} - zod@4.5.4: resolution: {integrity: sha512-sC95tT5iHHH9gtpj6A81kh+NEaRAUFN+qlUPDUbRfOMvNf5QCBqsb3WgvnpVtK5Y+4UfA6KqufotuTvMGiTlsA==} @@ -9990,18 +9920,18 @@ snapshots: '@agentclientprotocol/sdk': 1.4.0(zod@4.5.4) '@openai/codex': 0.154.0 diff: 9.0.0 - open: 11.0.1 - vscode-jsonrpc: 9.0.1 + open: 11.0.2 + vscode-jsonrpc: 9.0.2 zod: 4.5.4 '@agentclientprotocol/sdk@1.4.0(zod@4.5.4)': dependencies: zod: 4.5.4 - '@antfu/install-pkg@1.1.0': + '@antfu/install-pkg@2.0.1': dependencies: package-manager-detector: 1.8.0 - tinyexec: 1.3.0 + tinyexec: 1.3.1 '@anthropic-ai/claude-agent-sdk-darwin-arm64@0.3.257': optional: true @@ -10045,7 +9975,7 @@ snapshots: '@anthropic-ai/sdk@0.124.0(zod@4.5.4)': dependencies: json-schema-to-ts: 3.1.1 - standardwebhooks: 1.0.0 + standardwebhooks: 1.1.1 optionalDependencies: zod: 4.5.4 @@ -10060,24 +9990,24 @@ snapshots: '@asamuzakjp/css-color@6.0.7': dependencies: '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) - '@csstools/css-color-parser': 4.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 lru-cache: 11.5.2 '@asamuzakjp/dom-selector@8.3.2': dependencies: - bidi-js: 1.0.3 + bidi-js: 1.1.0 css-tree: 3.2.1 is-potential-custom-element-name: 1.0.1 lru-cache: 11.5.2 - '@awesome.me/webawesome@3.12.0(patch_hash=a366a1422e3d8f0b9699205e969a73294877cbff761550bb360380e3ab9428f1)(@floating-ui/utils@0.2.12)(@types/node@26.4.1)(@types/react@19.2.18)': + '@awesome.me/webawesome@3.12.0(patch_hash=a366a1422e3d8f0b9699205e969a73294877cbff761550bb360380e3ab9428f1)(@floating-ui/utils@0.2.12)(@types/node@26.5.0)(@types/react@19.2.18)': dependencies: '@ctrl/tinycolor': 4.1.0 '@floating-ui/dom': 1.8.0 '@konnorr/qr-creator': 1.1.0 - '@lit-labs/ssr': 4.1.0(@types/node@26.4.1) + '@lit-labs/ssr': 4.1.0(@types/node@26.5.0) '@lit-labs/ssr-client': 1.1.8 '@lit/context': 1.1.6 '@lit/react': 1.0.8(@types/react@19.2.18) @@ -10100,34 +10030,34 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/client-bedrock-runtime@3.1127.0': + '@aws-sdk/client-bedrock-runtime@3.1128.0': dependencies: '@aws-sdk/core': 3.977.9 '@aws-sdk/credential-provider-node': 3.972.82 '@aws-sdk/eventstream-handler-node': 3.972.34 '@aws-sdk/middleware-eventstream': 3.972.29 '@aws-sdk/middleware-websocket': 3.972.52 - '@aws-sdk/token-providers': 3.1127.0 + '@aws-sdk/token-providers': 3.1128.0 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 + '@smithy/fetch-http-handler': 5.8.0 '@smithy/node-http-handler': 4.12.1 '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/client-bedrock@3.1127.0': + '@aws-sdk/client-bedrock@3.1128.0': dependencies: '@aws-sdk/core': 3.977.9 '@aws-sdk/credential-provider-node': 3.972.82 - '@aws-sdk/token-providers': 3.1127.0 + '@aws-sdk/token-providers': 3.1128.0 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 + '@smithy/fetch-http-handler': 5.8.0 '@smithy/node-http-handler': 4.12.1 '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/client-s3@3.1127.0': + '@aws-sdk/client-s3@3.1128.0': dependencies: '@aws-sdk/checksums': 3.1000.29 '@aws-sdk/core': 3.977.9 @@ -10136,7 +10066,7 @@ snapshots: '@aws-sdk/signature-v4-multi-region': 3.996.46 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 + '@smithy/fetch-http-handler': 5.8.0 '@smithy/node-http-handler': 4.12.1 '@smithy/types': 4.18.0 tslib: 2.8.1 @@ -10173,7 +10103,7 @@ snapshots: '@aws-sdk/core': 3.977.9 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 + '@smithy/fetch-http-handler': 5.8.0 '@smithy/node-http-handler': 4.12.1 '@smithy/types': 4.18.0 tslib: 2.8.1 @@ -10244,7 +10174,7 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/credential-providers@3.1117.0': + '@aws-sdk/credential-providers@3.1128.0': dependencies: '@aws-sdk/core': 3.977.9 '@aws-sdk/credential-provider-cognito-identity': 3.972.69 @@ -10291,7 +10221,7 @@ snapshots: '@aws-sdk/core': 3.977.9 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 + '@smithy/fetch-http-handler': 5.8.0 '@smithy/signature-v4': 5.7.3 '@smithy/types': 4.18.0 tslib: 2.8.1 @@ -10302,12 +10232,12 @@ snapshots: '@aws-sdk/signature-v4-multi-region': 3.996.46 '@aws-sdk/types': 3.974.5 '@smithy/core': 3.33.3 - '@smithy/fetch-http-handler': 5.7.2 + '@smithy/fetch-http-handler': 5.8.0 '@smithy/node-http-handler': 4.12.1 '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/s3-request-presigner@3.1127.0': + '@aws-sdk/s3-request-presigner@3.1128.0': dependencies: '@aws-sdk/core': 3.977.9 '@aws-sdk/signature-v4-multi-region': 3.996.46 @@ -10332,7 +10262,7 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1127.0': + '@aws-sdk/token-providers@3.1128.0': dependencies: '@aws-sdk/core': 3.977.9 '@aws-sdk/nested-clients': 3.997.44 @@ -10358,7 +10288,7 @@ snapshots: '@aws/bedrock-token-generator@1.1.0': dependencies: - '@aws-sdk/credential-providers': 3.1117.0 + '@aws-sdk/credential-providers': 3.1128.0 '@aws-sdk/util-format-url': 3.972.46 '@smithy/config-resolver': 4.7.2 '@smithy/hash-node': 4.5.2 @@ -10382,7 +10312,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@azure/core-client@1.11.0(supports-color@10.2.2)': + '@azure/core-client@1.11.1(supports-color@10.2.2)': dependencies: '@azure/abort-controller': 2.2.0 '@azure/core-auth': 1.11.0(supports-color@10.2.2) @@ -10403,7 +10333,7 @@ snapshots: '@azure/core-tracing': 1.4.0 '@azure/core-util': 1.14.0(supports-color@10.2.2) '@azure/logger': 1.4.0(supports-color@10.2.2) - '@typespec/ts-http-runtime': 0.3.8(supports-color@10.2.2) + '@typespec/ts-http-runtime': 0.3.9(supports-color@10.2.2) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -10415,7 +10345,7 @@ snapshots: '@azure/core-util@1.14.0(supports-color@10.2.2)': dependencies: '@azure/abort-controller': 2.2.0 - '@typespec/ts-http-runtime': 0.3.8(supports-color@10.2.2) + '@typespec/ts-http-runtime': 0.3.9(supports-color@10.2.2) tslib: 2.8.1 transitivePeerDependencies: - supports-color @@ -10424,13 +10354,13 @@ snapshots: dependencies: '@azure/abort-controller': 2.2.0 '@azure/core-auth': 1.11.0(supports-color@10.2.2) - '@azure/core-client': 1.11.0(supports-color@10.2.2) + '@azure/core-client': 1.11.1(supports-color@10.2.2) '@azure/core-process': 1.0.0 '@azure/core-rest-pipeline': 1.25.0(supports-color@10.2.2) '@azure/core-tracing': 1.4.0 '@azure/core-util': 1.14.0(supports-color@10.2.2) '@azure/logger': 1.4.0(supports-color@10.2.2) - '@azure/msal-browser': 5.19.0 + '@azure/msal-browser': 5.21.0 '@azure/msal-node': 5.6.0 open: 10.2.0 tslib: 2.8.1 @@ -10439,17 +10369,19 @@ snapshots: '@azure/logger@1.4.0(supports-color@10.2.2)': dependencies: - '@typespec/ts-http-runtime': 0.3.8(supports-color@10.2.2) + '@typespec/ts-http-runtime': 0.3.9(supports-color@10.2.2) tslib: 2.8.1 transitivePeerDependencies: - supports-color - '@azure/msal-browser@5.19.0': + '@azure/msal-browser@5.21.0': dependencies: - '@azure/msal-common': 16.13.0 + '@azure/msal-common': 16.14.0 '@azure/msal-common@16.13.0': {} + '@azure/msal-common@16.14.0': {} + '@azure/msal-node@5.6.0': dependencies: '@azure/msal-common': 16.13.0 @@ -10538,19 +10470,19 @@ snapshots: '@chevrotain/types@11.1.2': {} - '@clack/core@1.4.3': + '@clack/core@1.5.0': dependencies: fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clack/prompts@1.7.0': + '@clack/prompts@1.8.0': dependencies: - '@clack/core': 1.4.3 + '@clack/core': 1.5.0 fast-string-width: 3.0.2 fast-wrap-ansi: 0.2.2 sisteransi: 1.0.5 - '@clawdbot/lobster@2026.6.11': + '@clawdbot/lobster@2026.9.8': dependencies: ajv: 8.20.0 yaml: 2.9.0 @@ -10614,7 +10546,7 @@ snapshots: '@codemirror/lang-java@6.0.2': dependencies: '@codemirror/language': 6.12.4 - '@lezer/java': 1.1.3 + '@lezer/java': 1.1.4 '@codemirror/lang-javascript@6.2.5': dependencies: @@ -10677,7 +10609,7 @@ snapshots: '@codemirror/language': 6.12.4 '@codemirror/state': 6.7.4 '@lezer/common': 1.5.2 - '@lezer/php': 1.0.5 + '@lezer/php': 1.0.6 '@codemirror/lang-python@6.2.1': dependencies: @@ -10768,7 +10700,7 @@ snapshots: '@codemirror/lang-xml': 6.1.0 '@codemirror/lang-yaml': 6.1.3 '@codemirror/language': 6.12.4 - '@codemirror/legacy-modes': 6.5.3 + '@codemirror/legacy-modes': 6.5.4 '@codemirror/language@6.12.4': dependencies: @@ -10779,7 +10711,7 @@ snapshots: '@lezer/lr': 1.4.10 style-mod: 4.1.3 - '@codemirror/legacy-modes@6.5.3': + '@codemirror/legacy-modes@6.5.4': dependencies: '@codemirror/language': 6.12.4 @@ -10800,9 +10732,9 @@ snapshots: style-mod: 4.1.3 w3c-keyname: 2.2.8 - '@copilotkit/aimock@1.39.0(vitest@5.0.0)': + '@copilotkit/aimock@1.40.0(vitest@5.0.0)': optionalDependencies: - vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) '@csstools/color-helpers@6.1.1': {} @@ -10811,7 +10743,7 @@ snapshots: '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) '@csstools/css-tokenizer': 4.0.0 - '@csstools/css-color-parser@4.2.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + '@csstools/css-color-parser@4.2.2(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': dependencies: '@csstools/color-helpers': 6.1.1 '@csstools/css-calc': 3.3.0(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) @@ -11022,10 +10954,6 @@ snapshots: '@eshaz/web-worker@1.2.2': {} - '@exodus/bytes@1.15.1(@noble/hashes@2.3.0)': - optionalDependencies: - '@noble/hashes': 2.3.0 - '@exodus/bytes@1.15.1(@noble/hashes@2.4.0)': optionalDependencies: '@noble/hashes': 2.4.0 @@ -11078,7 +11006,7 @@ snapshots: dependencies: koffi: 3.2.1 vscode-jsonrpc: 8.2.1 - zod: 4.4.3 + zod: 4.5.4 optionalDependencies: '@github/copilot-sdk-darwin-arm64': 1.0.13 '@github/copilot-sdk-darwin-x64': 1.0.13 @@ -11157,15 +11085,15 @@ snapshots: transitivePeerDependencies: - supports-color - '@hono/node-server@2.1.1(hono@4.13.4)': + '@hono/node-server@2.1.1(hono@4.13.7)': dependencies: - hono: 4.13.4 + hono: 4.13.7 '@iconify/types@2.0.0': {} - '@iconify/utils@3.1.4': + '@iconify/utils@3.1.7': dependencies: - '@antfu/install-pkg': 1.1.0 + '@antfu/install-pkg': 2.0.1 '@iconify/types': 2.0.0 import-meta-resolve: 4.2.0 @@ -11175,17 +11103,17 @@ snapshots: '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@jridgewell/trace-mapping': 0.3.31 '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/sourcemap-codec@1.5.5': {} + '@jridgewell/sourcemap-codec@1.6.0': {} '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 '@js-sdsl/ordered-map@4.4.2': {} @@ -11274,7 +11202,7 @@ snapshots: '@lancedb/lancedb-win32-x64-msvc@0.38.0': optional: true - '@lancedb/lancedb@0.38.0(@types/node@26.4.1)(apache-arrow@18.1.0)': + '@lancedb/lancedb@0.38.0(@types/node@26.5.0)(apache-arrow@18.1.0)': dependencies: '@opentelemetry/api': 1.9.1 apache-arrow: 18.1.0 @@ -11287,7 +11215,7 @@ snapshots: '@lancedb/lancedb-linux-x64-musl': 0.38.0 '@lancedb/lancedb-win32-arm64-msvc': 0.38.0 '@lancedb/lancedb-win32-x64-msvc': 0.38.0 - '@types/node': 26.4.1 + '@types/node': 26.5.0 openai: 4.29.2 transitivePeerDependencies: - encoding @@ -11339,7 +11267,7 @@ snapshots: '@lezer/highlight': 1.2.3 '@lezer/lr': 1.4.10 - '@lezer/java@1.1.3': + '@lezer/java@1.1.4': dependencies: '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 @@ -11366,7 +11294,7 @@ snapshots: '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 - '@lezer/php@1.0.5': + '@lezer/php@1.0.6': dependencies: '@lezer/common': 1.5.2 '@lezer/highlight': 1.2.3 @@ -11419,7 +11347,7 @@ snapshots: '@lit-labs/ssr-dom-shim@1.6.0': {} - '@lit-labs/ssr@4.1.0(@types/node@26.4.1)': + '@lit-labs/ssr@4.1.0(@types/node@26.5.0)': dependencies: '@lit-labs/ssr-client': 1.1.8 '@lit-labs/ssr-dom-shim': 1.6.0 @@ -11432,7 +11360,7 @@ snapshots: node-fetch: 3.3.2 parse5: 7.3.0 optionalDependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@lit/context@1.1.6': dependencies: @@ -11498,7 +11426,7 @@ snapshots: collapse-white-space: 2.1.0 devlop: 1.1.0 estree-util-is-identifier-name: 3.0.0 - estree-util-scope: 1.0.0 + estree-util-scope: 1.0.1 estree-walker: 3.0.3 hast-util-to-jsx-runtime: 2.3.6(supports-color@10.2.2) markdown-extensions: 2.0.0 @@ -11524,7 +11452,7 @@ snapshots: '@microsoft/mxc-sdk@0.8.0': dependencies: - node-pty: 1.2.0-beta.14 + node-pty: 1.2.0-beta.15 semver: 7.8.5 '@microsoft/teams.api@2.0.16(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2)': @@ -11570,7 +11498,7 @@ snapshots: - debug - supports-color - '@mistralai/mistralai@2.6.4(@opentelemetry/api@1.9.1)(@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1))(@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1))': + '@mistralai/mistralai@2.6.4(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/semantic-conventions': 1.43.0 ws: 8.21.3 @@ -11578,24 +11506,34 @@ snapshots: zod-to-json-schema: 3.25.2(zod@4.5.4) optionalDependencies: '@opentelemetry/api': 1.9.1 - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace-base': 2.10.0(@opentelemetry/api@1.9.1) transitivePeerDependencies: - bufferutil - utf-8-validate - '@modelcontextprotocol/ext-apps@1.7.5(@modelcontextprotocol/sdk@1.30.0(supports-color@10.2.2)(zod@4.5.4))(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(zod@4.5.4)': + '@modelcontextprotocol/client@2.0.0': dependencies: - '@modelcontextprotocol/sdk': 1.30.0(supports-color@10.2.2)(zod@4.5.4) + '@modelcontextprotocol/core': 2.0.0 + cross-spawn: 7.0.6 + eventsource: 3.0.7 + eventsource-parser: 3.1.1 + jose: 6.2.12 + pkce-challenge: 5.0.1 + zod: 4.5.4 + + '@modelcontextprotocol/core@2.0.0': + dependencies: + zod: 4.5.4 + + '@modelcontextprotocol/ext-apps@2.0.0(@modelcontextprotocol/client@2.0.0)(@modelcontextprotocol/core@2.0.0)(zod@4.5.4)': + dependencies: + '@modelcontextprotocol/client': 2.0.0 + '@modelcontextprotocol/core': 2.0.0 '@standard-schema/spec': 1.1.0 zod: 4.5.4 - optionalDependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) '@modelcontextprotocol/sdk@1.30.0(supports-color@10.2.2)(zod@4.5.4)': dependencies: - '@hono/node-server': 2.1.1(hono@4.13.4) + '@hono/node-server': 2.1.1(hono@4.13.7) ajv: 8.20.0 ajv-formats: 3.0.1(ajv@8.20.0) content-type: 1.0.5 @@ -11604,9 +11542,9 @@ snapshots: eventsource: 3.0.7 eventsource-parser: 3.1.1 express: 5.2.1(supports-color@10.2.2) - express-rate-limit: 8.6.2(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2) - hono: 4.13.4 - jose: 6.2.11 + express-rate-limit: 8.7.0(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2) + hono: 4.13.7 + jose: 6.2.12 json-schema-typed: 8.0.2 pkce-challenge: 5.0.1 raw-body: 3.0.2 @@ -11646,9 +11584,6 @@ snapshots: '@noble/hashes@2.0.1': {} - '@noble/hashes@2.3.0': - optional: true - '@noble/hashes@2.4.0': {} '@nodable/entities@3.0.0': {} @@ -11663,7 +11598,7 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.20.1 + fastq: 1.20.3 '@nolyfill/domexception@1.0.28': {} @@ -11762,7 +11697,7 @@ snapshots: '@openclaw/fs-safe-win32-x64-msvc': 0.12.0 jszip: 3.10.2 - '@openclaw/libterminal@0.3.3': + '@openclaw/libterminal@0.3.5': dependencies: ghostty-web: 0.4.0 @@ -11880,7 +11815,7 @@ snapshots: dependencies: '@opentelemetry/api': 1.9.1 '@opentelemetry/api-logs': 0.222.0 - import-in-the-middle: 3.3.3 + import-in-the-middle: 3.5.0 require-in-the-middle: 8.0.1(supports-color@10.2.2) transitivePeerDependencies: - supports-color @@ -11919,13 +11854,6 @@ snapshots: '@opentelemetry/api': 1.9.1 '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - optional: true - '@opentelemetry/resources@2.11.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 @@ -11979,15 +11907,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@opentelemetry/sdk-trace-base@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - optional: true - '@opentelemetry/sdk-trace-base@2.11.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 @@ -12003,14 +11922,6 @@ snapshots: '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) '@opentelemetry/sdk-trace-base': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/sdk-trace@2.10.0(@opentelemetry/api@1.9.1)': - dependencies: - '@opentelemetry/api': 1.9.1 - '@opentelemetry/core': 2.11.0(@opentelemetry/api@1.9.1) - '@opentelemetry/resources': 2.10.0(@opentelemetry/api@1.9.1) - '@opentelemetry/semantic-conventions': 1.43.0 - optional: true - '@opentelemetry/sdk-trace@2.11.0(@opentelemetry/api@1.9.1)': dependencies: '@opentelemetry/api': 1.9.1 @@ -12020,65 +11931,63 @@ snapshots: '@opentelemetry/semantic-conventions@1.43.0': {} - '@oxc-project/types@0.146.0': {} - '@oxc-project/types@0.148.0': {} - '@oxfmt/binding-android-arm-eabi@0.66.0': + '@oxfmt/binding-android-arm-eabi@0.67.0': optional: true - '@oxfmt/binding-android-arm64@0.66.0': + '@oxfmt/binding-android-arm64@0.67.0': optional: true - '@oxfmt/binding-darwin-arm64@0.66.0': + '@oxfmt/binding-darwin-arm64@0.67.0': optional: true - '@oxfmt/binding-darwin-x64@0.66.0': + '@oxfmt/binding-darwin-x64@0.67.0': optional: true - '@oxfmt/binding-freebsd-x64@0.66.0': + '@oxfmt/binding-freebsd-x64@0.67.0': optional: true - '@oxfmt/binding-linux-arm-gnueabihf@0.66.0': + '@oxfmt/binding-linux-arm-gnueabihf@0.67.0': optional: true - '@oxfmt/binding-linux-arm-musleabihf@0.66.0': + '@oxfmt/binding-linux-arm-musleabihf@0.67.0': optional: true - '@oxfmt/binding-linux-arm64-gnu@0.66.0': + '@oxfmt/binding-linux-arm64-gnu@0.67.0': optional: true - '@oxfmt/binding-linux-arm64-musl@0.66.0': + '@oxfmt/binding-linux-arm64-musl@0.67.0': optional: true - '@oxfmt/binding-linux-ppc64-gnu@0.66.0': + '@oxfmt/binding-linux-ppc64-gnu@0.67.0': optional: true - '@oxfmt/binding-linux-riscv64-gnu@0.66.0': + '@oxfmt/binding-linux-riscv64-gnu@0.67.0': optional: true - '@oxfmt/binding-linux-riscv64-musl@0.66.0': + '@oxfmt/binding-linux-riscv64-musl@0.67.0': optional: true - '@oxfmt/binding-linux-s390x-gnu@0.66.0': + '@oxfmt/binding-linux-s390x-gnu@0.67.0': optional: true - '@oxfmt/binding-linux-x64-gnu@0.66.0': + '@oxfmt/binding-linux-x64-gnu@0.67.0': optional: true - '@oxfmt/binding-linux-x64-musl@0.66.0': + '@oxfmt/binding-linux-x64-musl@0.67.0': optional: true - '@oxfmt/binding-openharmony-arm64@0.66.0': + '@oxfmt/binding-openharmony-arm64@0.67.0': optional: true - '@oxfmt/binding-win32-arm64-msvc@0.66.0': + '@oxfmt/binding-win32-arm64-msvc@0.67.0': optional: true - '@oxfmt/binding-win32-ia32-msvc@0.66.0': + '@oxfmt/binding-win32-ia32-msvc@0.67.0': optional: true - '@oxfmt/binding-win32-x64-msvc@0.66.0': + '@oxfmt/binding-win32-x64-msvc@0.67.0': optional: true '@oxlint-tsgolint/darwin-arm64@7.0.2001': @@ -12099,61 +12008,61 @@ snapshots: '@oxlint-tsgolint/win32-x64@7.0.2001': optional: true - '@oxlint/binding-android-arm-eabi@1.81.0': + '@oxlint/binding-android-arm-eabi@1.82.0': optional: true - '@oxlint/binding-android-arm64@1.81.0': + '@oxlint/binding-android-arm64@1.82.0': optional: true - '@oxlint/binding-darwin-arm64@1.81.0': + '@oxlint/binding-darwin-arm64@1.82.0': optional: true - '@oxlint/binding-darwin-x64@1.81.0': + '@oxlint/binding-darwin-x64@1.82.0': optional: true - '@oxlint/binding-freebsd-x64@1.81.0': + '@oxlint/binding-freebsd-x64@1.82.0': optional: true - '@oxlint/binding-linux-arm-gnueabihf@1.81.0': + '@oxlint/binding-linux-arm-gnueabihf@1.82.0': optional: true - '@oxlint/binding-linux-arm-musleabihf@1.81.0': + '@oxlint/binding-linux-arm-musleabihf@1.82.0': optional: true - '@oxlint/binding-linux-arm64-gnu@1.81.0': + '@oxlint/binding-linux-arm64-gnu@1.82.0': optional: true - '@oxlint/binding-linux-arm64-musl@1.81.0': + '@oxlint/binding-linux-arm64-musl@1.82.0': optional: true - '@oxlint/binding-linux-ppc64-gnu@1.81.0': + '@oxlint/binding-linux-ppc64-gnu@1.82.0': optional: true - '@oxlint/binding-linux-riscv64-gnu@1.81.0': + '@oxlint/binding-linux-riscv64-gnu@1.82.0': optional: true - '@oxlint/binding-linux-riscv64-musl@1.81.0': + '@oxlint/binding-linux-riscv64-musl@1.82.0': optional: true - '@oxlint/binding-linux-s390x-gnu@1.81.0': + '@oxlint/binding-linux-s390x-gnu@1.82.0': optional: true - '@oxlint/binding-linux-x64-gnu@1.81.0': + '@oxlint/binding-linux-x64-gnu@1.82.0': optional: true - '@oxlint/binding-linux-x64-musl@1.81.0': + '@oxlint/binding-linux-x64-musl@1.82.0': optional: true - '@oxlint/binding-openharmony-arm64@1.81.0': + '@oxlint/binding-openharmony-arm64@1.82.0': optional: true - '@oxlint/binding-win32-arm64-msvc@1.81.0': + '@oxlint/binding-win32-arm64-msvc@1.82.0': optional: true - '@oxlint/binding-win32-ia32-msvc@1.81.0': + '@oxlint/binding-win32-ia32-msvc@1.82.0': optional: true - '@oxlint/binding-win32-x64-msvc@1.81.0': + '@oxlint/binding-win32-x64-msvc@1.82.0': optional: true '@panzoom/panzoom@4.6.2': {} @@ -12239,14 +12148,14 @@ snapshots: '@peculiar/asn1-x509-logotype@2.8.0': dependencies: - '@peculiar/asn1-schema': 2.9.4 - '@peculiar/asn1-x509': 2.9.4 + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 asn1js: 3.0.10 tslib: 2.8.1 '@peculiar/asn1-x509@2.8.0': dependencies: - '@peculiar/asn1-schema': 2.9.4 + '@peculiar/asn1-schema': 2.8.0 '@peculiar/utils': 2.0.3 asn1js: 3.0.10 tslib: 2.8.1 @@ -12276,29 +12185,24 @@ snapshots: tslib: 2.8.1 tsyringe: 4.10.0 - '@pierre/diffs@1.4.1(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)': + '@pierre/diffs@1.4.1(@shikijs/themes@4.4.3)': dependencies: '@pierre/theme': 2.0.0 - '@pierre/theming': 1.0.1(@pierre/theme@2.0.0)(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(shiki@4.4.3) + '@pierre/theming': 1.0.1(@pierre/theme@2.0.0)(@shikijs/themes@4.4.3)(shiki@4.4.3) '@shikijs/transformers': 4.4.3 diff: 9.0.0 hast-util-to-html: 9.0.5 lru_map: 0.4.1 shiki: 4.4.3 - optionalDependencies: - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) transitivePeerDependencies: - '@shikijs/themes' '@pierre/theme@2.0.0': {} - '@pierre/theming@1.0.1(@pierre/theme@2.0.0)(@shikijs/themes@4.4.3)(react-dom@19.2.8(react@19.2.8))(react@19.2.8)(shiki@4.4.3)': + '@pierre/theming@1.0.1(@pierre/theme@2.0.0)(@shikijs/themes@4.4.3)(shiki@4.4.3)': optionalDependencies: '@pierre/theme': 2.0.0 '@shikijs/themes': 4.4.3 - react: 19.2.8 - react-dom: 19.2.8(react@19.2.8) shiki: 4.4.3 '@pinojs/redact@0.4.0': {} @@ -12343,93 +12247,48 @@ snapshots: dependencies: quansync: 1.0.0 - '@rolldown/binding-android-arm-eabi@1.2.5': - optional: true - '@rolldown/binding-android-arm-eabi@1.2.7': optional: true - '@rolldown/binding-android-arm64@1.2.5': - optional: true - '@rolldown/binding-android-arm64@1.2.7': optional: true - '@rolldown/binding-darwin-arm64@1.2.5': - optional: true - '@rolldown/binding-darwin-arm64@1.2.7': optional: true - '@rolldown/binding-darwin-x64@1.2.5': - optional: true - '@rolldown/binding-darwin-x64@1.2.7': optional: true - '@rolldown/binding-freebsd-x64@1.2.5': - optional: true - '@rolldown/binding-freebsd-x64@1.2.7': optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.5': - optional: true - '@rolldown/binding-linux-arm-gnueabihf@1.2.7': optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.5': - optional: true - '@rolldown/binding-linux-arm64-gnu@1.2.7': optional: true - '@rolldown/binding-linux-arm64-musl@1.2.5': - optional: true - '@rolldown/binding-linux-arm64-musl@1.2.7': optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.5': - optional: true - '@rolldown/binding-linux-ppc64-gnu@1.2.7': optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.5': - optional: true - '@rolldown/binding-linux-s390x-gnu@1.2.7': optional: true - '@rolldown/binding-linux-x64-gnu@1.2.5': - optional: true - '@rolldown/binding-linux-x64-gnu@1.2.7': optional: true - '@rolldown/binding-linux-x64-musl@1.2.5': - optional: true - '@rolldown/binding-linux-x64-musl@1.2.7': optional: true - '@rolldown/binding-openharmony-arm64@1.2.5': - optional: true - '@rolldown/binding-openharmony-arm64@1.2.7': optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.5': - optional: true - '@rolldown/binding-win32-arm64-msvc@1.2.7': optional: true - '@rolldown/binding-win32-x64-msvc@1.2.5': - optional: true - '@rolldown/binding-win32-x64-msvc@1.2.7': optional: true @@ -12574,21 +12433,21 @@ snapshots: '@slack/logger@5.0.0': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@slack/oauth@4.0.0': dependencies: '@slack/logger': 5.0.0 '@slack/web-api': 8.1.1 '@types/jsonwebtoken': 9.0.10 - '@types/node': 26.4.1 + '@types/node': 26.5.0 jsonwebtoken: 9.0.3 '@slack/socket-mode@3.0.1(undici@7.29.1)': dependencies: '@slack/logger': 5.0.0 '@slack/web-api': 8.1.1 - '@types/node': 26.4.1 + '@types/node': 26.5.0 eventemitter3: 5.0.4 undici: 7.29.1 @@ -12598,7 +12457,7 @@ snapshots: dependencies: '@slack/logger': 5.0.0 '@slack/types': 3.1.0 - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/retry': 0.12.5 eventemitter3: 5.0.4 p-queue: 6.6.2 @@ -12621,7 +12480,7 @@ snapshots: '@smithy/types': 4.18.0 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.7.2': + '@smithy/fetch-http-handler@5.8.0': dependencies: '@smithy/core': 3.33.3 '@smithy/types': 4.18.0 @@ -12743,18 +12602,18 @@ snapshots: dependencies: tslib: 2.8.1 - '@tanstack/lit-virtual@3.13.37(lit@3.3.3)': + '@tanstack/lit-virtual@3.14.0(lit@3.3.3)': dependencies: - '@tanstack/virtual-core': 3.17.8 + '@tanstack/virtual-core': 3.17.9 lit: 3.3.3 - '@tanstack/virtual-core@3.17.8': {} + '@tanstack/virtual-core@3.17.9': {} - '@thi.ng/bitstream@2.4.54': + '@thi.ng/bitstream@2.4.55': dependencies: - '@thi.ng/errors': 2.6.16 + '@thi.ng/errors': 2.6.17 - '@thi.ng/errors@2.6.16': {} + '@thi.ng/errors@2.6.17': {} '@tloncorp/tlon-skill-darwin-arm64@0.5.0': optional: true @@ -12784,35 +12643,35 @@ snapshots: '@tokenizer/token@0.3.0': {} - '@trycua/cua-driver-darwin-arm64@0.23.2': + '@trycua/cua-driver-darwin-arm64@0.24.0': optional: true - '@trycua/cua-driver-darwin-x64@0.23.2': + '@trycua/cua-driver-darwin-x64@0.24.0': optional: true - '@trycua/cua-driver-linux-arm64-gnu@0.23.2': + '@trycua/cua-driver-linux-arm64-gnu@0.24.0': optional: true - '@trycua/cua-driver-linux-x64-gnu@0.23.2': + '@trycua/cua-driver-linux-x64-gnu@0.24.0': optional: true - '@trycua/cua-driver-win32-arm64-msvc@0.23.2': + '@trycua/cua-driver-win32-arm64-msvc@0.24.0': optional: true - '@trycua/cua-driver-win32-x64-msvc@0.23.2': + '@trycua/cua-driver-win32-x64-msvc@0.24.0': optional: true - '@trycua/cua-driver@0.23.2': + '@trycua/cua-driver@0.24.0': dependencies: '@ubjs/core': 0.31.0-3 '@ubjs/node': 0.31.0-3 optionalDependencies: - '@trycua/cua-driver-darwin-arm64': 0.23.2 - '@trycua/cua-driver-darwin-x64': 0.23.2 - '@trycua/cua-driver-linux-arm64-gnu': 0.23.2 - '@trycua/cua-driver-linux-x64-gnu': 0.23.2 - '@trycua/cua-driver-win32-arm64-msvc': 0.23.2 - '@trycua/cua-driver-win32-x64-msvc': 0.23.2 + '@trycua/cua-driver-darwin-arm64': 0.24.0 + '@trycua/cua-driver-darwin-x64': 0.24.0 + '@trycua/cua-driver-linux-arm64-gnu': 0.24.0 + '@trycua/cua-driver-linux-x64-gnu': 0.24.0 + '@trycua/cua-driver-win32-arm64-msvc': 0.24.0 + '@trycua/cua-driver-win32-x64-msvc': 0.24.0 '@tufjs/canonical-json@2.0.0': {} @@ -12866,7 +12725,7 @@ snapshots: '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/chai@5.2.3': dependencies: @@ -12879,7 +12738,7 @@ snapshots: '@types/connect@3.4.38': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/d3-array@3.2.2': {} @@ -13020,7 +12879,7 @@ snapshots: '@types/express-serve-static-core@5.1.3': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/qs': 6.15.1 '@types/range-parser': 1.2.7 '@types/send': 1.2.1 @@ -13043,15 +12902,15 @@ snapshots: '@types/jsdom@30.0.0': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/tough-cookie': 4.0.5 parse5: 8.0.1 - undici-types: 8.10.0 + undici-types: 8.10.2 '@types/jsonwebtoken@9.0.10': dependencies: '@types/ms': 2.1.0 - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/linkify-it@5.0.0': {} @@ -13063,7 +12922,7 @@ snapshots: '@types/mailparser@3.4.6': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 iconv-lite: 0.6.3 '@types/markdown-it@14.2.0': @@ -13083,7 +12942,7 @@ snapshots: '@types/node-fetch@2.6.13': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 form-data: 4.0.6 optional: true @@ -13108,9 +12967,9 @@ snapshots: dependencies: undici-types: 7.24.6 - '@types/node@26.4.1': + '@types/node@26.5.0': dependencies: - undici-types: 8.3.0 + undici-types: 8.9.0 '@types/qs@6.15.1': {} @@ -13128,12 +12987,12 @@ snapshots: '@types/send@1.2.1': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/serve-static@2.2.0': dependencies: '@types/http-errors': 2.0.5 - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/tough-cookie@4.0.5': {} @@ -13147,11 +13006,11 @@ snapshots: '@types/web-push@3.6.4': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/ws@8.18.1': dependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 '@types/yargs-parser@21.0.3': {} @@ -13215,7 +13074,7 @@ snapshots: '@typescript/typescript-win32-x64@7.0.2': optional: true - '@typespec/ts-http-runtime@0.3.8(supports-color@10.2.2)': + '@typespec/ts-http-runtime@0.3.9(supports-color@10.2.2)': dependencies: http-proxy-agent: 7.0.2(supports-color@10.2.2) https-proxy-agent: 7.0.6(supports-color@10.2.2) @@ -13260,7 +13119,7 @@ snapshots: '@ubjs/node-win32-arm64-msvc': 0.31.0-3 '@ubjs/node-win32-x64-msvc': 0.31.0-3 - '@ungap/structured-clone@1.3.3': {} + '@ungap/structured-clone@1.4.0': {} '@upsetjs/venn.js@2.0.0': optionalDependencies: @@ -13269,30 +13128,30 @@ snapshots: '@urbit/aura@3.0.0': {} - '@vitest/browser-playwright@5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser-playwright@5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0)': dependencies: - '@vitest/browser': 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + '@vitest/browser': 5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) playwright: 1.63.0 tinyrainbow: 3.1.1 - vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) transitivePeerDependencies: - bufferutil - msw - utf-8-validate - vite - '@vitest/browser@5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0)': + '@vitest/browser@5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0)': dependencies: '@blazediff/core': 1.10.0 - '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) '@vitest/ui': 5.0.0(vitest@5.0.0) '@vitest/utils': 5.0.0 magic-string: 1.2.3 pngjs: 7.0.0 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) ws: 8.21.3 transitivePeerDependencies: - bufferutil @@ -13303,31 +13162,31 @@ snapshots: '@vitest/coverage-v8@5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0)': dependencies: '@bcoe/v8-coverage': 1.0.2 - '@vitest/istanbul-lib-coverage': 1.0.0 - '@vitest/istanbul-lib-report': 1.0.0 - ast-v8-to-istanbul: 1.0.5 + '@vitest/istanbul-lib-coverage': 1.0.1 + '@vitest/istanbul-lib-report': 1.0.1 + ast-v8-to-istanbul: 1.0.6 magicast: 0.5.4 - obug: 2.1.4 + obug: 2.2.1 std-env: 4.2.0 tinyrainbow: 3.1.1 - vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) optionalDependencies: - '@vitest/browser': 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) + '@vitest/browser': 5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/istanbul-lib-coverage@1.0.0': {} + '@vitest/istanbul-lib-coverage@1.0.1': {} - '@vitest/istanbul-lib-report@1.0.0': + '@vitest/istanbul-lib-report@1.0.1': dependencies: - '@vitest/istanbul-lib-coverage': 1.0.0 + '@vitest/istanbul-lib-coverage': 1.0.1 - '@vitest/mocker@5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))': + '@vitest/mocker@5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))': dependencies: '@jridgewell/trace-mapping': 0.3.31 '@vitest/spy': 5.0.0 estree-walker: 3.0.3 magic-string: 1.2.3 optionalDependencies: - vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) + vite: 8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) '@vitest/pretty-format@5.0.0': dependencies: @@ -13343,7 +13202,7 @@ snapshots: pathe: 2.0.3 sirv: 3.0.2 tinyrainbow: 3.1.1 - vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + vitest: 5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) '@vitest/utils@5.0.0': dependencies: @@ -13358,7 +13217,7 @@ snapshots: '@eshaz/web-worker': 1.2.2 simple-yenc: 1.0.4 - '@wasm-audio-decoders/flac@0.2.10': + '@wasm-audio-decoders/flac@0.2.11': dependencies: '@wasm-audio-decoders/common': 9.0.7 codec-parser: 2.5.0 @@ -13368,83 +13227,83 @@ snapshots: '@wasm-audio-decoders/common': 9.0.7 codec-parser: 2.5.0 - '@wasm-audio-decoders/opus-ml@0.0.2': + '@wasm-audio-decoders/opus-ml@0.0.3': dependencies: '@wasm-audio-decoders/common': 9.0.7 - '@yuku-codegen/binding-android-arm64@0.9.3': + '@yuku-codegen/binding-android-arm64@0.9.5': optional: true - '@yuku-codegen/binding-darwin-arm64@0.9.3': + '@yuku-codegen/binding-darwin-arm64@0.9.5': optional: true - '@yuku-codegen/binding-darwin-x64@0.9.3': + '@yuku-codegen/binding-darwin-x64@0.9.5': optional: true - '@yuku-codegen/binding-freebsd-x64@0.9.3': + '@yuku-codegen/binding-freebsd-x64@0.9.5': optional: true - '@yuku-codegen/binding-linux-arm-gnu@0.9.3': + '@yuku-codegen/binding-linux-arm-gnu@0.9.5': optional: true - '@yuku-codegen/binding-linux-arm-musl@0.9.3': + '@yuku-codegen/binding-linux-arm-musl@0.9.5': optional: true - '@yuku-codegen/binding-linux-arm64-gnu@0.9.3': + '@yuku-codegen/binding-linux-arm64-gnu@0.9.5': optional: true - '@yuku-codegen/binding-linux-arm64-musl@0.9.3': + '@yuku-codegen/binding-linux-arm64-musl@0.9.5': optional: true - '@yuku-codegen/binding-linux-x64-gnu@0.9.3': + '@yuku-codegen/binding-linux-x64-gnu@0.9.5': optional: true - '@yuku-codegen/binding-linux-x64-musl@0.9.3': + '@yuku-codegen/binding-linux-x64-musl@0.9.5': optional: true - '@yuku-codegen/binding-win32-arm64@0.9.3': + '@yuku-codegen/binding-win32-arm64@0.9.5': optional: true - '@yuku-codegen/binding-win32-x64@0.9.3': + '@yuku-codegen/binding-win32-x64@0.9.5': optional: true - '@yuku-parser/binding-android-arm64@0.9.3': + '@yuku-parser/binding-android-arm64@0.9.5': optional: true - '@yuku-parser/binding-darwin-arm64@0.9.3': + '@yuku-parser/binding-darwin-arm64@0.9.5': optional: true - '@yuku-parser/binding-darwin-x64@0.9.3': + '@yuku-parser/binding-darwin-x64@0.9.5': optional: true - '@yuku-parser/binding-freebsd-x64@0.9.3': + '@yuku-parser/binding-freebsd-x64@0.9.5': optional: true - '@yuku-parser/binding-linux-arm-gnu@0.9.3': + '@yuku-parser/binding-linux-arm-gnu@0.9.5': optional: true - '@yuku-parser/binding-linux-arm-musl@0.9.3': + '@yuku-parser/binding-linux-arm-musl@0.9.5': optional: true - '@yuku-parser/binding-linux-arm64-gnu@0.9.3': + '@yuku-parser/binding-linux-arm64-gnu@0.9.5': optional: true - '@yuku-parser/binding-linux-arm64-musl@0.9.3': + '@yuku-parser/binding-linux-arm64-musl@0.9.5': optional: true - '@yuku-parser/binding-linux-x64-gnu@0.9.3': + '@yuku-parser/binding-linux-x64-gnu@0.9.5': optional: true - '@yuku-parser/binding-linux-x64-musl@0.9.3': + '@yuku-parser/binding-linux-x64-musl@0.9.5': optional: true - '@yuku-parser/binding-win32-arm64@0.9.3': + '@yuku-parser/binding-win32-arm64@0.9.5': optional: true - '@yuku-parser/binding-win32-x64@0.9.3': + '@yuku-parser/binding-win32-x64@0.9.5': optional: true - '@yuku-toolchain/types@0.9.3': {} + '@yuku-toolchain/types@0.9.5': {} '@zone-eu/mailsplit@5.4.16': dependencies: @@ -13467,7 +13326,7 @@ snapshots: acorn@8.18.0: {} - acpx@0.13.2: + acpx@0.15.1: dependencies: '@agentclientprotocol/sdk': 1.4.0(zod@4.5.4) commander: 15.0.0 @@ -13542,7 +13401,7 @@ snapshots: argparse@2.0.1: {} - argparse@3.0.0: {} + argparse@3.0.1: {} array-back@3.1.0: {} @@ -13563,7 +13422,7 @@ snapshots: assertion-error@2.0.1: {} - ast-v8-to-istanbul@1.0.5: + ast-v8-to-istanbul@1.0.6: dependencies: '@jridgewell/trace-mapping': 0.3.31 estree-walker: 3.0.3 @@ -13585,16 +13444,16 @@ snapshots: audio-decode@2.2.3: dependencies: - '@wasm-audio-decoders/flac': 0.2.10 + '@wasm-audio-decoders/flac': 0.2.11 '@wasm-audio-decoders/ogg-vorbis': 0.1.20 audio-buffer: 5.0.0 - audio-type: 2.4.2 + audio-type: 2.7.0 mpg123-decoder: 1.0.3 node-wav: 0.0.2 - ogg-opus-decoder: 1.7.3 + ogg-opus-decoder: 1.7.5 qoa-format: 1.0.1 - audio-type@2.4.2: {} + audio-type@2.7.0: {} axios@1.20.0(debug@4.4.3(supports-color@10.2.2))(supports-color@10.2.2): dependencies: @@ -13632,34 +13491,34 @@ snapshots: balanced-match@4.0.4: {} - bare-events@2.9.1: {} + bare-events@2.9.2: {} bare-fs@4.8.1: dependencies: - bare-events: 2.9.1 - bare-path: 3.1.1 - bare-stream: 2.13.3(bare-events@2.9.1) - bare-url: 2.5.2 + bare-events: 2.9.2 + bare-path: 3.1.2 + bare-stream: 2.13.4(bare-events@2.9.2) + bare-url: 2.5.4 fast-fifo: 1.3.2 transitivePeerDependencies: - bare-abort-controller - react-native-b4a - bare-path@3.1.1: {} + bare-path@3.1.2: {} - bare-stream@2.13.3(bare-events@2.9.1): + bare-stream@2.13.4(bare-events@2.9.2): dependencies: b4a: 1.8.1 - streamx: 2.28.0 + streamx: 2.28.1 teex: 1.0.1 optionalDependencies: - bare-events: 2.9.1 + bare-events: 2.9.2 transitivePeerDependencies: - react-native-b4a - bare-url@2.5.2: + bare-url@2.5.4: dependencies: - bare-path: 3.1.1 + bare-path: 3.1.2 base-64@0.1.0: optional: true @@ -13668,7 +13527,7 @@ snapshots: base64-js@1.5.1: {} - bidi-js@1.0.3: + bidi-js@1.1.0: dependencies: require-from-string: 2.0.2 @@ -13806,7 +13665,7 @@ snapshots: cjs-module-lexer@2.2.1: {} - clawpdf@0.3.1: {} + clawpdf@0.3.2: {} cliui@6.0.0: dependencies: @@ -13899,7 +13758,7 @@ snapshots: dependencies: env-paths: 2.2.1 import-fresh: 3.3.1 - js-yaml: 4.3.1 + js-yaml: 4.3.2 parse-json: 5.2.0 optionalDependencies: typescript: 6.0.3 @@ -13944,17 +13803,17 @@ snapshots: curve25519-js@0.0.4: {} - cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.1): + cytoscape-cose-bilkent@4.1.0(cytoscape@3.34.3): dependencies: cose-base: 1.0.3 - cytoscape: 3.34.1 + cytoscape: 3.34.3 - cytoscape-fcose@2.2.0(cytoscape@3.34.1): + cytoscape-fcose@2.2.0(cytoscape@3.34.3): dependencies: cose-base: 2.2.0 - cytoscape: 3.34.1 + cytoscape: 3.34.3 - cytoscape@3.34.1: {} + cytoscape@3.34.3: {} d3-array@2.12.1: dependencies: @@ -14130,13 +13989,6 @@ snapshots: data-uri-to-buffer@4.0.1: {} - data-urls@7.0.0(@noble/hashes@2.3.0): - dependencies: - whatwg-mimetype: 5.0.0 - whatwg-url: 16.0.1(@noble/hashes@2.3.0) - transitivePeerDependencies: - - '@noble/hashes' - data-urls@7.0.0(@noble/hashes@2.4.0): dependencies: whatwg-mimetype: 5.0.0 @@ -14231,7 +14083,7 @@ snapshots: dependencies: domelementtype: 3.0.0 domhandler: 6.0.1 - entities: 8.0.0 + entities: 8.1.0 domelementtype@2.3.0: {} @@ -14245,7 +14097,7 @@ snapshots: dependencies: domelementtype: 3.0.0 - dompurify@3.4.14: + dompurify@3.4.15: optionalDependencies: '@types/trusted-types': 2.0.7 @@ -14298,7 +14150,7 @@ snapshots: entities@7.0.1: {} - entities@8.0.0: {} + entities@8.1.0: {} env-paths@2.2.1: {} @@ -14312,6 +14164,8 @@ snapshots: es-module-lexer@2.3.2: {} + es-module-lexer@3.0.2: {} + es-object-atoms@1.1.2: dependencies: es-errors: 1.3.0 @@ -14323,7 +14177,7 @@ snapshots: has-tostringtag: 1.0.2 hasown: 2.0.4 - es-toolkit@1.51.0: {} + es-toolkit@1.52.0: {} esast-util-from-estree@2.0.0: dependencies: @@ -14389,7 +14243,7 @@ snapshots: estree-util-is-identifier-name@3.0.0: {} - estree-util-scope@1.0.0: + estree-util-scope@1.0.1: dependencies: '@types/estree': 1.0.9 devlop: 1.1.0 @@ -14419,7 +14273,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.9.1 + bare-events: 2.9.2 transitivePeerDependencies: - bare-abort-controller @@ -14448,7 +14302,7 @@ snapshots: expect-type@1.4.0: {} - express-rate-limit@8.6.2(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2): + express-rate-limit@8.7.0(express@5.2.1(supports-color@10.2.2))(supports-color@10.2.2): dependencies: debug: 4.4.3(supports-color@10.2.2) express: 5.2.1(supports-color@10.2.2) @@ -14539,7 +14393,7 @@ snapshots: fastest-levenshtein@1.0.16: {} - fastq@1.20.1: + fastq@1.20.3: dependencies: reusify: 1.1.0 @@ -14656,7 +14510,7 @@ snapshots: gcp-metadata@8.1.2(supports-color@10.2.2): dependencies: gaxios: 7.3.1(supports-color@10.2.2) - google-logging-utils: 1.2.0 + google-logging-utils: 1.1.3 json-bigint: 1.0.0 transitivePeerDependencies: - supports-color @@ -14730,7 +14584,7 @@ snapshots: dependencies: '@sindresorhus/merge-streams': 4.0.0 fast-glob: 3.3.3 - ignore: 7.0.8 + ignore: 7.0.9 is-path-inside: 4.0.0 micromatch: 4.0.8 slash: 5.1.0 @@ -14762,8 +14616,6 @@ snapshots: google-logging-utils@1.1.3: {} - google-logging-utils@1.2.0: {} - google-logging-utils@2.0.1: {} gopd@1.2.0: {} @@ -14865,7 +14717,7 @@ snapshots: highlight.js@11.12.0: {} - hono@4.13.4: {} + hono@4.13.7: {} hookable@6.1.1: {} @@ -14877,12 +14729,6 @@ snapshots: dependencies: lru-cache: 11.5.2 - html-encoding-sniffer@6.0.0(@noble/hashes@2.3.0): - dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@2.3.0) - transitivePeerDependencies: - - '@noble/hashes' - html-encoding-sniffer@6.0.0(@noble/hashes@2.4.0): dependencies: '@exodus/bytes': 1.15.1(@noble/hashes@2.4.0) @@ -14915,7 +14761,7 @@ snapshots: domelementtype: 3.0.0 domhandler: 6.0.1 domutils: 4.0.2 - entities: 8.0.0 + entities: 8.1.0 http-cache-semantics@4.2.0: {} @@ -14985,9 +14831,9 @@ snapshots: ieee754@1.2.1: {} - ignore@7.0.8: {} + ignore@7.0.9: {} - imapflow@1.7.8: + imapflow@2.0.0: dependencies: '@zone-eu/mailsplit': 5.4.16 encoding-japanese: 2.3.0 @@ -14996,7 +14842,7 @@ snapshots: libmime: 5.4.3 libqp: 2.1.1 pino: 10.3.1 - socks: 2.8.9 + socks: 2.8.10 immediate@3.0.6: {} @@ -15005,10 +14851,10 @@ snapshots: parent-module: 1.0.1 resolve-from: 4.0.0 - import-in-the-middle@3.3.3: + import-in-the-middle@3.5.0: dependencies: cjs-module-lexer: 2.2.1 - es-module-lexer: 2.3.2 + es-module-lexer: 3.0.2 module-details-from-path: 1.0.4 import-meta-resolve@4.2.0: {} @@ -15124,78 +14970,50 @@ snapshots: jose@4.15.9: {} - jose@6.2.11: {} - jose@6.2.12: {} js-tokens@10.0.0: {} js-tokens@4.0.0: {} - js-yaml@4.3.1: + js-yaml@4.3.2: dependencies: argparse: 2.0.1 - jscpd-darwin-arm64@5.1.2: + jscpd-darwin-arm64@5.2.0: optional: true - jscpd-darwin-x64@5.1.2: + jscpd-darwin-x64@5.2.0: optional: true - jscpd-linux-arm64-gnu@5.1.2: + jscpd-linux-arm64-gnu@5.2.0: optional: true - jscpd-linux-arm64-musl@5.1.2: + jscpd-linux-arm64-musl@5.2.0: optional: true - jscpd-linux-x64-gnu@5.1.2: + jscpd-linux-x64-gnu@5.2.0: optional: true - jscpd-linux-x64-musl@5.1.2: + jscpd-linux-x64-musl@5.2.0: optional: true - jscpd-windows-arm64-msvc@5.1.2: + jscpd-windows-arm64-msvc@5.2.0: optional: true - jscpd-windows-x64-msvc@5.1.2: + jscpd-windows-x64-msvc@5.2.0: optional: true - jscpd@5.1.2: + jscpd@5.2.0: optionalDependencies: - jscpd-darwin-arm64: 5.1.2 - jscpd-darwin-x64: 5.1.2 - jscpd-linux-arm64-gnu: 5.1.2 - jscpd-linux-arm64-musl: 5.1.2 - jscpd-linux-x64-gnu: 5.1.2 - jscpd-linux-x64-musl: 5.1.2 - jscpd-windows-arm64-msvc: 5.1.2 - jscpd-windows-x64-msvc: 5.1.2 - - jsdom@30.0.1(@noble/hashes@2.3.0): - dependencies: - '@asamuzakjp/css-color': 6.0.7 - '@asamuzakjp/dom-selector': 8.3.2 - '@bramus/specificity': 2.4.2 - '@csstools/css-syntax-patches-for-csstree': 1.1.12(css-tree@3.2.1) - '@exodus/bytes': 1.15.1(@noble/hashes@2.3.0) - css-tree: 3.2.1 - data-urls: 7.0.0(@noble/hashes@2.3.0) - decimal.js: 10.6.0 - html-encoding-sniffer: 6.0.0(@noble/hashes@2.3.0) - is-potential-custom-element-name: 1.0.1 - lru-cache: 11.5.2 - parse5: 8.0.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 6.0.2 - undici: 8.10.2 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 8.0.1 - whatwg-mimetype: 5.0.0 - whatwg-url: 17.1.0(@noble/hashes@2.3.0) - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - '@noble/hashes' + jscpd-darwin-arm64: 5.2.0 + jscpd-darwin-x64: 5.2.0 + jscpd-linux-arm64-gnu: 5.2.0 + jscpd-linux-arm64-musl: 5.2.0 + jscpd-linux-x64-gnu: 5.2.0 + jscpd-linux-x64-musl: 5.2.0 + jscpd-windows-arm64-msvc: 5.2.0 + jscpd-windows-x64-msvc: 5.2.0 jsdom@30.0.1(@noble/hashes@2.4.0): dependencies: @@ -15261,13 +15079,6 @@ snapshots: ms: 2.1.3 semver: 7.8.5 - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - jszip@3.10.2: dependencies: lie: 3.3.0 @@ -15530,7 +15341,7 @@ snapshots: magic-string@1.2.3: dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/sourcemap-codec': 1.6.0 magicast@0.5.4: dependencies: @@ -15551,7 +15362,7 @@ snapshots: tldts: 7.4.10 undici: 8.10.2 - mailparser@3.9.20: + mailparser@3.9.23: dependencies: '@zone-eu/mailsplit': 5.4.16 encoding-japanese: 2.3.0 @@ -15596,14 +15407,14 @@ snapshots: optionalDependencies: '@types/markdown-it': 14.2.0 - markdown-it-emoji@3.0.0: {} + markdown-it-emoji@3.1.0: {} markdown-it-task-lists@2.1.1: {} markdown-it@15.0.2: dependencies: - argparse: 3.0.0 - entities: 8.0.0 + argparse: 3.0.1 + entities: 8.1.0 linkify-it: 6.1.0 mdurl: 2.1.0 punycode.js: 2.3.1 @@ -15615,7 +15426,7 @@ snapshots: marked@16.4.2: {} - marked@18.0.11: {} + marked@18.0.12: {} marked@18.0.5: {} @@ -15634,12 +15445,12 @@ snapshots: content-type: 2.1.0 loglevel: 1.9.2 matrix-events-sdk: 0.0.1 - matrix-widget-api: 1.18.0 - p-retry: 8.0.0 + matrix-widget-api: 1.19.0 + p-retry: 8.0.1 sdp-transform: 3.0.0 unhomoglyph: 1.0.6 - matrix-widget-api@1.18.0: + matrix-widget-api@1.19.0: dependencies: '@types/events': 3.0.3 events: 3.3.0 @@ -15741,7 +15552,7 @@ snapshots: dependencies: '@types/hast': 3.0.5 '@types/mdast': 4.0.4 - '@ungap/structured-clone': 1.3.3 + '@ungap/structured-clone': 1.4.0 devlop: 1.1.0 micromark-util-sanitize-uri: 2.0.1 trim-lines: 3.0.1 @@ -15773,7 +15584,7 @@ snapshots: media-typer@2.0.0: {} - mediabunny@1.55.2: + mediabunny@1.56.0: dependencies: '@types/dom-mediacapture-transform': 0.1.12 '@types/dom-webcodecs': 0.1.13 @@ -15787,19 +15598,19 @@ snapshots: mermaid@11.17.2: dependencies: '@braintree/sanitize-url': 7.1.2 - '@iconify/utils': 3.1.4 + '@iconify/utils': 3.1.7 '@mermaid-js/parser': 1.2.1 '@types/d3': 7.4.3 '@upsetjs/venn.js': 2.0.0 - cytoscape: 3.34.1 - cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.1) - cytoscape-fcose: 2.2.0(cytoscape@3.34.1) + cytoscape: 3.34.3 + cytoscape-cose-bilkent: 4.1.0(cytoscape@3.34.3) + cytoscape-fcose: 2.2.0(cytoscape@3.34.3) d3: 7.9.0 d3-sankey: 0.12.3 dagre-d3-es: 7.0.14 dayjs: 1.11.23 - dompurify: 3.4.14 - es-toolkit: 1.51.0 + dompurify: 3.4.15 + es-toolkit: 1.52.0 fastdom: 1.0.12 katex: 0.16.47 khroma: 2.1.0 @@ -16150,7 +15961,7 @@ snapshots: node-gyp-build@4.8.4: {} - node-pty@1.2.0-beta.14: + node-pty@1.2.0-beta.15: dependencies: node-addon-api: 7.1.1 @@ -16187,14 +15998,14 @@ snapshots: object-inspect@1.13.4: {} - obug@2.1.4: {} + obug@2.2.1: {} - ogg-opus-decoder@1.7.3: + ogg-opus-decoder@1.7.5: dependencies: '@wasm-audio-decoders/common': 9.0.7 - '@wasm-audio-decoders/opus-ml': 0.0.2 + '@wasm-audio-decoders/opus-ml': 0.0.3 codec-parser: 2.5.0 - opus-decoder: 0.7.11 + opus-decoder: 0.7.12 on-exit-leak-free@2.1.2: {} @@ -16221,13 +16032,13 @@ snapshots: is-inside-container: 1.0.0 wsl-utils: 0.1.0 - open@11.0.1: + open@11.0.2: dependencies: default-browser: 5.5.1 define-lazy-prop: 3.0.0 is-in-ssh: 1.0.0 is-inside-container: 1.0.0 - powershell-utils: 0.2.0 + powershell-utils: 0.2.1 wsl-utils: 1.0.0 openai@4.29.2: @@ -16245,7 +16056,7 @@ snapshots: - encoding optional: true - openai@7.10.0(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4): + openai@7.12.1(@aws-sdk/credential-provider-node@3.972.82)(@smithy/hash-node@4.5.2)(@smithy/signature-v4@5.7.3)(undici@8.10.2)(ws@8.21.3)(zod@4.5.4): optionalDependencies: '@aws-sdk/credential-provider-node': 3.972.82 '@smithy/hash-node': 4.5.2 @@ -16254,33 +16065,33 @@ snapshots: ws: 8.21.3 zod: 4.5.4 - opus-decoder@0.7.11: + opus-decoder@0.7.12: dependencies: '@wasm-audio-decoders/common': 9.0.7 - oxfmt@0.66.0: + oxfmt@0.67.0: dependencies: - tinypool: 2.1.0 + tinypool: 2.1.2 optionalDependencies: - '@oxfmt/binding-android-arm-eabi': 0.66.0 - '@oxfmt/binding-android-arm64': 0.66.0 - '@oxfmt/binding-darwin-arm64': 0.66.0 - '@oxfmt/binding-darwin-x64': 0.66.0 - '@oxfmt/binding-freebsd-x64': 0.66.0 - '@oxfmt/binding-linux-arm-gnueabihf': 0.66.0 - '@oxfmt/binding-linux-arm-musleabihf': 0.66.0 - '@oxfmt/binding-linux-arm64-gnu': 0.66.0 - '@oxfmt/binding-linux-arm64-musl': 0.66.0 - '@oxfmt/binding-linux-ppc64-gnu': 0.66.0 - '@oxfmt/binding-linux-riscv64-gnu': 0.66.0 - '@oxfmt/binding-linux-riscv64-musl': 0.66.0 - '@oxfmt/binding-linux-s390x-gnu': 0.66.0 - '@oxfmt/binding-linux-x64-gnu': 0.66.0 - '@oxfmt/binding-linux-x64-musl': 0.66.0 - '@oxfmt/binding-openharmony-arm64': 0.66.0 - '@oxfmt/binding-win32-arm64-msvc': 0.66.0 - '@oxfmt/binding-win32-ia32-msvc': 0.66.0 - '@oxfmt/binding-win32-x64-msvc': 0.66.0 + '@oxfmt/binding-android-arm-eabi': 0.67.0 + '@oxfmt/binding-android-arm64': 0.67.0 + '@oxfmt/binding-darwin-arm64': 0.67.0 + '@oxfmt/binding-darwin-x64': 0.67.0 + '@oxfmt/binding-freebsd-x64': 0.67.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.67.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.67.0 + '@oxfmt/binding-linux-arm64-gnu': 0.67.0 + '@oxfmt/binding-linux-arm64-musl': 0.67.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.67.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.67.0 + '@oxfmt/binding-linux-riscv64-musl': 0.67.0 + '@oxfmt/binding-linux-s390x-gnu': 0.67.0 + '@oxfmt/binding-linux-x64-gnu': 0.67.0 + '@oxfmt/binding-linux-x64-musl': 0.67.0 + '@oxfmt/binding-openharmony-arm64': 0.67.0 + '@oxfmt/binding-win32-arm64-msvc': 0.67.0 + '@oxfmt/binding-win32-ia32-msvc': 0.67.0 + '@oxfmt/binding-win32-x64-msvc': 0.67.0 oxlint-tsgolint@7.0.2001: optionalDependencies: @@ -16291,27 +16102,27 @@ snapshots: '@oxlint-tsgolint/win32-arm64': 7.0.2001 '@oxlint-tsgolint/win32-x64': 7.0.2001 - oxlint@1.81.0(oxlint-tsgolint@7.0.2001): + oxlint@1.82.0(oxlint-tsgolint@7.0.2001): optionalDependencies: - '@oxlint/binding-android-arm-eabi': 1.81.0 - '@oxlint/binding-android-arm64': 1.81.0 - '@oxlint/binding-darwin-arm64': 1.81.0 - '@oxlint/binding-darwin-x64': 1.81.0 - '@oxlint/binding-freebsd-x64': 1.81.0 - '@oxlint/binding-linux-arm-gnueabihf': 1.81.0 - '@oxlint/binding-linux-arm-musleabihf': 1.81.0 - '@oxlint/binding-linux-arm64-gnu': 1.81.0 - '@oxlint/binding-linux-arm64-musl': 1.81.0 - '@oxlint/binding-linux-ppc64-gnu': 1.81.0 - '@oxlint/binding-linux-riscv64-gnu': 1.81.0 - '@oxlint/binding-linux-riscv64-musl': 1.81.0 - '@oxlint/binding-linux-s390x-gnu': 1.81.0 - '@oxlint/binding-linux-x64-gnu': 1.81.0 - '@oxlint/binding-linux-x64-musl': 1.81.0 - '@oxlint/binding-openharmony-arm64': 1.81.0 - '@oxlint/binding-win32-arm64-msvc': 1.81.0 - '@oxlint/binding-win32-ia32-msvc': 1.81.0 - '@oxlint/binding-win32-x64-msvc': 1.81.0 + '@oxlint/binding-android-arm-eabi': 1.82.0 + '@oxlint/binding-android-arm64': 1.82.0 + '@oxlint/binding-darwin-arm64': 1.82.0 + '@oxlint/binding-darwin-x64': 1.82.0 + '@oxlint/binding-freebsd-x64': 1.82.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.82.0 + '@oxlint/binding-linux-arm-musleabihf': 1.82.0 + '@oxlint/binding-linux-arm64-gnu': 1.82.0 + '@oxlint/binding-linux-arm64-musl': 1.82.0 + '@oxlint/binding-linux-ppc64-gnu': 1.82.0 + '@oxlint/binding-linux-riscv64-gnu': 1.82.0 + '@oxlint/binding-linux-riscv64-musl': 1.82.0 + '@oxlint/binding-linux-s390x-gnu': 1.82.0 + '@oxlint/binding-linux-x64-gnu': 1.82.0 + '@oxlint/binding-linux-x64-musl': 1.82.0 + '@oxlint/binding-openharmony-arm64': 1.82.0 + '@oxlint/binding-win32-arm64-msvc': 1.82.0 + '@oxlint/binding-win32-ia32-msvc': 1.82.0 + '@oxlint/binding-win32-x64-msvc': 1.82.0 oxlint-tsgolint: 7.0.2001 p-finally@1.0.0: {} @@ -16345,7 +16156,7 @@ snapshots: '@types/retry': 0.12.0 retry: 0.13.1 - p-retry@8.0.0: + p-retry@8.0.1: dependencies: is-network-error: 1.3.2 @@ -16396,7 +16207,7 @@ snapshots: parse5@8.0.1: dependencies: - entities: 8.0.0 + entities: 8.1.0 parseley@0.13.1: dependencies: @@ -16514,7 +16325,7 @@ snapshots: tsx: 4.23.13 yaml: 2.9.0 - postcss-safe-parser@7.0.1(postcss@8.5.28): + postcss-safe-parser@7.1.0(postcss@8.5.28): dependencies: postcss: 8.5.28 @@ -16533,7 +16344,7 @@ snapshots: powershell-utils@0.1.0: {} - powershell-utils@0.2.0: {} + powershell-utils@0.2.1: {} pretty-ms@9.3.1: dependencies: @@ -16584,7 +16395,7 @@ snapshots: qoa-format@1.0.1: dependencies: - '@thi.ng/bitstream': 2.4.54 + '@thi.ng/bitstream': 2.4.55 qrcode@1.5.4: dependencies: @@ -16607,7 +16418,7 @@ snapshots: range-parser@1.3.0: {} - rastermill@0.3.2: + rastermill@0.3.3: dependencies: '@silvia-odwyer/photon-node': 0.3.4 @@ -16620,15 +16431,6 @@ snapshots: re2js@2.8.6: {} - react-dom@19.2.8(react@19.2.8): - dependencies: - react: 19.2.8 - scheduler: 0.27.0 - optional: true - - react@19.2.8: - optional: true - readable-stream@2.3.8: dependencies: core-util-is: 1.0.3 @@ -16749,37 +16551,16 @@ snapshots: dependencies: dts-resolver: 3.0.0 get-tsconfig: 5.0.0-beta.6 - obug: 2.1.4 + obug: 2.2.1 rolldown: 1.2.7 - yuku-ast: 0.9.3 - yuku-codegen: 0.9.3 - yuku-parser: 0.9.3 + yuku-ast: 0.9.5 + yuku-codegen: 0.9.5 + yuku-parser: 0.9.5 optionalDependencies: typescript: 6.0.3 transitivePeerDependencies: - oxc-resolver - rolldown@1.2.5: - dependencies: - '@oxc-project/types': 0.146.0 - '@rolldown/pluginutils': 1.0.1 - optionalDependencies: - '@rolldown/binding-android-arm-eabi': 1.2.5 - '@rolldown/binding-android-arm64': 1.2.5 - '@rolldown/binding-darwin-arm64': 1.2.5 - '@rolldown/binding-darwin-x64': 1.2.5 - '@rolldown/binding-freebsd-x64': 1.2.5 - '@rolldown/binding-linux-arm-gnueabihf': 1.2.5 - '@rolldown/binding-linux-arm64-gnu': 1.2.5 - '@rolldown/binding-linux-arm64-musl': 1.2.5 - '@rolldown/binding-linux-ppc64-gnu': 1.2.5 - '@rolldown/binding-linux-s390x-gnu': 1.2.5 - '@rolldown/binding-linux-x64-gnu': 1.2.5 - '@rolldown/binding-linux-x64-musl': 1.2.5 - '@rolldown/binding-openharmony-arm64': 1.2.5 - '@rolldown/binding-win32-arm64-msvc': 1.2.5 - '@rolldown/binding-win32-x64-msvc': 1.2.5 - rolldown@1.2.7: dependencies: '@oxc-project/types': 0.148.0 @@ -16838,9 +16619,6 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.27.0: - optional: true - sdp-transform@3.0.0: {} selderee@0.12.0: @@ -16961,8 +16739,8 @@ snapshots: skillflag@0.2.1: dependencies: - '@clack/prompts': 1.7.0 - tar-stream: 3.2.0 + '@clack/prompts': 1.8.0 + tar-stream: 3.2.1 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -16984,11 +16762,11 @@ snapshots: dependencies: agent-base: 9.0.0 debug: 4.4.3(supports-color@10.2.2) - socks: 2.8.9 + socks: 2.8.10 transitivePeerDependencies: - supports-color - socks@2.8.9: + socks@2.8.10: dependencies: ip-address: 10.7.0 smart-buffer: 4.2.0 @@ -17044,7 +16822,7 @@ snapshots: stackback@0.0.2: {} - standardwebhooks@1.0.0: + standardwebhooks@1.1.1: dependencies: '@stablelib/base64': 1.0.1 fast-sha256: 1.3.0 @@ -17053,7 +16831,7 @@ snapshots: std-env@4.2.0: {} - streamx@2.28.0: + streamx@2.28.1: dependencies: events-universal: 1.0.1 fast-fifo: 1.3.2 @@ -17137,7 +16915,7 @@ snapshots: globby: 16.2.4 globjoin: 0.1.4 html-tags: 5.1.0 - ignore: 7.0.8 + ignore: 7.0.9 import-meta-resolve: 4.2.0 mathml-tag-names: 4.0.0 meow: 14.1.0 @@ -17145,7 +16923,7 @@ snapshots: normalize-path: 3.0.0 picocolors: 1.1.1 postcss: 8.5.28 - postcss-safe-parser: 7.0.1(postcss@8.5.28) + postcss-safe-parser: 7.1.0(postcss@8.5.28) postcss-selector-parser: 7.1.6 postcss-value-parser: 4.2.0 string-width: 8.2.2 @@ -17193,12 +16971,12 @@ snapshots: tapable@2.3.3: {} - tar-stream@3.2.0: + tar-stream@3.2.1: dependencies: b4a: 1.8.1 bare-fs: 4.8.1 fast-fifo: 1.3.2 - streamx: 2.28.0 + streamx: 2.28.1 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -17214,7 +16992,7 @@ snapshots: teex@1.0.1: dependencies: - streamx: 2.28.0 + streamx: 2.28.1 transitivePeerDependencies: - bare-abort-controller - react-native-b4a @@ -17248,21 +17026,21 @@ snapshots: fdir: 6.5.0(picomatch@4.0.7) picomatch: 4.0.7 - tinypool@2.1.0: {} + tinypool@2.1.2: {} tinyrainbow@3.1.1: {} tlds@1.261.0: {} - tldts-core@7.4.11: {} + tldts-core@7.4.12: {} tldts@7.4.10: dependencies: - tldts-core: 7.4.11 + tldts-core: 7.4.12 - tldts@7.4.11: + tldts@7.4.12: dependencies: - tldts-core: 7.4.11 + tldts-core: 7.4.12 to-regex-range@5.0.1: dependencies: @@ -17282,7 +17060,7 @@ snapshots: tough-cookie@6.0.2: dependencies: - tldts: 7.4.11 + tldts: 7.4.12 tr46@0.0.3: {} @@ -17314,7 +17092,7 @@ snapshots: empathic: 2.0.1 hookable: 6.1.1 import-without-cache: 0.4.0 - obug: 2.1.4 + obug: 2.2.1 picomatch: 4.0.7 rolldown: 1.2.7 rolldown-plugin-dts: 0.28.5(rolldown@1.2.7)(typescript@6.0.3) @@ -17367,7 +17145,7 @@ snapshots: media-typer: 1.1.1 mime-types: 3.0.2 - typebox@1.3.27: {} + typebox@1.3.30: {} typescript@5.2.2: {} @@ -17422,9 +17200,9 @@ snapshots: undici-types@7.24.6: {} - undici-types@8.10.0: {} + undici-types@8.10.2: {} - undici-types@8.3.0: {} + undici-types@8.9.0: {} undici@7.29.1: {} @@ -17477,7 +17255,7 @@ snapshots: unrun@0.3.1: dependencies: - rolldown: 1.2.5 + rolldown: 1.2.7 util-deprecate@1.0.2: {} @@ -17501,67 +17279,41 @@ snapshots: '@types/unist': 3.0.3 vfile-message: 4.0.3 - vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0): + vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0): dependencies: lightningcss: 1.33.0 picomatch: 4.0.7 postcss: 8.5.28 - rolldown: 1.2.5 + rolldown: 1.2.7 tinyglobby: 0.2.17 optionalDependencies: - '@types/node': 26.4.1 + '@types/node': 26.5.0 esbuild: 0.28.2 fsevents: 2.3.3 jiti: 2.7.0 tsx: 4.23.13 yaml: 2.9.0 - vitest@5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.3.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)): + vitest@5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.5.0)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)): dependencies: '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) + '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) chai: 6.2.2 es-module-lexer: 2.3.2 expect-type: 1.4.0 magic-string: 1.2.3 - obug: 2.1.4 + obug: 2.2.1 picomatch: 4.0.7 std-env: 4.2.0 tinybench: 6.1.4 tinyexec: 1.3.0 tinyglobby: 0.2.17 - vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) + vite: 8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.1 - '@types/node': 26.4.1 - '@vitest/browser-playwright': 5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) - '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) - '@vitest/ui': 5.0.0(vitest@5.0.0) - jsdom: 30.0.1(@noble/hashes@2.3.0) - transitivePeerDependencies: - - msw - - vitest@5.0.0(patch_hash=5e7c1655044613ad5d71751e82ea0e6448f7bf5a7445b86114f495866c9a3bcf)(@opentelemetry/api@1.9.1)(@types/node@26.4.1)(@vitest/browser-playwright@5.0.0)(@vitest/coverage-v8@5.0.0)(@vitest/ui@5.0.0)(jsdom@30.0.1(@noble/hashes@2.4.0))(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)): - dependencies: - '@types/chai': 5.2.3 - '@vitest/mocker': 5.0.0(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0)) - chai: 6.2.2 - es-module-lexer: 2.3.2 - expect-type: 1.4.0 - magic-string: 1.2.3 - obug: 2.1.4 - picomatch: 4.0.7 - std-env: 4.2.0 - tinybench: 6.1.4 - tinyexec: 1.3.0 - tinyglobby: 0.2.17 - vite: 8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 26.4.1 - '@vitest/browser-playwright': 5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.4.1)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) + '@types/node': 26.5.0 + '@vitest/browser-playwright': 5.0.0(playwright@1.63.0)(vite@8.2.2(@types/node@26.5.0)(esbuild@0.28.2)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(vitest@5.0.0) '@vitest/coverage-v8': 5.0.0(@vitest/browser@5.0.0)(vitest@5.0.0) '@vitest/ui': 5.0.0(vitest@5.0.0) jsdom: 30.0.1(@noble/hashes@2.4.0) @@ -17570,23 +17322,23 @@ snapshots: vscode-css-languageservice@4.3.0: dependencies: - vscode-languageserver-textdocument: 1.0.13 + vscode-languageserver-textdocument: 1.0.14 vscode-languageserver-types: 3.16.0-next.2 vscode-nls: 4.1.2 vscode-uri: 2.1.2 vscode-html-languageservice@3.1.0: dependencies: - vscode-languageserver-textdocument: 1.0.13 + vscode-languageserver-textdocument: 1.0.14 vscode-languageserver-types: 3.16.0-next.2 vscode-nls: 4.1.2 vscode-uri: 2.1.2 vscode-jsonrpc@8.2.1: {} - vscode-jsonrpc@9.0.1: {} + vscode-jsonrpc@9.0.2: {} - vscode-languageserver-textdocument@1.0.13: {} + vscode-languageserver-textdocument@1.0.14: {} vscode-languageserver-types@3.16.0-next.2: {} @@ -17636,7 +17388,7 @@ snapshots: '@shinyoshiaki/binary-data': 0.6.1 buffer: 6.0.3 debug: 4.4.0(supports-color@10.2.2) - mediabunny: 1.55.2 + mediabunny: 1.56.0 multicast-dns: 7.2.5 tweetnacl: 1.0.3 transitivePeerDependencies: @@ -17646,14 +17398,6 @@ snapshots: whatwg-mimetype@5.0.0: {} - whatwg-url@16.0.1(@noble/hashes@2.3.0): - dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@2.3.0) - tr46: 6.0.0 - webidl-conversions: 8.0.1 - transitivePeerDependencies: - - '@noble/hashes' - whatwg-url@16.0.1(@noble/hashes@2.4.0): dependencies: '@exodus/bytes': 1.15.1(@noble/hashes@2.4.0) @@ -17662,14 +17406,6 @@ snapshots: transitivePeerDependencies: - '@noble/hashes' - whatwg-url@17.1.0(@noble/hashes@2.3.0): - dependencies: - '@exodus/bytes': 1.15.1(@noble/hashes@2.3.0) - tr46: 6.0.0 - webidl-conversions: 8.0.1 - transitivePeerDependencies: - - '@noble/hashes' - whatwg-url@17.1.0(@noble/hashes@2.4.0): dependencies: '@exodus/bytes': 1.15.1(@noble/hashes@2.4.0) @@ -17786,44 +17522,44 @@ snapshots: yoctocolors@2.2.0: {} - yuku-ast@0.9.3: + yuku-ast@0.9.5: dependencies: - '@yuku-toolchain/types': 0.9.3 + '@yuku-toolchain/types': 0.9.5 - yuku-codegen@0.9.3: + yuku-codegen@0.9.5: dependencies: - '@yuku-toolchain/types': 0.9.3 + '@yuku-toolchain/types': 0.9.5 optionalDependencies: - '@yuku-codegen/binding-android-arm64': 0.9.3 - '@yuku-codegen/binding-darwin-arm64': 0.9.3 - '@yuku-codegen/binding-darwin-x64': 0.9.3 - '@yuku-codegen/binding-freebsd-x64': 0.9.3 - '@yuku-codegen/binding-linux-arm-gnu': 0.9.3 - '@yuku-codegen/binding-linux-arm-musl': 0.9.3 - '@yuku-codegen/binding-linux-arm64-gnu': 0.9.3 - '@yuku-codegen/binding-linux-arm64-musl': 0.9.3 - '@yuku-codegen/binding-linux-x64-gnu': 0.9.3 - '@yuku-codegen/binding-linux-x64-musl': 0.9.3 - '@yuku-codegen/binding-win32-arm64': 0.9.3 - '@yuku-codegen/binding-win32-x64': 0.9.3 + '@yuku-codegen/binding-android-arm64': 0.9.5 + '@yuku-codegen/binding-darwin-arm64': 0.9.5 + '@yuku-codegen/binding-darwin-x64': 0.9.5 + '@yuku-codegen/binding-freebsd-x64': 0.9.5 + '@yuku-codegen/binding-linux-arm-gnu': 0.9.5 + '@yuku-codegen/binding-linux-arm-musl': 0.9.5 + '@yuku-codegen/binding-linux-arm64-gnu': 0.9.5 + '@yuku-codegen/binding-linux-arm64-musl': 0.9.5 + '@yuku-codegen/binding-linux-x64-gnu': 0.9.5 + '@yuku-codegen/binding-linux-x64-musl': 0.9.5 + '@yuku-codegen/binding-win32-arm64': 0.9.5 + '@yuku-codegen/binding-win32-x64': 0.9.5 - yuku-parser@0.9.3: + yuku-parser@0.9.5: dependencies: - '@yuku-toolchain/types': 0.9.3 - yuku-ast: 0.9.3 + '@yuku-toolchain/types': 0.9.5 + yuku-ast: 0.9.5 optionalDependencies: - '@yuku-parser/binding-android-arm64': 0.9.3 - '@yuku-parser/binding-darwin-arm64': 0.9.3 - '@yuku-parser/binding-darwin-x64': 0.9.3 - '@yuku-parser/binding-freebsd-x64': 0.9.3 - '@yuku-parser/binding-linux-arm-gnu': 0.9.3 - '@yuku-parser/binding-linux-arm-musl': 0.9.3 - '@yuku-parser/binding-linux-arm64-gnu': 0.9.3 - '@yuku-parser/binding-linux-arm64-musl': 0.9.3 - '@yuku-parser/binding-linux-x64-gnu': 0.9.3 - '@yuku-parser/binding-linux-x64-musl': 0.9.3 - '@yuku-parser/binding-win32-arm64': 0.9.3 - '@yuku-parser/binding-win32-x64': 0.9.3 + '@yuku-parser/binding-android-arm64': 0.9.5 + '@yuku-parser/binding-darwin-arm64': 0.9.5 + '@yuku-parser/binding-darwin-x64': 0.9.5 + '@yuku-parser/binding-freebsd-x64': 0.9.5 + '@yuku-parser/binding-linux-arm-gnu': 0.9.5 + '@yuku-parser/binding-linux-arm-musl': 0.9.5 + '@yuku-parser/binding-linux-arm64-gnu': 0.9.5 + '@yuku-parser/binding-linux-arm64-musl': 0.9.5 + '@yuku-parser/binding-linux-x64-gnu': 0.9.5 + '@yuku-parser/binding-linux-x64-musl': 0.9.5 + '@yuku-parser/binding-win32-arm64': 0.9.5 + '@yuku-parser/binding-win32-x64': 0.9.5 zca-js@2.1.2: dependencies: @@ -17849,8 +17585,6 @@ snapshots: zod@3.25.76: {} - zod@4.4.3: {} - zod@4.5.4: {} zwitch@2.0.4: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index afb49c75a178..81a0dab6b4ab 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -72,13 +72,13 @@ overrides: "mailauth@5.0.3>nodemailer": 10.0.8 # Mailauth pins vulnerable Undici; remove when its direct dependency is fixed. "mailauth@5.0.3>undici": 8.10.2 - "mailparser@3.9.20>nodemailer": 10.0.8 + "mailparser@3.9.23>nodemailer": 10.0.8 minimatch: 10.2.6 path-to-regexp: 8.4.2 proxy-addr: 2.0.8 qs: 6.16.0 node-domexception: "npm:@nolyfill/domexception@1.0.28" - typebox: 1.3.27 + typebox: 1.3.30 tar: 7.5.22 tough-cookie: 6.0.2 "tsdown>rolldown-plugin-dts": 0.28.5 diff --git a/qa/convex-credential-broker/package.json b/qa/convex-credential-broker/package.json index 0bf4e642931d..c8460ed07dfd 100644 --- a/qa/convex-credential-broker/package.json +++ b/qa/convex-credential-broker/package.json @@ -14,6 +14,6 @@ "nostr-tools": "2.25.2" }, "devDependencies": { - "@types/node": "26.4.1" + "@types/node": "26.5.0" } } diff --git a/scripts/cloudflare/Dockerfile b/scripts/cloudflare/Dockerfile index 09522c4e7d31..18fbeba9d648 100644 --- a/scripts/cloudflare/Dockerfile +++ b/scripts/cloudflare/Dockerfile @@ -5,8 +5,8 @@ FROM ${OPENCLAW_IMAGE} USER root -ARG LITESTREAM_VERSION=0.5.16 -ARG LITESTREAM_SHA256=9e29112380a942e4a62ee07773684396cb8b308dc4d67e130bef41f75e937f0a +ARG LITESTREAM_VERSION=0.5.17 +ARG LITESTREAM_SHA256=cfb371176d164437ae869f8351cfde49bd1804ae71c61923f75c9cba9c9c006d ADD --checksum=sha256:${LITESTREAM_SHA256} \ https://github.com/benbjohnson/litestream/releases/download/v${LITESTREAM_VERSION}/litestream-${LITESTREAM_VERSION}-linux-x86_64.tar.gz \ diff --git a/scripts/cloudflare/package.json b/scripts/cloudflare/package.json index 843b7f318a0f..ecb57db35997 100644 --- a/scripts/cloudflare/package.json +++ b/scripts/cloudflare/package.json @@ -11,6 +11,6 @@ }, "devDependencies": { "typescript": "7.0.2", - "wrangler": "4.129.0" + "wrangler": "4.130.0" } } diff --git a/scripts/crabbox-untrusted-bootstrap.sh b/scripts/crabbox-untrusted-bootstrap.sh index 08d22edeb88c..d816e0db2858 100755 --- a/scripts/crabbox-untrusted-bootstrap.sh +++ b/scripts/crabbox-untrusted-bootstrap.sh @@ -2,9 +2,12 @@ set -euo pipefail node_version="24.19.0" -pnpm_spec="pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457" -# Trusted main's historical pin is needed to validate older contributor heads. -historical_pnpm_spec="pnpm@12.1.0+sha512.d9b8276d97f6ec86e49815877f91ee9f63cee61f2063b304e43b6dab8fa07ce8a9afd46d2facd39f921e6a9d06b3c75a81349c7b888c2d22886bae0229901037" +pnpm_spec="pnpm@12.4.0+sha512.37536c26ed40ab4134b6511e09f6b27f3ebb45687468f2406ca3805279a4e5ca158c1931350ad9774d6ab2108d71b3dbaeb39943159294375e4d053e8e05685c" +# Keep exact formerly trusted pins so older contributor heads remain verifiable. +historical_pnpm_specs=( + "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457" + "pnpm@12.1.0+sha512.d9b8276d97f6ec86e49815877f91ee9f63cee61f2063b304e43b6dab8fa07ce8a9afd46d2facd39f921e6a9d06b3c75a81349c7b888c2d22886bae0229901037" +) if [[ $# -lt 2 ]]; then echo "usage: $0 [args...]" >&2 @@ -104,9 +107,9 @@ INSTALL_NODE candidate_package_json="$PWD/package.json" pnpm_spec="$( cd "$install_root" - "$install_root/bin/node" - "$candidate_package_json" "$pnpm_spec" "$historical_pnpm_spec" <<'PACKAGE_MANAGER' + "$install_root/bin/node" - "$candidate_package_json" "$pnpm_spec" "${historical_pnpm_specs[@]}" <<'PACKAGE_MANAGER' const fs = require("node:fs"); -const [file, current, historical] = process.argv.slice(2); +const [file, ...approvedPins] = process.argv.slice(2); let pkg; try { pkg = JSON.parse(fs.readFileSync(file, "utf8")); @@ -114,7 +117,7 @@ try { console.error("refusing untrusted run: invalid package.json"); process.exit(1); } -if (pkg?.packageManager !== current && pkg?.packageManager !== historical) { +if (!approvedPins.includes(pkg?.packageManager)) { console.error("refusing untrusted run: packageManager pin differs from trusted main or approved history"); process.exit(1); } @@ -126,11 +129,11 @@ pnpm_version="${pnpm_spec#pnpm@}" pnpm_version="${pnpm_version%%+*}" pnpm_native_sha512="" case "$pnpm_version:$node_arch" in - 12.3.4:x64) - pnpm_native_sha512="d99a8e9523e47f05f5879711f853e259ff3e17eda1653ff74ef8542b9b22807ab06900888aaf11ec21b186774ab3adc9b5c2e2d9ad50a68fb05ff128c9f8f225" + 12.4.0:x64) + pnpm_native_sha512="490560464711e17caa7fcf9535bb58d2bb5c1277c3ab8f11847df41d6a36fd47ea2847e57b6ace3321993a63750db330e19cc6e66598a02f353bb66a1c565c3f" ;; - 12.3.4:arm64) - pnpm_native_sha512="b7bd40540ecb46a88a4f2679c4c61a65cda7e437dda4c6dfa2466e8883971c138cd371029c5d2de226306810ea26056394a6143b0685fdb4506a318d038709e3" + 12.4.0:arm64) + pnpm_native_sha512="ea7a50530ab70ff5976d3811e1ebc0a44290f484f39d9e88cff769b5c8c1cc0efec122d369890af7c39ddb0b070a83e61056fdb46b4cf9cbc6f36fb0cb4a3db8" ;; esac pnpm_archive="pnpm-${pnpm_version}.tgz" diff --git a/scripts/docker/sandbox/Dockerfile b/scripts/docker/sandbox/Dockerfile index de9605b235bc..b5ca3bb320d0 100644 --- a/scripts/docker/sandbox/Dockerfile +++ b/scripts/docker/sandbox/Dockerfile @@ -1,4 +1,4 @@ -FROM debian:bookworm-slim@sha256:abd67ffcfa541b485a3dff59865ab629aa048a6c613e639d36e7456b0b229241 +FROM debian:bookworm-slim@sha256:88200866dfff7ea7f5cbcb6ec7c8a701889efe6fe859fe64d6990e4b07ea4171 ENV DEBIAN_FRONTEND=noninteractive diff --git a/scripts/docker/sandbox/Dockerfile.browser b/scripts/docker/sandbox/Dockerfile.browser index 604249897867..cc96976d72bd 100644 --- a/scripts/docker/sandbox/Dockerfile.browser +++ b/scripts/docker/sandbox/Dockerfile.browser @@ -1,6 +1,6 @@ # syntax=docker/dockerfile:1.7 -FROM debian:bookworm-slim@sha256:abd67ffcfa541b485a3dff59865ab629aa048a6c613e639d36e7456b0b229241 +FROM debian:bookworm-slim@sha256:88200866dfff7ea7f5cbcb6ec7c8a701889efe6fe859fe64d6990e4b07ea4171 LABEL org.openclaw.sandbox-browser.contract="2026-05-12-cdp-relay-auth" diff --git a/scripts/docs-i18n/go.mod b/scripts/docs-i18n/go.mod index acf55e619e7c..a3a571d5f1aa 100644 --- a/scripts/docs-i18n/go.mod +++ b/scripts/docs-i18n/go.mod @@ -6,6 +6,6 @@ toolchain go1.27.1 require ( github.com/yuin/goldmark v1.8.6 - golang.org/x/net v0.58.0 + golang.org/x/net v0.59.0 gopkg.in/yaml.v3 v3.0.1 ) diff --git a/scripts/docs-i18n/go.sum b/scripts/docs-i18n/go.sum index 483b332e6943..2f10d7eea4a6 100644 --- a/scripts/docs-i18n/go.sum +++ b/scripts/docs-i18n/go.sum @@ -1,7 +1,7 @@ github.com/yuin/goldmark v1.8.6 h1:d0VcaP1sx9GkFVkoW+KtggpGi2KZ965i14b0+bDQST4= github.com/yuin/goldmark v1.8.6/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg= -golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To= -golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU= +golang.org/x/net v0.59.0 h1:5zfYln+w5XCxwrnMMJPufRgNoXEaGxl0wo5GqPXyues= +golang.org/x/net v0.59.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= diff --git a/scripts/install-cli.sh b/scripts/install-cli.sh index 960da7fc1bda..92714d8d57fd 100755 --- a/scripts/install-cli.sh +++ b/scripts/install-cli.sh @@ -1275,7 +1275,7 @@ ensure_pnpm() { local repo_dir="${1:-$PWD}" local spec version pnpm_dir corepack_cmd="" npm_cmd lifecycle_arg selected_version spec="$(repo_pnpm_spec "$repo_dir" || true)" - [[ "$spec" == pnpm@* ]] || spec="pnpm@12.3.4" + [[ "$spec" == pnpm@* ]] || spec="pnpm@12.4.0" version="${spec#pnpm@}" version="${version%%+*}" pnpm_dir="$(mktemp -d "${TMPDIR:-/tmp}/openclaw-pnpm.XXXXXX")" || return 1 diff --git a/scripts/install.sh b/scripts/install.sh index aaf459cfc9d3..a4e8e184155b 100755 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -2653,7 +2653,7 @@ ensure_pnpm() { local repo_dir="${1:-$PWD}" local spec version pnpm_dir corepack_cmd="" npm_cmd lifecycle_arg selected_version spec="$(repo_pnpm_spec "$repo_dir" || true)" - [[ "$spec" == pnpm@* ]] || spec="pnpm@12.3.4" + [[ "$spec" == pnpm@* ]] || spec="pnpm@12.4.0" version="${spec#pnpm@}" version="${version%%+*}" pnpm_dir="$(mktemp -d "${TMPDIR:-/tmp}/openclaw-pnpm.XXXXXX")" || return 1 diff --git a/scripts/lib/vitest-pair-benchmark.mts b/scripts/lib/vitest-pair-benchmark.mts index f17654f7f342..fa1ed112b0e3 100644 --- a/scripts/lib/vitest-pair-benchmark.mts +++ b/scripts/lib/vitest-pair-benchmark.mts @@ -496,8 +496,8 @@ async function runVitestPairBenchmarkBeforeDeadline( deadline, ); deadline.throwIfExpired(); - if (packageManager.version !== "12.3.4") { - throw new Error(`vitest-pair benchmark requires pnpm 12.3.4, got ${packageManager.version}`); + if (packageManager.version !== "12.4.0") { + throw new Error(`vitest-pair benchmark requires pnpm 12.4.0, got ${packageManager.version}`); } const baselineInventory = assertInventoryAvailable(baselineDir, context.manifest); const candidateInventory = assertInventoryAvailable(candidateDir, context.manifest); diff --git a/scripts/materialize-vercel-cli.sh b/scripts/materialize-vercel-cli.sh index 0e9026567d31..1a560b6f4666 100755 --- a/scripts/materialize-vercel-cli.sh +++ b/scripts/materialize-vercel-cli.sh @@ -8,8 +8,8 @@ github_output="${3:-}" package_json="${source_root}/package.json" package_lock="${source_root}/package-lock.json" -expected_lock_sha256="2aac03328880441f2b423496ed52dbb638fa866c4cc6d8ba76909ec7c4fc702b" -expected_vercel_integrity="sha512-C+L/JKmlGDypKGcTU/atckydeK/AKa/7fKwUbvcwveguV1QPlY8beiIGgbwkdbb80bbIpPFHRQYrhi5XPAmCBA==" +expected_lock_sha256="a094a59287570aa124a65eb208739a5f4b89b7e8ffe768a3ac38842dd2e2dc85" +expected_vercel_integrity="sha512-sBxGOvWru8BFdCaqlRhtARTAWDL4FV+Q8APcN63lnOEryTXRce1z3DBWzaakpsts+uF1Sy9MdrTft0zPOWpGuA==" test -f "${package_json}" test -f "${package_lock}" if [[ -e "${destination}" || -L "${destination}" ]]; then @@ -53,7 +53,7 @@ vercel_version="$( VERCEL_CLI_ROOT="${destination}" \ node -p "require(require('node:path').join(process.env.VERCEL_CLI_ROOT, 'node_modules/vercel/package.json')).version" )" -[[ "${vercel_version}" == "59.11.7" ]] || { +[[ "${vercel_version}" == "59.13.1" ]] || { echo "Pinned Vercel CLI version mismatch: ${vercel_version}" >&2 exit 1 } diff --git a/scripts/run-opengrep.sh b/scripts/run-opengrep.sh index 96ce2f500ce3..46c32c121fba 100755 --- a/scripts/run-opengrep.sh +++ b/scripts/run-opengrep.sh @@ -50,7 +50,7 @@ if ! command -v opengrep >/dev/null 2>&1; then error: 'opengrep' not found on PATH. Install with: - curl -fsSL https://raw.githubusercontent.com/opengrep/opengrep/v1.27.1/install.sh | bash -s -- -v v1.27.1 + curl -fsSL https://raw.githubusercontent.com/opengrep/opengrep/v1.30.0/install.sh | bash -s -- -v v1.30.0 (See https://opengrep.dev for other options.) EOF @@ -120,7 +120,7 @@ write_empty_sarif() { "driver": { "name": "Opengrep OSS", "informationUri": "https://opengrep.dev", - "semanticVersion": "1.27.1", + "semanticVersion": "1.30.0", "rules": [] } }, diff --git a/src/cli/resume-cli.runtime.ts b/src/cli/resume-cli.runtime.ts index 6842cbb540bd..02c0a501fe99 100644 --- a/src/cli/resume-cli.runtime.ts +++ b/src/cli/resume-cli.runtime.ts @@ -1,5 +1,5 @@ // Resolves recent Gateway sessions and attaches the existing TUI to the selected key. -import { cancel, isCancel } from "@clack/prompts"; +import { cancel } from "@clack/prompts"; import { lazyCompile } from "../../packages/gateway-protocol/src/protocol-validator.js"; import { SessionsResolveResultSchema } from "../../packages/gateway-protocol/src/schema/sessions-resolve.js"; import { selectStyled } from "../../packages/terminal-core/src/prompt-select-styled.js"; @@ -147,7 +147,7 @@ async function promptResumeSession( hint: choice.description ? sanitizeTerminalText(choice.description) : undefined, })), }); - if (isCancel(selected)) { + if (typeof selected === "symbol") { cancel("Cancelled."); return null; } diff --git a/src/cli/update-cli.test.ts b/src/cli/update-cli.test.ts index 21270e84ab51..b39dcb1ed7e1 100644 --- a/src/cli/update-cli.test.ts +++ b/src/cli/update-cli.test.ts @@ -6,6 +6,7 @@ import fs from "node:fs/promises"; import { createServer } from "node:net"; import os from "node:os"; import path from "node:path"; +import { CANCEL_SYMBOL, isCancel } from "@clack/core"; import { expectDefined } from "@openclaw/normalization-core"; import { isRecord } from "@openclaw/normalization-core/record-coerce"; import { Command } from "commander"; @@ -54,6 +55,7 @@ import { OPENCLAW_AGENT_SCHEMA_VERSION } from "../state/openclaw-agent-db-contra import { OPENCLAW_STATE_SCHEMA_VERSION } from "../state/openclaw-state-db-contract.js"; import { resolveOpenClawStateSqlitePath } from "../state/openclaw-state-db.paths.js"; import { captureEnv, withEnvAsync } from "../test-utils/env.js"; +import { createCommandResult as commandResult } from "../test-utils/npm-spec-install-test-helpers.js"; import { getFreePort } from "../test-utils/ports.js"; import type { TempHomeEnv } from "../test-utils/temp-home.js"; import { VERSION } from "../version.js"; @@ -74,7 +76,6 @@ const confirm = vi.fn(); const select = vi.fn(); const text = vi.fn(); const spinner = vi.fn(() => ({ start: vi.fn(), stop: vi.fn(), clear: vi.fn() })); -const isCancel = (value: unknown) => value === "cancel"; const triageCommand = vi.fn(); const triageAfterFailure = vi.fn(); @@ -105,6 +106,9 @@ const managedUpdateHandoff = vi.hoisted(() => ({ cancel: vi.fn(), })); const candidateValidation = vi.hoisted(() => vi.fn()); +const sourceRuntimeCompletion = vi.hoisted(() => + vi.fn(), +); const pluginAvailabilityPreflight = vi.hoisted(() => vi.fn()); vi.mock("./update-cli/update-command-plugin-preflight.js", () => ({ preflightConfiguredNpmPluginTargets: pluginAvailabilityPreflight, @@ -206,6 +210,11 @@ vi.mock("../infra/update-repair-agent.js", () => ({ vi.mock("../infra/update-candidate-canary.js", () => ({ validateUpdateCandidateCanary: candidateValidation, })); +// Runtime generation and publication have real owner/process coverage; CLI +// orchestration must not rebuild the checkout behind its simulated updater. +vi.mock("./update-cli/update-command-runtime.js", () => ({ + completeSourceUpdateRuntime: sourceRuntimeCompletion, +})); vi.mock("../infra/update-candidate-state.js", async (importOriginal) => ({ ...(await importOriginal()), readUpdateStateSchemaVersions: stateSchemaVersions, @@ -1373,25 +1382,6 @@ describe("update-cli", () => { ]); }; - const commandResult = ( - overrides: Partial<{ - stdout: string; - stderr: string; - code: number; - signal: NodeJS.Signals | null; - killed: boolean; - termination: "exit" | "timeout"; - }> = {}, - ) => ({ - stdout: "", - stderr: "", - code: 0, - signal: null, - killed: false, - termination: "exit" as const, - ...overrides, - }); - const writeNpmPackageInstall = async ( argv: string[], packageRoot: string, @@ -2150,6 +2140,7 @@ describe("update-cli", () => { const { getFileLockProcessStartTime } = await import("../shared/pid-alive.js"); expect(getFileLockProcessStartTime(process.pid)).not.toBeNull(); pluginAvailabilityPreflight.mockResolvedValue([]); + sourceRuntimeCompletion.mockResolvedValue({ changed: false }); triageAfterFailure.mockResolvedValue(undefined); unattendedRepair.mockResolvedValue({ status: "unavailable", @@ -2422,6 +2413,7 @@ describe("update-cli", () => { }); await invokeUpdateCli(yes ? { yes: true } : {}); expect(runGatewayUpdate).toHaveBeenCalledOnce(); + expect(sourceRuntimeCompletion).toHaveBeenCalledOnce(); expect(confirm).not.toHaveBeenCalled(); expect(select).not.toHaveBeenCalled(); expect(updateFailureActionMocks.runInteractiveUpdateFailureAction).not.toHaveBeenCalled(); @@ -2697,6 +2689,7 @@ describe("update-cli", () => { expectPackageInstallSpec("openclaw@9999.0.0", true); } else { expect(runGatewayUpdate).toHaveBeenCalledOnce(); + expect(sourceRuntimeCompletion).toHaveBeenCalledWith(expect.objectContaining({ root })); } expect(serviceStop).toHaveBeenCalledTimes(restart ? 1 : 0); expect(freshRestartCalls().length).toBe(restart ? 1 : 0); @@ -14565,17 +14558,25 @@ describe("update-cli", () => { ).toBe(shouldRunPackageUpdate); }); - it("opens and cancels the wizard without inspecting update freshness", async () => { - setTty(true); - select.mockResolvedValue("cancel"); - vi.mocked(checkUpdateStatus).mockRejectedValue(new Error("Freshness inspection unavailable")); + it.each(["channel", "restart"])( + "cancels the wizard at %s without inspecting update freshness", + async (prompt) => { + setTty(true); + if (prompt === "channel") { + select.mockResolvedValue(CANCEL_SYMBOL); + } else { + confirm.mockResolvedValue(CANCEL_SYMBOL); + } + vi.mocked(checkUpdateStatus).mockRejectedValue(new Error("Freshness inspection unavailable")); - await updateWizardCommand(); + await updateWizardCommand(); - expect(select).toHaveBeenCalledWith(expect.objectContaining({ message: "Update channel" })); - expect(defaultRuntime.log).toHaveBeenCalledWith(expect.stringContaining("Update cancelled.")); - expect(runGatewayUpdate).not.toHaveBeenCalled(); - }); + expect(select).toHaveBeenCalledWith(expect.objectContaining({ message: "Update channel" })); + expect(defaultRuntime.log).toHaveBeenCalledWith(expect.stringContaining("Update cancelled.")); + expect(runGatewayUpdate).not.toHaveBeenCalled(); + expect(sourceRuntimeCompletion).not.toHaveBeenCalled(); + }, + ); it.each(["before", "after"])( "update wizard forwards explicit consent %s the subcommand", diff --git a/src/cli/update-cli/cleanup.ts b/src/cli/update-cli/cleanup.ts index e85700913ab5..af4d333c6eb2 100644 --- a/src/cli/update-cli/cleanup.ts +++ b/src/cli/update-cli/cleanup.ts @@ -1,5 +1,5 @@ /** Local recovery retirement. This handler never invokes update or Doctor repair. */ -import { confirm, isCancel } from "@clack/prompts"; +import { confirm } from "@clack/prompts"; import { inspectSessionSqliteRecovery, type RecoveryCleanupReport, @@ -60,7 +60,7 @@ export async function updateCleanupCommand(options: { initialValue: false, output: process.stderr, }); - return !isCancel(answer) && answer; + return answer === true; }, }); } diff --git a/src/cli/update-cli/wizard.ts b/src/cli/update-cli/wizard.ts index dc4031097599..76eb60e31533 100644 --- a/src/cli/update-cli/wizard.ts +++ b/src/cli/update-cli/wizard.ts @@ -90,7 +90,7 @@ export async function updateWizardCommand(opts: UpdateWizardOptions = {}): Promi initialValue: "keep", }); - if (isCancel(pickedChannel)) { + if (typeof pickedChannel === "symbol") { defaultRuntime.log(theme.muted("Update cancelled.")); defaultRuntime.exit(0); return; @@ -132,7 +132,7 @@ export async function updateWizardCommand(opts: UpdateWizardOptions = {}): Promi message: stylePromptMessage("Restart the gateway service after update?"), initialValue: true, }); - if (isCancel(restart)) { + if (typeof restart === "symbol") { defaultRuntime.log(theme.muted("Update cancelled.")); defaultRuntime.exit(0); return; diff --git a/src/commands/migrate.test.ts b/src/commands/migrate.test.ts index d6861a67228f..74e90b9c37ba 100644 --- a/src/commands/migrate.test.ts +++ b/src/commands/migrate.test.ts @@ -1,5 +1,6 @@ // Top-level migrate command tests cover provider planning, interactive selection, apply flow, and JSON output. import fs from "node:fs/promises"; +import { CANCEL_SYMBOL } from "@clack/prompts"; import { expectDefined } from "@openclaw/normalization-core"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import type { @@ -11,10 +12,8 @@ import { createNonExitingRuntime, ExitError, type RuntimeEnv } from "../runtime. const mocks = vi.hoisted(() => ({ backupCreateCommand: vi.fn(), - cancelSymbol: Symbol("cancel"), clackCancel: vi.fn(), clackConfirm: vi.fn(), - clackIsCancel: vi.fn(), clackLogMessage: vi.fn(), multiselect: vi.fn(), progress: { @@ -63,10 +62,10 @@ vi.mock("../cli/progress.js", () => ({ withProgress: mocks.withProgress, })); -vi.mock("@clack/prompts", () => ({ +vi.mock("@clack/prompts", async (importOriginal) => ({ + ...(await importOriginal()), cancel: mocks.clackCancel, confirm: mocks.clackConfirm, - isCancel: mocks.clackIsCancel, log: { message: mocks.clackLogMessage }, })); @@ -319,8 +318,6 @@ describe("migrateApplyCommand", () => { mocks.multiselect.mockReset(); mocks.clackCancel.mockReset(); mocks.clackConfirm.mockReset(); - mocks.clackIsCancel.mockReset(); - mocks.clackIsCancel.mockImplementation((value) => value === mocks.cancelSymbol); mocks.clackLogMessage.mockReset(); mocks.promptYesNo.mockReset(); mocks.backupCreateCommand.mockReset(); @@ -573,7 +570,7 @@ describe("migrateApplyCommand", () => { }); const skippedAuthPlan = authPlan("skipped"); mocks.provider.plan.mockResolvedValue(skippedAuthPlan); - mocks.clackConfirm.mockResolvedValue(mocks.cancelSymbol); + mocks.clackConfirm.mockResolvedValue(CANCEL_SYMBOL); await expect( migrateDefaultCommand(runtime, { provider: "hermes", dryRun: true }), @@ -695,7 +692,7 @@ describe("migrateApplyCommand", () => { if (acceptSkills) { mocks.multiselect.mockResolvedValueOnce(["skill:alpha"]); } - mocks.multiselect.mockResolvedValueOnce(mocks.cancelSymbol); + mocks.multiselect.mockResolvedValueOnce(CANCEL_SYMBOL); const result = await command(runtime, { provider: "codex" }); diff --git a/src/commands/migrate.ts b/src/commands/migrate.ts index ccfb81aedce9..3fb270424828 100644 --- a/src/commands/migrate.ts +++ b/src/commands/migrate.ts @@ -229,7 +229,7 @@ async function promptCodexMigrationSelection( selectableValues: items.map((item) => item.id), cursorAt: MIGRATION_SELECTION_ACCEPT, }); - if (isCancel(selected)) { + if (typeof selected === "symbol") { cancel(stylePromptTitle("Migration cancelled.") ?? "Migration cancelled."); runtime.log("Migration cancelled."); return null; diff --git a/src/commands/models/accounts.test.ts b/src/commands/models/accounts.test.ts index fb7ce655e830..b7ae2908fca0 100644 --- a/src/commands/models/accounts.test.ts +++ b/src/commands/models/accounts.test.ts @@ -1,5 +1,6 @@ import { once } from "node:events"; import type { IncomingHttpHeaders } from "node:http"; +import { CANCEL_SYMBOL } from "@clack/prompts"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; import { WebSocket, WebSocketServer } from "ws"; import type { @@ -30,14 +31,12 @@ import { } from "./accounts.js"; const mocks = vi.hoisted(() => ({ - cancellation: Symbol("clack:cancel"), password: vi.fn(), autocomplete: vi.fn(), openUrl: vi.fn(async () => false), })); vi.mock("@clack/prompts", async (importOriginal) => ({ ...(await importOriginal()), - isCancel: (value: unknown) => value === mocks.cancellation, password: mocks.password, autocomplete: mocks.autocomplete, })); @@ -210,9 +209,9 @@ function waitForPromptAbort(): void { ({ signal }) => new Promise((resolve) => { if (signal?.aborted) { - resolve(mocks.cancellation); + resolve(CANCEL_SYMBOL); } else { - signal?.addEventListener("abort", () => resolve(mocks.cancellation), { once: true }); + signal?.addEventListener("abort", () => resolve(CANCEL_SYMBOL), { once: true }); } }), ); @@ -697,7 +696,7 @@ describe("personal model account CLI over an identified Gateway connection", () ); it("waits for exact cancellation acknowledgment before closing the initiating socket", async () => { - mocks.password.mockResolvedValue(mocks.cancellation); + mocks.password.mockResolvedValue(CANCEL_SYMBOL); const received = createDeferredCore(); const acknowledged = createDeferredCore(); const output = runtime(); diff --git a/src/commands/models/auth.test.ts b/src/commands/models/auth.test.ts index 0a51dba34dc0..a5e0ee41aff5 100644 --- a/src/commands/models/auth.test.ts +++ b/src/commands/models/auth.test.ts @@ -1,5 +1,6 @@ // Model auth tests cover provider auth status, expiry, and display helpers. +import { CANCEL_SYMBOL } from "@clack/prompts"; import { MAX_DATE_TIMESTAMP_MS } from "@openclaw/normalization-core/number-coercion"; import { isRecord } from "@openclaw/normalization-core/record-coerce"; import { afterEach, beforeEach, describe, expect, it, vi } from "vitest"; @@ -46,7 +47,6 @@ function readMockCallArg(mock: { mock: { calls: unknown[][] } }, index = 0): unk const mocks = vi.hoisted(() => ({ clackCancel: vi.fn(), clackConfirm: vi.fn(), - clackIsCancel: vi.fn((value: unknown) => value === Symbol.for("clack:cancel")), clackPassword: vi.fn(), clackSelect: vi.fn(), clackText: vi.fn(), @@ -130,10 +130,10 @@ vi.mock("../../plugins/provider-auth-helpers.js", () => ({ }), })); -vi.mock("@clack/prompts", () => ({ +vi.mock("@clack/prompts", async (importOriginal) => ({ + ...(await importOriginal()), cancel: mocks.clackCancel, confirm: mocks.clackConfirm, - isCancel: mocks.clackIsCancel, password: mocks.clackPassword, select: mocks.clackSelect, text: mocks.clackText, @@ -408,9 +408,6 @@ describe("modelsAuthLoginCommand", () => { lastUpdatedConfig = null; mocks.clackCancel.mockReset(); mocks.clackConfirm.mockReset(); - mocks.clackIsCancel.mockImplementation( - (value: unknown) => value === Symbol.for("clack:cancel"), - ); mocks.clackPassword.mockReset(); mocks.clackSelect.mockReset(); mocks.clackText.mockReset(); @@ -1624,9 +1621,7 @@ describe("modelsAuthLoginCommand", () => { throw new Error(`exit:${String(code ?? "")}`); }) as typeof process.exit); try { - const cancelSymbol = Symbol.for("clack:cancel"); - mocks.clackPassword.mockResolvedValue(cancelSymbol); - mocks.clackIsCancel.mockImplementation((value: unknown) => value === cancelSymbol); + mocks.clackPassword.mockResolvedValue(CANCEL_SYMBOL); await expect(modelsAuthPasteTokenCommand({ provider: "openai" }, runtime)).rejects.toThrow( "exit:0", diff --git a/src/commands/models/scan.ts b/src/commands/models/scan.ts index d007ed041727..52fec6a3ee6b 100644 --- a/src/commands/models/scan.ts +++ b/src/commands/models/scan.ts @@ -1,5 +1,5 @@ /** OpenRouter free-model scanner and fallback updater for model commands. */ -import { cancel, multiselect as clackMultiselect, isCancel } from "@clack/prompts"; +import { cancel, multiselect as clackMultiselect } from "@clack/prompts"; import { getEnvApiKey } from "@openclaw/ai/internal/runtime"; import { parseStrictFiniteNumber, @@ -26,7 +26,7 @@ const multiselect = (params: Parameters>[0]) => clackMultiselect(styleSelectParams(params)); function guardPromptCancel(value: T | symbol, runtime: RuntimeEnv): T { - if (isCancel(value)) { + if (typeof value === "symbol") { cancel(stylePromptTitle("Model scan cancelled.") ?? "Model scan cancelled."); runtime.exit(0); throw new Error("unreachable"); diff --git a/src/commands/onboard-helpers.ts b/src/commands/onboard-helpers.ts index de534550f32e..101bf6dc26d3 100644 --- a/src/commands/onboard-helpers.ts +++ b/src/commands/onboard-helpers.ts @@ -2,7 +2,7 @@ import fs from "node:fs/promises"; import path from "node:path"; import { inspect } from "node:util"; -import { cancel, isCancel } from "@clack/prompts"; +import { cancel } from "@clack/prompts"; import { resolveTimerTimeoutMs } from "@openclaw/normalization-core/number-coercion"; import { normalizeOptionalString } from "@openclaw/normalization-core/string-coerce"; import { truncateUtf16Safe } from "@openclaw/normalization-core/utf16-slice"; @@ -44,7 +44,7 @@ export { resolveAdvertisedControlUiLinks, resolveControlUiLinks, resolveLocalCon /** Handles Clack cancellation by exiting through the runtime. */ export function guardCancel(value: T | symbol, runtime: RuntimeEnv, exitCode = 0): T { - if (isCancel(value)) { + if (typeof value === "symbol") { cancel(stylePromptTitle("Setup cancelled.") ?? "Setup cancelled."); runtime.exit(exitCode); throw new Error("unreachable"); diff --git a/src/commands/reset.ts b/src/commands/reset.ts index 0672c19ba942..5833ed96d3fa 100644 --- a/src/commands/reset.ts +++ b/src/commands/reset.ts @@ -99,7 +99,7 @@ export async function resetCommand(runtime: RuntimeEnv, opts: ResetOptions) { ], initialValue: "config+creds+sessions", }); - if (isCancel(selection)) { + if (typeof selection === "symbol") { cancel(stylePromptTitle("Reset cancelled.") ?? "Reset cancelled."); runtime.exit(0); return; diff --git a/src/commands/sandbox.test.ts b/src/commands/sandbox.test.ts index ffbe18eb3521..a663355e467c 100644 --- a/src/commands/sandbox.test.ts +++ b/src/commands/sandbox.test.ts @@ -1,4 +1,5 @@ // Sandbox command tests cover browser/container status formatting and sandbox diagnostics. +import { CANCEL_SYMBOL } from "@clack/prompts"; import { beforeEach, describe, expect, it, vi } from "vitest"; import type { SandboxBrowserInfo, SandboxContainerInfo } from "../agents/sandbox.js"; @@ -19,7 +20,8 @@ vi.mock("../agents/sandbox.js", () => ({ removeSandboxBrowserContainer: mocks.removeSandboxBrowserContainer, })); -vi.mock("@clack/prompts", () => ({ +vi.mock("@clack/prompts", async (importOriginal) => ({ + ...(await importOriginal()), confirm: mocks.clackConfirm, })); @@ -311,7 +313,7 @@ describe("sandboxRecreateCommand", () => { }); it("should cancel on clack cancel symbol", async () => { - await runCancelledConfirmation(Symbol("clack:cancel")); + await runCancelledConfirmation(CANCEL_SYMBOL); expect(runtime.log).toHaveBeenCalledWith("Cancelled."); expect(mocks.removeSandboxContainer).not.toHaveBeenCalled(); diff --git a/src/commands/uninstall.ts b/src/commands/uninstall.ts index 24d425822bf7..58bd9f8758b6 100644 --- a/src/commands/uninstall.ts +++ b/src/commands/uninstall.ts @@ -129,7 +129,7 @@ export async function uninstallCommand(runtime: RuntimeEnv, opts: UninstallOptio ], initialValues: ["service"], }); - if (isCancel(selection)) { + if (typeof selection === "symbol") { cancel(stylePromptTitle("Uninstall cancelled.") ?? "Uninstall cancelled."); runtime.exit(0); return; diff --git a/src/gateway/http-stream.test-support.ts b/src/gateway/http-stream.test-support.ts index fedcb583ac93..530a2b8a44f9 100644 --- a/src/gateway/http-stream.test-support.ts +++ b/src/gateway/http-stream.test-support.ts @@ -1,4 +1,5 @@ import OpenAI from "openai"; +import { expect } from "vitest"; import { buildAgentRunTerminalOutcome, buildAgentRunTerminalOutcomeFromLifecycleEvent, @@ -11,6 +12,32 @@ import { getAgentEventLifecycleGeneration, } from "../infra/agent-events.js"; +export function parseSseDataLines(text: string): string[] { + return text + .split("\n") + .map((line) => line.trim()) + .filter((line) => line.startsWith("data: ")) + .map((line) => line.slice("data: ".length)); +} + +// SDK error handling aborts its fetch before [DONE]. Observe wire framing on +// its own request so SDK cancellation cannot destroy the capture. +export async function readRawChatCompletionStream( + response: Response, + expectedError?: { message: string; type: string }, +): Promise { + expect(response.status).toBe(200); + const data = parseSseDataLines(await response.text()); + const chunks = data + .filter((line) => line !== "[DONE]") + .map((line) => JSON.parse(line) as OpenAI.ChatCompletionChunk | { error: unknown }); + expect(chunks.filter((chunk) => "error" in chunk)).toEqual( + expectedError ? [{ error: expectedError }] : [], + ); + expect(data.at(-1)).toBe("[DONE]"); + return chunks.flatMap((chunk) => ("choices" in chunk ? chunk.choices : [])); +} + type AssistantSnapshotCase = { name: string; events: Record[]; diff --git a/src/gateway/openai-http.test.ts b/src/gateway/openai-http.test.ts index 71a3c1c9d808..583caf17b2ea 100644 --- a/src/gateway/openai-http.test.ts +++ b/src/gateway/openai-http.test.ts @@ -49,6 +49,8 @@ import { emitCompatibleAssistantReplacement, emitBufferedAssistantReplacement, createOpenAiHttpTestClient, + parseSseDataLines, + readRawChatCompletionStream, } from "./http-stream.test-support.js"; import { buildAssistantDeltaResult } from "./test-helpers.agent-results.js"; import { @@ -143,14 +145,6 @@ async function postRawChatCompletions(port: number, body: string) { }); } -function parseSseDataLines(text: string): string[] { - return text - .split("\n") - .map((line) => line.trim()) - .filter((line) => line.startsWith("data: ")) - .map((line) => line.slice("data: ".length)); -} - type FirstAgentCommandOptions = { clientTools?: Array<{ function?: { @@ -2651,14 +2645,18 @@ describe("OpenAI-compatible HTTP API (e2e)", () => { }, ); - it.each([ - { name: "resolved", reject: false }, - { name: "rejected", reject: true }, - ])( - "fails an official SDK stream when an error lifecycle precedes a $name run", - async ({ reject }) => { + it.each( + [ + { name: "resolved", reject: false }, + { name: "rejected", reject: true }, + ].flatMap((scenario) => [ + { ...scenario, consumer: "SDK" }, + { ...scenario, consumer: "raw HTTP" }, + ]), + )( + "preserves streaming failure when an error lifecycle precedes a $name run ($consumer)", + async ({ reject, consumer }) => { const idleRootCount = getActiveGatewayRootWorkCount(); - const wireResponse = createDeferred(); agentCommandMock.mockClear(); agentCommandMock.mockImplementationOnce((async (opts: unknown) => { const runId = (opts as { runId?: string }).runId; @@ -2685,49 +2683,34 @@ describe("OpenAI-compatible HTTP API (e2e)", () => { }; }) as never); - const client = new OpenAI({ - apiKey: "test", - baseURL: `http://127.0.0.1:${enabledPort}/v1`, - defaultHeaders: { "x-openclaw-scopes": "operator.write" }, - maxRetries: 0, - fetch: async (input, init) => { - const response = await fetch(input, init); - void response.clone().text().then(wireResponse.resolve, wireResponse.reject); - return response; - }, - }); - const stream = await client.chat.completions.create({ + const request = { model: "openclaw", - messages: [{ role: "user", content: "Report the provider failure." }], - stream: true, - }); - const deliveredContent: string[] = []; - const deliveredFinishReasons: Array = []; + messages: [{ role: "user" as const, content: "Report the provider failure." }], + stream: true as const, + }; + const stream = + consumer === "SDK" + ? await createOpenAiHttpTestClient(enabledPort).chat.completions.create(request) + : await postChatCompletions(enabledPort, request); + const choices: OpenAI.ChatCompletionChunk["choices"] = []; + const expectedError = { message: "All model fallback candidates failed", type: "api_error" }; - await expect(async () => { - for await (const chunk of stream) { - for (const choice of chunk.choices) { - if (typeof choice.delta.content === "string") { - deliveredContent.push(choice.delta.content); - } - deliveredFinishReasons.push(choice.finish_reason); + if (stream instanceof Response) { + choices.push(...(await readRawChatCompletionStream(stream, expectedError))); + } else { + await expect(async () => { + for await (const chunk of stream) { + choices.push(...chunk.choices); } - } - }).rejects.toMatchObject({ - message: "All model fallback candidates failed", - type: "api_error", - }); + }).rejects.toMatchObject(expectedError); + } - const data = parseSseDataLines(await wireResponse.promise); - const chunks = data - .filter((line) => line !== "[DONE]") - .map((line) => JSON.parse(line) as Record); - expect(deliveredContent).toEqual(["partial answer"]); - expect(deliveredFinishReasons.every((reason) => reason === null)).toBe(true); - expect(chunks.filter((chunk) => "error" in chunk)).toEqual([ - { error: { message: "All model fallback candidates failed", type: "api_error" } }, - ]); - expect(data.at(-1)).toBe("[DONE]"); + expect( + choices.flatMap((choice) => + typeof choice.delta.content === "string" ? [choice.delta.content] : [], + ), + ).toEqual(["partial answer"]); + expect(choices.every((choice) => choice.finish_reason === null)).toBe(true); expect(agentCommandMock).toHaveBeenCalledTimes(1); await vi.waitFor(() => expect(getActiveGatewayRootWorkCount()).toBe(idleRootCount)); }, @@ -2898,41 +2881,45 @@ describe("OpenAI-compatible HTTP API (e2e)", () => { expect(finishReasons).toEqual(["tool_calls"]); }); - it.each([ - { - name: "successful completion without a provider terminal", - fail: false, - providerTerminal: false, - expected: "hello", - protocolError: false, - }, - { - name: "successful completion with a provider terminal", - fail: false, - providerTerminal: true, - expected: "hello", - protocolError: false, - }, - { - name: "internal agent error without a provider terminal", - fail: true, - providerTerminal: false, - expected: "internal error", - protocolError: true, - }, - { - name: "internal agent error with a provider terminal", - fail: true, - providerTerminal: true, - expected: "Agent run failed", - protocolError: true, - }, - ])( - "separates streamed content from the terminal finish for an official SDK $name", - async ({ fail, providerTerminal, expected, protocolError }) => { + it.each( + [ + { + name: "successful completion without a provider terminal", + fail: false, + providerTerminal: false, + expected: "hello", + protocolError: false, + }, + { + name: "successful completion with a provider terminal", + fail: false, + providerTerminal: true, + expected: "hello", + protocolError: false, + }, + { + name: "internal agent error without a provider terminal", + fail: true, + providerTerminal: false, + expected: "internal error", + protocolError: true, + }, + { + name: "internal agent error with a provider terminal", + fail: true, + providerTerminal: true, + expected: "Agent run failed", + protocolError: true, + }, + ].flatMap((scenario) => [ + { ...scenario, consumer: "SDK" }, + { ...scenario, consumer: "raw HTTP" }, + ]), + )( + "separates streamed content from the terminal finish for $name ($consumer)", + async ({ fail, providerTerminal, expected, protocolError, consumer }) => { const idleRootCount = getActiveGatewayRootWorkCount(); const terminalAdmission = createDeferred<{ active: number }>(); - const wireResponse = createDeferred(); const continueAgent = createDeferred(); const lifecycleTerminals: string[] = []; let activeRunId: string | undefined; @@ -2976,22 +2963,15 @@ describe("OpenAI-compatible HTTP API (e2e)", () => { }) as never); try { - const client = new OpenAI({ - apiKey: "test", - baseURL: `http://127.0.0.1:${enabledPort}/v1`, - defaultHeaders: { "x-openclaw-scopes": "operator.write" }, - maxRetries: 0, - fetch: async (input, init) => { - const response = await fetch(input, init); - void response.clone().text().then(wireResponse.resolve, wireResponse.reject); - return response; - }, - }); - const stream = await client.chat.completions.create({ + const request = { model: "openclaw", - messages: [{ role: "user", content: "Return a complete streamed response." }], - stream: true, - }); + messages: [{ role: "user" as const, content: "Return a complete streamed response." }], + stream: true as const, + }; + const stream = + consumer === "SDK" + ? await createOpenAiHttpTestClient(enabledPort).chat.completions.create(request) + : await postChatCompletions(enabledPort, request); await vi.waitFor(() => expect(agentCommandMock).toHaveBeenCalledTimes(1)); await new Promise((resolve) => { setImmediate(resolve); @@ -3002,26 +2982,29 @@ describe("OpenAI-compatible HTTP API (e2e)", () => { delta: { content?: string | null }; finish_reason: string | null; }> = []; - const consumeStream = async () => { - for await (const chunk of stream) { - choices.push(...chunk.choices); - } - }; - if (protocolError) { - await expect(consumeStream()).rejects.toMatchObject({ - message: expected, - type: "api_error", - }); + const expectedError = { message: expected, type: "api_error" }; + if (stream instanceof Response) { + choices.push( + ...(await readRawChatCompletionStream( + stream, + protocolError ? expectedError : undefined, + )), + ); } else { - await consumeStream(); + const consumeStream = async () => { + for await (const chunk of stream) { + choices.push(...chunk.choices); + } + }; + if (protocolError) { + await expect(consumeStream()).rejects.toMatchObject(expectedError); + } else { + await consumeStream(); + } } - const [admission, wire] = await Promise.all([ - terminalAdmission.promise, - wireResponse.promise, - ]); + const admission = await terminalAdmission.promise; expect(admission.active).toBe(idleRootCount + 1); - expect(parseSseDataLines(wire).at(-1)).toBe("[DONE]"); expect(lifecycleTerminals).toEqual([fail ? "error" : "end"]); const contentChoices = choices.filter((choice) => typeof choice.delta.content === "string"); diff --git a/src/gateway/server.tasks-list-performance.test.ts b/src/gateway/server.tasks-list-performance.test.ts index 784c8b86cda6..15e7fa054fdd 100644 --- a/src/gateway/server.tasks-list-performance.test.ts +++ b/src/gateway/server.tasks-list-performance.test.ts @@ -379,14 +379,13 @@ describe("tasks.list Gateway performance", () => { loadSnapshot: () => ({ tasks: accessTasks, deliveryStates: new Map() }), }, }); - let accessChurnActive = true; let accessMutationCount = 0; - const accessChurn = async () => { - while (true) { - if (!accessChurnActive) { - return; - } - const nextVisibility = accessMutationCount % 2 === 0 ? "shared" : "draft"; + // Invalidate every completed page before the handler checks access again. + // A free-running RPC loop can leave a stable gap between its writes. + const accessChurn = vi + .spyOn(taskRuntime, "listTaskRecordPage") + .mockImplementation(async (params) => { + const page = await selectPage(params); const response = await sendRpc>( admin, `visibility-churn-${accessMutationCount}`, @@ -394,34 +393,33 @@ describe("tasks.list Gateway performance", () => { { sessionKey: FOREIGN_SESSION_KEY, agentId: "main", - visibility: nextVisibility, + visibility: accessMutationCount % 2 === 0 ? "shared" : "draft", }, ); - if (!response.ok) { - throw new Error(`visibility churn failed: ${response.error?.message}`); - } + expect(response.ok, JSON.stringify(response.error)).toBe(true); accessMutationCount += 1; - } - }; - const accessChurnPromise = accessChurn(); - const unstableAccess = await sendRpc>( - viewer, - "tasks-unstable-access", - "tasks.list", - { limit: 1 }, - ); - accessChurnActive = false; - await accessChurnPromise; - expect(accessMutationCount).toBeGreaterThanOrEqual(3); - expect(unstableAccess).toMatchObject({ - ok: false, - error: { - code: "UNAVAILABLE", - message: "Task activity did not stabilize. Wait a moment, then refresh Tasks.", - retryable: true, - retryAfterMs: 250, - }, - }); + return page; + }); + try { + const unstableAccess = await sendRpc>( + viewer, + "tasks-unstable-access", + "tasks.list", + { limit: 1 }, + ); + expect(accessMutationCount).toBe(3); + expect(unstableAccess).toMatchObject({ + ok: false, + error: { + code: "UNAVAILABLE", + message: "Task activity did not stabilize. Wait a moment, then refresh Tasks.", + retryable: true, + retryAfterMs: 250, + }, + }); + } finally { + accessChurn.mockRestore(); + } } finally { sortSpy.mockRestore(); accessWork.mockRestore(); diff --git a/src/test-utils/npm-spec-install-test-helpers.ts b/src/test-utils/npm-spec-install-test-helpers.ts index 760a3d84b086..b1179da3dad5 100644 --- a/src/test-utils/npm-spec-install-test-helpers.ts +++ b/src/test-utils/npm-spec-install-test-helpers.ts @@ -89,15 +89,16 @@ type NpmViewMetadata = { shasum?: string; }; -// Keep spawn doubles shaped like the real process helper so install tests stay narrow. -function createSuccessfulSpawnResult(stdout = ""): SpawnResult { +// Keep command doubles shaped like the real process helper across install and update tests. +export function createCommandResult(overrides: Partial = {}): SpawnResult { return { - code: 0, - stdout, + stdout: "", stderr: "", + code: 0, signal: null, killed: false, termination: "exit", + ...overrides, }; } @@ -118,8 +119,8 @@ export function mockNpmViewMetadataResult( throw new Error(`unexpected command: ${argv.join(" ")}`); } - return createSuccessfulSpawnResult( - JSON.stringify({ + return createCommandResult({ + stdout: JSON.stringify({ name: metadata.name, version: metadata.version, dist: { @@ -127,7 +128,7 @@ export function mockNpmViewMetadataResult( shasum: metadata.shasum, }, }), - ); + }); }); } @@ -167,7 +168,7 @@ export function mockNpmPackMetadataResult( fs.writeFileSync(path.join(cwd, metadata.filename), ""); } - return createSuccessfulSpawnResult(JSON.stringify([metadata])); + return createCommandResult({ stdout: JSON.stringify([metadata]) }); }); } @@ -206,7 +207,7 @@ export async function expectInstallUsesIgnoreScripts(params: { } >; }) { - params.run.mockResolvedValue(createSuccessfulSpawnResult()); + params.run.mockResolvedValue(createCommandResult()); const result = await params.install(); expect(result.ok).toBe(true); if (!result.ok) { diff --git a/src/wizard/clack-prompter.test.ts b/src/wizard/clack-prompter.test.ts index 336f25ba6751..a9ca1584e4c4 100644 --- a/src/wizard/clack-prompter.test.ts +++ b/src/wizard/clack-prompter.test.ts @@ -1,5 +1,5 @@ // Clack prompter tests cover prompt rendering, validation, and cancellation. -import { symbol, type SpinnerOptions } from "@clack/prompts"; +import { CANCEL_SYMBOL, symbol, type SpinnerOptions } from "@clack/prompts"; import { afterAll, afterEach, @@ -49,7 +49,6 @@ const clackMocks = vi.hoisted(() => ({ cancel: vi.fn(), confirm: vi.fn(), intro: vi.fn(), - isCancel: vi.fn(() => false), multiselect: vi.fn(), outro: vi.fn(), password: vi.fn(), @@ -88,7 +87,6 @@ vi.mock("@clack/prompts", async (importOriginal) => ({ cancel: clackMocks.cancel, confirm: clackMocks.confirm, intro: clackMocks.intro, - isCancel: clackMocks.isCancel, multiselect: clackMocks.multiselect, outro: clackMocks.outro, password: clackMocks.password, @@ -382,6 +380,27 @@ describe("createClackPrompter", () => { ); }); + it.each([false, true])( + "preserves Symbol option values and recognizes only Clack cancellation (searchable: %s)", + async (searchable) => { + const value = Symbol("clack:cancel"); + const mock = searchable ? clackMocks.autocomplete : clackMocks.select; + const params = { + message: "Pick a symbol", + options: [{ value, label: "Symbol option" }], + searchable, + }; + const prompter = createClackPrompter(); + mock.mockResolvedValueOnce(value); + await expect(prompter.select(params)).resolves.toBe(value); + expect(clackMocks.cancel).not.toHaveBeenCalled(); + + mock.mockResolvedValueOnce(CANCEL_SYMBOL); + await expect(prompter.select(params)).rejects.toBeInstanceOf(WizardCancelledError); + expect(clackMocks.cancel).toHaveBeenCalledOnce(); + }, + ); + it("uses navigation-aware searchable selects when prompt navigation is active", async () => { navigationPromptMocks.autocompleteWithNavigationFooter.mockResolvedValue("two"); const prompter = createClackPrompter(); @@ -583,11 +602,10 @@ describe("createClackPrompter", () => { const controller = new AbortController(); const initialEndListeners = process.stdin.listenerCount("end"); const initialKeypressListeners = process.stdin.listenerCount("keypress"); - clackMocks.isCancel.mockReturnValueOnce(true); mock.mockImplementation( async ({ signal }: { signal?: AbortSignal }) => await new Promise((resolve) => { - signal?.addEventListener("abort", () => resolve(Symbol("clack:cancel")), { + signal?.addEventListener("abort", () => resolve(CANCEL_SYMBOL), { once: true, }); }), @@ -608,11 +626,10 @@ describe("createClackPrompter", () => { async (cancelOwner) => { const owner = new AbortController(); const text = new AbortController(); - clackMocks.isCancel.mockReturnValueOnce(true); clackMocks.text.mockImplementation( async ({ signal }: { signal: AbortSignal }) => await new Promise((resolve) => { - signal.addEventListener("abort", () => resolve(Symbol("clack:cancel")), { once: true }); + signal.addEventListener("abort", () => resolve(CANCEL_SYMBOL), { once: true }); }), ); const prompt = createClackPrompter(process.stderr, owner.signal).text({ @@ -647,10 +664,9 @@ describe("createClackPrompter", () => { mock.mockImplementation( async ({ signal }: { signal?: AbortSignal }) => await new Promise((resolve) => { - signal?.addEventListener("abort", () => resolve(Symbol("clack:cancel")), { once: true }); + signal?.addEventListener("abort", () => resolve(CANCEL_SYMBOL), { once: true }); }), ); - clackMocks.isCancel.mockReturnValueOnce(true); const prompt = run(); await Promise.resolve(); @@ -676,7 +692,7 @@ describe("createClackPrompter", () => { restoreRawMode(false); writeNewline("\n"); process.stdin.off("keypress", onClackKeypress); - resolve(Symbol("clack:cancel")); + resolve(CANCEL_SYMBOL); }; const onClackKeypress = (input: string | undefined) => { if (input === "\x04") { @@ -687,7 +703,6 @@ describe("createClackPrompter", () => { signal?.addEventListener("abort", finish, { once: true }); }), ); - clackMocks.isCancel.mockReturnValueOnce(true); const prompt = createClackPrompter().confirm({ message: "Continue?" }); await Promise.resolve(); @@ -750,8 +765,7 @@ describe("createClackPrompter", () => { const mock = navigation ? navigationPromptMocks.confirmWithNavigationFooter : clackMocks.confirm; - mock.mockResolvedValue(Symbol("clack:cancel")); - clackMocks.isCancel.mockReturnValueOnce(true); + mock.mockResolvedValue(CANCEL_SYMBOL); clackMocks.cancel.mockImplementationOnce(() => { expect(clackMocks.settings.actions.has("left")).toBe(!navigation); expect(clackMocks.settings.actions.has("right")).toBe(!navigation); @@ -776,7 +790,7 @@ describe("createClackPrompter", () => { await new Promise((resolve) => { signal.addEventListener("abort", resolve, { once: true }); }); - return Symbol("clack:cancel"); + return CANCEL_SYMBOL; }); const prompter = createClackPrompter(); diff --git a/src/wizard/clack-prompter.ts b/src/wizard/clack-prompter.ts index a8c43c3e8102..1cdb1e0946d3 100644 --- a/src/wizard/clack-prompter.ts +++ b/src/wizard/clack-prompter.ts @@ -2,10 +2,10 @@ import { autocomplete, autocompleteMultiselect, + CANCEL_SYMBOL, cancel, confirm, intro, - isCancel, multiselect, type Option, outro, @@ -42,13 +42,14 @@ const CLAW_SPINNER_FRAMES = ["(\\/)", "(||)", "(--)", "(||)"]; // Clack-backed WizardPrompter implementation for interactive CLI setup. It // converts the generic wizard prompt contract into styled Clack prompts. function guardCancel(value: T | symbol, output: NodeJS.WriteStream, signal?: AbortSignal): T { - if (isCancel(value)) { + if (value === CANCEL_SYMBOL) { if (!signal?.aborted) { cancel(stylePromptTitle("Setup cancelled.") ?? "Setup cancelled.", { output }); } throw new WizardCancelledError(); } - return value; + // SAFETY: Clack returns T or CANCEL_SYMBOL, but its declarations widen the sentinel to symbol. + return value as T; } type KeypressInfo = { diff --git a/test/scripts/android-release-fastlane-gates.test.ts b/test/scripts/android-release-fastlane-gates.test.ts index eff74ad43a07..05c7a49fc6c5 100644 --- a/test/scripts/android-release-fastlane-gates.test.ts +++ b/test/scripts/android-release-fastlane-gates.test.ts @@ -46,8 +46,8 @@ describe("Android Fastlane release upload gates", () => { expect(readFileSync(rubyVersionPath, "utf8")).toBe("3.4.10\n"); expect(gemfile).toContain('ruby "3.4.10"'); - expect(gemfile).toContain('gem "fastlane", "2.238.0"'); - expect(lockfile).toContain("fastlane (2.238.0)"); + expect(gemfile).toContain('gem "fastlane", "2.239.0"'); + expect(lockfile).toContain("fastlane (2.239.0)"); expect(lockfile).toContain("arm64-darwin"); expect(lockfile).toContain("x86_64-darwin"); expect(lockfile).toContain("aarch64-linux"); diff --git a/test/scripts/ci-workflow-guards.test.ts b/test/scripts/ci-workflow-guards.test.ts index d215d196e30a..1aba7cb5c5b3 100644 --- a/test/scripts/ci-workflow-guards.test.ts +++ b/test/scripts/ci-workflow-guards.test.ts @@ -4450,9 +4450,9 @@ NODE const run = expectDefined(installStep.run, `Install opengrep script in ${workflowPath}`); expect(installStep.env, workflowPath).toMatchObject({ - OPENGREP_VERSION: "v1.27.1", + OPENGREP_VERSION: "v1.30.0", OPENGREP_LINUX_X64_SHA256: - "58053da76672bbeb5b0a5441021c58338707052e10f81d777140ca879bd491ce", + "35779bdd72e92129c8df2a77f0c55e8c08356801ea92591ef32108d6b28d564c", }); expect(run, workflowPath).toContain('binary="$(mktemp "${RUNNER_TEMP}/opengrep.XXXXXX")"'); expect(run, workflowPath).toContain("trap 'rm -f \"$binary\"' EXIT"); @@ -5295,7 +5295,7 @@ require("node:fs").writeFileSync("scheduler-baseline", process.env.OPENCLAW_UPGR "Android SDK package install step", ); - expect(javaStep.uses).toBe("actions/setup-java@b6effb05e454b25005698d916606bdc6ffcbf961"); + expect(javaStep.uses).toBe("actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c"); expect(javaStep.with).toMatchObject({ distribution: "temurin", "java-version": 17, diff --git a/test/scripts/crabbox-untrusted-bootstrap.test.ts b/test/scripts/crabbox-untrusted-bootstrap.test.ts index f09fa8d2623c..02259eb86de1 100644 --- a/test/scripts/crabbox-untrusted-bootstrap.test.ts +++ b/test/scripts/crabbox-untrusted-bootstrap.test.ts @@ -15,6 +15,8 @@ import { join } from "node:path"; import { afterEach, describe, expect, it } from "vitest"; const source = readFileSync("scripts/crabbox-untrusted-bootstrap.sh", "utf8"); +const previousPnpmSpec = + "pnpm@12.3.4+sha512.961aa41fb077da3a04a441d9f8e15ebc0c96da8ef710b2eb67bf9ee7cb0610eabd48f1fd85f51cffe73846785fa0f87c56a3a872a1d893f8446741b5cce45457"; const historicalPnpmSpec = "pnpm@12.1.0+sha512.d9b8276d97f6ec86e49815877f91ee9f63cee61f2063b304e43b6dab8fa07ce8a9afd46d2facd39f921e6a9d06b3c75a81349c7b888c2d22886bae0229901037"; const roots: string[] = []; @@ -80,8 +82,8 @@ esac const native = join(stage, "native"); mkdirSync(wrapper); mkdirSync(native); - writeFileSync(join(wrapper, "package.json"), '{"version":"12.3.4"}'); - executable(join(native, "pnpm"), "#!/bin/sh\necho 12.3.4\n"); + writeFileSync(join(wrapper, "package.json"), '{"version":"12.4.0"}'); + executable(join(native, "pnpm"), "#!/bin/sh\necho 12.4.0\n"); function archive(directory: string, name: string, algorithm: string) { const output = join(origin, name); execFileSync("tar", [name.endsWith(".xz") ? "-cJf" : "-czf", output, "-C", stage, directory]); @@ -91,8 +93,8 @@ esac } const hashes = { node: archive("node", "node-v24.19.0-linux-x64.tar.xz", "sha256"), - wrapper: archive("wrapper", "pnpm-12.3.4.tgz", "sha512"), - native: archive("native", "exe.linux-x64-12.3.4.tgz", "sha512"), + wrapper: archive("wrapper", "pnpm-12.4.0.tgz", "sha512"), + native: archive("native", "exe.linux-x64-12.4.0.tgz", "sha512"), }; const productionSpec = scriptSource.match(/^pnpm_spec="([^"]+)"$/mu)?.[1] ?? ""; const spec = `${productionSpec.split("+")[0]}+sha512.${hashes.wrapper}`; @@ -144,7 +146,7 @@ fi .replace(productionSpec, spec) .replaceAll("14b342e71204f811bde6153be8e04b62aef63c236fef92b55f9c83154b409647", hashes.node) .replaceAll( - "d99a8e9523e47f05f5879711f853e259ff3e17eda1653ff74ef8542b9b22807ab06900888aaf11ec21b186774ab3adc9b5c2e2d9ad50a68fb05ff128c9f8f225", + "490560464711e17caa7fcf9535bb58d2bb5c1277c3ab8f11847df41d6a36fd47ea2847e57b6ace3321993a63750db330e19cc6e66598a02f353bb66a1c565c3f", hashes.native, ); const scriptPath = join(root, "bootstrap.sh"); @@ -200,8 +202,8 @@ describe("scripts/crabbox-untrusted-bootstrap.sh", () => { for (let run = 0; run < 2; run++) { mkdirSync(join(f.install, "bin"), { recursive: true }); executable(join(f.install, "bin", "node"), "#!/bin/sh\nexit 91\n"); - mkdirSync(join(f.corepack, "v1", "pnpm", "12.3.4"), { recursive: true }); - writeFileSync(join(f.corepack, "v1", "pnpm", "12.3.4", ".corepack"), '{"bin":"bad"}'); + mkdirSync(join(f.corepack, "v1", "pnpm", "12.4.0"), { recursive: true }); + writeFileSync(join(f.corepack, "v1", "pnpm", "12.4.0", ".corepack"), '{"bin":"bad"}'); const result = f.run(); expect(result.status, result.stderr).toBe(0); } @@ -210,16 +212,17 @@ describe("scripts/crabbox-untrusted-bootstrap.sh", () => { expect(readFileSync(join(f.root, "ran"), "utf8")).toBe("ran\nran\n"); }); - it.each(["current", "historical"])( + it.each(["current", "previous", "historical"])( "prepares the approved %s pin outside the checkout before frozen installation", (kind) => { const f = fixture(); - const spec = kind === "historical" ? historicalPnpmSpec : f.spec; + const spec = + kind === "current" ? f.spec : kind === "previous" ? previousPnpmSpec : historicalPnpmSpec; writeFileSync(join(f.root, "package.json"), JSON.stringify({ packageManager: spec })); const result = f.run(); expect(result.status, result.stderr).toBe(0); expect(readFileSync(join(f.root, "prepared-pin"), "utf8")).toBe(`${spec}\n${f.install}\n`); - expect(f.downloads()).toBe(kind === "historical" ? "pnpm-download\n" : ""); + expect(f.downloads()).toBe(kind === "current" ? "" : "pnpm-download\n"); expect(readFileSync(join(f.root, "install-log"), "utf8")).toBe("frozen\n"); expect(readFileSync(join(f.root, "ran"), "utf8")).toBe("ran\n"); }, @@ -233,11 +236,11 @@ describe("scripts/crabbox-untrusted-bootstrap.sh", () => { kind === "node" || kind === "wrong-arch" ? "node-v24.19.0-linux-x64.tar.xz" : kind === "wrapper" - ? "pnpm-12.3.4.tgz" - : "exe.linux-x64-12.3.4.tgz"; + ? "pnpm-12.4.0.tgz" + : "exe.linux-x64-12.4.0.tgz"; const bytes = kind === "wrong-arch" - ? readFileSync(join(f.origin, "exe.linux-x64-12.3.4.tgz")) + ? readFileSync(join(f.origin, "exe.linux-x64-12.4.0.tgz")) : Buffer.from("substituted archive"); writeFileSync(join(f.image, archive), bytes); writeFileSync( @@ -257,6 +260,7 @@ describe("scripts/crabbox-untrusted-bootstrap.sh", () => { "candidate-pin", "missing-pin", "current-wrong-hash", + "previous-wrong-hash", "historical-wrong-hash", "unsupported-historical-pin", "malformed-json", @@ -268,6 +272,7 @@ describe("scripts/crabbox-untrusted-bootstrap.sh", () => { "candidate-pin": '{"packageManager":"pnpm@99.0.0"}', "missing-pin": "{}", "current-wrong-hash": JSON.stringify({ packageManager: `${f.spec}0` }), + "previous-wrong-hash": JSON.stringify({ packageManager: `${previousPnpmSpec}0` }), "historical-wrong-hash": JSON.stringify({ packageManager: `${historicalPnpmSpec}0` }), "unsupported-historical-pin": '{"packageManager":"pnpm@11.22.0"}', "malformed-json": "{", @@ -298,11 +303,11 @@ describe("scripts/crabbox-untrusted-bootstrap.sh", () => { it.each([false, true])( "falls back after a trusted pin advance (renamed stale archives: %s)", (renamed) => { - const f = fixture(source.replace("pnpm@12.3.4+", "pnpm@12.3.5+")); + const f = fixture(source.replace("pnpm@12.4.0+", "pnpm@12.4.1+")); if (renamed) { - for (const name of ["pnpm-12.3.4.tgz", "exe.linux-x64-12.3.4.tgz"]) { + for (const name of ["pnpm-12.4.0.tgz", "exe.linux-x64-12.4.0.tgz"]) { writeFileSync( - join(f.image, name.replace("12.3.4", "12.3.5")), + join(f.image, name.replace("12.4.0", "12.4.1")), readFileSync(join(f.image, name)), ); } diff --git a/test/scripts/ios-release-fastlane-gates.test.ts b/test/scripts/ios-release-fastlane-gates.test.ts index 6c69ccc31d9a..91796546c22e 100644 --- a/test/scripts/ios-release-fastlane-gates.test.ts +++ b/test/scripts/ios-release-fastlane-gates.test.ts @@ -150,9 +150,9 @@ describe("iOS Fastlane release upload gates", () => { const lockfile = readFileSync(gemfileLockPath, "utf8"); expect(readFileSync(rubyVersionPath, "utf8")).toBe("3.4.10\n"); - expect(gemfile).toContain('gem "fastlane", "2.238.0"'); + expect(gemfile).toContain('gem "fastlane", "2.239.0"'); expect(gemfile).toContain('ruby "3.4.10"'); - expect(lockfile).toContain("fastlane (2.238.0)"); + expect(lockfile).toContain("fastlane (2.239.0)"); expect(lockfile).toContain("arm64-darwin"); expect(lockfile).toContain("x86_64-darwin"); expect(lockfile).toContain("CHECKSUMS"); diff --git a/test/scripts/ios-release-inspection.test.ts b/test/scripts/ios-release-inspection.test.ts index 25e689c55a50..7ea2a132914b 100644 --- a/test/scripts/ios-release-inspection.test.ts +++ b/test/scripts/ios-release-inspection.test.ts @@ -276,7 +276,7 @@ case "$1" in exec) test -f "$GITHUB_WORKSPACE/installed" if [[ "$2" == ruby ]]; then - printf '2.238.0' + printf '2.239.0' else [[ "$BUNDLE_GEMFILE" == "$GITHUB_WORKSPACE/apps/ios/Gemfile" ]] [[ "$2 $3 $4" == "fastlane ios release_inspect" ]] diff --git a/test/scripts/package-mac-app.test.ts b/test/scripts/package-mac-app.test.ts index cf79b671d87f..1c0a46c685ae 100644 --- a/test/scripts/package-mac-app.test.ts +++ b/test/scripts/package-mac-app.test.ts @@ -2404,9 +2404,9 @@ ${mounts === "failed" ? "exit 1" : mounts === "mounted" ? `printf '/dev/disk9 on ); expect(stageScript).toContain('manifest.dependencies["@trycua/cua-driver"]'); expect(stageScript).toContain('manifest.cuaDriverArtifacts["darwin-universal-binary"]'); - expect(cuaManifest.dependencies["@trycua/cua-driver"]).toBe("0.23.2"); + expect(cuaManifest.dependencies["@trycua/cua-driver"]).toBe("0.24.0"); expect(cuaManifest.cuaDriverArtifacts["darwin-universal-binary"]?.archiveSha256).toBe( - "0127c82ff17922df4290931a8ebf9b4a8b21656aad24cba6f21ee50e41ed4493", + "31790cb49baa206f6455fbc259f8f83ae27e86be908f5c8cac5ec2f8521f8382", ); expect(packageScript).toContain( '"$ROOT_DIR/scripts/stage-cua-driver-macos.sh" "$APP_ROOT/Contents/Resources/cua-driver"', diff --git a/test/scripts/run-opengrep.test.ts b/test/scripts/run-opengrep.test.ts index 09dda7761a6e..60f2d2fffae7 100644 --- a/test/scripts/run-opengrep.test.ts +++ b/test/scripts/run-opengrep.test.ts @@ -220,7 +220,7 @@ describe("run-opengrep.sh", () => { ); expect(sarif.version).toBe("2.1.0"); expect(sarif.runs[0].tool.driver.name).toBe("Opengrep OSS"); - expect(sarif.runs[0].tool.driver.semanticVersion).toBe("1.27.1"); + expect(sarif.runs[0].tool.driver.semanticVersion).toBe("1.30.0"); expect(sarif.runs[0].results).toEqual([]); expect(fs.existsSync(argsPath)).toBe(false); }); diff --git a/test/scripts/vercel-container-registry-publish.test.ts b/test/scripts/vercel-container-registry-publish.test.ts index e1e579797170..6930a8590e5a 100644 --- a/test/scripts/vercel-container-registry-publish.test.ts +++ b/test/scripts/vercel-container-registry-publish.test.ts @@ -1018,18 +1018,18 @@ describe("Vercel Container Registry publishing", () => { }; const materialize = readFileSync("scripts/materialize-vercel-cli.sh", "utf8"); - expect(packageJson.dependencies).toEqual({ sandbox: "4.2.1", vercel: "59.11.7" }); + expect(packageJson.dependencies).toEqual({ sandbox: "4.3.0", vercel: "59.13.1" }); expect(packageLock.lockfileVersion).toBe(3); expect(packageLock.packages?.["node_modules/vercel"]).toMatchObject({ integrity: - "sha512-C+L/JKmlGDypKGcTU/atckydeK/AKa/7fKwUbvcwveguV1QPlY8beiIGgbwkdbb80bbIpPFHRQYrhi5XPAmCBA==", - version: "59.11.7", + "sha512-sBxGOvWru8BFdCaqlRhtARTAWDL4FV+Q8APcN63lnOEryTXRce1z3DBWzaakpsts+uF1Sy9MdrTft0zPOWpGuA==", + version: "59.13.1", }); expect(packageLock.packages?.["node_modules/sandbox"]).toMatchObject({ bin: { sandbox: "bin/sandbox.mjs" }, integrity: - "sha512-e7D/gnq4Q8M4SUDRCtKo8CtsZX9jntdzzteIBhuuTOe5+wpfEqOZsNnAqbqiEakOnoctRAbAuc2fdoj+iopmuA==", - version: "4.2.1", + "sha512-AmxuGAe8kbQNOUl8WeAbr42H8UXJ2w2MJyDCGClkKvRwxPA9Hvz+5BgYoLNmO9N66RzAetpB+8Ix/bVlMJ5pPg==", + version: "4.3.0", }); const lockSha256 = createHash("sha256").update(packageLockBytes).digest("hex"); expect(materialize).toContain(`expected_lock_sha256="${lockSha256}"`); diff --git a/ui/package.json b/ui/package.json index 8486d3edb825..63caaf7ea7e4 100644 --- a/ui/package.json +++ b/ui/package.json @@ -18,14 +18,15 @@ "@lezer/highlight": "1.2.3", "@lit/context": "1.1.6", "@lit/task": "1.0.3", - "@modelcontextprotocol/ext-apps": "1.7.5", - "@modelcontextprotocol/sdk": "1.30.0", + "@modelcontextprotocol/client": "2.0.0", + "@modelcontextprotocol/core": "2.0.0", + "@modelcontextprotocol/ext-apps": "2.0.0", "@noble/ed25519": "3.2.0", "@noble/hashes": "2.4.0", "@novnc/novnc": "1.7.0", "@openclaw/gateway-client": "workspace:*", "@openclaw/gateway-protocol": "workspace:*", - "@openclaw/libterminal": "0.3.3", + "@openclaw/libterminal": "0.3.5", "@openclaw/media-core": "workspace:*", "@openclaw/mermaid-renderer": "workspace:*", "@openclaw/model-catalog-core": "workspace:*", @@ -35,17 +36,17 @@ "@openclaw/uirouter": "0.1.1", "@openclaw/workboard-contract": "workspace:*", "@panzoom/panzoom": "4.6.2", - "@tanstack/lit-virtual": "3.13.37", - "@tanstack/virtual-core": "3.17.8", + "@tanstack/lit-virtual": "3.14.0", + "@tanstack/virtual-core": "3.17.9", "diff": "9.0.0", - "dompurify": "3.4.14", + "dompurify": "3.4.15", "ghostty-web": "0.4.0", "highlight.js": "11.12.0", "json5": "2.2.3", "lit": "3.3.3", "markdown-it": "15.0.2", "markdown-it-cjk-friendly": "3.0.0", - "markdown-it-emoji": "3.0.0", + "markdown-it-emoji": "3.1.0", "markdown-it-task-lists": "2.1.1", "remend": "1.3.1", "zod": "4.5.4" diff --git a/ui/src/components/mcp-app-view.ts b/ui/src/components/mcp-app-view.ts index 12f7f157153c..9d9c8b724f39 100644 --- a/ui/src/components/mcp-app-view.ts +++ b/ui/src/components/mcp-app-view.ts @@ -1,12 +1,15 @@ import { consume } from "@lit/context"; import { Task, TaskStatus } from "@lit/task"; -import { AppBridge, PostMessageTransport } from "@modelcontextprotocol/ext-apps/app-bridge"; +import type { + CallToolResult, + ListToolsRequest, + ListToolsResult, +} from "@modelcontextprotocol/client"; import { - type CallToolResult, - type ListToolsRequest, - ListToolsRequestSchema, - type ListToolsResult, -} from "@modelcontextprotocol/sdk/types.js"; + AppBridge, + McpUiHostContextSchema, + PostMessageTransport, +} from "@modelcontextprotocol/ext-apps/app-bridge"; import { isMcpAppViewExpiredError } from "@openclaw/gateway-protocol"; import { LitElement, css, html, nothing, type PropertyValues } from "lit"; import { property } from "lit/decorators.js"; @@ -77,7 +80,8 @@ function hostContext(element: Element | undefined, height: number): HostContext const rect = element?.getBoundingClientRect(); const touch = navigator.maxTouchPoints > 0 || window.matchMedia?.("(pointer: coarse)").matches; const themeMode = document.documentElement.dataset.themeMode; - return { + // The SDK schema preserves optional style values while normalizing its complete key map. + return McpUiHostContextSchema.parse({ theme: themeMode === "light" || themeMode === "dark" ? themeMode @@ -102,7 +106,7 @@ function hostContext(element: Element | undefined, height: number): HostContext // these say what it actually resolves to. Republished by the same theme // subscription that re-sends this context. styles: { variables: collectMcpAppStyleVariables() }, - }; + }); } class OpenClawAppBridge extends AppBridge { @@ -115,7 +119,7 @@ class OpenClawAppBridge extends AppBridge { } setListToolsHandler(handler: (params: ListToolsRequest["params"]) => Promise) { - this.replaceRequestHandler(ListToolsRequestSchema, (request) => handler(request.params)); + this.replaceRequestHandler("tools/list", (request) => handler(request.params)); } } diff --git a/ui/src/e2e/mcp-app-conformance.e2e.test.ts b/ui/src/e2e/mcp-app-conformance.e2e.test.ts index 383d9e9c20ab..b0e518b6a2a9 100644 --- a/ui/src/e2e/mcp-app-conformance.e2e.test.ts +++ b/ui/src/e2e/mcp-app-conformance.e2e.test.ts @@ -320,6 +320,9 @@ suite.define(() => { await waitForTextContaining(app.locator("#capabilities"), "serverResources"); await waitForTextContaining(app.locator("#capabilities"), "updateModelContext"); await waitForText(app.locator("#ping"), "{}"); + await app.locator("#list-tools").click(); + await waitForTextContaining(app.locator("#tools"), "app_companion"); + await waitForTextContaining(app.locator("#tools"), "model_only", false); await waitForText(app.locator("#isolation"), "isolated"); await waitForText(app.locator("#host-theme"), "dark"); await waitForTextContaining( @@ -435,6 +438,9 @@ suite.define(() => { await waitForTextContaining(app.locator("#capabilities"), "serverResources"); await waitForTextContaining(app.locator("#capabilities"), "updateModelContext", false); await waitForText(app.locator("#ping"), "{}"); + await app.locator("#list-tools").click(); + await waitForTextContaining(app.locator("#tools"), "app_companion"); + await waitForTextContaining(app.locator("#tools"), "model_only", false); await waitForText(app.locator("#isolation"), "isolated"); await app.locator("#call-app").click(); await waitForTextContaining(app.locator("#app-tool"), "companion-called"); diff --git a/ui/src/pages/chat/components/chat-transcript-end-follow.browser.test.ts b/ui/src/pages/chat/components/chat-transcript-end-follow.browser.test.ts index 94a64e86f13c..874ff3fa0c14 100644 --- a/ui/src/pages/chat/components/chat-transcript-end-follow.browser.test.ts +++ b/ui/src/pages/chat/components/chat-transcript-end-follow.browser.test.ts @@ -5,12 +5,14 @@ import "../../../styles.css"; import "../../../styles/chat.ts"; import { ChatTranscriptController } from "./chat-transcript-controller.ts"; import type { TranscriptRow } from "./chat-transcript-layout.ts"; +import { subscribeTranscriptScroll } from "./chat-transcript-scroll-events.ts"; class EndFollowFixture extends LitElement { followEnabled = true; readonly transcript = new ChatTranscriptController(this, { canFollowEnd: () => this.followEnabled, }); + earlierRowHeight = 400; lastRowHeight = 900; protected override createRenderRoot() { @@ -19,7 +21,11 @@ class EndFollowFixture extends LitElement { protected override render() { const rows: TranscriptRow[] = [ - { kind: "content", key: "earlier", content: html`
Earlier
` }, + { + kind: "content", + key: "earlier", + content: html`
Earlier
`, + }, { kind: "content", key: "growing-run", @@ -199,3 +205,51 @@ it("does not turn a resize-clamped reader into permission to follow", async () = host.followEnabled = true; await expect.poll(distance).toBe(0); }); + +it("preserves compensation provenance for later native scroll listeners", async () => { + const { host, thread, sizer, distance } = await mountEndFollowFixture(); + host.transcript.scrollToEnd(); + await expect.poll(distance).toBe(0); + await settleFrames(); + const readerIdle = new Promise((resolve) => { + let moved = false; + const unsubscribe = subscribeTranscriptScroll(thread, (observation) => { + if (observation.type !== "offset") { + return; + } + moved ||= observation.scrolling && observation.delta !== 0; + if (moved && !observation.scrolling) { + unsubscribe(); + resolve(); + } + }); + }); + await commitTask(host, () => { + host.followEnabled = false; + thread.dispatchEvent(new WheelEvent("wheel", { deltaY: -32 })); + thread.scrollTop -= 32; + thread.style.height = "600px"; + }); + await readerIdle; + await expect.poll(distance).toBe(0); + await settleFrames(); + expect(host.transcript.isProgrammaticScroll).toBe(false); + + const observations: Array<{ trusted: boolean; programmatic: boolean }> = []; + // Mount already installed the offset observer. Native dispatch has no outer + // JavaScript stack, so microtasks may run before this later listener. + thread.addEventListener("scroll", (event) => { + observations.push({ + trusted: event.isTrusted, + programmatic: host.transcript.isProgrammaticScroll, + }); + }); + await commitTask(host, () => { + host.earlierRowHeight += 48; + }); + await expect.poll(() => sizer.offsetHeight).toBe(1348); + await expect.poll(() => observations.length).toBeGreaterThan(0); + expect(observations[0]).toEqual({ trusted: true, programmatic: true }); + thread.dispatchEvent(new WheelEvent("wheel", { deltaY: -1 })); + expect(host.transcript.isProgrammaticScroll).toBe(false); +}); diff --git a/ui/src/pages/chat/components/chat-transcript-geometry.test.ts b/ui/src/pages/chat/components/chat-transcript-geometry.test.ts index 88356babf93e..1b798050a5e8 100644 --- a/ui/src/pages/chat/components/chat-transcript-geometry.test.ts +++ b/ui/src/pages/chat/components/chat-transcript-geometry.test.ts @@ -36,6 +36,8 @@ describe("chat transcript geometry", () => { scrollHeight: { configurable: true, value: 1200 }, }); container.scrollTop = 600; + // JSDOM does not emit the browser's scroll read-back that settles initial compensation. + container.dispatchEvent(new Event("scroll")); flushFrames(); transcript.hostUpdated(); flushFrames(); diff --git a/ui/src/pages/chat/components/chat-transcript-offset-observer.ts b/ui/src/pages/chat/components/chat-transcript-offset-observer.ts index 45a4aee7587a..3ff4702b5fe2 100644 --- a/ui/src/pages/chat/components/chat-transcript-offset-observer.ts +++ b/ui/src/pages/chat/components/chat-transcript-offset-observer.ts @@ -17,7 +17,7 @@ type TranscriptOffsetState = { | null; touching: boolean; touchScrolling: boolean; - measurementScrollOffset: number | null; + maintenanceScrollOffset: number | null; pendingInteractionAnchor: ChatTranscriptInteractionAnchor | null; syncNativeOffset: (() => void) | null; recordProgrammaticScroll: ((before: number, after: number) => void) | null; @@ -30,7 +30,7 @@ export function createTranscriptOffsetState(): TranscriptOffsetState { scrollCommand: null, touching: false, touchScrolling: false, - measurementScrollOffset: null, + maintenanceScrollOffset: null, pendingInteractionAnchor: null, syncNativeOffset: null, recordProgrammaticScroll: null, @@ -77,6 +77,12 @@ export function observeTranscriptOffset( touching: owner.state.touching, programmatic: owner.isProgrammaticScroll(), }); + // Commands own completion. Record maintenance movement after publishing preceding native input. + if (owner.state.scrollCommand || owner.state.pendingScrollOffset) { + owner.state.maintenanceScrollOffset = null; + } else if (before !== after) { + owner.state.maintenanceScrollOffset = after; + } }; owner.state.recordProgrammaticScroll = recordProgrammaticScroll; const publishOffset = (offset: number, scrolling: boolean) => { @@ -90,12 +96,16 @@ export function observeTranscriptOffset( } const delta = offset - nativeOffset; nativeOffset = offset; + const programmatic = owner.isProgrammaticScroll(); + if (scrolling && owner.state.maintenanceScrollOffset !== null) { + owner.state.maintenanceScrollOffset = programmatic ? offset : null; + } publish({ type: "offset", delta, scrolling, touching: owner.state.touching, - programmatic: owner.isProgrammaticScroll(), + programmatic, }); const changed = offset !== instance.scrollOffset; callback(offset, scrolling); @@ -163,7 +173,7 @@ export function observeTranscriptOffset( touchY = localTouchY(event); } owner.state.pendingInteractionAnchor = null; - owner.state.measurementScrollOffset = null; + owner.state.maintenanceScrollOffset = null; // Native scrolling may precede input delivery. Attribute the gesture before // cancellation or offset synchronization publishes that consumed movement. publishInput(event); @@ -235,6 +245,7 @@ export function observeTranscriptOffset( } if (owner.state.recordProgrammaticScroll === recordProgrammaticScroll) { owner.state.recordProgrammaticScroll = null; + owner.state.maintenanceScrollOffset = null; } cleanup?.(); contactIds.clear(); diff --git a/ui/src/pages/chat/components/chat-transcript-scroll-ownership.test.ts b/ui/src/pages/chat/components/chat-transcript-scroll-ownership.test.ts index 8e92fee4a6e9..71c49cd34de4 100644 --- a/ui/src/pages/chat/components/chat-transcript-scroll-ownership.test.ts +++ b/ui/src/pages/chat/components/chat-transcript-scroll-ownership.test.ts @@ -51,13 +51,14 @@ describe("chat transcript scroll ownership", () => { "transcript extent", ); const total = Number.parseFloat(sizer.style.height); + let maxScrollTop = total + 84 - 600; Object.defineProperties(container, { clientHeight: { configurable: true, value: 600 }, - scrollHeight: { configurable: true, value: total + 84 }, + scrollHeight: { configurable: true, get: () => maxScrollTop + 600 }, }); container.scrollTo = (options?: ScrollToOptions | number) => { if (typeof options === "object") { - container.scrollTop = Math.min(options.top ?? container.scrollTop, total + 84 - 600); + container.scrollTop = Math.min(options.top ?? container.scrollTop, maxScrollTop); } }; policy.chatScrollElement = () => container; @@ -86,9 +87,20 @@ describe("chat transcript scroll ownership", () => { container.dispatchEvent(new Event("scroll")); expect(policy.chatReadingHistory).toBe(true); expect(policy.chatFollowLocked).toBe(true); + // A partial sizer commit lets TanStack retry the clamped adjustment as an absolute write. + maxScrollTop += 16; + transcript.hostUpdated(); + expect(container.scrollTop).toBe(maxScrollTop); + // The dock can keep shrinking the scroll range before the native read-back arrives. + maxScrollTop -= 8; + container.scrollTop = maxScrollTop; + container.dispatchEvent(new Event("scroll")); + expect(policy.chatReadingHistory).toBe(true); + expect(policy.chatFollowLocked).toBe(true); container.dispatchEvent(new WheelEvent("wheel", { deltaY: 1 })); expect(policy.chatReadingHistory).toBe(false); expect(policy.chatFollowLocked).toBe(false); + expect(transcript.isProgrammaticScroll).toBe(false); } finally { transcript.hostDisconnected(); vi.useRealTimers(); diff --git a/ui/src/pages/chat/components/chat-transcript-virtualizer-host.ts b/ui/src/pages/chat/components/chat-transcript-virtualizer-host.ts index 095b83b7e083..4b065c952f15 100644 --- a/ui/src/pages/chat/components/chat-transcript-virtualizer-host.ts +++ b/ui/src/pages/chat/components/chat-transcript-virtualizer-host.ts @@ -246,12 +246,8 @@ export class ChatSessionVirtualizerHost implements ReactiveControllerHost, ChatT scrollToFn: (offset, options, instance) => { const before = this.scrollElement?.scrollTop ?? 0; elementScroll(offset, options, instance); - // Record the write without feeding the virtualizer's pending target back as reader input. + // The observer owns provenance for every write, including absolute compensation retries. this.offsetState.recordProgrammaticScroll?.(before, this.scrollElement?.scrollTop ?? 0); - // Measurement compensation can clamp to the end before the sizer commits. - // Its native read-back must not grant permission to follow the next delta. - this.offsetState.measurementScrollOffset = - options.adjustments !== undefined ? (this.scrollElement?.scrollTop ?? null) : null; }, observeElementRect: (instance, callback) => observeElementRect(instance, (rect) => { @@ -413,7 +409,7 @@ export class ChatSessionVirtualizerHost implements ReactiveControllerHost, ChatT this.expandedAssistantMessages.clear(); this.expandedAssistantMessages = new Map(); this.offsetState.scrollCommand = null; - this.offsetState.measurementScrollOffset = null; + this.offsetState.maintenanceScrollOffset = null; this.prependAnchor.clear(); this.offsetState.touching = false; this.offsetState.touchScrolling = false; @@ -569,10 +565,12 @@ export class ChatSessionVirtualizerHost implements ReactiveControllerHost, ChatT const element = this.scrollElement; // Lit's scroll listener can precede TanStack's offset observer. Read the // committed viewport so the final event publishes the settled end policy. - const distanceFromEnd = (maxTranscriptScrollOffset(element) ?? 0) - (element?.scrollTop ?? 0); + const maxOffset = maxTranscriptScrollOffset(element) ?? 0; + const distanceFromEnd = maxOffset - (element?.scrollTop ?? 0); return ( - (this.offsetState.measurementScrollOffset !== null && - this.offsetState.measurementScrollOffset === element?.scrollTop) || + // A shrinking viewport range can clamp the write before its native read-back arrives. + (this.offsetState.maintenanceScrollOffset !== null && + Math.min(this.offsetState.maintenanceScrollOffset, maxOffset) === element?.scrollTop) || this.offsetState.pendingScrollOffset !== null || (this.offsetState.scrollCommand !== null && distanceFromEnd > CHAT_TRANSCRIPT_END_THRESHOLD_PX) diff --git a/ui/src/test-helpers/mcp-app-conformance-fixture.ts b/ui/src/test-helpers/mcp-app-conformance-fixture.ts index fa4d4e7d7254..4d6749575196 100644 --- a/ui/src/test-helpers/mcp-app-conformance-fixture.ts +++ b/ui/src/test-helpers/mcp-app-conformance-fixture.ts @@ -401,6 +401,7 @@ export function appHtml(appModuleUrl: string): string { + @@ -411,6 +412,7 @@ export function appHtml(appModuleUrl: string): string { pending + @@ -426,7 +428,6 @@ export function appHtml(appModuleUrl: string): string { `; }