{ "name": "scallopbot", "version": "0.1.0", "description": "An economical and smart bot architecture", "main": "dist/index.js", "type": "module", "bin": { "scallopbot": "dist/cli.js", "scallopbot-mcp": "dist/mcp-server/index.js" }, "files": [ "dist", "public", ".env.example", "ecosystem.config.cjs" ], "engines": { "node": ">=24.0.0" }, "scripts": { "clean": "rm -rf dist", "build:web": "cd web && npm install && npm run build", "build": "npm run build:web && rm -rf dist && tsc && node -e \"const fs=require('fs'),p=require('path');function cpDir(s,t){fs.mkdirSync(t,{recursive:true});fs.readdirSync(s,{withFileTypes:true}).forEach(e=>{const sp=p.join(s,e.name),tp=p.join(t,e.name);e.isDirectory()?cpDir(sp,tp):fs.copyFileSync(sp,tp)})}fs.readdirSync('src/skills/bundled').forEach(d=>{const s=p.join('src/skills/bundled',d),t=p.join('dist/skills/bundled',d);if(fs.existsSync(p.join(s,'SKILL.md')))cpDir(s,t)})\"", "start": "node dist/cli.js start", "dev": "tsx watch src/index.ts", "test": "vitest", "test:proactive": "vitest run src/e2e/proactive-humanlike.test.ts src/memory/gap-scanner.test.ts src/memory/proactive-evaluator.test.ts src/memory/scheduled-item-state.test.ts src/proactive/message-quality.test.ts src/proactive/message-safety.test.ts src/proactive/timing-model.test.ts src/proactive/feedback.test.ts src/proactive/scheduler.test.ts src/proactive/scheduler-durable-task.test.ts src/channels/telegram-proactive-reply.test.ts", "benchmark:intelligence": "vitest run src/routing/routing-quality.test.ts src/memory/retrieval-quality.test.ts src/memory/semantic-index.test.ts src/proactive/feedback.test.ts src/proactive/message-safety.test.ts src/proactive/scheduler.test.ts src/security/redaction.test.ts src/skills/executor.test.ts src/routing/trace-tap.test.ts src/agent/tool-policy-dispatch.test.ts src/brain/outcome-brain.test.ts src/goals/verified-goal.test.ts src/goals/skill.test.ts src/workflow/executor.test.ts src/skills/bundled/mcp/mcp.test.ts src/evolution/fitness.test.ts src/evolution/privacy.test.ts src/evolution/verify.test.ts src/evolution/procedure-skill.test.ts src/evolution/optimizer.e2e.test.ts src/evolution/version-ledger.test.ts src/evolution/units.test.ts src/board/durable-workers.test.ts src/proactive/scheduler-durable-task.test.ts src/e2e/intelligence-scorecard.test.ts src/e2e/intelligence-regression.test.ts --reporter=verbose", "benchmark:proactive": "tsx benchmarks/proactive-humanlike-live.ts", "benchmark:hardening": "tsx benchmarks/hardening-scorecard.ts", "recover:session": "tsx scripts/recover-session.ts", "benchmark:evolution-live": "tsx benchmarks/evolution-skill-live.ts", "benchmark:memory": "node --expose-gc --import tsx benchmarks/memory-semantic-retrieval.ts", "typecheck": "tsc --noEmit && tsc --noEmit -p tsconfig.bench.json", "bench:agentic": "tsx evals/agentic/run.ts", "postmortem": "tsx scripts/postmortem.ts", "bench:compaction": "tsx benchmarks/compaction-recall.ts", "bench:locomo": "vitest run -c /dev/null src/eval/locomo-landing.test.ts", "bench:codemode": "tsx evals/codemode/bench.ts", "lint": "eslint src/", "check:secrets": "node scripts/check-no-secrets.mjs", "format": "prettier --write src/" }, "keywords": [ "bot", "ai", "assistant", "llm", "economical" ], "author": "Squarestock", "license": "MIT", "devDependencies": { "@eslint/js": "^9.39.2", "@types/bcrypt": "^6.0.0", "@types/better-sqlite3": "^7.6.13", "@types/js-yaml": "^4.0.9", "@types/mailparser": "^3.9.0", "@types/node": "^20.0.0", "@types/nodemailer": "^8.0.2", "@types/ws": "^8.18.1", "eslint": "^9.0.0", "prettier": "^3.0.0", "typescript": "^5.0.0", "typescript-eslint": "^8.54.0", "vitest": "^3.2.7" }, "dependencies": { "@anthropic-ai/sdk": "^0.72.1", "acorn": "^8.15.0", "afinn-165": "^2.0.2", "agent-browser": "^0.31.1", "bcrypt": "^6.0.0", "better-sqlite3": "^12.6.2", "chalk": "^5.6.2", "commander": "^14.0.3", "discord.js": "^14.26.4", "dotenv": "^17.2.3", "fflate": "^0.8.2", "grammy": "^1.39.3", "groq-sdk": "^0.37.0", "ical.js": "^2.2.1", "imapflow": "^2.2.1", "js-yaml": "^4.3.0", "mailparser": "^3.9.33", "nanoid": "^5.1.6", "node-cron": "^4.2.1", "nodemailer": "^10.0.13", "openai": "^6.17.0", "pino": "^10.3.0", "tsx": "^4.0.0", "ws": "^8.21.0", "zod": "^4.3.6" }, "optionalDependencies": { "@hapi/boom": "^10.0.1", "@slack/bolt": "^4.3.1", "@whiskeysockets/baileys": "^7.0.0-rc13", "matrix-js-sdk": "^41.9.0" }, "overrides": { "undici": "6.28.1" } }