mirror of
https://github.com/nightly-labs/openbot.git
synced 2026-11-15 14:01:41 +08:00
* Give GitHub Copilot agents their stdio MCP servers and Computer Use GitHub Copilot CLI in ACP mode accepts only http and sse MCP servers in session/new and drops a stdio server with no error (github/copilot-cli#3889). Computer Use is a stdio server, so a Copilot agent with Computer Use on had no desktop tools, and it told the user to turn on Computer Use in Settings. A new ACP flavor flag, relayStdioMcpServers, makes OpenBot start each stdio server itself with startStdioMcpRelay and send it to Copilot as an http entry. The relays end with the session. The relay now starts a Windows .cmd server through cmd.exe and hides its window. E2E: scripts/copilot-mcp-relay-e2e.ts (bun run test:copilot-mcp-relay). Fixes #8427 * Name the release notes after the branch * Wait for the Copilot MCP relays when a session or the client stops A stop, a session close and a recovery now wait until the relays and their stdio servers end, so an app quit leaves no server running. A relayed server also gets the PATH and the environment of the agent's process. The E2E test checks that the server is gone when the stop ends. * Pass the exact optional types check in the fake Copilot agent The fake gives the SDK client transport to the MCP client through asTransport, as the other MCP scripts do.
600 lines
37 KiB
JSON
600 lines
37 KiB
JSON
{
|
|
"name": "openbot",
|
|
"productName": "OpenBot",
|
|
"desktopName": "openbot.desktop",
|
|
"version": "0.69.0",
|
|
"description": "A local-first multi-agent desktop workspace for Codex, Claude, and Grok.",
|
|
"author": {
|
|
"name": "Norbert Bodziony",
|
|
"url": "https://x.com/norbertbodziony"
|
|
},
|
|
"license": "PolyForm-Noncommercial-1.0.0",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/nightly-labs/openbot.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/nightly-labs/openbot/issues"
|
|
},
|
|
"homepage": "https://github.com/nightly-labs/openbot#readme",
|
|
"keywords": [
|
|
"ai-agents",
|
|
"bun",
|
|
"claude-code",
|
|
"codex",
|
|
"electron",
|
|
"local-first",
|
|
"solidjs"
|
|
],
|
|
"private": true,
|
|
"type": "module",
|
|
"workspaces": {
|
|
"packages": [
|
|
"apps/*",
|
|
"packages/*",
|
|
"remote/api"
|
|
],
|
|
"catalog": {
|
|
"@noble/hashes": "2.4.0",
|
|
"@paper-design/shaders": "0.0.80",
|
|
"@cloudflare/workers-types": "5.20261023.1",
|
|
"@fontsource-variable/inter": "5.3.0",
|
|
"@kobalte/core": "2.0.0-alpha.0",
|
|
"@norbert_bodziony/bloub": "0.6.4",
|
|
"@openpanel/web": "1.4.2",
|
|
"@solidjs/signals": "2.0.0-rc.18",
|
|
"@solidjs/testing-library": "1.0.0-rc.2",
|
|
"@solidjs/vite-plugin": "3.0.0-next.51",
|
|
"@solidjs/web": "2.0.0-rc.18",
|
|
"@speed-highlight/core": "1.2.24",
|
|
"@tailwindcss/vite": "4.3.3",
|
|
"@testing-library/jest-dom": "7.0.1",
|
|
"@types/node": "24.19.2",
|
|
"class-variance-authority": "0.7.1",
|
|
"fflate": "0.8.3",
|
|
"jose": "6.2.13",
|
|
"jsdom": "30.0.1",
|
|
"katex": "0.19.0",
|
|
"marked": "18.1.1",
|
|
"mermaid": "12.2.0",
|
|
"pdfjs-dist": "6.4.299",
|
|
"smol-toml": "1.9.0",
|
|
"tailwindcss": "4.3.3",
|
|
"typescript": "7.0.2",
|
|
"vite": "8.3.5",
|
|
"vitest": "4.1.12",
|
|
"wrangler": "4.152.0",
|
|
"yaml": "2.9.1",
|
|
"zod": "4.6.7",
|
|
"lucide-solid": "1.33.0",
|
|
"solid-sonner": "0.3.2",
|
|
"solid-recharts": "1.0.1",
|
|
"qrcode": "^1.5.4",
|
|
"@tanstack/virtual-core": "3.19.7",
|
|
"effect": "4.0.6",
|
|
"@cacheable/node-cache": "1.7.6",
|
|
"@hapi/boom": "9.1.4",
|
|
"@noble/curves": "2.4.0",
|
|
"async-mutex": "0.5.0",
|
|
"long": "5.3.2",
|
|
"lru-cache": "11.5.3",
|
|
"music-metadata": "11.16.1",
|
|
"p-queue": "9.3.5",
|
|
"pino": "9.14.0",
|
|
"protobufjs": "7.6.6"
|
|
}
|
|
},
|
|
"main": "./out/main/start.js",
|
|
"packageManager": "bun@1.4.2",
|
|
"engines": {
|
|
"node": ">=24.0.0"
|
|
},
|
|
"scripts": {
|
|
"prepare": "bun scripts/install-git-hooks.ts",
|
|
"postinstall": "bun scripts/electron-dist-cache.ts restore && bun scripts/install-electron.ts && bun scripts/electron-dist-cache.ts save && bun scripts/stamp-install.ts",
|
|
"api:start": "bun run --cwd apps/auth-api start",
|
|
"api:build": "bun run --cwd apps/auth-api build",
|
|
"api:images": "bun run --cwd apps/auth-api images",
|
|
"api:deploy": "bun run --cwd apps/auth-api deploy",
|
|
"hosting:template": "bun scripts/hosting/build-boat-template.ts",
|
|
"hosting:setup": "bun scripts/hosting/setup-account-server.ts",
|
|
"api:deploy:test": "bun run --cwd apps/auth-api deploy:test",
|
|
"status:build": "bun run --cwd apps/status build",
|
|
"status:smoke": "bun scripts/status-page-smoke.ts",
|
|
"sites:deploy": "bun run --cwd apps/site-router deploy",
|
|
"sites:bucket:create": "bunx wrangler r2 bucket create openbot-sites --storage-class Standard",
|
|
"updates:deploy": "bun run --cwd apps/mobile-updates deploy",
|
|
"updates:bucket:create": "bunx wrangler r2 bucket create openbot-mobile-updates --storage-class Standard",
|
|
"sites:lifecycle": "bunx wrangler r2 bucket lifecycle set openbot-sites --file apps/site-router/r2-lifecycle.json --force",
|
|
"api:migrate:local": "bun run --cwd apps/auth-api db:migrate:local",
|
|
"api:migrate:remote": "bun run --cwd apps/auth-api db:migrate:remote",
|
|
"api:stripe:bootstrap": "bun run --cwd apps/auth-api stripe:bootstrap",
|
|
"remote:up": "remote/bin/dotenvx run --overload -f remote/.env.production -fk remote/.env.keys -- docker compose -f remote/compose.yaml up -d --build",
|
|
"remote:down": "remote/bin/dotenvx run --overload -f remote/.env.production -fk remote/.env.keys -- docker compose -f remote/compose.yaml down",
|
|
"remote:logs": "remote/bin/dotenvx run --overload -f remote/.env.production -fk remote/.env.keys -- docker compose -f remote/compose.yaml logs -f remote-api coturn",
|
|
"remote:check": "bun remote/scripts/check.ts",
|
|
"remote:check:compose": "bun remote/scripts/check.ts --compose",
|
|
"remote:env:validate": "cd remote && bin/dotenvx validate -f .env.production -fk .env.keys",
|
|
"remote:update": "remote/bin/dotenvx run --overload -f remote/.env.production -fk remote/.env.keys -- bun remote/scripts/update.ts",
|
|
"env:encrypt:prod": "bun run --cwd apps/auth-api env:encrypt:prod",
|
|
"env:set:smtp": "bun run --cwd apps/auth-api env:set:smtp",
|
|
"env:validate:prod": "bun run --cwd apps/auth-api env:validate:prod",
|
|
"dev:prepare": "bun scripts/prepare-dev-environment.ts",
|
|
"dev:bootstrap": "bun scripts/prepare-dev-environment.ts",
|
|
"dev": "bun scripts/dev-services.ts app",
|
|
"dev:api": "bun scripts/dev-services.ts api",
|
|
"dev:apns-key": "bun scripts/dev-apns-key.ts",
|
|
"dev:test-client": "bun scripts/dev-services.ts test-client",
|
|
"dev:all": "bun scripts/dev-services.ts all",
|
|
"dev:slack": "bun scripts/dev-services.ts app --slack",
|
|
"mobile": "bun run --cwd apps/mobile start",
|
|
"mobile:go": "bun run --cwd apps/mobile start:go",
|
|
"mobile:go:tunnel": "bun run --cwd apps/mobile start:go:tunnel",
|
|
"mobile:android": "bun run --cwd apps/mobile android",
|
|
"mobile:android:build:local": "bun run --cwd apps/mobile android:build:local",
|
|
"mobile:android:release:play": "bun run --cwd apps/mobile android:release:play",
|
|
"mobile:ios": "bun run --cwd apps/mobile ios",
|
|
"mobile:ios:rocketsim": "bun run --cwd apps/mobile ios:rocketsim",
|
|
"mobile:ios:build:local": "bun run --cwd apps/mobile ios:build:local",
|
|
"mobile:ios:release:testflight": "bun run --cwd apps/mobile ios:release:testflight",
|
|
"mobile:release": "bun scripts/mobile-release.ts",
|
|
"mobile:release:patch": "bun scripts/prepare-release.ts patch --mobile",
|
|
"mobile:release:minor": "bun scripts/prepare-release.ts minor --mobile",
|
|
"mobile:release:major": "bun scripts/prepare-release.ts major --mobile",
|
|
"mobile:release:published": "bun scripts/publish-mobile-release.ts",
|
|
"mobile:release:ota": "bun scripts/mobile-ota-release-notes.ts",
|
|
"mobile:ota:check": "bun scripts/mobile-ota.ts check",
|
|
"mobile:ota:status": "bun scripts/mobile-ota.ts status",
|
|
"mobile:ota:publish": "bun scripts/mobile-ota.ts dispatch publish",
|
|
"mobile:ota:rollout": "bun scripts/mobile-ota.ts dispatch rollout",
|
|
"mobile:ota:rollback": "bun scripts/mobile-ota.ts dispatch rollback",
|
|
"mobile:lint": "bun run --cwd apps/mobile lint",
|
|
"mobile:typecheck": "bun run typecheck:mobile",
|
|
"mobile:doctor": "bun run --cwd apps/mobile doctor",
|
|
"dev:seed": "tsx scripts/seed-dev-state.ts",
|
|
"dev:automation": "bun scripts/dev-automation/cli.ts",
|
|
"dev:cpu": "bun scripts/dev-automation/cli.ts cpu",
|
|
"dev:memory": "bun scripts/dev-automation/cli.ts memory",
|
|
"dev:bench": "tsx scripts/dev-automation/bench.ts",
|
|
"bench:browser-tools": "tsx scripts/browser-tools-bench.ts",
|
|
"bench:hermes-prompt-settings": "bun scripts/hermes-prompt-settings-bench.ts",
|
|
"bench:opencode-prompt-settings": "bun scripts/opencode-prompt-settings-bench.ts",
|
|
"bench:opencode-free-models": "bun scripts/opencode-free-models-bench.ts",
|
|
"bench:tool-result-size": "bun scripts/tool-result-size-bench.ts",
|
|
"bench:pi-prompt-settings": "bun scripts/pi-prompt-settings-bench.ts",
|
|
"smoke:pi-agent": "bun scripts/pi-agent-smoke.ts",
|
|
"dev:status": "bun scripts/dev-stack.ts status",
|
|
"dev:verify": "bun scripts/dev-verify.ts",
|
|
"dev:mobile": "bun scripts/dev-mobile.ts",
|
|
"dev:stop": "bun scripts/dev-stack.ts stop",
|
|
"dev:forget": "bun scripts/dev-stack.ts forget",
|
|
"dev:restart-client": "bun scripts/dev-stack.ts restart-client",
|
|
"dev:reset": "tsx scripts/reset-dev-state.ts",
|
|
"analytics:backfill": "bun scripts/backfill-openpanel-identities.ts",
|
|
"build": "electron-vite build",
|
|
"voice:prepare": "bun scripts/prepare-voice.ts",
|
|
"voice:prepare-runtime": "bun scripts/prepare-voice.ts --runtime-only",
|
|
"build:remote-desktop-runtime": "bun scripts/build-remote-desktop-runtime.ts",
|
|
"install:remote-desktop-runtime": "bun scripts/install-remote-desktop-runtime.ts",
|
|
"prepare:remote-desktop-runtime": "bun scripts/prepare-remote-desktop-runtime.ts",
|
|
"prepare:cua-driver": "bun scripts/install-cua-driver.ts",
|
|
"package:remote-desktop-runtime": "bun scripts/package-remote-desktop-runtime.ts",
|
|
"install:codex-runtime": "bun scripts/install-codex-runtime.ts",
|
|
"install:claude-runtime": "bun scripts/install-claude-runtime.ts",
|
|
"install:grok-runtime": "bun scripts/install-grok-runtime.ts",
|
|
"pin:opencode-runtime": "bun scripts/pin-opencode-runtime.ts",
|
|
"pin:bun-runtime": "bun scripts/pin-bun-runtime.ts",
|
|
"pin:cua-driver": "bun scripts/pin-cua-driver.ts",
|
|
"verify:remote-desktop-runtime": "bun scripts/verify-remote-desktop-runtime.ts",
|
|
"perf:web": "bun scripts/web-client-perf-e2e.ts",
|
|
"perf:remote": "bun scripts/remote-sync-perf-e2e.ts",
|
|
"preview": "bun scripts/preview.ts",
|
|
"storybook": "bun scripts/dev-storybook.ts",
|
|
"build-storybook": "storybook build",
|
|
"typecheck:node": "bun scripts/type-checker.ts --noEmit -p tsconfig.node.json",
|
|
"typecheck:renderer": "bun scripts/type-checker.ts --noEmit -p tsconfig.web.json",
|
|
"typecheck:storybook": "bun scripts/type-checker.ts --noEmit -p tsconfig.storybook.json",
|
|
"typecheck:api": "bun run --cwd apps/auth-api typecheck",
|
|
"typecheck:brand": "bun run --cwd packages/brand typecheck",
|
|
"typecheck:contracts": "bun run --cwd packages/contracts typecheck",
|
|
"typecheck:logging": "bun run --cwd packages/logging typecheck",
|
|
"typecheck:user-errors": "bun run --cwd packages/user-errors typecheck",
|
|
"typecheck:i18n": "bun run --cwd packages/i18n typecheck",
|
|
"typecheck:sites": "bun run --cwd apps/site-router typecheck",
|
|
"typecheck:updates": "bun run --cwd apps/mobile-updates typecheck",
|
|
"typecheck:team-client": "bun run --cwd packages/team-client typecheck",
|
|
"typecheck:mobile": "bun run --cwd apps/mobile typecheck",
|
|
"typecheck:remote": "bun run --cwd remote/api typecheck",
|
|
"typecheck:status": "bun run --cwd apps/status typecheck",
|
|
"typecheck": "bun run --parallel 'typecheck:*'",
|
|
"lint": "biome check --max-diagnostics=none .",
|
|
"i18n:check": "bun scripts/i18n-check.ts",
|
|
"types:ratchet": "bun scripts/type-ratchet.ts",
|
|
"format": "biome check --write --max-diagnostics=none .",
|
|
"knip:check": "knip",
|
|
"check:staged": "biome check --write --staged --files-ignore-unknown=true --no-errors-on-unmatched",
|
|
"test": "bun run test:desktop && bun run test:api",
|
|
"test:desktop": "vitest run",
|
|
"test:changed": "git merge-base origin/main HEAD > /dev/null && vitest run --changed origin/main --maxWorkers=1",
|
|
"test:related": "vitest related --run --maxWorkers=1",
|
|
"test:durations": "bun scripts/test-durations.ts",
|
|
"test:api": "bun run --cwd apps/auth-api test",
|
|
"test:backend": "vitest run src/backend",
|
|
"test:browser": "bun scripts/browser-smoke.ts",
|
|
"test:browser-agent-session": "bun scripts/browser-agent-session-e2e.ts",
|
|
"test:update-rollout": "bun scripts/update-rollout-e2e.ts",
|
|
"test:browser-steps": "bun scripts/browser-steps-e2e.ts",
|
|
"test:browser-dialogs": "bun scripts/browser-dialogs-e2e.ts",
|
|
"test:browser-fingerprint": "bun scripts/browser-fingerprint-e2e.ts",
|
|
"test:browser-ambiguous-targets": "bun scripts/browser-ambiguous-targets-e2e.ts",
|
|
"test:browser-profile-agents": "bun scripts/browser-profile-agents-e2e.ts",
|
|
"test:browser:google-live": "bun scripts/browser-smoke.ts --google-live",
|
|
"test:browser:whatsapp-live": "bun scripts/browser-smoke.ts --whatsapp-live",
|
|
"test:browser:canva-live": "bun scripts/browser-smoke.ts --canva-live",
|
|
"test:browser:framer-live": "bun scripts/browser-smoke.ts --framer-live",
|
|
"test:codex": "bun scripts/codex-doctor.ts --strict",
|
|
"test:acp-directories": "bun scripts/acp-additional-directories-e2e.ts",
|
|
"test:acp-flavors": "bun scripts/acp-flavor-e2e.ts",
|
|
"test:acp-subagents": "bun scripts/acp-subagents-e2e.ts",
|
|
"test:sign-in-relay-paste": "bun scripts/sign-in-relay-paste-e2e.ts",
|
|
"test:mcp-many-servers": "bun scripts/mcp-many-servers-e2e.ts",
|
|
"test:mcp-member-access": "bun scripts/mcp-member-access-e2e.ts",
|
|
"test:sign-in-relay-replay": "bun scripts/sign-in-relay-replay-e2e.ts",
|
|
"test:acp-mcp-names": "bun scripts/acp-mcp-server-names-e2e.ts",
|
|
"test:copilot-mcp-relay": "bun scripts/copilot-mcp-relay-e2e.ts",
|
|
"test:acp-mcp-shared-token": "bun scripts/acp-mcp-shared-token-e2e.ts",
|
|
"test:acp-turn-stall": "bun scripts/acp-turn-stall-e2e.ts",
|
|
"test:agent-database-host-start": "bun scripts/agent-database-host-start-e2e.ts",
|
|
"test:acp-instructions-once": "bun scripts/acp-instructions-once-e2e.ts",
|
|
"test:acp-audio-input": "bun scripts/acp-audio-input-e2e.ts",
|
|
"test:grok-steer": "bun scripts/grok-steer-e2e.ts",
|
|
"test:grok-question": "bun scripts/grok-question-e2e.ts",
|
|
"test:grok-partial-model-list": "bun scripts/grok-partial-model-list-e2e.ts",
|
|
"test:pi-steer": "bun scripts/pi-steer-e2e.ts",
|
|
"test:pi-idle-release": "bun scripts/pi-idle-release-e2e.ts",
|
|
"test:pi-long-instructions": "bun scripts/pi-long-instructions-e2e.ts",
|
|
"test:custom-provider-pi": "bun scripts/custom-provider-pi-harness-e2e.ts",
|
|
"test:pi-usage-cost": "bun scripts/pi-usage-cost-e2e.ts",
|
|
"test:pi-mcp-deferred": "bun scripts/pi-mcp-deferred-e2e.ts",
|
|
"test:pi-mcp-workspace-only": "bun scripts/pi-mcp-workspace-only-e2e.ts",
|
|
"test:grok-tool-trim": "bun scripts/grok-tool-trim-e2e.ts",
|
|
"bench:grok-prompt-settings": "bun scripts/grok-prompt-settings-bench.ts",
|
|
"smoke:grok-agent": "bun scripts/grok-agent-smoke.ts",
|
|
"test:antigravity-tool-filter": "bun scripts/antigravity-tool-filter-e2e.ts",
|
|
"test:codex-prompt-trim": "bun scripts/codex-prompt-trim-e2e.ts",
|
|
"test:opencode-tool-trim": "bun scripts/opencode-tool-trim-e2e.ts",
|
|
"smoke:opencode-agent": "bun scripts/opencode-agent-smoke.ts",
|
|
"test:muse-instructions-once": "bun scripts/muse-instructions-once-e2e.ts",
|
|
"test:provider-conformance": "bun scripts/provider-conformance-e2e.ts",
|
|
"test:provider-cli-canary": "bun scripts/provider-cli-canary.ts",
|
|
"test:hermes-server": "bun scripts/hermes-server-e2e.ts",
|
|
"test:custom-agents": "bun scripts/custom-acp-agent-e2e.ts",
|
|
"test:custom-agents:login-path": "bun scripts/custom-acp-agent-login-path-e2e.ts",
|
|
"test:claude:login-path": "bun scripts/claude-session-login-path-e2e.ts",
|
|
"test:claude:windows-cmd": "bun scripts/claude-windows-cmd-e2e.ts",
|
|
"test:home-skills": "bun scripts/home-agent-skills-e2e.ts",
|
|
"test:codex:login-path": "bun scripts/codex-login-path-e2e.ts",
|
|
"test:antigravity:login-path": "bun scripts/antigravity-login-path-e2e.ts",
|
|
"test:antigravity-mcp-load-failure": "bun scripts/antigravity-mcp-load-failure-e2e.ts",
|
|
"test:antigravity-expired-token": "bun scripts/antigravity-expired-token-e2e.ts",
|
|
"test:claude-foreign-session": "bun scripts/claude-foreign-session-e2e.ts",
|
|
"test:mcp-catalog": "bun scripts/mcp-catalog-smoke.ts",
|
|
"test:mcp-oauth": "bun scripts/mcp-oauth-e2e.ts",
|
|
"test:mcp-oauth-store": "bun scripts/mcp-oauth-store-e2e.ts",
|
|
"test:mcp-sign-in-client-refused": "bun scripts/mcp-sign-in-client-refused-e2e.ts",
|
|
"test:mcp-sign-in-client-metadata-document": "bun scripts/mcp-sign-in-client-metadata-document-e2e.ts",
|
|
"test:mcp-server-unreadable-row": "bun scripts/mcp-server-unreadable-row-e2e.ts",
|
|
"test:mcp-tool-consent": "bun scripts/mcp-tool-consent-e2e.ts",
|
|
"test:agent-mcp-tools": "bun scripts/agent-mcp-tools-e2e.ts",
|
|
"test:agent-update-agents": "bun scripts/agent-update-agents-e2e.ts",
|
|
"test:ui-blocks": "bun scripts/ui-blocks-e2e.ts",
|
|
"test:composer-attachments": "bun scripts/composer-attachments-e2e.ts",
|
|
"test:agent-api-keys": "bun scripts/agent-api-keys-e2e.ts",
|
|
"test:antigravity-start": "bun scripts/antigravity-start-e2e.ts",
|
|
"test:pi-sign-in-watch": "bun scripts/pi-sign-in-watch-e2e.ts",
|
|
"test:antigravity-usage": "bun scripts/antigravity-usage-e2e.ts",
|
|
"test:workflow-model-steps": "bun scripts/workflow-model-steps-e2e.ts",
|
|
"test:workflow-discord": "bun scripts/workflow-discord-e2e.ts",
|
|
"test:workflow-telegram": "bun scripts/workflow-telegram-e2e.ts",
|
|
"test:workflow-slack": "bun scripts/workflow-slack-e2e.ts",
|
|
"test:workflow-channel-output": "bun scripts/workflow-channel-output-e2e.ts",
|
|
"test:workflow-agent-tools": "bun scripts/workflow-agent-tools-e2e.ts",
|
|
"test:workflow-join": "bun scripts/workflow-join-e2e.ts",
|
|
"test:discord-github-files": "bun scripts/discord-github-files-e2e.ts",
|
|
"test:antigravity-accounts": "bun scripts/antigravity-accounts-e2e.ts",
|
|
"test:antigravity-usage-metering": "bun scripts/antigravity-usage-metering-e2e.ts",
|
|
"test:antigravity-quota-failover": "bun scripts/antigravity-quota-failover-e2e.ts",
|
|
"test:antigravity-windows-zip": "bun scripts/antigravity-windows-zip-e2e.ts",
|
|
"test:opencode-usage-metering": "bun scripts/opencode-usage-metering-e2e.ts",
|
|
"test:opencode-anthropic-cache": "bun scripts/opencode-anthropic-cache-e2e.ts",
|
|
"test:opencode-custom-model": "bun scripts/opencode-custom-model-e2e.ts",
|
|
"test:opencode-azure-responses": "bun scripts/opencode-azure-responses-e2e.ts",
|
|
"test:claude-api-key": "bun scripts/claude-api-key-e2e.ts",
|
|
"test:claude-stored-sign-in": "bun scripts/claude-stored-sign-in-e2e.ts",
|
|
"test:cursor-usage": "bun scripts/cursor-usage-e2e.ts",
|
|
"test:opencode-go-usage": "bun scripts/opencode-go-usage-e2e.ts",
|
|
"test:cursor-stream-closed": "bun scripts/cursor-stream-closed-e2e.ts",
|
|
"test:cursor-model-set": "bun scripts/cursor-model-set-e2e.ts",
|
|
"test:provider-launch-order": "bun scripts/provider-launch-order-e2e.ts",
|
|
"test:provider-update-busy": "bun scripts/provider-update-busy-e2e.ts",
|
|
"test:provider-update-after-app-upgrade": "bun scripts/provider-update-after-app-upgrade-e2e.ts",
|
|
"test:provider-runtime-remove": "bun scripts/provider-runtime-remove-e2e.ts",
|
|
"test:provider-exit-session": "bun scripts/provider-exit-session-e2e.ts",
|
|
"test:codex-hung-app-server": "bun scripts/codex-hung-app-server-e2e.ts",
|
|
"test:codex-midturn-compaction": "bun scripts/codex-midturn-compaction-e2e.ts",
|
|
"test:codex-state-busy": "bun scripts/codex-state-busy-e2e.ts",
|
|
"test:codex-subagent-steps": "bun scripts/codex-subagent-steps-e2e.ts",
|
|
"test:subagent-status": "bun scripts/subagent-status-e2e.ts",
|
|
"test:codex-idle-thread-release": "bun scripts/codex-idle-thread-release-e2e.ts",
|
|
"test:codex-missing-rollout": "bun scripts/codex-missing-rollout-e2e.ts",
|
|
"test:codex-usage-metering": "bun scripts/codex-usage-metering-e2e.ts",
|
|
"test:codex-capacity-retry": "bun scripts/codex-capacity-retry-e2e.ts",
|
|
"test:codex-usage-reset": "bun scripts/codex-usage-reset-e2e.ts",
|
|
"test:usage-read-pacing": "bun scripts/usage-read-pacing-e2e.ts",
|
|
"test:routine-fresh-session": "bun scripts/routine-fresh-session-e2e.ts",
|
|
"test:routine-report-failure": "bun scripts/routine-report-failure-e2e.ts",
|
|
"test:agent-webhook-routine": "bun scripts/agent-webhook-routine-e2e.ts",
|
|
"test:webhook-analytics": "bun scripts/webhook-analytics-e2e.ts",
|
|
"test:agent-channel-manage": "bun scripts/agent-channel-manage-e2e.ts",
|
|
"test:agent-channel-create": "bun scripts/agent-channel-create-e2e.ts",
|
|
"test:library-folders": "bun scripts/library-folders-e2e.ts",
|
|
"test:agent-workflow-gate": "bun scripts/agent-workflow-gate-e2e.ts",
|
|
"test:pinned-message-agent-tool": "bun scripts/pinned-message-agent-tool-e2e.ts",
|
|
"test:messaging-owner-card": "bun scripts/messaging-owner-card-e2e.ts",
|
|
"test:agent-profile-accounts": "bun scripts/agent-profile-accounts-e2e.ts",
|
|
"test:claude-usage-resume": "bun scripts/claude-usage-resume-e2e.ts",
|
|
"test:claude-background-hold": "bun scripts/claude-background-hold-e2e.ts",
|
|
"test:claude-turn-context": "bun scripts/claude-turn-context-e2e.ts",
|
|
"test:claude-late-steer": "bun scripts/claude-late-steer-e2e.ts",
|
|
"test:provider-session-reuse": "bun scripts/provider-session-reuse-e2e.ts",
|
|
"test:claude-cache": "bun scripts/claude-cache-e2e.ts",
|
|
"bench:claude-prompt-settings": "bun scripts/claude-prompt-settings-bench.ts",
|
|
"smoke:claude-agent": "bun scripts/claude-agent-smoke.ts",
|
|
"bench:codex-prompt-settings": "bun scripts/codex-prompt-settings-bench.ts",
|
|
"bench:codex-web-search": "bun scripts/codex-web-search-bench.ts",
|
|
"smoke:codex-agent": "bun scripts/codex-agent-smoke.ts",
|
|
"test:token-usage": "bun scripts/token-usage-e2e.ts",
|
|
"test:backup-model-failover": "bun scripts/backup-model-failover-e2e.ts",
|
|
"test:codex-empty-lead-turn": "bun scripts/codex-empty-lead-turn-e2e.ts",
|
|
"test:zip-attachments": "bun scripts/zip-attachment-e2e.ts",
|
|
"test:mp4-attachments": "bun scripts/mp4-attachment-e2e.ts",
|
|
"test:svg-attachments": "bun scripts/svg-attachment-e2e.ts",
|
|
"test:any-file-attachments": "bun scripts/any-file-attachment-e2e.ts",
|
|
"test:channel-notifications": "bun scripts/channel-notifications-e2e.ts",
|
|
"test:acp-effort-variants": "bun scripts/acp-effort-variants-e2e.ts",
|
|
"test:cline-free-models": "bun scripts/cline-free-models-e2e.ts",
|
|
"test:opencode-downgraded-session": "bun scripts/opencode-downgraded-session-e2e.ts",
|
|
"test:opencode-expired-key": "bun scripts/opencode-expired-key-e2e.ts",
|
|
"test:opencode-service-failure": "bun scripts/opencode-service-failure-e2e.ts",
|
|
"test:opencode-thought-interleave": "bun scripts/opencode-thought-interleave-e2e.ts",
|
|
"test:opencode-background-turn": "bun scripts/opencode-background-turn-e2e.ts",
|
|
"test:opencode-token-stream": "bun scripts/opencode-token-stream-e2e.ts",
|
|
"test:provider-transcript-replay": "bun scripts/provider-transcript-replay-e2e.ts",
|
|
"test:codex-transport-fallback": "bun scripts/codex-transport-fallback-e2e.ts",
|
|
"test:codex-warning-banner": "bun scripts/codex-warning-banner-e2e.ts",
|
|
"test:filesystem": "bun scripts/filesystem-smoke.ts",
|
|
"test:imagegen": "bun scripts/filesystem-smoke.ts --provider codex --imagegen",
|
|
"test:workspace-only": "bun scripts/filesystem-smoke.ts --workspace-only",
|
|
"test:provider-detection": "bun scripts/provider-detection-e2e.ts",
|
|
"test:storage-live": "bun scripts/provider-storage-smoke.ts",
|
|
"test:grok-live": "bun scripts/provider-storage-smoke.ts --grok-only",
|
|
"test:team-live": "electron scripts/team-webrtc-live-smoke-app",
|
|
"test:speech-voice-select": "bun scripts/speech-voice-select-e2e.ts --allow-mutations",
|
|
"test:voice-speech": "bun scripts/voice-speech-smoke.ts",
|
|
"test:voice-transcription": "bun scripts/voice-transcription-smoke.ts",
|
|
"test:remote-desktop-runtime": "bun scripts/remote-desktop-runtime-smoke.ts",
|
|
"test:signal": "bun scripts/signal-security-e2e.ts",
|
|
"test:ipc-input": "bun scripts/ipc-input-e2e.ts",
|
|
"test:automation-cli": "bun scripts/automation-cli-e2e.ts",
|
|
"test:team-api-routes": "bun --preload ./scripts/team-api-routes-e2e-electron.mjs scripts/team-api-routes-e2e.ts",
|
|
"test:team-legacy-clients": "bun scripts/team-api-legacy-clients-e2e.ts",
|
|
"test:team-session-revoke": "bun scripts/team-session-revoke-e2e.ts",
|
|
"test:server-mute": "bun scripts/server-mute-e2e.ts",
|
|
"test:desktop-notifications": "bun scripts/desktop-notifications-e2e.ts",
|
|
"test:push-notification-away": "bun scripts/push-notification-away-e2e.ts",
|
|
"test:computer-activity": "bun scripts/computer-activity-e2e.ts",
|
|
"test:notification-summary": "bun scripts/notification-summary-e2e.ts",
|
|
"test:thread-notifications": "bun scripts/thread-notifications-e2e.ts",
|
|
"test:browser-sign-in": "bun scripts/browser-sign-in-e2e.ts",
|
|
"test:routine-pause-resume": "bun scripts/routine-pause-resume-e2e.ts",
|
|
"test:routine-timezone-move": "bun scripts/routine-timezone-move-e2e.ts",
|
|
"test:routine-overnight-window": "bun scripts/routine-overnight-window-e2e.ts",
|
|
"test:agent-waits-tools": "bun scripts/agent-waits-tools-e2e.ts",
|
|
"test:agent-hide-restore": "bun scripts/agent-hide-restore-e2e.ts",
|
|
"test:memory-review": "bun scripts/memory-review-e2e.ts",
|
|
"test:skill-revision": "bun scripts/skill-revision-e2e.ts",
|
|
"test:plan-continuation": "bun scripts/plan-continuation-e2e.ts",
|
|
"test:messaging-pause-resume": "bun scripts/messaging-pause-resume-e2e.ts",
|
|
"test:messaging-discord-access": "bun scripts/messaging-discord-access-e2e.ts",
|
|
"test:messaging-discord-embeds": "bun scripts/messaging-discord-embeds-e2e.ts",
|
|
"test:messaging-place-history": "bun scripts/messaging-place-history-e2e.ts",
|
|
"test:messaging-telegram-mentions": "bun scripts/messaging-telegram-mentions-e2e.ts",
|
|
"test:messaging-slack-ping-reply": "bun scripts/messaging-slack-ping-reply-e2e.ts",
|
|
"test:turn-input": "bun scripts/turn-input-e2e.ts",
|
|
"test:analytics-redaction": "bun scripts/analytics-redaction-e2e.ts",
|
|
"test:remote-connect-analytics": "bun scripts/remote-connect-analytics-e2e.ts",
|
|
"test:central-auth-startup": "bun scripts/central-auth-startup-stall-e2e.ts",
|
|
"test:exit-records": "bun scripts/exit-records-e2e.ts",
|
|
"test:exit-watchdog": "bun scripts/exit-watchdog-e2e.ts",
|
|
"test:zero-filled-settings": "bun scripts/zero-filled-settings-e2e.ts",
|
|
"test:hosted-start-wait": "bun apps/auth-api/scripts/hosted-start-wait-e2e.ts",
|
|
"test:hosted-start-time": "bun apps/auth-api/scripts/hosted-start-time-e2e.ts",
|
|
"test:hosted-held-resume": "bun apps/auth-api/scripts/hosted-held-resume-e2e.ts",
|
|
"test:hosted-failed-stop": "bun apps/auth-api/scripts/hosted-failed-stop-e2e.ts",
|
|
"test:hosted-failing-stop": "bun apps/auth-api/scripts/hosted-failing-stop-e2e.ts",
|
|
"test:hosted-retention-wake": "bun apps/auth-api/scripts/hosted-retention-wake-e2e.ts",
|
|
"test:hosted-operator-host": "bun apps/auth-api/scripts/hosted-operator-host-e2e.ts",
|
|
"test:hosted-operator-pool": "bun apps/auth-api/scripts/hosted-operator-pool-e2e.ts",
|
|
"test:remote-auth-events": "bun apps/auth-api/scripts/remote-auth-events-e2e.ts",
|
|
"test:remote-signal-homes": "bun apps/auth-api/scripts/remote-signal-homes-e2e.ts",
|
|
"test:signal-entry-failover": "bun apps/auth-api/scripts/signal-entry-failover-e2e.ts",
|
|
"test:invite-acceptance": "bun apps/auth-api/scripts/invite-acceptance-e2e.ts",
|
|
"test:host-key-handover": "bun apps/auth-api/scripts/host-key-handover-e2e.ts",
|
|
"test:host-key-rotation": "bun scripts/host-key-rotation-e2e.ts",
|
|
"test:cloud-authorization": "bun apps/auth-api/scripts/cloud-authorization-e2e.ts",
|
|
"test:billing-snapshot": "bun apps/auth-api/scripts/billing-snapshot-e2e.ts",
|
|
"test:paid-account-identity": "bun apps/auth-api/scripts/paid-account-identity-e2e.ts",
|
|
"test:smtp-stall": "bun apps/auth-api/scripts/smtp-stall-e2e.ts",
|
|
"test:keep-previous-assets": "bun apps/auth-api/scripts/keep-previous-assets-e2e.ts",
|
|
"test:mobile-connected-devices": "bun scripts/mobile-connected-devices-e2e.ts",
|
|
"test:mobile-share-sender": "bun scripts/mobile-share-sender-e2e.ts",
|
|
"test:mobile-ota": "bun apps/mobile-updates/scripts/mobile-ota-e2e.ts",
|
|
"test:mobile-ota-notes": "bun scripts/mobile-ota-release-notes-e2e.ts",
|
|
"test:mobile-release-announcement": "bun scripts/mobile-release-announcement-e2e.ts",
|
|
"test:composer-lists": "bun scripts/composer-markdown-lists-e2e.ts",
|
|
"test:reply-quote": "bun scripts/reply-quote-markdown-e2e.ts",
|
|
"codex:doctor": "bun scripts/codex-doctor.ts",
|
|
"cua-driver:doctor": "bun scripts/cua-driver-doctor.ts",
|
|
"skills:review": "bun scripts/review-skills.ts",
|
|
"marketplace:seed:local": "bun scripts/publish-production-catalog.ts --local --apply",
|
|
"marketplace:build": "bun scripts/build-production-catalog.ts",
|
|
"marketplace:build:plugins": "bun scripts/build-plugin-catalog.ts",
|
|
"marketplace:publish:production": "bun scripts/publish-production-catalog.ts",
|
|
"agents:review": "bun scripts/review-agents.ts",
|
|
"agents:seed": "bun scripts/seed-marketplace-agents.ts",
|
|
"skills:seed": "bun scripts/seed-marketplace-skills.ts",
|
|
"release:preflight": "bun scripts/release-preflight.ts",
|
|
"release:patch": "bun scripts/prepare-release.ts patch",
|
|
"release:minor": "bun scripts/prepare-release.ts minor",
|
|
"release:major": "bun scripts/prepare-release.ts major",
|
|
"check": "bun run --parallel check:desktop check:api && bun run test:desktop",
|
|
"check:desktop": "bun run check:desktop:static && bun run test:browser",
|
|
"check:desktop:static": "bun run check:ui && bun run lint && bun run desktop:typecheck && bun run build && bun run verify:preload",
|
|
"check:api": "bun run typecheck:api && bun run test:api && bun run test:billing-snapshot && bun run test:paid-account-identity && bun run test:remote-auth-events && bun run test:remote-signal-homes && bun run test:signal-entry-failover && bun run test:invite-acceptance && bun run test:host-key-handover && bun run test:cloud-authorization && bun run test:hosted-held-resume && bun run test:hosted-failed-stop && bun run test:hosted-failing-stop && bun run test:hosted-retention-wake && bun run test:hosted-operator-host && bun run test:hosted-operator-pool && bun run test:hosted-start-time && bun run test:mobile-connected-devices && bun run test:smtp-stall && bun run test:keep-previous-assets && bun run api:build:check",
|
|
"desktop:typecheck": "bun run --parallel typecheck:node typecheck:renderer typecheck:contracts typecheck:brand typecheck:storybook",
|
|
"api:build:check": "CLOUDFLARE_ENV=preview bun run api:build",
|
|
"check:ui": "bun scripts/ui-foundation-check.ts",
|
|
"check:assets": "bun scripts/check-image-assets.ts",
|
|
"check:doc-links": "bun scripts/check-doc-links.ts",
|
|
"check:agent-context": "bun scripts/agent-context-budget.ts",
|
|
"verify:preload": "bun scripts/verify-preload-bundle.ts",
|
|
"package": "bun run voice:prepare-runtime && bun run prepare:remote-desktop-runtime && bun run verify:remote-desktop-runtime && bun run prepare:cua-driver && bun run build && electron-builder --dir --mac --config.mac.identity=null --config.mac.notarize=false",
|
|
"verify:package": "bun scripts/verify-macos-package.ts",
|
|
"package:verify": "bun run package && bun run verify:package",
|
|
"package:win": "bun run voice:prepare-runtime && bun scripts/prepare-remote-desktop-runtime.ts win32 x64 && bun run verify:remote-desktop-runtime --windows && bun scripts/install-cua-driver.ts win32 x64 && bun run build && electron-builder --dir --win --x64 --publish never",
|
|
"verify:package:win": "bun scripts/verify-windows-package.ts",
|
|
"package:linux": "bun run voice:prepare-runtime && bun scripts/prepare-remote-desktop-runtime.ts linux x64 && bun run verify:remote-desktop-runtime --linux && bun scripts/install-cua-driver.ts linux x64 && bun run build && electron-builder --dir --linux --x64 --publish never",
|
|
"package:linux:arm64": "bun run voice:prepare-runtime && bun scripts/install-cua-driver.ts linux arm64 && bun run build && electron-builder --dir --linux --arm64 --publish never",
|
|
"verify:package:linux": "bun scripts/verify-linux-package.ts",
|
|
"package:linux:verify": "bun run package:linux && bun run verify:package:linux",
|
|
"verify:update-artifacts": "bun scripts/verify-update-artifacts.ts",
|
|
"package:win:verify": "bun run package:win && bun run verify:package:win",
|
|
"dist:mac": "bun run voice:prepare-runtime && bun run prepare:remote-desktop-runtime && bun run verify:remote-desktop-runtime && bun run prepare:cua-driver && bun run build && electron-builder --mac --config.mac.identity=null --config.mac.notarize=false",
|
|
"dist:win": "bun run voice:prepare-runtime && bun scripts/prepare-remote-desktop-runtime.ts win32 x64 && bun run verify:remote-desktop-runtime --windows && bun scripts/install-cua-driver.ts win32 x64 && bun run build && electron-builder --win nsis --x64 --publish never",
|
|
"dist:linux": "bun run voice:prepare-runtime && bun scripts/prepare-remote-desktop-runtime.ts linux x64 && bun run verify:remote-desktop-runtime --linux && bun scripts/install-cua-driver.ts linux x64 && bun run build && electron-builder --linux AppImage --x64 --publish never",
|
|
"dist:linux:arm64": "bun run voice:prepare-runtime && bun scripts/install-cua-driver.ts linux arm64 && bun run build && electron-builder --linux AppImage --arm64 --publish never",
|
|
"dist:release": "bun run voice:prepare-runtime && bun run prepare:remote-desktop-runtime && bun run verify:remote-desktop-runtime && bun run prepare:cua-driver && bun run build && electron-builder --mac --publish never",
|
|
"typecheck:telemetry": "bun run --cwd packages/telemetry typecheck"
|
|
},
|
|
"dependencies": {
|
|
"@1password/sdk": "0.5.0",
|
|
"@agentclientprotocol/sdk": "1.9.0",
|
|
"@anthropic-ai/claude-agent-sdk": "0.3.309",
|
|
"@anthropic-ai/sdk": "0.137.0",
|
|
"@cacheable/node-cache": "catalog:",
|
|
"@hapi/boom": "catalog:",
|
|
"@jitl/quickjs-wasmfile-release-sync": "0.32.0",
|
|
"@modelcontextprotocol/sdk": "1.32.1",
|
|
"@muse-code/sdk": "1.4.12",
|
|
"@noble/curves": "catalog:",
|
|
"@noble/hashes": "catalog:",
|
|
"@norbert_bodziony/bloub": "catalog:",
|
|
"@openpanel/web": "catalog:",
|
|
"@solidjs/web": "catalog:",
|
|
"async-mutex": "catalog:",
|
|
"effect": "catalog:",
|
|
"electron-updater": "6.8.11",
|
|
"fflate": "catalog:",
|
|
"jose": "catalog:",
|
|
"koffi": "3.3.5",
|
|
"long": "catalog:",
|
|
"lru-cache": "catalog:",
|
|
"marked": "catalog:",
|
|
"music-metadata": "catalog:",
|
|
"p-queue": "catalog:",
|
|
"pino": "catalog:",
|
|
"protobufjs": "catalog:",
|
|
"qrcode": "catalog:",
|
|
"quickjs-emscripten-core": "0.32.0",
|
|
"smol-toml": "catalog:",
|
|
"solid-js": "2.0.0-rc.18",
|
|
"tldts": "7.4.19",
|
|
"ws": "8.22.0",
|
|
"yaml": "catalog:",
|
|
"zod": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "2.5.13",
|
|
"@dotenvx/dotenvx": "^2.38.2",
|
|
"@electron/fuses": "1.8.0",
|
|
"@fontsource-variable/inter": "catalog:",
|
|
"@kobalte/core": "catalog:",
|
|
"@openbot/brand": "workspace:*",
|
|
"@openbot/contracts": "workspace:*",
|
|
"@openbot/i18n": "workspace:*",
|
|
"@openbot/logging": "workspace:*",
|
|
"@openbot/team-client": "workspace:*",
|
|
"@openbot/telemetry": "workspace:*",
|
|
"@openbot/ui": "workspace:*",
|
|
"@openbot/user-errors": "workspace:*",
|
|
"@openbot/whatsapp": "workspace:*",
|
|
"@paper-design/shaders": "catalog:",
|
|
"@solidjs/testing-library": "catalog:",
|
|
"@solidjs/vite-plugin": "catalog:",
|
|
"@speed-highlight/core": "catalog:",
|
|
"@storybook/addon-a11y": "10.6.3",
|
|
"@tailwindcss/vite": "catalog:",
|
|
"@tanstack/virtual-core": "catalog:",
|
|
"@testing-library/jest-dom": "catalog:",
|
|
"@types/node": "catalog:",
|
|
"@types/qrcode": "^1.5.6",
|
|
"@types/ws": "8.18.2",
|
|
"axe-core": "4.14.0",
|
|
"class-variance-authority": "catalog:",
|
|
"cuelume": "0.2.8",
|
|
"electron": "45.3.0",
|
|
"electron-builder": "26.18.0",
|
|
"electron-vite": "6.0.0",
|
|
"jsdom": "catalog:",
|
|
"katex": "catalog:",
|
|
"knip": "6.42.1",
|
|
"lucide-solid": "catalog:",
|
|
"playwright-core": "1.64.1",
|
|
"solid-recharts": "catalog:",
|
|
"solid-sonner": "catalog:",
|
|
"storybook": "^10.6.3",
|
|
"storybook-solidjs-vite": "^10.7.1",
|
|
"tailwindcss": "catalog:",
|
|
"tsrs": "0.16.0-ts7.1.0-dev.20260929",
|
|
"tsx": "^4.23.15",
|
|
"typescript": "catalog:",
|
|
"vite": "catalog:",
|
|
"vitest": "catalog:"
|
|
},
|
|
"patchedDependencies": {
|
|
"lucide-solid@1.33.0": "patches/lucide-solid@1.33.0.patch",
|
|
"@kobalte/core@2.0.0-alpha.0": "patches/@kobalte%2Fcore@2.0.0-alpha.0.patch",
|
|
"dmg-builder@26.18.0": "patches/dmg-builder@26.18.0.patch",
|
|
"solid-sonner@0.3.2": "patches/solid-sonner@0.3.2.patch",
|
|
"solid-recharts@1.0.1": "patches/solid-recharts@1.0.1.patch",
|
|
"expo@58.0.17": "patches/expo@58.0.17.patch",
|
|
"expo-splash-screen@58.0.11": "patches/expo-splash-screen@58.0.11.patch",
|
|
"react-native-keyboard-controller@1.22.7": "patches/react-native-keyboard-controller@1.22.7.patch",
|
|
"@react-native-masked-view/masked-view@0.3.2": "patches/@react-native-masked-view%2Fmasked-view@0.3.2.patch",
|
|
"react-native-reserved-regions@0.2.0": "patches/react-native-reserved-regions@0.2.0.patch",
|
|
"cuelume@0.2.8": "patches/cuelume@0.2.8.patch",
|
|
"react-native-screens@4.30.0": "patches/react-native-screens@4.30.0.patch",
|
|
"storybook-solidjs-vite@10.7.1": "patches/storybook-solidjs-vite@10.7.1.patch",
|
|
"react-native-reanimated@4.7.1": "patches/react-native-reanimated@4.7.1.patch",
|
|
"expo-widgets@58.0.22": "patches/expo-widgets@58.0.22.patch",
|
|
"react-native-worklets@0.13.0": "patches/react-native-worklets@0.13.0.patch",
|
|
"@norbert_bodziony/bloub@0.6.4": "patches/@norbert_bodziony%2Fbloub@0.6.4.patch",
|
|
"@modelcontextprotocol/sdk@1.32.1": "patches/@modelcontextprotocol%2Fsdk@1.32.1.patch"
|
|
},
|
|
"trustedDependencies": [
|
|
"electron-winstaller",
|
|
"esbuild",
|
|
"workerd"
|
|
]
|
|
}
|