{"_id":"gimirick-replypilot","_rev":"29-01bb1bb2136648b45717bd5417906bfe","name":"gimirick-replypilot","dist-tags":{"latest":"0.4.2"},"versions":{"0.1.0":{"name":"gimirick-replypilot","version":"0.1.0","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.0","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"2cf7177befde655ef217664d456e2b36cc026b30","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.0.tgz","fileCount":8,"integrity":"sha512-lI9xnOH981EJlVX5GErw5BpFZDir+00PNFW8RdnHkLnuYDdMq8frvM2wEPA3A+QidcZDtqPANulpsxfespfVbQ==","signatures":[{"sig":"MEYCIQD4lg0SeUymD7y5pn5n08duN2k32LpkNVh9PD7i9dwUNwIhAPLfxSNgn4GDd3/Y/x0DOC62UyXK778ovLqkwLTCaxtr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":48829},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"c8a016feb008a35706e1067153b402e77a585f12","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.0_1781903947615_0.11063006946173193","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"gimirick-replypilot","version":"0.1.2","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.2","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"814e5b33a3d5df23a387fc1425cb0a255ba51006","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.2.tgz","fileCount":15,"integrity":"sha512-JD/hKTx284I5riT67bZRac96bR/Ri01t1Zqe/hd7oThhvEp8lJm6Ko/gi/VbtB54WjtY6/B9BaTfnXoo1ybnNg==","signatures":[{"sig":"MEYCIQDTufhXLhbLL60vpoBbAG7W5G+4LBqA6DyQsW51GqGGBwIhANyOEffeoZbq4zlQE2Vy9PZTcUIcU/LPu51F2DXnxe/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":248195},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"8f3e3ca7ce6bc066f3c42f5facb75f90dec7c3a9","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.2_1781904760381_0.9688253091286456","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"gimirick-replypilot","version":"0.1.3","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.3","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"d3bfd19870eeb6b0ff9cdc613c8f2caee8f62305","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.3.tgz","fileCount":15,"integrity":"sha512-C3w3yNRcnuzdYic+NkvPYbr6YXxb9+Y1eHp6y1IA/v4JzOd6GSAzFy8v5VN9iwHf5SGpxJ1G4+q2jcMu8AL11g==","signatures":[{"sig":"MEUCICPDphRzDj4sDg4T/y/3ehY6GK7ngHXFRYZt08jsDHwIAiEA/gm1hfEOt1XX1J+T1stsvO0WQMqHTH4GXFnoD/+O9gA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":274470},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"15335fc078a8cd01baf4c8c1ad11d76784c01df8","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.3_1781922065896_0.5104482938028778","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"gimirick-replypilot","version":"0.1.4","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.4","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"526274864131865636e60ac03089c288a72811c5","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.4.tgz","fileCount":15,"integrity":"sha512-W50w/nbmuc7qKsuKREzxzbfKYJuwujoiJTQYdsA3l3/DYlO4dBxJB5wNvII+NWFa7Hx8XZWNGiXSe4Hi1xhCLQ==","signatures":[{"sig":"MEYCIQDOYzgmrFcmZT5yCkfCofy7KTEvSINZFGCNoDTgYbUtBwIhAKVbtMC66ZMwss7dzJIOfoswnjtk8uILMsC89Bsymz/7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401916},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"5ee28dee0f416485a42f191e1ff15dc67d969cba","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.4_1781994944443_0.2997271820418561","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"gimirick-replypilot","version":"0.1.5","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.5","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"a8aa857bc73dfcef4ffe4de0d0a2e6b2c4772956","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.5.tgz","fileCount":15,"integrity":"sha512-9Sf2+fMw5oy5guQFHu4ulS5e1Cri4Q164w33ejVmooJ4kQwZmjJgL3WlJht7Jygxh0zuH1OxyrEiS/XiLQ9q4Q==","signatures":[{"sig":"MEUCIQDNQ0kFwcBgI+0PaBBPJ7Uq4zi0ZoEA0UfZRykWVvGoYwIgGPLhO0qJTWl2DGpRYiY2TnFd3ENU70tB9vVgJC8F8sQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":401920},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"bee3f1afb47fdc6440b60fe75e27c99b34232132","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.5_1782018168944_0.545246295431882","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"gimirick-replypilot","version":"0.1.6","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.6","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"48946e4d74f5430bb6b01b88b701cef3d76138b9","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.6.tgz","fileCount":15,"integrity":"sha512-qpArm9Q1y8J1vrQNOjEE5gUdA/UNnumqwWHhHiPgwIm0LaS8ctameZqNq6/FesLrM8/kBbIT+bRzdYYQ4kwjVw==","signatures":[{"sig":"MEYCIQChNOAKD2Emck/FQvfCn4ywvkz93+lPAeTj3RTF+owSPwIhAMa0VCHZFkkbl357Sft8RM+tdY/ItYSt97aQlpZBtB7S","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":407147},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"db7a5785b4ed32d3b966ac09c035ba000eeb3469","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.6_1782038861337_0.3722857278214118","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"gimirick-replypilot","version":"0.1.7","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.7","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"93588f42547272f7c364643af65c3f11e9c23b6a","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.7.tgz","fileCount":15,"integrity":"sha512-UuVe0tbraXZBHLEDgcWz/NxOqoIl/NoI1+ukiGQZohEzymNL4G7Mc6olQ16bdngzuGZZqeW60Ifn+PripWa7Tw==","signatures":[{"sig":"MEUCIH6Vp74Y2+pqlif9c5+PacyXWW67XHvQiYnd9tTu9JX1AiEA4g8RTOjADlvhBo3IwHzXz1RTOjOeluRjT9jJUb+5yfg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":420608},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"61e4286640ca95cd4f2c44729236da6081bb27ae","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"esbuild":"0.28.1"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.13.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.17.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.44.0","p-queue":"9.3.0","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.22.4","tsup":"8.5.1","eslint":"10.5.0","vitest":"4.1.9","prettier":"3.8.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.0.0","typescript-eslint":"8.61.1","@vitest/coverage-v8":"4.1.9","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.7_1782674155455_0.19417811379950045","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"gimirick-replypilot","version":"0.1.8","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.8","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"568bd895286409618b14d61093827941dcfb2ec1","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.8.tgz","fileCount":15,"integrity":"sha512-keJ6uFmU4YHhUejICa4yWQtm6n3eaA2ax7+Pw90RQr8zEGxjd01h5U0c3kAgVnFNd59EZNyGJKKQ8rzbeDL/iQ==","signatures":[{"sig":"MEUCICAuuprVpzy4rjn4/wPwplDJ/3/giZFcaa2lZi3h47ibAiEAx6VeBkalnWmg/HDfDMPMv959oD/75ZAFkBFO7cwy1IY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":541995},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"57239b6947c8f3ad60a48628f33a0525aef172c6","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.8_1783438706656_0.2076153697403449","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"gimirick-replypilot","version":"0.1.9","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.1.9","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"dc58428b4010b5bf49dc4da1a282b3e6906baad0","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.1.9.tgz","fileCount":15,"integrity":"sha512-b8OQb07XJDjBPrHpV1pkUgTIlUGn+oT2kVw1+DlkJPbvMxy51iBgvJy2h0DYpgfZjGqplj3K9TXx+00lZ9vL1Q==","signatures":[{"sig":"MEQCIAmwFUOdIxOty7r6SUBsYtZcpbgV7lpMoeYJ1x+cfLvRAiBe9DB08YlqGwAVjN1eL1vxewrlq/TIQdqAOg0TXQsJtw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":543894},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"84516e0e273142235849b094e712fb9a008080ae","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.1.9_1783448500951_0.8771981663342585","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"gimirick-replypilot","version":"0.2.1","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.1","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"1e910e952a5caea3b94a925c1e28d8fab75c15e5","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.1.tgz","fileCount":15,"integrity":"sha512-mewo0vM0Xs/sOz8N0CWnl9mXRVbMun9d807qeonYmTQnEfJmZgs62RlHesdFJ6HFUiDKIPDucErX+IZvkyqISA==","signatures":[{"sig":"MEUCIQDjnSFyiqSTUWc6BPkTghRX7GbxG+mfSFeyeWx7C/H98gIgOyfsOexGwFK9/nuiS5WOZ6CXB0Fw6UeO6TBOCZvuvbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":558847},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"4799ac97f08b7104bcc81c007964bdb17dca5873","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.1_1783489899538_0.6263476181595373","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"gimirick-replypilot","version":"0.2.2","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.2","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"dbb5d5e7afc4697b4e6bd65122e68ed224a88ac8","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.2.tgz","fileCount":15,"integrity":"sha512-lJnU7lxjHbbSxPV1YZ6nwaoTVCZ4uxq32KxcbR49RZCjRZzTQPtbHKHklrsG9bGS8hEOAYeY2KhglPs7ZbxBig==","signatures":[{"sig":"MEQCIA3pP7holJbOHOOJ13bVkT0TQUjFrk0uAljEEctO+9G1AiBQSEE+3P3X6fJ+MgT9fGSqTU6RnDUrZ/DA/xX3R0WQwQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563466},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"97e136e7951f7d3ff9b07274d92a9e0bf9104829","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.2_1783500063090_0.6812203833431183","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"gimirick-replypilot","version":"0.2.3","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.3","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"a6c64545e2585157dc0f9c5e102a112ebcff4f4f","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.3.tgz","fileCount":15,"integrity":"sha512-Rw9dtRKD0H5tKzJ2j0+1XkstwUDLuZp+HEXD4Mc7zuznMlo0buPl3yDC3hi9xpXuISrNBw+oxLEVV06lbXZpiw==","signatures":[{"sig":"MEUCIBUUr4zzSKRgPImeumcaumNDvlbY0txWedvR/SsSaN/mAiEAt2blZCjcUQ15tHRmpfSeYgN4S4vjbbg8j9z2XUiAWAw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":606714},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"69b45fd3e8f352502cfcba14e2f79360a959a798","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.3_1783572028321_0.4880321662269589","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"gimirick-replypilot","version":"0.2.4","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.4","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"0e6c7a17644d81e8dc781765765b5010f87dcc6e","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.4.tgz","fileCount":15,"integrity":"sha512-DAvoi605eXzatXLaDWxdlhQsZOsfnow0BOIVcCM8txXxsktz+nH6Zm044+V/MMRFQt1FFptBKnjC3yk9S/CM1w==","signatures":[{"sig":"MEYCIQDJIbgka9DPsBauLfPHbWTxKypiYfo1QIbrXtoDcrf81wIhANSC06wtxjgborDnF8UJ2pLHsgHmAfO6vyFu3h9XgY5p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":586181},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"868e1483b8d4959bb73988e5aa47772dc98dd7d2","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.4_1783576284373_0.21538305686026216","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"gimirick-replypilot","version":"0.2.5","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.5","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"239b3e7b56a9a62d9fe95ad3690efc6108150695","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.5.tgz","fileCount":15,"integrity":"sha512-qV0eMZhuBEgzlh4C+9mCJR/v8iPY+e+HBDWBiMaUJvJZ9lU76ujpXjfcTiXkdUhEAz0DD6352nzj1xvo8EJ2QA==","signatures":[{"sig":"MEUCIQD+g0p2vc+qxP3OF3oZl6l+LfcSPeMcf+hE2RVXAUOCwAIgZn3gCkWHku+fXqDBkO6FeJeDcyrIkqKTHPFlvAUIG24=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":572650},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"a3f5fb8fd2497aab13e0dae5086ec389832f52f8","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.5_1783577440168_0.8311507113695251","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"gimirick-replypilot","version":"0.2.6","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.6","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"231d4c466839a752e1e12373da200e21e64fafcf","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.6.tgz","fileCount":15,"integrity":"sha512-4IcpHvIBK4RuBuD1BVvQi+z8M6sFAHhI1DguQq8WWkWM3p7ZbIy+KW6MWQQS8XhmEuXEk6ZCEWLpjZAE6KBIDg==","signatures":[{"sig":"MEUCIBhVzZYYb5TFtWgefwT3I0Gw3NtC5dpa9hFifRt0wnM8AiEA6wqqU4rUcMX2uJ/frPrlwvbem+5sn/Aj65JZVpowKnY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":563466},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"e18baace447862a276ff744c42cfd8dfdc7ee1e2","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.6_1783578709617_0.568928849052833","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"gimirick-replypilot","version":"0.2.7","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.7","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"8156045ef777556feed4b3be60d8b1da8ea23915","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.7.tgz","fileCount":15,"integrity":"sha512-/We19L5//eQIKZnf3OfD2+3uthzuSO9KLKPGt79vcz4Axl8D1M1jG9n2m2jJoTkS1n/XbruaPtng97ukJqF3fQ==","signatures":[{"sig":"MEYCIQDcaOHeclRTVur1IfQKX5PspBvQEUbI59ONvhhTUxEcugIhALnifOlAHIZzYNO/OpHf+u2zWDUMJUVigV+qiRDsUM49","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":586677},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"f8426d879d2c42f993e1ebfb9b467e5117e2f245","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.7_1783835647048_0.9001800667621818","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"gimirick-replypilot","version":"0.2.8","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.8","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"074c65b0ad71beec2838fcf2e7d57f2b5fa5241b","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.8.tgz","fileCount":15,"integrity":"sha512-/HrcQlKEAz2r2mLUKjbbDm80grvGP8hAXoFxTTbug3MG417DdSAeDXuea62yOkLEoUprIBEBQLAzSSen2rzCjg==","signatures":[{"sig":"MEYCIQD6fJWtu0bYAyV4GmPVGCN2Y/JaIbVVMhLaZfQvJ05xdgIhAKS2Btx5ATPLfL1aVN87qyLxO3uiNHOZcHAO3KD4nRr8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":589273},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"9e4838de40431f591ed113fb542aba1a929f6b0a","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.8_1783839363632_0.4232175971832708","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"gimirick-replypilot","version":"0.2.9","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.2.9","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"c1d5db0f680759df004244543bf9c166b3984474","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.2.9.tgz","fileCount":15,"integrity":"sha512-WY3v4ELrH+/rbaRwFlFsEWI3gLbnxi9Ow0ehWBa88cpS+AKauljA3z0oqJs+vzxBxbWYwDBvW0q8+SsGtWgU/Q==","signatures":[{"sig":"MEUCIQCqOmIQlO5J0n6reZrNCQZ5fHijA7gOHtPSoVJOXBQLHAIgJfRWGyPaI8SPtkCccGEf1QQQ0H5biH2w1VeA+Mg5RL8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599020},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"83d383fc9218c7593e2442bdffbfe748c6bcd609","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.2.9_1783843682797_0.6392438565706084","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"gimirick-replypilot","version":"0.3.0","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.0","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"3b169f68cffb141c321d23ec55cd0638751f61b1","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.0.tgz","fileCount":15,"integrity":"sha512-9RKoXVhdBj1rKCoVufJLdugEJnVNK2I2gk7rIRsrv59ZGlwkulfJ/W3jRIRM9WNDPdNAwHq88jFAK5CTVM+vGg==","signatures":[{"sig":"MEQCIDN/GufEwDnrqrq/uXg9vzse5cKQ6zVxzeIM+v757UNBAiBmxsq/N6GEzvx/kYcP5SSlDjwMmaPojcutUvEoZwnMrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":599080},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"0ede958e4531cee375077e59e0b21410340df61e","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.0_1783844515363_0.2953437603753055","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"gimirick-replypilot","version":"0.3.2","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.2","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"0262a4cd511ed0bbecf7d3e5cd6c96691517f96d","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.2.tgz","fileCount":15,"integrity":"sha512-HKaQiNDH0ck2+IUXIAZIOpXpM3sJaKQ1kA7Tth/KKfJkItFRDItimlg0y5enR3BsHj86dt45secYxfYPGyFo7g==","signatures":[{"sig":"MEYCIQDpAn1BYSGAapzaYS1sMFdVkQR9JUkG5BQnJNn5OdpsUgIhAJOcKdy7iyEfNXrM3FcBI9eZmqQWJpY07mgURMZQ1Kfl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":589273},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"925446beaf07bba2abd65f05122b469f1b0ff5d1","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.2_1783847449641_0.9576436585713661","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"gimirick-replypilot","version":"0.3.3","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.3","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"fc7a9e7d9f69a57c323c52f8da6723564ef1826c","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.3.tgz","fileCount":15,"integrity":"sha512-/KtDidPmRSeMrbW8cI4/omq2B36eENodw9yVwx6wrg197lPCnjkqpiDcORwXGgVhiBx4CeG7RjFYx/LAJVEaXQ==","signatures":[{"sig":"MEUCIQCFRCP5O/+QJ9b8xqYJVg4tICYa0u7cwnfXq9RoWOcdkQIgIKHTr5Cl38vf/Tr9IeLrJUyICLHRFAypRU4SkeIFb2M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":593281},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"8c757beb84d59e83fc02341cb778bfc7b4d5524c","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.3_1783858803401_0.6069056532287471","host":"s3://npm-registry-packages-npm-production"}},"0.3.4":{"name":"gimirick-replypilot","version":"0.3.4","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.4","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"4a6d54b7509949899050bca6a02e39e51acab7c7","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.4.tgz","fileCount":15,"integrity":"sha512-DpRO7jWX4xflYfv95uRv4Abc63u1AcOaCJNMB4itZzEOhscM1Hov6qTBlYcpXqrcCf8L9its8Qq57Kkv23nyDQ==","signatures":[{"sig":"MEUCIF28tFmUVFYZhCSSNPn4WKlofFPiXbV+MfeuVrTQULrhAiEApq8BF39bSngRl6PpyiiTjabd2QhgG9n7hY9watxSf7k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595862},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"3af8bed8701e4285e90eeddce3c8f549a21e58bf","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.4_1783859848945_0.3377118601273643","host":"s3://npm-registry-packages-npm-production"}},"0.3.5":{"name":"gimirick-replypilot","version":"0.3.5","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.5","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"3010166c2512d338d6532b79de87ec21b2466e22","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.5.tgz","fileCount":15,"integrity":"sha512-6U9KRgW1svKAbyFy4TpKcw7AklpPH/feGbdgHV/Marvg1wsvXadvbU1iMYQlvS2+bae/CWtpg4EnVXFqDK7gEw==","signatures":[{"sig":"MEQCICm1Pb03nbeaN09aLlz6o8hBppxr5T0IaZPZ9IpFIKqQAiB+DK3xEb4E69gEQTBuzXdCmdtTm+vjU2pMXEVLp77q0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":590518},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"9337aa5fc3f3e2fc8ee0671104aa772210f70671","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.5_1783861921378_0.7960473502246483","host":"s3://npm-registry-packages-npm-production"}},"0.3.6":{"name":"gimirick-replypilot","version":"0.3.6","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.6","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"06edcfeecc2b4f25cdd61bcdbe76ef2c5284c3c6","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.6.tgz","fileCount":15,"integrity":"sha512-Zm9NDx2F2YUy76gkHszFs023Li5gpb7qnRkC/Q1ktRKU4A1WdkThFVI0LtWRzsHm+3aLx36UuhRaRuF7W5zbjQ==","signatures":[{"sig":"MEQCIEJTH8oN88aaH/FkttBkceOf7Hlt5lvfeaw7MKOaPSC8AiBaFK0Wzbzir1Bq4E/Y3VaaPt1y9Ymkqf85NkkZETVa/A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":594268},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"f6d5d52e8aa48bd4c06cbfabd2dbdabab4c50230","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.6_1783866696332_0.654823115258409","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"gimirick-replypilot","version":"0.3.7","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.7","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"cb5e27720d11451a98f338c13d796adb3da81d63","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.7.tgz","fileCount":15,"integrity":"sha512-htUCXMzyQ/3LrSxSMQNDEik1hXGoqzy3BnwGAfkVvaqWTPChP4YKd32UFLGJh/7QrJLl9Nn7D5xpW1pv8BrIPg==","signatures":[{"sig":"MEYCIQDi7pqShZzKI1c5lIZhuvyzLl1sCJRWXLS4pSOI2h1YcAIhANk/z9K48Zt4Nt6kfZ7O5hxH69hRFab1C3hH8mJqAWAR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595076},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"45648221271514538c41225130fe58e63d33470b","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.45.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.0","tsup":"8.5.1","eslint":"10.6.0","vitest":"4.1.10","prettier":"3.9.4","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.0","typescript-eslint":"8.63.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.7_1783923290234_0.3985039330504716","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"gimirick-replypilot","version":"0.3.8","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.8","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"c975949ef7e23ac8efe28a9bbc9fb9e581fb94aa","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.8.tgz","fileCount":15,"integrity":"sha512-fVrNB4ciCDQ6HoR9iomjAv4K0GUMQv7QR8QJQUILL/+bZfBJhvfK2j9Inqe2PGekYWi7a/LjZgQ/AEh4ipjb1g==","signatures":[{"sig":"MEUCIG7p/RGxoxbmRD7ldGCCqBRdONNBkmCrJVi75h76f0GpAiEA9Y2b82W7A8dvimbsqmtRl4vWpFQgsp7qs6yAybn3z+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":595802},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"4833a579cc034ede14f030c3ea79d987daf2375a","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.46.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.1","tsup":"8.5.1","eslint":"10.7.0","vitest":"4.1.10","prettier":"3.9.5","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.1","typescript-eslint":"8.64.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.8_1784005820374_0.4512798341832849","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"gimirick-replypilot","version":"0.3.9","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.3.9","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"36dbe4bb4d78a6c650a39d58e8bc800fbbf23d17","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.3.9.tgz","fileCount":15,"integrity":"sha512-KVUGS87NxJzt25k3gqNvhqMp09DdZwzVsQjDhYm43O2HFAPNUAvBmzeczyV2OorSh0GW0rVO8EMmFWMoRrbkTA==","signatures":[{"sig":"MEUCICY1lAeb1VO8k062fkW7xfCZO2NHin8X+/MNZFeGXCkJAiEAyBx3QJEhFqTYX/mXPrCMpjw9Sm1e8fAZbDC0DjcPpV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":598006},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"b8b6218e8d43e66c0c92f8459ceca45c96cc73d1","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.46.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.1","tsup":"8.5.1","eslint":"10.7.0","vitest":"4.1.10","prettier":"3.9.5","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.1","typescript-eslint":"8.64.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.3.9_1784383267514_0.0864135579925911","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"gimirick-replypilot","version":"0.4.1","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","_id":"gimirick-replypilot@0.4.1","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"homepage":"https://github.com/GimiRick/ReplyPilot#readme","bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"bin":{"replypilot":"dist/cli.js"},"dist":{"shasum":"495b7c0ac6a0aa8b1e18232007f477d115e6d907","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.4.1.tgz","fileCount":15,"integrity":"sha512-KhJiSREs1jK2LnFfbg3iuMS8hrgvCrDRvjVtBwM1Ydd4+xvJsC47o69+OS8xVJZTi+ERRIXvu0fRk58JW5gxgA==","signatures":[{"sig":"MEYCIQCJMMD4KGq8ht0UkZkfYGIYR8NnwVOfGnRvIYE4evEqRgIhALZjqnHwnLQC2sVlJpSTw8Huyw8YAtpw5+lJ+gYmnBak","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":601809},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=22.13.0"},"gitHead":"57811b9bf0326952739b3bbe2eafd29e6af6ee51","scripts":{"dev":"tsx src/cli.ts start","lint":"eslint .","test":"vitest run","build":"tsup","start":"node dist/cli.js start","format":"prettier --write .","typecheck":"tsc --noEmit","test:watch":"vitest","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run","test:coverage":"vitest run --coverage","prepublishOnly":"npm run build"},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"overrides":{"glob":"13.0.6","esbuild":"0.28.1","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6","brace-expansion":"5.0.8"},"repository":{"url":"git+https://github.com/GimiRick/ReplyPilot.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"4.4.3","conf":"15.1.0","pino":"10.3.1","openai":"6.48.0","p-queue":"9.3.1","commander":"15.0.0","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","@inquirer/prompts":"8.5.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.23.1","tsup":"8.5.1","eslint":"10.7.0","vitest":"4.1.10","prettier":"3.9.5","@eslint/js":"10.0.1","typescript":"6.0.3","@types/node":"26.1.1","typescript-eslint":"8.64.0","@vitest/coverage-v8":"4.1.10","@types/qrcode-terminal":"0.12.2"},"_npmOperationalInternal":{"tmp":"tmp/gimirick-replypilot_0.4.1_1785014778011_0.2627126477381718","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"gimirick-replypilot","version":"0.4.2","description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","type":"module","license":"CC-BY-NC-ND-4.0","author":{"name":"GimiRick"},"homepage":"https://github.com/GimiRick/ReplyPilot#readme","repository":{"type":"git","url":"git+https://github.com/GimiRick/ReplyPilot.git"},"bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"main":"dist/index.js","types":"dist/index.d.ts","bin":{"replypilot":"dist/cli.js"},"engines":{"node":">=22.13.0"},"scripts":{"dev":"tsx src/cli.ts start","build":"tsup","prepublishOnly":"npm run build","start":"node dist/cli.js start","test":"vitest run","test:watch":"vitest","test:coverage":"vitest run --coverage","lint":"eslint .","typecheck":"tsc --noEmit","format":"prettier --write .","format:check":"prettier --check .","pack:dry-run":"npm pack --dry-run"},"dependencies":{"@inquirer/prompts":"8.5.2","commander":"15.0.0","conf":"15.1.0","openai":"7.1.0","p-queue":"9.3.3","pino":"10.3.1","qrcode-terminal":"0.12.0","whatsapp-web.js":"1.34.7","zod":"4.4.3"},"devDependencies":{"@eslint/js":"10.0.1","@types/node":"26.1.1","@types/qrcode-terminal":"0.12.2","@vitest/coverage-v8":"4.1.10","eslint":"10.8.0","prettier":"3.9.6","tsup":"8.5.1","tsx":"4.23.1","typescript-eslint":"8.65.0","typescript":"6.0.3","vitest":"4.1.10"},"publishConfig":{"access":"public"},"overrides":{"esbuild":"0.28.1","glob":"13.0.6","fluent-ffmpeg":"npm:@ts-ffmpeg/fluent-ffmpeg@2.2.6","brace-expansion":"5.0.8"},"gitHead":"798f85300af71e9a08b4f4ebc23cd7123ac3894b","_id":"gimirick-replypilot@0.4.2","_nodeVersion":"24.18.0","_npmVersion":"11.16.0","dist":{"integrity":"sha512-P77UbCZFggl2FrxcGEkSe417KCuTgUJhXm/cXQJqS+FazNeUn7maoTVLS/xvC8sOil5HMuJoHJnEAjOV3+trBw==","shasum":"a98a34b33cba2814062448e8206fc4b90a8eac19","tarball":"https://registry.npmjs.org/gimirick-replypilot/-/gimirick-replypilot-0.4.2.tgz","fileCount":15,"unpackedSize":609649,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHF5CMUkakfyn1woDoz087Rfl12grho26NMX/BHe6wyUAiEAiXJeXrGpK31fH/2YI+JzAqxyrRWRvV9uVUJeYrQyzYc="}]},"_npmUser":{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"},"directories":{},"maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/gimirick-replypilot_0.4.2_1785356907845_0.3677544882718946"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-19T21:19:07.520Z","modified":"2026-07-29T20:28:28.179Z","0.1.0":"2026-06-19T21:19:07.765Z","0.1.2":"2026-06-19T21:32:40.543Z","0.1.3":"2026-06-20T02:21:06.032Z","0.1.4":"2026-06-20T22:35:44.599Z","0.1.5":"2026-06-21T05:02:49.086Z","0.1.6":"2026-06-21T10:47:41.489Z","0.1.7":"2026-06-28T19:15:55.613Z","0.1.8":"2026-07-07T15:38:26.794Z","0.1.9":"2026-07-07T18:21:41.110Z","0.2.1":"2026-07-08T05:51:39.685Z","0.2.2":"2026-07-08T08:41:03.296Z","0.2.3":"2026-07-09T04:40:28.531Z","0.2.4":"2026-07-09T05:51:24.508Z","0.2.5":"2026-07-09T06:10:40.305Z","0.2.6":"2026-07-09T06:31:49.797Z","0.2.7":"2026-07-12T05:54:07.181Z","0.2.8":"2026-07-12T06:56:03.824Z","0.2.9":"2026-07-12T08:08:02.991Z","0.3.0":"2026-07-12T08:21:55.570Z","0.3.2":"2026-07-12T09:10:49.832Z","0.3.3":"2026-07-12T12:20:03.521Z","0.3.4":"2026-07-12T12:37:29.134Z","0.3.5":"2026-07-12T13:12:01.553Z","0.3.6":"2026-07-12T14:31:36.510Z","0.3.7":"2026-07-13T06:14:50.387Z","0.3.8":"2026-07-14T05:10:20.544Z","0.3.9":"2026-07-18T14:01:07.697Z","0.4.1":"2026-07-25T21:26:18.265Z","0.4.2":"2026-07-29T20:28:28.005Z"},"bugs":{"url":"https://github.com/GimiRick/ReplyPilot/issues"},"author":{"name":"GimiRick"},"license":"CC-BY-NC-ND-4.0","homepage":"https://github.com/GimiRick/ReplyPilot#readme","keywords":["whatsapp","automation","llm","ollama","lm-studio","openai-compatible","replypilot"],"repository":{"type":"git","url":"git+https://github.com/GimiRick/ReplyPilot.git"},"description":"A TypeScript CLI that automates WhatsApp replies using local or custom OpenAI-compatible LLM providers.","maintainers":[{"name":"gimirickofficial","email":"gimirickofficial@gmail.com"}],"readme":"# ReplyPilot\n\n[![npm version](https://img.shields.io/npm/v/gimirick-replypilot?logo=npm&logoColor=white)](https://www.npmjs.com/package/gimirick-replypilot)\n[![repo version](https://img.shields.io/badge/repo%20version-0.4.2-blue?logo=git&logoColor=white)](package.json)\n[![npm downloads](https://img.shields.io/npm/dm/gimirick-replypilot?logo=npm&logoColor=white)](https://www.npmjs.com/package/gimirick-replypilot)\n[![npm downloads/week](https://img.shields.io/npm/dw/gimirick-replypilot)](https://www.npmjs.com/package/gimirick-replypilot)\n[![npm downloads/total](https://img.shields.io/npm/dt/gimirick-replypilot)](https://www.npmjs.com/package/gimirick-replypilot)\n[![dependencies](https://img.shields.io/badge/dependencies-9%20direct-brightgreen)](package.json)\n[![license](https://img.shields.io/badge/license-CC%20BY--NC--ND%204.0-lightgrey?logo=creativecommons&logoColor=white)](LICENSE)\n[![node](https://img.shields.io/badge/node-%3E%3D22.13.0-brightgreen?logo=node.js&logoColor=white)](package.json)\n[![CI](https://github.com/GimiRick/ReplyPilot/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/GimiRick/ReplyPilot/actions/workflows/ci.yml)\n[![tests](https://img.shields.io/badge/tests-317%20vitest-brightgreen?logo=vitest&logoColor=white)](tests/)\n[![coverage](https://img.shields.io/badge/coverage-96%25%20v8-brightgreen)](package.json)\n[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/GimiRick/ReplyPilot)\n\nReplyPilot is a TypeScript CLI for automating WhatsApp replies with LM Studio, Ollama, or any OpenAI-compatible chat completions endpoint.\n\nIt listens for new direct WhatsApp messages, fetches recent chat history, asks your configured model to reply in your tone, and sends the response back through WhatsApp Web.\n\n---\n\n## npm\n\nInstall globally (CLI use):\n\n```bash\nnpm i -g gimirick-replypilot\n```\n\nUninstall:\n\n```bash\nnpm uninstall -g gimirick-replypilot\n```\n\nInstall locally (programmatic use):\n\n```bash\nnpm i gimirick-replypilot\n```\n\nUninstall:\n\n```bash\nnpm uninstall gimirick-replypilot\n```\n\n[npm package](https://www.npmjs.com/package/gimirick-replypilot)\n\n### Updating\n\n```bash\nnpm update -g gimirick-replypilot\n```\n\nUpdates the globally installed version to the latest release.\n\n### Troubleshooting\n\n```bash\nnpm cache clean --force\n```\n\nClears the npm cache if you encounter integrity or checksum errors during install.\n\n---\n\n## Dependencies\n\nReplyPilot requires these runtime packages (auto-installed by `npm install`):\n\n| Package             | Purpose                                |\n| ------------------- | -------------------------------------- |\n| `whatsapp-web.js`   | WhatsApp Web client library            |\n| `openai`            | OpenAI-compatible LLM provider client  |\n| `commander`         | CLI command parsing                    |\n| `@inquirer/prompts` | Interactive setup wizard               |\n| `conf`              | Persistent config storage              |\n| `zod`               | Config schema validation               |\n| `p-queue`           | Message queue with concurrency control |\n| `pino`              | Structured logging                     |\n| `qrcode-terminal`   | QR code display in terminal            |\n\nPlus development tooling (TypeScript, Vitest, ESLint, Prettier, tsup, tsx) installed automatically as devDependencies.\n\nExternal requirements:\n\n- A **local or remote OpenAI-compatible chat completions API** (LM Studio, Ollama, OpenAI, etc.).\n- **ffmpeg** on `PATH` (required only when voice note processing is enabled).\n\n---\n\n## Installation & Usage\n\n### 1. NPM Global Install\n\n> [!WARNING]\n> **Linux Users (Ubuntu/Debian, etc.)**: Do not use `sudo npm i -g gimirick-replypilot`. Installing with `sudo` downloads the internal browser to the `root` directory, causing the app to crash for normal users. Use a Node version manager (like NVM) to install without `sudo`, or use the **NPM Local Install (npx)** method below instead.\n\nInstall from [npm](https://www.npmjs.com/package/gimirick-replypilot):\n\n```bash\nnpm i -g gimirick-replypilot\n```\n\n`replypilot` becomes a system-wide command.\n\n```bash\n# Setup wizard (creates a named config ——> AI settings only)\nreplypilot setup\n\n# Authenticate a WhatsApp account (scans QR code)\nreplypilot login\n\n# Switch between authenticated WhatsApp accounts\nreplypilot account switch\n\n# Start automation (connects active WhatsApp + active config)\nreplypilot start\n\n# Display installed version\nreplypilot version\n\n# Health check (Node version, config, provider reachability, ffmpeg)\nreplypilot doctor\n\n# View current config (API key redacted)\nreplypilot config show\n\n# Reset config (prompts confirmation)\nreplypilot config reset\n\n# Switch to a different named config\nreplypilot config switch\n\n# Remove all WhatsApp session data (prompts confirmation)\nreplypilot logout\n\n# Clear WhatsApp web client cache (prompts confirmation)\nreplypilot cache\n\n# Clear everything: npm cache, all configs, all WhatsApp accounts, and web cache\nreplypilot clear\n```\n\nProgrammatic API (any `.js` / `.mjs` file):\n\n```ts\nimport { startAutomation, loadConfig, type AppConfig } from 'gimirick-replypilot';\n\nawait startAutomation();\nawait startAutomation({ safety: { dryRun: true } });\nconst config: AppConfig = loadConfig();\n```\n\n---\n\n### 2. NPM Local Install\n\n> [!TIP]\n> **Recommended for Linux**: Using `npx` safely bypasses global permission issues on Linux and guarantees the internal browser downloads to the correct user directory.\n\nInstall from [npm](https://www.npmjs.com/package/gimirick-replypilot):\n\n```bash\nnpm i gimirick-replypilot\n```\n\nAll features via `npx`:\n\n```bash\nnpx replypilot setup\nnpx replypilot login\nnpx replypilot account switch\nnpx replypilot start\nnpx replypilot version\nnpx replypilot doctor\nnpx replypilot config show\nnpx replypilot config reset\nnpx replypilot config switch\nnpx replypilot logout\nnpx replypilot cache\nnpx replypilot clear\n```\n\nProgrammatic API in your project:\n\n```ts\nimport { startAutomation, loadConfig, runDoctor } from 'gimirick-replypilot';\nimport { ReplyAutomation, OpenAiCompatibleProvider } from 'gimirick-replypilot';\nimport { runSetupWizard, createConfigStore } from 'gimirick-replypilot';\nimport { MissingConfigError, ReplyPilotError } from 'gimirick-replypilot';\n\nawait startAutomation();\n```\n\n---\n\n### 3. Git Clone (Source / Development)\n\n```bash\ngit clone https://github.com/GimiRick/ReplyPilot.git\ncd ReplyPilot\nnpm install\n```\n\n#### Built binary (production-like)\n\n```bash\nnpm run build\nnode dist/cli.js setup\nnode dist/cli.js login\nnode dist/cli.js account switch\nnode dist/cli.js start\nnode dist/cli.js version\nnode dist/cli.js doctor\nnode dist/cli.js config show\nnode dist/cli.js config reset\nnode dist/cli.js config switch\nnode dist/cli.js logout\nnode dist/cli.js cache\nnode dist/cli.js clear\n```\n\nOr via npm scripts:\n\n```bash\nnpm start          # node dist/cli.js start\n```\n\n#### Development mode (tsx ——> no build needed)\n\n```bash\nnpm run dev                    # tsx src/cli.ts start\ntsx src/cli.ts setup\ntsx src/cli.ts login\ntsx src/cli.ts account switch\ntsx src/cli.ts version\ntsx src/cli.ts doctor\ntsx src/cli.ts config show\ntsx src/cli.ts config reset\ntsx src/cli.ts config switch\ntsx src/cli.ts logout\ntsx src/cli.ts cache\ntsx src/cli.ts clear\n```\n\n#### Tests & quality\n\n```bash\nnpm test                  # vitest run\nnpm run test:watch        # vitest (watch)\nnpm run test:coverage     # vitest run --coverage\nnpm run typecheck         # tsc --noEmit\nnpm run lint              # eslint .\nnpm run format            # prettier --write .\nnpm run build             # tsup (ESM + .d.ts)\nnpm run pack:dry-run      # inspect npm tarball\n```\n\n---\n\n## Provider Setup\n\nThe setup wizard also configures optional voice note handling, transcription via Whisper Cloud API, a local whisper.cpp server, or native audio passthrough to a multimodal LLM. See [Voice Note Processing](#voice-note-processing-detail) for details.\n\nDuring setup you may optionally set a **rate limit** for LLM API calls (default: 36 calls/minute when enabled). This caps how often the LLM is invoked globally, preventing provider overload. Disabled by default.\n\nYou can also configure a **wait time before sending messages** (default: 10 seconds when enabled). Same-chat messages arriving within this window are batched into a single LLM call. Set to 0 for immediate processing. Disabled by default.\n\nOptionally add **fallback API keys** during setup. If the primary key fails (rate limited, out of balance, server error, etc.), ReplyPilot automatically rotates to the next key and retries, keeping your replies flowing with no interruption.\n\n### LM Studio\n\n1. Open LM Studio, load a chat model, start the local OpenAI-compatible server.\n2. Run `replypilot setup`, select **LM Studio**.\n3. Defaults: Base URL `http://localhost:1234/v1`, API key `lm-studio`.\n\n### Ollama\n\n1. Install and start Ollama. Pull a model:\n\n   ```bash\n   ollama pull llama3.1\n   ```\n\n2. Run `replypilot setup`, select **Ollama**.\n3. Choose between **Ollama Cloud** and **Ollama Local**:\n   - **Ollama Cloud** — defaults to `https://ollama.com/v1` with model `gemma4:31b-cloud`.\n   - **Ollama Local** — defaults to `http://localhost:11434/v1` with API key `ollama`.\n\n### Custom OpenAI-Compatible Provider\n\nWorks with ChatGPT, Gemini, or any OpenAI-compatible API. To switch providers, either re-run setup and enter a new config name, or use the switch command if you already have multiple configs saved:\n\n```bash\nreplypilot setup           # create a new config, enter a name like \"chatgpt\"\nreplypilot config switch           # or switch between existing configs\n```\n\nDuring setup enter the base URL, API key, and model name for your provider.\n\n| Provider | Base URL                                                   | Example model                    |\n| -------- | ---------------------------------------------------------- | -------------------------------- |\n| ChatGPT  | `https://api.openai.com/v1`                                | `gpt-5.5`                        |\n| Gemini   | `https://generativelanguage.googleapis.com/v1beta/openai/` | `gemini-3.5-flash`               |\n| Groq     | `https://api.groq.com/openai/v1`                           | `llama-4-scout-17b-16e-instruct` |\n\n### Fallback API Keys\n\nDuring setup, after entering your primary API key, ReplyPilot asks if you'd like to add **fallback API keys**. These are backup keys for the same provider useful for rate limits, expired credits, or any other failure.\n\n```text\n? Do you want to add a fallback API key? (y/N)\n? Fallback API key (enter key)\n? Do you want to add another fallback API key? (y/N)\n```\n\nIf a request with the current key fails, ReplyPilot first retries the request with exponential backoff (1s, 2s, 4s — up to the configured max retries). Transient errors like HTTP 429 (rate limited), 503, 408, 504, and network errors (ECONNRESET, ETIMEDOUT) are retried automatically. If all retries fail, ReplyPilot rotates to the next fallback key and retries. If all keys fail, the error is reported. Fallback keys are optional, you can press enter (defaults to `n`) to skip.\n\n---\n\n## Multi-Config Profiles\n\nYou can create and manage multiple named configurations. Each config stores its own LLM provider settings, model, voice note preferences, and automation behavior **independently** of which WhatsApp account is active.\n\nConfigs and WhatsApp accounts are fully decoupled. You can use the same WhatsApp account with different AI configurations, or the same AI config with different WhatsApp accounts.\n\n### Creating configs\n\nRun `replypilot setup` as many times as you want. Each time, you'll be asked for a config name:\n\n```text\n? Configuration name (default)\n```\n\nEnter a name like `work`, `personal`, `chatgpt`, or press Enter for the default.\n\n### Switching configs\n\n```bash\nreplypilot config switch\n```\n\nShows a list of your saved configs. Select one to make it active. This only changes which AI settings are used, your WhatsApp account stays the same.\n\n### Viewing current config\n\n```bash\nreplypilot config show\n```\n\nPrints the active config's name at the top along with the full config (API keys redacted).\n\n### Resetting\n\n```bash\nreplypilot config reset\n```\n\nDisplays a selection of your saved configs. Pick one to delete, or choose `Reset all configurations` to delete everything. With only one config, you get a direct confirm prompt. If the active config is deleted, the next one becomes active automatically.\n\n---\n\n## WhatsApp Account Management\n\nWhatsApp accounts are managed separately from configs. You log into each account once, give it a name, and then select which one to use.\n\n### Logging into a new account\n\n```bash\nreplypilot login\n```\n\nYou'll be prompted for an account name (e.g., `work-phone`, `personal`). Names must be unique if you try to reuse a name, you'll be asked to enter a different one.\n\n```text\n? WhatsApp account name: work-phone\n```\n\nA QR code appears in the terminal. Scan it from WhatsApp on your phone (Linked Devices → Link a device). Once scanned, the account is saved and set as active.\n\nYou can repeat this for multiple phone numbers. Each gets its own name and its own saved session, no need to re-scan QR codes later.\n\n### Switching accounts\n\n```bash\nreplypilot account switch\n```\n\nShows all authenticated accounts. Select one to make it active. This only changes which WhatsApp account is used, your AI config stays the same.\n\n### Logging out\n\n```bash\nreplypilot logout\n```\n\nDisplays a selection of your authenticated accounts. Pick one to remove its session, or choose `Logout all accounts` to remove everything. With only one account, you get a direct confirm prompt. You'll need to run `replypilot login` again before you can use any account.\n\n### Clearing cache\n\n```bash\nreplypilot cache\n```\n\nClears the WhatsApp web client cache (`.wwebjs_cache`) from the current directory.\n\n### Complete cleanup\n\n```bash\nreplypilot clear\n```\n\nWipes everything: runs `npm cache clean --force`, deletes all saved configurations, removes all WhatsApp accounts, and clears the WhatsApp web client cache. You'll be prompted to confirm before anything is deleted.\n\n---\n\n## Getting Started (Step by Step)\n\n1. **Create an AI config**: `replypilot setup` — pick your provider, model, and style prompt.\n2. **Log into WhatsApp**: `replypilot login` — give it a name and scan the QR code.\n3. **Start**: `replypilot start` — the tool connects the active WhatsApp account using the active config.\n4. **First-time calibration**: The first time you run the tool, it needs about **10 minutes to calibrate**. During this period, it downloads browser data, initializes the WhatsApp session, and syncs your chats. After 10 minutes it will start working normally. From the second time onward, it works instantly.\n\nTo use a different account or a different AI setup later, just use `replypilot account switch` or `replypilot config switch` — they're independent.\n\n---\n\n## Safety Defaults\n\n- Direct contact messages are processed.\n- Messages sent by you are ignored.\n- Group auto-replies are disabled by default.\n- Broadcast list auto-replies are disabled by default.\n- Archived chat auto-replies are disabled by default.\n- WhatsApp status broadcasts are always ignored.\n- Voice notes are ignored by default (`ignore` mode).\n- Dry-run can be enabled during setup to log replies without sending them.\n\n### Archived Chat Handling\n\nArchived chats are ignored by default. When a message arrives from an archived chat, the following pipeline runs to block the reply:\n\n```text\nmessage.getChat() → chat.archived === true\n         ↓\ntoFilterableMessage() → filterable.archived = true\n         ↓\nclient.ts getIgnoreReason() → 'archived' → skipMediaProcessing = true\n         ↓\ntoLightweightRuntimeMessage() → runtimeMessage.archived = true\n         ↓\nmessageHandler(runtimeMessage) → automation.handleIncomingMessage()\n         ↓\nautomation.ts getIgnoreReason(message, config)\n         ↓\nfilters.ts message.archived && !config.whatsapp.allowArchived\n         ↓  true && true  =  true\n         ↓\nreturns 'archived' → message IGNORED → LLM does NOT reply\n```\n\nIf you want the LLM to interact with archived chats, enable it during `replypilot setup`:\n\n```text\n? Auto-reply in archived chats? (y/N)\n```\n\nOr add `\"allowArchived\": true` to your config's `whatsapp` section.\n\n---\n\n## Advanced Configuration\n\nThese settings are not exposed in the setup wizard, but can be added directly to your config file (`replypilot config show` to view the current config).\n\n### Login Delay\n\n```json\n{\n  \"whatsapp\": {\n    \"loginDelayMs\": 500\n  }\n}\n```\n\nControls how long (in milliseconds) the app waits after WhatsApp confirms it's ready before completing the login process. This delay ensures the session data is saved to disk.\n\n- **Default:** `500` (0.5 seconds)\n- **Range:** `0` – `30,000`\n- **Increase** (e.g., `2000`) if you keep getting QR code prompts on every login (slow I/O).\n- **Decrease** (e.g., `0`) to log in faster, at the risk of the session not persisting.\n\n### Shutdown Timeout\n\n```json\n{\n  \"automation\": {\n    \"shutdownTimeoutMs\": 15000\n  }\n}\n```\n\nControls how long (in milliseconds) the app waits for a graceful shutdown before force-exiting. When you press Ctrl+C, the app completes all pending messages, then stops WhatsApp and the AI provider. If this takes longer than the timeout, it force-closes.\n\n- **Default:** `15000` (15 seconds)\n- **Range:** `1,000` – `120,000`\n- **Increase** (e.g., `30000`) if you have slow connections that need more time to shut down.\n- **Decrease** (e.g., `5000`) to make the app exit faster when stuck.\n\n---\n\n## Feature Availability\n\n| Feature               | Global              | Local (npx)         | Git Clone (built)      | Git Clone (tsx)       |\n| --------------------- | ------------------- | ------------------- | ---------------------- | --------------------- |\n| `setup`               | ✓                   | ✓                   | ✓                      | ✓                     |\n| `login`               | ✓                   | ✓                   | ✓                      | ✓                     |\n| `account switch`      | ✓                   | ✓                   | ✓                      | ✓                     |\n| `start`               | ✓                   | ✓                   | ✓ `npm start`          | ✓ `npm run dev`       |\n| `version`             | ✓                   | ✓                   | ✓                      | ✓                     |\n| `doctor`              | ✓                   | ✓                   | ✓                      | ✓                     |\n| `config show / reset` | ✓                   | ✓                   | ✓                      | ✓                     |\n| `config switch`       | ✓                   | ✓                   | ✓                      | ✓                     |\n| `logout`              | ✓                   | ✓                   | ✓                      | ✓                     |\n| `cache`               | ✓                   | ✓                   | ✓                      | ✓                     |\n| `clear`               | ✓                   | ✓                   | ✓                      | ✓                     |\n| Multi-WA accounts     | ✓                   | ✓                   | ✓                      | ✓                     |\n| Programmatic API      | ✓ `import from pkg` | ✓ `import from pkg` | ✓ `import from ./dist` | ✓ `import from ./src` |\n| TypeScript types      | ✓ auto              | ✓ auto              | ✓ from `dist/`         | ✓ from `src/`         |\n| Multi-config profiles | ✓                   | ✓                   | ✓                      | ✓                     |\n| Run tests             | —                   | —                   | —                      | ✓ `npm test`          |\n| Hot-reload            | —                   | —                   | —                      | ✓ `tsx --watch`       |\n\n---\n\n## Programmatic API (Full Reference)\n\n```ts\n// Core automation\nimport { startAutomation, ReplyAutomation, processIncomingMessageBatch } from 'gimirick-replypilot';\nimport { type AutomationResult, type ReplyAutomationOptions } from 'gimirick-replypilot';\nimport { type RuntimeIncomingMessage } from 'gimirick-replypilot';\n\n// LLM provider\nimport {\n  OpenAiCompatibleProvider,\n  type OpenAiCompatibleProviderOptions,\n} from 'gimirick-replypilot';\nimport {\n  type LlmProvider,\n  type GenerateReplyInput,\n  type GenerateReplyResult,\n} from 'gimirick-replypilot';\nimport { type ChatContextMessage, type PromptMessage } from 'gimirick-replypilot';\nimport {\n  buildReplyPrompt,\n  cleanGeneratedReply,\n  formatChatContext,\n  trimContextMessages,\n} from 'gimirick-replypilot';\n\n// Config\nimport {\n  loadConfig,\n  saveConfig,\n  deleteConfig,\n  tryLoadConfig,\n  hasConfig,\n  listConfigNames,\n  getActiveConfigName,\n  setActiveConfigName,\n  validateConfigName,\n} from 'gimirick-replypilot';\nimport { createConfigStore, getConfigFilePath, getWhatsAppSessionDir } from 'gimirick-replypilot';\nimport {\n  removeWhatsAppSessionData,\n  removeWhatsAppSessionAccount,\n  clearActiveWhatsAppAccount,\n  type ReplyPilotConfigStore,\n} from 'gimirick-replypilot';\nimport { runSetupWizard, promptForConfig, createConfigFromSetupAnswers } from 'gimirick-replypilot';\nimport { type PromptAdapter, type SetupAnswers } from 'gimirick-replypilot';\nimport { parseAppConfig, mergeAppConfig, redactConfig } from 'gimirick-replypilot';\nimport { type AppConfig, type PartialAppConfig, type LlmProviderName } from 'gimirick-replypilot';\nimport { CONFIG_VERSION, DEFAULT_APP_CONFIG, PROVIDER_DEFAULTS } from 'gimirick-replypilot';\nimport { appConfigSchema, providerSchema, logLevelSchema } from 'gimirick-replypilot';\n\n// Doctor / health\nimport { runDoctor, formatDoctorReport, checkProviderReachability } from 'gimirick-replypilot';\nimport { isSupportedNodeVersion, type DoctorReport, type DoctorCheck } from 'gimirick-replypilot';\n\n// WhatsApp\nimport { loginWhatsAppAccount } from 'gimirick-replypilot';\nimport { fetchChatContext, normalizeChatMessage, normalizeChatMessages } from 'gimirick-replypilot';\nimport { type WhatsAppRawChat, type WhatsAppRawMessage } from 'gimirick-replypilot';\nimport { DuplicateMessageGuard, getIgnoreReason, shouldProcessMessage } from 'gimirick-replypilot';\nimport { type FilterableWhatsAppMessage, type IgnoreReason } from 'gimirick-replypilot';\n\n// WhatsApp account management\nimport {\n  getActiveWhatsAppAccount,\n  setActiveWhatsAppAccount,\n  listWhatsAppAccounts,\n  removeWhatsAppSessionAccount,\n  clearActiveWhatsAppAccount,\n} from 'gimirick-replypilot';\n\n// Audio (voice note transcription)\nimport { oggToMp3 } from 'gimirick-replypilot';\nimport { transcribeCloud, transcribeLocal } from 'gimirick-replypilot';\n\n// Queue, Logger & Metrics\nimport { MessageQueue, type MessageQueueOptions } from 'gimirick-replypilot';\nimport { createLogger, type Logger } from 'gimirick-replypilot';\nimport { MetricsCollector, type MetricsSnapshot } from 'gimirick-replypilot';\nimport { HealthServer, type HealthInfo, type HealthServerOptions } from 'gimirick-replypilot';\n\n// Errors\nimport { ReplyPilotError, MissingConfigError, ConfigValidationError } from 'gimirick-replypilot';\nimport { ProviderResponseError, ProviderTimeoutError } from 'gimirick-replypilot';\nimport { ConfigNotFoundError } from 'gimirick-replypilot';\n```\n\n---\n\n## System Architecture\n\n```text\nCLI (Commander) → Config (Zod + conf) → LLM Provider (OpenAI SDK) → WhatsApp Client (whatsapp-web.js)\n                     ↓                          ↓                           ↓\n                Doctor (health check)      Automation (debounce/batch)   Filters (ignore logic)\n                                            Audio (ffmpeg + Whisper)     Context (chat history)\n                                            Metrics (in-memory counters)\n                                            Queue (p-queue concurrency)\n                                            Health Server (/health, /metrics)\n```\n\n### High-Level Layers\n\n```text\n┌───────────────────────────────────────────────────────────────────┐\n│                        CLI (Commander)                            │\n│ setup   login   account switch   start   doctor   config show     │\n│ config reset   config switch   logout   cache   clear   version   │\n└────────────────────────┬──────────────────────────────────────────┘\n                         │\n┌────────────────────────▼──────────────────────────────────────────┐\n│                     Config Layer (conf + Zod)                     │\n│          ┌─────────────┐  ┌──────────┐  ┌─────────────┐           │\n│          │ schema.ts   │  │ store.ts │  │ setup.ts    │           │\n│          │ (Zod parse) │  │ (Conf)   │  │ (wizard)    │           │\n│          └─────────────┘  └──────────┘  └─────────────┘           │\n└──────────────────────────┬────────────────────────────────────────┘\n                           │\n┌──────────────────────────▼────────────────────────────────────────┐\n│                     Runtime Orchestration                         │\n│    ┌────────────────┐  ┌──────────────┐  ┌────────────────┐       │\n│    │ ReplyAutomation│  │ MessageQueue │  │ Logger (pino)  │       │\n│    │ (message flow) │  │ (p-queue)    │  │                │       │\n│    ├────────────────┤  ├──────────────┤  ├────────────────┤       │\n│    │ Metrics        │  │ HealthServer │  │                │       │\n│    │ Collector      │  │ (/health,    │  │                │       │\n│    │ (counters)     │  │  /metrics)   │  │                │       │\n│    └────────────────┘  └──────────────┘  └────────────────┘       │\n└────────────┼──────────────────────────────────────────────────────┘\n             │\n       ┌─────┴─────────────────────────────────┐\n       ▼                                       ▼\n┌──────────────┐                   ┌───────────────────────────────────┐\n│   WhatsApp   │                   │         LLM Provider Layer        │\n│     Layer    │                   │  ┌────────────────────────────┐   │\n│   ┌──────┐   │                   │  │ OpenAiCompatibleProvider   │   │\n│   │client│   │                   │  │  ┌──────────┐  ┌───────┐   │   │\n│   │.ts   │───┼───┐               │  │  │ prompt.ts│  │openai │   │   │\n│   ├──────┤   │   │               │  │  │ (build,  │  │-compa │   │   │\n│   │filter│   │   │               │  │  │  clean)  │  │tible. │   │   │\n│   │s.ts  │   │   │               │  │  └──────────┘  │ts     │   │   │\n│   ├──────┤   │   │               │  │                │(OPenAI│   │   │\n│   │contex│   │   ▼               │  │                │ SDK + │   │   │\n│   │t.ts  │   │ ┌──────────┐      │  │                │ retry)│   │   │\n│   └──────┘   │ │  Audio   │      │  └────────────────┴───────┘   │   │\n│              │ │  Layer   │      │  LlmProvider (interface)      │   │\n│              │ │┌────────┐│      └───────────────────────────────┘───┘\n│              │ ││convert ││\n│              │ ││.ts     ││\n│              │ │├────────┤│\n│              │ ││transcri││\n│              │ ││ber.ts  ││\n│              │ │└────────┘│\n│              │ └──────────┘\n└──────────────┘\n```\n\nThe WhatsApp layer transcribes voice notes (via the Audio layer) or passes raw audio\nto the LLM before the message enters the main pipeline.\n\n### Message Processing Pipeline\n\nEach incoming WhatsApp message flows through these stages:\n\n```text\nWhatsApp Web ──> Client.on('message')\n                       │\n                       ▼\n                ╔═══════════════════╗\n                ║  toRuntimeMessage ║   raw Message + Chat → RuntimeIncomingMessage\n                ╚═══════╤═══════════╝\n                        │\n                  ┌─────┴─────┐\n                  │           │\n                  ▼           ▼\n          ╔════════════════╗  ╔═══════════════════╗\n          ║ image/sticker  ║  ║   voice note?     ║\n          ║ → download     ║  ║ (message.type===' ║\n          ║   (retry 3×)   ║  ║       ptt')       ║\n          ║ → imageData    ║  ║   (retry 3×)      ║\n          ╚════════════════╝  ╚═══╤═══╤═══╤═══╤═══╝\n                                │   │   │   │   │\n                  mode: ignore  │   │   │   │   │\n                  ──────────────┘   │   │   │   │\n                  mode: whisper_cloud   │   │   │\n                  → oggToMp3()      │   │   │   │\n                  → transcribeCloud()───┘   │   │\n                  mode: whisper_local       │   │\n                  → oggToMp3()      │       │   │\n                  → transcribeLocal()───────┘   │\n                  mode: native_audio│           │\n                  → oggToMp3()      │           │\n                  → audioData       ────────────┘\n                        │\n                        ▼\n           body = voiceBody ?? (message text or media label)\n           audioData passed through if native_audio\n                        │\n                        ▼\n                 ╔═══════════════════╗\n                 ║     Filtering     ║\n                 ╚═══════╤═══════════╝\n                         │\n                 ┌───────┴───────┐\n                 │               │\n                 ▼               ▼\n          getIgnoreReason()    duplicateGuard\n          {self, empty,        {seen IDs}\n           group, broadcast,\n           status_broadcast,\n           archived,\n           voice_note_ignored}\n                │               │\n                └───────┬───────┘\n                   [ignored] │ [pass]\n                             ▼\n                     ┌──────────────┐\n                     │  MessageQueue     per-chat sequential, global-parallel\n                     └──────┬─────────┘\n                            ▼\n                     ┌──────────────┐\n                     │ fetchContext     chat history via whatsapp-web.js\n                     └──────┬─────────┘\n                            ▼\n                     ┌──────────────┐\n                     │ buildReplyPrompt   owner style + context + incoming\n                     │ (may include       + optional image/audio content parts\n                     │  input_audio part  → UserContentPart[])\n                      └──────┬─────────┘\n                             ▼\n                      ┌──────────────┐\n                      │ llmProvider.generateReply()\n                      │  - withTimeout / retryTransient\n                      │    * retries transient errors (429, 503, 408, 504, network failures)\n                      │    * exponential backoff: 1s, 2s, 4s...\n                      │  - key rotation on persistent failure\n                      │  - ProviderTimeoutError if no response\n                      │  - cleanGeneratedReply\n                      └──────┬─────────┘\n                             ▼\n                      ┌──────────────┐\n                      │  dryRun? ──yes──> log only (status: 'dry-run')\n                      │  no\n                     ▼\n               chat.sendMessage(reply)  ──> WhatsApp Web\n```\n\n### Voice Note Processing Detail\n\nFour modes are available, configured during `replypilot setup`:\n\n| Mode            | Audio Flow                                                                    | LLM Receives                                       |\n| --------------- | ----------------------------------------------------------------------------- | -------------------------------------------------- |\n| `whisper_cloud` | OGG→MP3 → `POST /v1/audio/transcriptions` → transcription text                | Transcribed text as message body                   |\n| `whisper_local` | OGG→MP3 → `POST /inference` (whisper.cpp) → transcription text                | Transcribed text as message body                   |\n| `native_audio`  | OGG→MP3 → attached as `{type:\"input_audio\", input_audio:{data,format:\"mp3\"}}` | Raw audio content part (multimodal model required) |\n| `ignore`        | Skipped entirely                                                              | Message labeled `[voice note]`                     |\n\nWhisper models available for cloud mode: `whisper-1` (default), `gpt-4o-mini-transcribe`, `gpt-4o-transcribe`, or a custom model name.\n\nMedia download from WhatsApp Web is retried up to 3 times with a 1-second delay between attempts, handling transient Puppeteer CDP serialization errors that can occur when decryption keys are not yet available. This applies to both image/sticker downloads and voice note downloads. If all retries fail, processing continues without the media.\n\nOGG-to-MP3 conversion is handled by `src/audio/convert.ts` via `ffmpeg` with a 120-second timeout. Conversion failures are caught and logged; the voice note is replaced with `[voice note]` text.\n\n### Concurrency & Batching\n\n- **Global limit**: max 1 concurrent LLM request (`globalConcurrency: 1`).\n- **Rate limit**: optionally configurable during `replypilot setup` — caps LLM calls per minute. When set, a rolling window (60s) prevents exceeding the configured ceiling.\n- **Per-chat serial**: messages in the same chat process one at a time (`perChatConcurrency: 1`).\n- **Message batching**: same-chat messages arriving within `automation.debounceMs` (default 10s, configurable via `replypilot setup`) are coalesced into a single LLM call. Bodies are joined with newlines; messages are sorted by timestamp before combining. Set to 0 for immediate processing (no batching).\n- **Chat queues** are created lazily (one `PQueue` per `chatId`).\n- **Duplicate guard** tracks up to 5,000 seen message IDs, pruning oldest entries when full.\n\n### Startup Sequence\n\n```text\nreplypilot start\n       │\n       ├── loadConfig()              read active named config, Zod-validate\n       ├── getActiveWhatsAppAccount() read active WA account (falls back to config sessionName)\n       ├── new OpenAiCompatibleProvider()   init OpenAI SDK client(s)\n       │   └── fallbackApiKeys[]           rotate on request failure\n       ├── new ReplyAutomation()        wire config, provider, queue, logger\n       ├── new WhatsAppClientAdapter(   init whatsapp-web.js (LocalAuth)\n       │     activeAccount)             using active WA account as clientId\n       │       ├── register QR handler\n       │       ├── register ready handler\n       │       └── register disconnect handler\n       ├── whatsapp.onMessage(handler)  register pipeline entry point\n       ├── if healthServerPort given:\n       │       └── new HealthServer({port, host: '127.0.0.1', metrics})\n       │           └── serve GET /health + /metrics\n        ├── whatsapp.start()\n        │       ├── client.initialize()   Puppeteer + QR scan\n         │       ├── wait for ready event   connection synced (10s timeout)\n        │       └── client.on('message')  attach raw message listener\n        └── [waiting for messages]\n```\n\n### Component Responsibilities\n\n| Layer        | File                   | Role                                                                                                                                                              |\n| ------------ | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| **CLI**      | `cli.ts`               | Commander program, 12 commands, dependency injection for testability                                                                                              |\n| **Config**   | `schema.ts`            | Zod schema, `AppConfig` type, defaults, `parseAppConfig` validation                                                                                               |\n| **Config**   | `store.ts`             | Persistent JSON store via `conf`, multi-config profiles, multi-WA account tracking, session dir management                                                        |\n| **Config**   | `setup.ts`             | Interactive `@inquirer/prompts` wizard (named configs, 3 providers + voice note flow)                                                                             |\n| **Runtime**  | `automation.ts`        | `ReplyAutomation` orchestrator (message batching), `processIncomingMessageBatch`, `startAutomation`                                                               |\n| **Runtime**  | `queue.ts`             | `MessageQueue` wrapping `p-queue` with chat-scoped sub-queues and optional global rate limiting (`maxCallsPerMinute`)                                             |\n| **Runtime**  | `logger.ts`            | Pino logger with API key redaction                                                                                                                                |\n| **Runtime**  | `errors.ts`            | Typed error hierarchy (`MissingConfigError`, `ProviderTimeoutError`, etc.)                                                                                        |\n| **Runtime**  | `metrics.ts`           | `MetricsCollector` — in-memory counters for messages, LLM calls, latency, and processing time                                                                     |\n| **Runtime**  | `health-server.ts`     | `HealthServer` — optional HTTP endpoint (`:port/health`, `:port/metrics`) using Node.js built-in `http`                                                           |\n| **LLM**      | `provider.ts`          | `LlmProvider` interface, `ChatContextMessage` / `GenerateReplyInput` types                                                                                        |\n| **LLM**      | `openai-compatible.ts` | OpenAI SDK adapter, per-key client creation, key rotation on failure, transient-error retry with timeout race                                                     |\n| **LLM**      | `prompt.ts`            | Prompt construction (`buildReplyPrompt`), output cleanup (`cleanGeneratedReply`), `UserContentPart` (text/image/audio)                                            |\n| **WhatsApp** | `client.ts`            | `WhatsAppClientAdapter`, `loginWhatsAppAccount` (standalone auth flow), lifecycle events, raw message → `RuntimeIncomingMessage` (includes voice note processing) |\n| **WhatsApp** | `context.ts`           | Chat history fetch (`fetchChatContext`), message normalization, media type labels                                                                                 |\n| **WhatsApp** | `filters.ts`           | `getIgnoreReason` (self, empty, group, broadcast, archived, voice_note, status_broadcast), `DuplicateMessageGuard` with FIFO pruning                              |\n| **Audio**    | `convert.ts`           | OGG-to-MP3 conversion via `ffmpeg` subprocess with timeout                                                                                                        |\n| **Audio**    | `transcriber.ts`       | Cloud (`transcribeCloud`) and local (`transcribeLocal`) Whisper transcription                                                                                     |\n| **Doctor**   | `doctor.ts`            | `runDoctor` health checks (Node, config, provider reachability, ffmpeg availability)                                                                              |\n\n---\n\n## About\n\nPart of the GimiRick toolchain. Founded by Mohammad Faiz.\n\n## License\n\nCC BY-NC-ND 4.0 — Attribution-NonCommercial-NoDerivatives 4.0 International.\nSee the [LICENSE](LICENSE) file for the full legal text.\n\n## Disclaimer\n\nReplyPilot uses `whatsapp-web.js`, an unofficial WhatsApp Web automation library. You are responsible for following WhatsApp rules and local laws. Avoid spam, bulk messaging, and impersonation without consent. This tool is intended for personal automation and controlled use.\n","readmeFilename":"README.md"}