* cron: skip delivery for HEARTBEAT_OK responses When an isolated cron job has deliver:true, skip message delivery if the response is just HEARTBEAT_OK (or contains HEARTBEAT_OK at edges with short remaining content <= 30 chars). This allows cron jobs to silently ack when nothing to report but still deliver actual content when there is something meaningful to say. Media is still delivered even if text is HEARTBEAT_OK, since the presence of media indicates there's something to share. * fix(heartbeat): make ack padding configurable * chore(deps): update to latest --------- Co-authored-by: Josh Lehman <josh@martian.engineering>
187 lines
5.3 KiB
JSON
187 lines
5.3 KiB
JSON
{
|
|
"name": "clawdbot",
|
|
"version": "2026.1.5-3",
|
|
"description": "WhatsApp gateway CLI (Baileys web) with Pi RPC agent",
|
|
"type": "module",
|
|
"main": "dist/index.js",
|
|
"bin": {
|
|
"clawdbot": "dist/entry.js"
|
|
},
|
|
"files": [
|
|
"dist/agents/**",
|
|
"dist/auto-reply/**",
|
|
"dist/browser/**",
|
|
"dist/canvas-host/**",
|
|
"dist/cli/**",
|
|
"dist/commands/**",
|
|
"dist/config/**",
|
|
"dist/control-ui/**",
|
|
"dist/cron/**",
|
|
"dist/daemon/**",
|
|
"dist/discord/**",
|
|
"dist/gateway/**",
|
|
"dist/hooks/**",
|
|
"dist/imessage/**",
|
|
"dist/infra/**",
|
|
"dist/macos/**",
|
|
"dist/media/**",
|
|
"dist/process/**",
|
|
"dist/sessions/**",
|
|
"dist/providers/**",
|
|
"dist/signal/**",
|
|
"dist/slack/**",
|
|
"dist/telegram/**",
|
|
"dist/tui/**",
|
|
"dist/web/**",
|
|
"dist/wizard/**",
|
|
"dist/*.js",
|
|
"dist/*.json",
|
|
"docs/**",
|
|
"skills/**",
|
|
"README.md",
|
|
"README-header.png",
|
|
"CHANGELOG.md",
|
|
"LICENSE"
|
|
],
|
|
"scripts": {
|
|
"dev": "tsx src/entry.ts",
|
|
"docs:list": "tsx scripts/docs-list.ts",
|
|
"docs:dev": "cd docs && mint dev",
|
|
"docs:build": "cd docs && pnpm dlx mint broken-links",
|
|
"build": "tsc -p tsconfig.json && tsx scripts/canvas-a2ui-copy.ts",
|
|
"release:check": "tsx scripts/release-check.ts",
|
|
"ui:install": "pnpm -C ui install",
|
|
"ui:dev": "pnpm -C ui dev",
|
|
"ui:build": "pnpm -C ui build",
|
|
"start": "tsx src/entry.ts",
|
|
"clawdbot": "tsx src/entry.ts",
|
|
"gateway:watch": "tsx watch --clear-screen=false --include 'src/**/*.ts' src/entry.ts gateway --force",
|
|
"clawdbot:rpc": "tsx src/entry.ts agent --mode rpc --json",
|
|
"lint": "biome check src test && oxlint --type-aware src test --ignore-pattern src/canvas-host/a2ui/a2ui.bundle.js",
|
|
"lint:swift": "swiftlint lint --config .swiftlint.yml && (cd apps/ios && swiftlint lint --config .swiftlint.yml)",
|
|
"lint:fix": "biome check --write --unsafe src && biome format --write src",
|
|
"format": "biome format src",
|
|
"format:swift": "swiftformat --lint --config .swiftformat apps/macos/Sources apps/ios/Sources apps/shared/ClawdbotKit/Sources",
|
|
"format:fix": "biome format src --write",
|
|
"test": "vitest",
|
|
"test:force": "tsx scripts/test-force.ts",
|
|
"test:coverage": "vitest run --coverage",
|
|
"test:e2e": "vitest run --config vitest.e2e.config.ts",
|
|
"protocol:gen": "tsx scripts/protocol-gen.ts",
|
|
"protocol:gen:swift": "tsx scripts/protocol-gen-swift.ts",
|
|
"protocol:check": "pnpm protocol:gen && pnpm protocol:gen:swift && git diff --exit-code -- dist/protocol.schema.json apps/macos/Sources/ClawdbotProtocol/GatewayModels.swift",
|
|
"canvas:a2ui:bundle": "bash scripts/bundle-a2ui.sh"
|
|
},
|
|
"keywords": [],
|
|
"author": "",
|
|
"license": "MIT",
|
|
"engines": {
|
|
"node": ">=22.12.0"
|
|
},
|
|
"packageManager": "pnpm@10.23.0",
|
|
"dependencies": {
|
|
"@clack/prompts": "^0.11.0",
|
|
"@grammyjs/transformer-throttler": "^1.2.1",
|
|
"@homebridge/ciao": "^1.3.4",
|
|
"@mariozechner/pi-agent-core": "^0.36.0",
|
|
"@mariozechner/pi-ai": "^0.36.0",
|
|
"@mariozechner/pi-coding-agent": "^0.36.0",
|
|
"@mariozechner/pi-tui": "^0.36.0",
|
|
"@sinclair/typebox": "0.34.46",
|
|
"@slack/bolt": "^4.6.0",
|
|
"@slack/web-api": "^7.13.0",
|
|
"@whiskeysockets/baileys": "7.0.0-rc.9",
|
|
"ajv": "^8.17.1",
|
|
"body-parser": "^2.2.1",
|
|
"chalk": "^5.6.2",
|
|
"chokidar": "^5.0.0",
|
|
"chromium-bidi": "12.0.1",
|
|
"commander": "^14.0.2",
|
|
"croner": "^9.1.0",
|
|
"detect-libc": "^2.1.2",
|
|
"discord-api-types": "^0.38.37",
|
|
"discord.js": "^14.25.1",
|
|
"dotenv": "^17.2.3",
|
|
"express": "^5.2.1",
|
|
"file-type": "^21.3.0",
|
|
"grammy": "^1.39.2",
|
|
"json5": "^2.2.3",
|
|
"long": "5.3.2",
|
|
"playwright-core": "1.57.0",
|
|
"qrcode-terminal": "^0.12.0",
|
|
"sharp": "^0.34.5",
|
|
"tslog": "^4.10.2",
|
|
"undici": "^7.18.0",
|
|
"ws": "^8.19.0",
|
|
"zod": "^4.3.5"
|
|
},
|
|
"devDependencies": {
|
|
"@biomejs/biome": "^2.3.11",
|
|
"@lit-labs/signals": "^0.2.0",
|
|
"@lit/context": "^1.1.6",
|
|
"@mariozechner/mini-lit": "0.2.1",
|
|
"@types/body-parser": "^1.19.6",
|
|
"@types/express": "^5.0.6",
|
|
"@types/markdown-it": "^14.1.2",
|
|
"@types/node": "^25.0.3",
|
|
"@types/qrcode-terminal": "^0.12.2",
|
|
"@types/ws": "^8.18.1",
|
|
"@vitest/coverage-v8": "^4.0.16",
|
|
"docx-preview": "^0.3.7",
|
|
"jszip": "^3.10.1",
|
|
"lit": "^3.3.2",
|
|
"lucide": "^0.562.0",
|
|
"markdown-it": "^14.1.0",
|
|
"ollama": "^0.6.3",
|
|
"oxlint": "^1.37.0",
|
|
"oxlint-tsgolint": "^0.10.1",
|
|
"quicktype-core": "^23.2.6",
|
|
"rolldown": "1.0.0-beta.58",
|
|
"signal-utils": "^0.21.1",
|
|
"tsx": "^4.21.0",
|
|
"typescript": "^5.9.3",
|
|
"vitest": "^4.0.16",
|
|
"wireit": "^0.14.12"
|
|
},
|
|
"pnpm": {
|
|
"overrides": {
|
|
"@sinclair/typebox": "0.34.46"
|
|
},
|
|
"patchedDependencies": {
|
|
"@mariozechner/pi-ai": "patches/@mariozechner__pi-ai.patch"
|
|
}
|
|
},
|
|
"vitest": {
|
|
"coverage": {
|
|
"provider": "v8",
|
|
"reporter": [
|
|
"text",
|
|
"lcov"
|
|
],
|
|
"thresholds": {
|
|
"lines": 70,
|
|
"functions": 70,
|
|
"branches": 70,
|
|
"statements": 70
|
|
},
|
|
"include": [
|
|
"src/**/*.ts"
|
|
],
|
|
"exclude": [
|
|
"src/**/*.test.ts"
|
|
]
|
|
},
|
|
"include": [
|
|
"src/**/*.test.ts"
|
|
],
|
|
"exclude": [
|
|
"dist/**",
|
|
"apps/macos/**",
|
|
"apps/macos/.build/**",
|
|
"**/vendor/**",
|
|
"apps/macos/.build/**",
|
|
"dist/Clawdbot.app/**"
|
|
]
|
|
}
|
|
}
|