mirror of
https://github.com/hanzoai/bot.git
synced 2026-10-30 17:24:26 +00:00
- Fork desktop client into hanzoai/bot under apps/desktop - Minimalist bot-first UI matching screenshots: - Left sidebar with bot cards, animated Face, star badge, search, '+' create bot, user profile, and 'Connect apps' pill - Centered top pill with active bot Face & name, frameless titlebar drag and window controls - Chat stream with onboarding questionnaire / choice cards, animated reactive Bot Face (blinking, talking, listening, thinking) - Bottom pill composer with '+' attachment, mic dictation, and voice waveform mode - Modals for creating bots, connecting apps (Google Workspace, Slack, Notion, GitHub), local workspace & folders, and Live Voice Mode - Tauri 2.x native setup: - productName: 'Hanzo Bot', identifier: 'com.hanzo.bot', binary: 'hanzo-bot' - Local workspace management with folder pickers, file ops, and hanzoai/dev runner - Local daemon status check (127.0.0.1:18789) and cloud bot integration - Native RGBA icons and .icns generated from Hanzo Bot assets
436 lines
20 KiB
JSON
436 lines
20 KiB
JSON
{
|
|
"name": "@hanzo/bot",
|
|
"version": "2026.6.7",
|
|
"description": "Multi-channel AI gateway with extensible messaging integrations",
|
|
"keywords": [],
|
|
"homepage": "https://github.com/hanzoai/bot#readme",
|
|
"bugs": {
|
|
"url": "https://github.com/hanzoai/bot/issues"
|
|
},
|
|
"license": "MIT",
|
|
"author": "",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/hanzoai/bot.git"
|
|
},
|
|
"bin": {
|
|
"bot": "hanzo-bot.mjs",
|
|
"hanzo-bot": "hanzo-bot.mjs"
|
|
},
|
|
"directories": {
|
|
"doc": "docs",
|
|
"test": "test"
|
|
},
|
|
"files": [
|
|
"CHANGELOG.md",
|
|
"LICENSE",
|
|
"hanzo-bot.mjs",
|
|
"README-header.png",
|
|
"README.md",
|
|
"assets/",
|
|
"dist/",
|
|
"docs/",
|
|
"extensions/",
|
|
"skills/"
|
|
],
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"exports": {
|
|
".": "./dist/index.js",
|
|
"./plugin-sdk": {
|
|
"types": "./dist/plugin-sdk/index.d.ts",
|
|
"default": "./dist/plugin-sdk/index.js"
|
|
},
|
|
"./plugin-sdk/core": {
|
|
"types": "./dist/plugin-sdk/core.d.ts",
|
|
"default": "./dist/plugin-sdk/core.js"
|
|
},
|
|
"./plugin-sdk/compat": {
|
|
"types": "./dist/plugin-sdk/compat.d.ts",
|
|
"default": "./dist/plugin-sdk/compat.js"
|
|
},
|
|
"./plugin-sdk/team": {
|
|
"types": "./dist/plugin-sdk/team.d.ts",
|
|
"default": "./dist/plugin-sdk/team.js"
|
|
},
|
|
"./plugin-sdk/telegram": {
|
|
"types": "./dist/plugin-sdk/telegram.d.ts",
|
|
"default": "./dist/plugin-sdk/telegram.js"
|
|
},
|
|
"./plugin-sdk/discord": {
|
|
"types": "./dist/plugin-sdk/discord.d.ts",
|
|
"default": "./dist/plugin-sdk/discord.js"
|
|
},
|
|
"./plugin-sdk/slack": {
|
|
"types": "./dist/plugin-sdk/slack.d.ts",
|
|
"default": "./dist/plugin-sdk/slack.js"
|
|
},
|
|
"./plugin-sdk/signal": {
|
|
"types": "./dist/plugin-sdk/signal.d.ts",
|
|
"default": "./dist/plugin-sdk/signal.js"
|
|
},
|
|
"./plugin-sdk/imessage": {
|
|
"types": "./dist/plugin-sdk/imessage.d.ts",
|
|
"default": "./dist/plugin-sdk/imessage.js"
|
|
},
|
|
"./plugin-sdk/whatsapp": {
|
|
"types": "./dist/plugin-sdk/whatsapp.d.ts",
|
|
"default": "./dist/plugin-sdk/whatsapp.js"
|
|
},
|
|
"./plugin-sdk/line": {
|
|
"types": "./dist/plugin-sdk/line.d.ts",
|
|
"default": "./dist/plugin-sdk/line.js"
|
|
},
|
|
"./plugin-sdk/msteams": {
|
|
"types": "./dist/plugin-sdk/msteams.d.ts",
|
|
"default": "./dist/plugin-sdk/msteams.js"
|
|
},
|
|
"./plugin-sdk/acpx": {
|
|
"types": "./dist/plugin-sdk/acpx.d.ts",
|
|
"default": "./dist/plugin-sdk/acpx.js"
|
|
},
|
|
"./plugin-sdk/bluebubbles": {
|
|
"types": "./dist/plugin-sdk/bluebubbles.d.ts",
|
|
"default": "./dist/plugin-sdk/bluebubbles.js"
|
|
},
|
|
"./plugin-sdk/copilot-proxy": {
|
|
"types": "./dist/plugin-sdk/copilot-proxy.d.ts",
|
|
"default": "./dist/plugin-sdk/copilot-proxy.js"
|
|
},
|
|
"./plugin-sdk/device-pair": {
|
|
"types": "./dist/plugin-sdk/device-pair.d.ts",
|
|
"default": "./dist/plugin-sdk/device-pair.js"
|
|
},
|
|
"./plugin-sdk/diagnostics-otel": {
|
|
"types": "./dist/plugin-sdk/diagnostics-otel.d.ts",
|
|
"default": "./dist/plugin-sdk/diagnostics-otel.js"
|
|
},
|
|
"./plugin-sdk/diffs": {
|
|
"types": "./dist/plugin-sdk/diffs.d.ts",
|
|
"default": "./dist/plugin-sdk/diffs.js"
|
|
},
|
|
"./plugin-sdk/feishu": {
|
|
"types": "./dist/plugin-sdk/feishu.d.ts",
|
|
"default": "./dist/plugin-sdk/feishu.js"
|
|
},
|
|
"./plugin-sdk/google-gemini-cli-auth": {
|
|
"types": "./dist/plugin-sdk/google-gemini-cli-auth.d.ts",
|
|
"default": "./dist/plugin-sdk/google-gemini-cli-auth.js"
|
|
},
|
|
"./plugin-sdk/googlechat": {
|
|
"types": "./dist/plugin-sdk/googlechat.d.ts",
|
|
"default": "./dist/plugin-sdk/googlechat.js"
|
|
},
|
|
"./plugin-sdk/irc": {
|
|
"types": "./dist/plugin-sdk/irc.d.ts",
|
|
"default": "./dist/plugin-sdk/irc.js"
|
|
},
|
|
"./plugin-sdk/llm-task": {
|
|
"types": "./dist/plugin-sdk/llm-task.d.ts",
|
|
"default": "./dist/plugin-sdk/llm-task.js"
|
|
},
|
|
"./plugin-sdk/runbook": {
|
|
"types": "./dist/plugin-sdk/runbook.d.ts",
|
|
"default": "./dist/plugin-sdk/runbook.js"
|
|
},
|
|
"./plugin-sdk/matrix": {
|
|
"types": "./dist/plugin-sdk/matrix.d.ts",
|
|
"default": "./dist/plugin-sdk/matrix.js"
|
|
},
|
|
"./plugin-sdk/mattermost": {
|
|
"types": "./dist/plugin-sdk/mattermost.d.ts",
|
|
"default": "./dist/plugin-sdk/mattermost.js"
|
|
},
|
|
"./plugin-sdk/memory-core": {
|
|
"types": "./dist/plugin-sdk/memory-core.d.ts",
|
|
"default": "./dist/plugin-sdk/memory-core.js"
|
|
},
|
|
"./plugin-sdk/memory-lancedb": {
|
|
"types": "./dist/plugin-sdk/memory-lancedb.d.ts",
|
|
"default": "./dist/plugin-sdk/memory-lancedb.js"
|
|
},
|
|
"./plugin-sdk/minimax-portal-auth": {
|
|
"types": "./dist/plugin-sdk/minimax-portal-auth.d.ts",
|
|
"default": "./dist/plugin-sdk/minimax-portal-auth.js"
|
|
},
|
|
"./plugin-sdk/nextcloud-talk": {
|
|
"types": "./dist/plugin-sdk/nextcloud-talk.d.ts",
|
|
"default": "./dist/plugin-sdk/nextcloud-talk.js"
|
|
},
|
|
"./plugin-sdk/nostr": {
|
|
"types": "./dist/plugin-sdk/nostr.d.ts",
|
|
"default": "./dist/plugin-sdk/nostr.js"
|
|
},
|
|
"./plugin-sdk/open-prose": {
|
|
"types": "./dist/plugin-sdk/open-prose.d.ts",
|
|
"default": "./dist/plugin-sdk/open-prose.js"
|
|
},
|
|
"./plugin-sdk/phone-control": {
|
|
"types": "./dist/plugin-sdk/phone-control.d.ts",
|
|
"default": "./dist/plugin-sdk/phone-control.js"
|
|
},
|
|
"./plugin-sdk/qwen-portal-auth": {
|
|
"types": "./dist/plugin-sdk/qwen-portal-auth.d.ts",
|
|
"default": "./dist/plugin-sdk/qwen-portal-auth.js"
|
|
},
|
|
"./plugin-sdk/synology-chat": {
|
|
"types": "./dist/plugin-sdk/synology-chat.d.ts",
|
|
"default": "./dist/plugin-sdk/synology-chat.js"
|
|
},
|
|
"./plugin-sdk/talk-voice": {
|
|
"types": "./dist/plugin-sdk/talk-voice.d.ts",
|
|
"default": "./dist/plugin-sdk/talk-voice.js"
|
|
},
|
|
"./plugin-sdk/test-utils": {
|
|
"types": "./dist/plugin-sdk/test-utils.d.ts",
|
|
"default": "./dist/plugin-sdk/test-utils.js"
|
|
},
|
|
"./plugin-sdk/thread-ownership": {
|
|
"types": "./dist/plugin-sdk/thread-ownership.d.ts",
|
|
"default": "./dist/plugin-sdk/thread-ownership.js"
|
|
},
|
|
"./plugin-sdk/tlon": {
|
|
"types": "./dist/plugin-sdk/tlon.d.ts",
|
|
"default": "./dist/plugin-sdk/tlon.js"
|
|
},
|
|
"./plugin-sdk/twitch": {
|
|
"types": "./dist/plugin-sdk/twitch.d.ts",
|
|
"default": "./dist/plugin-sdk/twitch.js"
|
|
},
|
|
"./plugin-sdk/voice-call": {
|
|
"types": "./dist/plugin-sdk/voice-call.d.ts",
|
|
"default": "./dist/plugin-sdk/voice-call.js"
|
|
},
|
|
"./plugin-sdk/zalo": {
|
|
"types": "./dist/plugin-sdk/zalo.d.ts",
|
|
"default": "./dist/plugin-sdk/zalo.js"
|
|
},
|
|
"./plugin-sdk/zalouser": {
|
|
"types": "./dist/plugin-sdk/zalouser.d.ts",
|
|
"default": "./dist/plugin-sdk/zalouser.js"
|
|
},
|
|
"./plugin-sdk/account-id": {
|
|
"types": "./dist/plugin-sdk/account-id.d.ts",
|
|
"default": "./dist/plugin-sdk/account-id.js"
|
|
},
|
|
"./plugin-sdk/keyed-async-queue": {
|
|
"types": "./dist/plugin-sdk/keyed-async-queue.d.ts",
|
|
"default": "./dist/plugin-sdk/keyed-async-queue.js"
|
|
},
|
|
"./cli-entry": "./hanzo-bot.mjs"
|
|
},
|
|
"scripts": {
|
|
"android:assemble": "cd apps/android && ./gradlew :app:assembleDebug",
|
|
"android:format": "cd apps/android && ./gradlew :app:ktlintFormat :benchmark:ktlintFormat",
|
|
"android:install": "cd apps/android && ./gradlew :app:installDebug",
|
|
"android:lint": "cd apps/android && ./gradlew :app:ktlintCheck :benchmark:ktlintCheck",
|
|
"android:lint:android": "cd apps/android && ./gradlew :app:lintDebug",
|
|
"android:run": "cd apps/android && ./gradlew :app:installDebug && adb shell am start -n ai.hanzo.bot.android/.MainActivity",
|
|
"android:test": "cd apps/android && ./gradlew :app:testDebugUnitTest",
|
|
"android:test:integration": "BOT_LIVE_TEST=1 BOT_LIVE_ANDROID_NODE=1 vitest run --config vitest.live.config.ts src/gateway/android-node.capabilities.live.test.ts",
|
|
"build": "pnpm canvas:a2ui:bundle && tsdown && node scripts/copy-plugin-sdk-root-alias.mjs && pnpm build:plugin-sdk:dts && node --import tsx scripts/write-plugin-sdk-entry-dts.ts && node --import tsx scripts/canvas-a2ui-copy.ts && node --import tsx scripts/copy-hook-metadata.ts && node --import tsx scripts/copy-export-html-templates.ts && node --import tsx scripts/write-build-info.ts && node --import tsx scripts/write-cli-startup-metadata.ts && node --import tsx scripts/write-cli-compat.ts",
|
|
"build:plugin-sdk:dts": "tsc -p tsconfig.plugin-sdk.dts.json",
|
|
"build:strict-smoke": "pnpm canvas:a2ui:bundle && tsdown && node scripts/copy-plugin-sdk-root-alias.mjs && pnpm build:plugin-sdk:dts",
|
|
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh",
|
|
"check": "pnpm format:check && tsc && pnpm lint && pnpm lint:tmp:no-random-messaging && pnpm lint:tmp:channel-agnostic-boundaries && pnpm lint:tmp:no-raw-channel-fetch && pnpm lint:agent:ingress-owner && pnpm lint:plugins:no-register-http-handler && pnpm lint:plugins:no-monolithic-plugin-sdk-entry-imports && pnpm lint:webhook:no-low-level-body-read && pnpm lint:auth:no-pairing-store-group && pnpm lint:auth:pairing-account-scope && pnpm check:host-env-policy:swift",
|
|
"check:docs": "pnpm format:docs:check && pnpm lint:docs && pnpm docs:check-links",
|
|
"check:host-env-policy:swift": "node scripts/generate-host-env-security-policy-swift.mjs --check",
|
|
"check:loc": "node --import tsx scripts/check-ts-max-loc.ts --max 500",
|
|
"deadcode:ci": "pnpm deadcode:report:ci:knip && pnpm deadcode:report:ci:ts-prune && pnpm deadcode:report:ci:ts-unused",
|
|
"deadcode:knip": "pnpm dlx knip --no-progress",
|
|
"deadcode:report": "pnpm deadcode:knip; pnpm deadcode:ts-prune; pnpm deadcode:ts-unused",
|
|
"deadcode:report:ci:knip": "mkdir -p .artifacts/deadcode && pnpm deadcode:knip > .artifacts/deadcode/knip.txt 2>&1 || true",
|
|
"deadcode:report:ci:ts-prune": "mkdir -p .artifacts/deadcode && pnpm deadcode:ts-prune > .artifacts/deadcode/ts-prune.txt 2>&1 || true",
|
|
"deadcode:report:ci:ts-unused": "mkdir -p .artifacts/deadcode && pnpm deadcode:ts-unused > .artifacts/deadcode/ts-unused-exports.txt 2>&1 || true",
|
|
"deadcode:ts-prune": "pnpm dlx ts-prune src extensions scripts",
|
|
"deadcode:ts-unused": "pnpm dlx ts-unused-exports tsconfig.json --ignoreTestFiles --exitWithCount",
|
|
"desktop:build": "pnpm -C apps/desktop build",
|
|
"desktop:dev": "pnpm -C apps/desktop dev",
|
|
"desktop:tauri": "pnpm -C apps/desktop tauri",
|
|
"desktop:tauri:build": "pnpm -C apps/desktop tauri build",
|
|
"desktop:typecheck": "pnpm -C apps/desktop typecheck",
|
|
"dev": "node scripts/run-node.mjs",
|
|
"docs:bin": "node scripts/build-docs-list.mjs",
|
|
"docs:check-links": "node scripts/docs-link-audit.mjs",
|
|
"docs:dev": "cd docs && mint dev",
|
|
"docs:list": "node scripts/docs-list.js",
|
|
"docs:spellcheck": "bash scripts/docs-spellcheck.sh",
|
|
"docs:spellcheck:fix": "bash scripts/docs-spellcheck.sh --write",
|
|
"format": "oxfmt --write",
|
|
"format:all": "pnpm format && pnpm format:swift",
|
|
"format:check": "oxfmt --check",
|
|
"format:diff": "oxfmt --write && git --no-pager diff",
|
|
"format:docs": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --write",
|
|
"format:docs:check": "git ls-files 'docs/**/*.md' 'docs/**/*.mdx' 'README.md' | xargs oxfmt --check",
|
|
"format:fix": "oxfmt --write",
|
|
"format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/BotKit/Sources",
|
|
"gateway:dev": "BOT_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway",
|
|
"gateway:dev:reset": "BOT_SKIP_CHANNELS=1 CLAWDBOT_SKIP_CHANNELS=1 node scripts/run-node.mjs --dev gateway --reset",
|
|
"gateway:watch": "node scripts/watch-node.mjs gateway --force",
|
|
"gen:host-env-policy:swift": "node scripts/generate-host-env-security-policy-swift.mjs --write",
|
|
"ghsa:patch": "node scripts/ghsa-patch.mjs",
|
|
"hanzo-bot": "node scripts/run-node.mjs",
|
|
"hanzo-bot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
"ios:build": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project HanzoBot.xcodeproj -scheme HanzoBot -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build'",
|
|
"ios:gen": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate'",
|
|
"ios:open": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && open HanzoBot.xcodeproj'",
|
|
"ios:run": "bash -lc './scripts/ios-configure-signing.sh && cd apps/ios && xcodegen generate && xcodebuild -project HanzoBot.xcodeproj -scheme HanzoBot -destination \"${IOS_DEST:-platform=iOS Simulator,name=iPhone 17}\" -configuration Debug build && xcrun simctl boot \"${IOS_SIM:-iPhone 17}\" || true && xcrun simctl launch booted ai.hanzo.bot.ios'",
|
|
"lint": "oxlint --type-aware",
|
|
"lint:agent:ingress-owner": "node scripts/check-ingress-agent-owner-context.mjs",
|
|
"lint:all": "pnpm lint && pnpm lint:swift",
|
|
"lint:auth:no-pairing-store-group": "node scripts/check-no-pairing-store-group-auth.mjs",
|
|
"lint:auth:pairing-account-scope": "node scripts/check-pairing-account-scope.mjs",
|
|
"lint:docs": "pnpm dlx markdownlint-cli2",
|
|
"lint:docs:fix": "pnpm dlx markdownlint-cli2 --fix",
|
|
"lint:fix": "oxlint --type-aware --fix && pnpm format",
|
|
"lint:plugins:no-monolithic-plugin-sdk-entry-imports": "node --import tsx scripts/check-no-monolithic-plugin-sdk-entry-imports.ts",
|
|
"lint:plugins:no-register-http-handler": "node scripts/check-no-register-http-handler.mjs",
|
|
"lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
|
|
"lint:tmp:channel-agnostic-boundaries": "node scripts/check-channel-agnostic-boundaries.mjs",
|
|
"lint:tmp:no-random-messaging": "node scripts/check-no-random-messaging-tmp.mjs",
|
|
"lint:tmp:no-raw-channel-fetch": "node scripts/check-no-raw-channel-fetch.mjs",
|
|
"lint:ui:no-raw-window-open": "node scripts/check-no-raw-window-open.mjs",
|
|
"lint:webhook:no-low-level-body-read": "node scripts/check-webhook-auth-body-order.mjs",
|
|
"mac:open": "open dist/HanzoBot.app",
|
|
"mac:package": "bash scripts/package-mac-app.sh",
|
|
"mac:restart": "bash scripts/restart-mac.sh",
|
|
"moltbot:rpc": "node scripts/run-node.mjs agent --mode rpc --json",
|
|
"plugins:sync": "node --import tsx scripts/sync-plugin-versions.ts",
|
|
"prepack": "pnpm build && pnpm ui:build",
|
|
"prepare": "command -v git >/dev/null 2>&1 && git rev-parse --is-inside-work-tree >/dev/null 2>&1 && git config core.hooksPath git-hooks || exit 0",
|
|
"protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/HanzoBotProtocol/GatewayModels.swift",
|
|
"protocol:gen": "node --import tsx scripts/protocol-gen.ts",
|
|
"protocol:gen:swift": "node --import tsx scripts/protocol-gen-swift.ts",
|
|
"release:check": "node --import tsx scripts/release-check.ts",
|
|
"start": "node scripts/run-node.mjs",
|
|
"test": "node scripts/test-parallel.mjs",
|
|
"test:all": "pnpm lint && pnpm build && pnpm test && pnpm test:e2e && pnpm test:live && pnpm test:docker:all",
|
|
"test:channels": "vitest run --config vitest.channels.config.ts",
|
|
"test:coverage": "vitest run --config vitest.unit.config.ts --coverage",
|
|
"test:docker:all": "pnpm test:docker:live-models && pnpm test:docker:live-gateway && pnpm test:docker:onboard && pnpm test:docker:gateway-network && pnpm test:docker:qr && pnpm test:docker:doctor-switch && pnpm test:docker:plugins && pnpm test:docker:cleanup",
|
|
"test:docker:cleanup": "bash scripts/test-cleanup-docker.sh",
|
|
"test:docker:doctor-switch": "bash scripts/e2e/doctor-install-switch-docker.sh",
|
|
"test:docker:gateway-network": "bash scripts/e2e/gateway-network-docker.sh",
|
|
"test:docker:live-gateway": "bash scripts/test-live-gateway-models-docker.sh",
|
|
"test:docker:live-models": "bash scripts/test-live-models-docker.sh",
|
|
"test:docker:onboard": "bash scripts/e2e/onboard-docker.sh",
|
|
"test:docker:plugins": "bash scripts/e2e/plugins-docker.sh",
|
|
"test:docker:qr": "bash scripts/e2e/qr-import-docker.sh",
|
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
"test:extensions": "vitest run --config vitest.extensions.config.ts",
|
|
"test:fast": "vitest run --config vitest.unit.config.ts",
|
|
"test:force": "node --import tsx scripts/test-force.ts",
|
|
"test:gateway": "vitest run --config vitest.gateway.config.ts --pool=forks",
|
|
"test:install:e2e": "bash scripts/test-install-sh-e2e-docker.sh",
|
|
"test:install:e2e:anthropic": "BOT_E2E_MODELS=anthropic CLAWDBOT_E2E_MODELS=anthropic bash scripts/test-install-sh-e2e-docker.sh",
|
|
"test:install:e2e:openai": "BOT_E2E_MODELS=openai CLAWDBOT_E2E_MODELS=openai bash scripts/test-install-sh-e2e-docker.sh",
|
|
"test:install:smoke": "bash scripts/test-install-sh-docker.sh",
|
|
"test:live": "BOT_LIVE_TEST=1 CLAWDBOT_LIVE_TEST=1 vitest run --config vitest.live.config.ts",
|
|
"test:macmini": "BOT_TEST_VM_FORKS=0 BOT_TEST_PROFILE=serial node scripts/test-parallel.mjs",
|
|
"test:perf:budget": "node scripts/test-perf-budget.mjs",
|
|
"test:perf:hotspots": "node scripts/test-hotspots.mjs",
|
|
"test:sectriage": "pnpm exec vitest run --config vitest.gateway.config.ts && vitest run --config vitest.unit.config.ts --exclude src/daemon/launchd.integration.test.ts --exclude src/process/exec.test.ts",
|
|
"test:ui": "pnpm lint:ui:no-raw-window-open && pnpm --dir ui test",
|
|
"test:voicecall:closedloop": "vitest run extensions/voice-call/src/manager.test.ts extensions/voice-call/src/media-stream.test.ts src/plugins/voice-call.plugin.test.ts --maxWorkers=1",
|
|
"test:watch": "vitest",
|
|
"tui": "node scripts/run-node.mjs tui",
|
|
"tui:dev": "BOT_PROFILE=dev CLAWDBOT_PROFILE=dev node scripts/run-node.mjs --dev tui",
|
|
"ui:build": "node scripts/ui.js build",
|
|
"ui:dev": "node scripts/ui.js dev",
|
|
"ui:install": "node scripts/ui.js install"
|
|
},
|
|
"dependencies": {
|
|
"@agentclientprotocol/sdk": "catalog:",
|
|
"@aws-sdk/client-bedrock": "catalog:",
|
|
"@buape/carbon": "catalog:",
|
|
"@clack/prompts": "catalog:",
|
|
"@discordjs/voice": "catalog:",
|
|
"@grammyjs/runner": "catalog:",
|
|
"@grammyjs/transformer-throttler": "catalog:",
|
|
"@hanzo/iam": "catalog:",
|
|
"@homebridge/ciao": "catalog:",
|
|
"@line/bot-sdk": "catalog:",
|
|
"@lydell/node-pty": "catalog:",
|
|
"@mariozechner/pi-agent-core": "catalog:",
|
|
"@mariozechner/pi-ai": "catalog:",
|
|
"@mariozechner/pi-coding-agent": "catalog:",
|
|
"@mariozechner/pi-tui": "catalog:",
|
|
"@mozilla/readability": "catalog:",
|
|
"@sinclair/typebox": "catalog:",
|
|
"@slack/bolt": "catalog:",
|
|
"@slack/web-api": "catalog:",
|
|
"@snazzah/davey": "catalog:",
|
|
"@whiskeysockets/baileys": "catalog:",
|
|
"ajv": "catalog:",
|
|
"chalk": "catalog:",
|
|
"chokidar": "catalog:",
|
|
"cli-highlight": "catalog:",
|
|
"commander": "catalog:",
|
|
"croner": "catalog:",
|
|
"discord-api-types": "catalog:",
|
|
"dotenv": "catalog:",
|
|
"express": "catalog:",
|
|
"file-type": "catalog:",
|
|
"gaxios": "catalog:",
|
|
"grammy": "catalog:",
|
|
"hono": "catalog:",
|
|
"https-proxy-agent": "catalog:",
|
|
"ipaddr.js": "catalog:",
|
|
"jiti": "catalog:",
|
|
"jose": "catalog:",
|
|
"json5": "catalog:",
|
|
"jszip": "catalog:",
|
|
"kysely": "^0.29.5",
|
|
"linkedom": "catalog:",
|
|
"long": "catalog:",
|
|
"markdown-it": "catalog:",
|
|
"ms": "^2.1.3",
|
|
"node-domexception": "npm:@nolyfill/domexception@^1.0.28",
|
|
"node-edge-tts": "catalog:",
|
|
"opusscript": "catalog:",
|
|
"osc-progress": "catalog:",
|
|
"p-limit": "^7.3.2",
|
|
"pdfjs-dist": "catalog:",
|
|
"playwright-core": "catalog:",
|
|
"qrcode-terminal": "catalog:",
|
|
"semver": "^7.8.5",
|
|
"sharp": "catalog:",
|
|
"sqlite-vec": "catalog:",
|
|
"strip-ansi": "catalog:",
|
|
"tar": "catalog:",
|
|
"tslog": "catalog:",
|
|
"undici": "catalog:",
|
|
"ws": "catalog:",
|
|
"yaml": "catalog:",
|
|
"zod": "catalog:"
|
|
},
|
|
"devDependencies": {
|
|
"@grammyjs/types": "catalog:",
|
|
"@lit-labs/signals": "catalog:",
|
|
"@lit/context": "catalog:",
|
|
"@types/express": "catalog:",
|
|
"@types/markdown-it": "catalog:",
|
|
"@types/node": "catalog:",
|
|
"@types/qrcode-terminal": "catalog:",
|
|
"@types/ws": "catalog:",
|
|
"@vitest/coverage-v8": "catalog:",
|
|
"lit": "catalog:",
|
|
"oxfmt": "catalog:",
|
|
"oxlint": "catalog:",
|
|
"oxlint-tsgolint": "catalog:",
|
|
"signal-utils": "catalog:",
|
|
"tsdown": "catalog:",
|
|
"tsx": "catalog:",
|
|
"typescript": "catalog:",
|
|
"vitest": "catalog:"
|
|
},
|
|
"peerDependencies": {
|
|
"@napi-rs/canvas": ">=1",
|
|
"node-llama-cpp": ">=3"
|
|
},
|
|
"engines": {
|
|
"node": ">=22.12.0"
|
|
},
|
|
"packageManager": "[email protected]"
|
|
}
|