{"_id":"imsg-mcp","_rev":"59-8f29895c29d6fbdbbbef6c0f5f57b575","name":"imsg-mcp","dist-tags":{"latest":"1.25.5"},"versions":{"1.0.0":{"name":"imsg-mcp","version":"1.0.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.0.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"81728d5b13f68821de1ea39a28b2fa7a4b2bdd18","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.0.0.tgz","fileCount":32,"integrity":"sha512-LxYUbMhKs8HwN6KJB2mPB7+09qhV76mKdOc1tjW2hI0LFrBQpcKRA5+DJ8mORybzBIeUfuM0ec917x7EKFYHSQ==","signatures":[{"sig":"MEUCIFDgXUzcGKOpSlkB65+rrILddI0mu4ggVjzi89att+SWAiEAxWWkjfd2k8S7lPmaD1lP8R4rhJ6uejzxTHt3ND18MDY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3908941},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb && mkdir -p release/mcpb && cp -R dist dxt-manifest.json release/mcpb/ && (cd release/mcpb && zip -r ../imsg-mcp.mcpb . -x '*.DS_Store') && echo 'Built release/imsg-mcp.mcpb'","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"george43g","email":"george.g93@gmail.com"},"repository":{"url":"https://github.com/george43g/imsg-mcp.git","type":"git"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"26.0.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","imsg-mcp":"link:","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.0.0_1779737445432_0.9743687937731376","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"imsg-mcp","version":"1.1.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.1.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"62aca2996106d72a90621ba176a0c9450eb4908c","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.1.0.tgz","fileCount":32,"integrity":"sha512-LUZMbd9SHhRMWCO1vRPDSzkT/locGqGUq19Nb+7VMaohkgkM5GnbwITghMrI8Q8/oD825AKJFcBNZTPyw/557A==","signatures":[{"sig":"MEYCIQCQLTuKAnU8s8h4KXhXpdQPSn7GhZjkpUzU6mur+WEX6AIhAKfes7qzoUpKZlrF/ka0P56ylA9GMTHhqiu3kVTdgsUi","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4004723},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"4f5e4678e23355ad69a138bcb6ce7821282fdf29","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.1.0_1780816052051_0.24141163322840886","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"imsg-mcp","version":"1.1.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.1.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"d2c5a7ad8b3e63b5c998a464a45012fb98e3635b","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.1.1.tgz","fileCount":32,"integrity":"sha512-MBDhLXO1MiRZytlgZLhkpii8wVvPooah8aOWD4fpqiL/IAOB5uPcpOZkXsOkF9Uv/dWb19VptBWhmUZ4G9rtZQ==","signatures":[{"sig":"MEUCIQDXywC9xrFImbwxX8L51SZsgbynwgBHPKRvmSqcPzbeyAIgEIcMzSf1Vr1arW3UvHN5uE/V9PcfOq2hd6LFLDQKVdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4010313},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"45543e3d455f6607fee4f87c1c4717652906092b","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.1.1_1780819005181_0.05604119394399243","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"imsg-mcp","version":"1.2.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.2.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"71d9e346adc9a93263697367ec65f0db9d49a071","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.2.0.tgz","fileCount":32,"integrity":"sha512-TJ3xb+bv5Opd5V1nFsKJYdS4M5tsn7cey6pQ3myH5+GbRsyDh0gfIpNMcPTo5wp2IC1ThySTpGWXDhXByt+5dw==","signatures":[{"sig":"MEUCIEJp4Qidyw+8k8UFFXNhueX8ksZw7IqIvtmVHZLxXpkgAiEA7wsyaKEiJrejle7nliCePg6K8GnOqlkuoOZEHdy+6zI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4136551},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"77462d843a11b5b73ad981dc0d94bb81468b703e","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.13.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.16.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.2.0_1780869510934_0.2670928932621317","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"imsg-mcp","version":"1.3.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.3.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"5a7945852ccaa2807a603ab49a7bcb64d1838806","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.3.0.tgz","fileCount":32,"integrity":"sha512-+LcpGLHg/k6Li2VPsmdn2QH1FpvTG9HKVbAPaDfjalVViIii+RGJxlQf/1sbU15TG75plBono/eBqgV1ZsujOQ==","signatures":[{"sig":"MEQCIGAMnshpanr3rJVIWRE+/xO1tUaqwtC+W/vR9e+dI/2vAiB416KczRBE+ewcayLuejcHNQK+HjPtyLhWuhDlW4J0cg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3952205},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"e108c507809a08f1b29e71671a9d16ac22e85054","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/github":"^12.0.6","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.3.0_1783815119129_0.3541845481265824","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"imsg-mcp","version":"1.3.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.3.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"296d25fe604c84fb5fc0aeda8908c7d2a89e37df","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.3.1.tgz","fileCount":32,"integrity":"sha512-R7ERCYmrBDkktnfJ/4VjlKQ26rAXEMRRF4s0vpoAMsTmgJJjsUk4ZZSGev4hPl4qwe0OZjCuQk+YL/jnHCKKrA==","signatures":[{"sig":"MEUCIQC8V5BKe45HXVLC4LF6gvuyVHqikDosG1oaGWJWrxphDQIgAi6T12VpigA2iW+3lpGikshZpq5rli5ycKvgeP8js+s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3955105},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"00dd9bd1753351cabf89aeb65bee52b9d01614ef","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.3.1_1783821650737_0.32567865078207436","host":"s3://npm-registry-packages-npm-production"}},"1.3.2":{"name":"imsg-mcp","version":"1.3.2","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.3.2","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"eefb41fd016e7b0f48e0f00a27023ffe0b0bb194","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.3.2.tgz","fileCount":32,"integrity":"sha512-AYVMAZdW4phjni9oG4cjQ0EFOZzDGLNf3X+3OFWxEfsq44qa7WPO71rd2TLxb9DfzF0yWD5tLUM+XiJIXVkkjg==","signatures":[{"sig":"MEUCIQD+bcHSdwubkVu3S5QgfyA5Nd2ErA+yyLHHYYermEGcRgIgE3tb43Z95QMEEbKhmI6yqsDkTfc7cZHwYhIjG8rXQ/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":3961162},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"f5505bb9faa0007f01e53944f89c9b10a27b8123","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.3.2_1783848654634_0.5216475626520507","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"imsg-mcp","version":"1.4.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.4.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"be9f7bbc3cee2dd93d411e375bc6eeec137f4655","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.4.0.tgz","fileCount":33,"integrity":"sha512-0km311PXMDTcvMaouf+HZYYyYKRI565w0D2UjaHggv0esvWS4AxlPNLaqlGVT4aLdOpanDL+ueuhnLVqcnd5ow==","signatures":[{"sig":"MEQCIAmsHGnXQzYVsySq4+ISb6Xhjmg90Vfku/pscby8EKaAAiBtxxpMl4Hgw9Ua8lI+smfOH6hB8cGPwldj0Vs4roSXwg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4119057},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"b168b86d8a6d405dddd34197654a3b20874fa484","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.4.0_1783954165422_0.2737064911329474","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"imsg-mcp","version":"1.5.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.5.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"28a4d63a122b82a64bdaea99af0b9ca6d77040bf","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.5.0.tgz","fileCount":33,"integrity":"sha512-2PUZltZDXKCbwcRORnOc/hm7cI+FrVQongNVMsJJVZr1ZsNldHnWF+Xw1AYxT1QfzOMl/B0j+Zg8tXpbkUhIQg==","signatures":[{"sig":"MEUCIQDqIW74tocgusFpJvtnPQvf/8tGyFGq0gu+vJU9eVUUcgIgSW1bUIIef8th+bz4WNAF3APeMuVJtktLZIQXFBwX+LA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4162064},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"3bc1639e9bbb37677f7a142506c6ef544b232fac","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.5.0_1784433715155_0.686233088255731","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"imsg-mcp","version":"1.6.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.6.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"9f07908c0512afb87fbfa83bdfa0ba72dddcc2cc","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.6.0.tgz","fileCount":33,"integrity":"sha512-u3XT0ONFpwYfCns/Aeidw9tRA4JQzffp1ED+g3zwmfj52MjU+uuL01WLrwwf+k2S9j7tlqI6g+PvFK6YRC8AHw==","signatures":[{"sig":"MEUCIBmHrYAsNb2TiUiL65ZESHxmwArdGMtlFQUZozXenNwCAiEAong5quiaUiXey5XMh6Cg8hXP/wCQI66z9IFY0EWtJwU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4193446},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"16abea373aec4e22263a54b83619a948b4df1535","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.6.0_1784447765972_0.9497433879310315","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"imsg-mcp","version":"1.6.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.6.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"f84ac5876205a7ac6c3f80e78a9fa83951866a95","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.6.1.tgz","fileCount":33,"integrity":"sha512-3XNBI0p/FSCEaAMrReShdQT27PHbOMqtUnaoIM+yfSwk2x2EMG6ReLdLWUOZFi083sikxNzv+bodaFqUKAEqmw==","signatures":[{"sig":"MEQCIBSeiV4oab8BRdhpGDp5J4HUkLGlV3rDx60Tx+xE+4p1AiAcPTMEeKmsCCx3o81BGEj3hNvXdrzOtAorYjCgPPXyjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4193788},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"53abb01c5758495de664660ff68d6166ee8e066c","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.6.1_1784454231588_0.9380834977380414","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"imsg-mcp","version":"1.6.2","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.6.2","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"6752baf0107f74a145112cbaf1d2222a057f3776","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.6.2.tgz","fileCount":33,"integrity":"sha512-uo+9rT/cjGVtYPnpNEyrzJu8YN82T0gMriku1Ewi4pZvA4MWNk4ceNwlvHWx0Rz9a+MXw+XdiQn88EaQtyN7vg==","signatures":[{"sig":"MEYCIQCnbfl26/g83rPmv6b3Ddmw9FL3GXwTUMWbW1hjuqphTwIhAP8EiR+Xq58x2yV3vkIslz366jUW7uKy3uWEKg+rNYLE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4196601},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"56cb97e432ddcc5e65f3c25d28778099e6efe327","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.6.2_1784544621306_0.2570817882728924","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"imsg-mcp","version":"1.7.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.7.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"88984e4cda2f6d1e31b748ed1cb53fc0eaf7867d","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.7.0.tgz","fileCount":33,"integrity":"sha512-RiyjJe9B70a8F4G9+aNBm/gZobhBBNe3JVHHS1qVQc1jAepJJCWsb31K+15NmhuVKK7vg7280Skk7xNWBO+B+Q==","signatures":[{"sig":"MEYCIQDF/CdBkr+TBIeNafmSccFBnG6fesZ9MEDW7ORsbEOLKQIhAKpzlCJqcR4mJDbMX2l+bLkttNzQuxePJmpQ0c/HGplL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4206858},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"ce93edd05627c3cec6b88c2257882ca63185ceae","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.7.0_1784544929642_0.4258135254710582","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"imsg-mcp","version":"1.8.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.8.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"96c4deb39d0f9b3635f6d8c83714a4f67344ffff","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.8.0.tgz","fileCount":33,"integrity":"sha512-qTnkct7ZLH4Gu3AnYJzS6cvDAk3oO85nA2LrWbp6CVY8jnfZC+I2jzm1F8zdCZkBt5M7nOqnz+uX8qehzlUC1g==","signatures":[{"sig":"MEYCIQD/rhSLpeng+vJwF/H2aLFCLolhjJ7SGAZT5SEfcjaubQIhALEQab/VTSKXmcNWYxGvA7XauKsJ8HZ87B2+6d8cul9x","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4247155},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"3669d1c8d066fcdf271c2843d55f079f94ee1d70","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.8.0_1784545241803_0.8361516193556304","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"imsg-mcp","version":"1.9.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.9.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"4bbcb447559972067bb834ffec1f1050e5fa4460","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.9.0.tgz","fileCount":33,"integrity":"sha512-rcx1omZC/ti3ZMUNSbaIXVQzhGHQKg0akHJDD5EfRA83sjZVe4tx8o5QEW57puiNtB559FwUs1rX92bIAMasJA==","signatures":[{"sig":"MEUCIB0TsfJ6x0XhDEkD4nZ6/YJs6vTofIVRFR3cPmUCRCqdAiEAsCjHQVvZBSE3U1Do5qbWgwiI2pTXXZTNrpoZ1SzPfiE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4270165},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"d314865d7d4d0d2d438cdfc4036eaa95e65cd6f5","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.9.0_1784620734033_0.2592939651021531","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"name":"imsg-mcp","version":"1.10.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.10.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"e5a6e6e500b4cff3e12b5e67b06dc222cc91818a","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.10.0.tgz","fileCount":33,"integrity":"sha512-1q7r4kXJ9LxKTffCl8cda6T+8PM0uxbvyi9qHau4Qt5TiQB+DBvN5t6VS0UGgEX+RmTrR7615OZnA4QXndzhkg==","signatures":[{"sig":"MEYCIQCwGQ0QBpBHFwm5uov9I2OfuXQoM6tOVF7wqxA/Jw5zCwIhAOsB6YxVU3Ah+jm3saYaNVamJFJcUWxvS3biUk6UkY7c","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4270437},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"c34d1df0d9bd653d3472f32b8b07ae8be81ef46a","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.10.0_1784621767008_0.4104094553306439","host":"s3://npm-registry-packages-npm-production"}},"1.11.0":{"name":"imsg-mcp","version":"1.11.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.11.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"849e825916e38432b7d3b2d0522a17f70949cdb0","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.11.0.tgz","fileCount":33,"integrity":"sha512-NhIcm5H5w/eSO0cRsUa9sTnQb3epo5VuYIs8cnXZnqta1dNclow2/0m1b9dfX8pkGAHzL4nL1NL2VbajVFbadA==","signatures":[{"sig":"MEUCIQCYdAyrvz77Hu/7JHlhTMTZwq6NE7+9PeWiOtUTWzvv1wIgDBIzkurmF6i0opvaMQpiWZL80qPkmqYB2eRk1W0Qo0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4282865},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"3de1bac8f1c48bce9de86a0ab6f0818d0f93b1b4","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.11.0_1784622206660_0.632522524752309","host":"s3://npm-registry-packages-npm-production"}},"1.12.0":{"name":"imsg-mcp","version":"1.12.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.12.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"5ed03d6cc3ee6e8d0977aec5a09f5e5234bd153d","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.12.0.tgz","fileCount":39,"integrity":"sha512-5NO2XCd0L7wvepzq7B4VFRN5WZ19LWuXCfxi1j5JOISQziYIcSLIcHmsxJRNLWpmAvdvzK8trEg2RDh5y713pQ==","signatures":[{"sig":"MEQCIFRHtNv4NhjcG/h+uhvF1s/yarG3VVtu5/0Xg19K5UDbAiAviORw9rZ6UL7xWNTli58rOqx5FniVkDAhWTOXjs1CjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4546012},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"5be7a835cc0d5ba114fa76e6182428de340bcb7c","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.12.0_1784715263737_0.16824549765898755","host":"s3://npm-registry-packages-npm-production"}},"1.13.0":{"name":"imsg-mcp","version":"1.13.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.13.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"aac51698a37a525740b301c6255d93309bc8b76d","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.13.0.tgz","fileCount":45,"integrity":"sha512-X4aYNyxEBVb1vyJCdcMdZH4Nb5n7LIJ2BPafuK2mFCCNWrx3XM4sk+cdufR1SOGDDhZJxpA9yLnqmuO/ezs+NQ==","signatures":[{"sig":"MEUCIFUOrglq/J0Y9+6E1mr6535QTxiujNjaoBeVDl40ZVz7AiEAxNeH5X6adQqJp7r+HMdrgxyFHVFR5S3XS3lw0u1mRes=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4652355},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"b318fc08f44944373ad9c32982d575480f879568","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.13.0_1784727947915_0.8564020882130103","host":"s3://npm-registry-packages-npm-production"}},"1.14.0":{"name":"imsg-mcp","version":"1.14.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.14.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"f90a711ce10a1e591b3f79b0278f06614295e6a7","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.14.0.tgz","fileCount":45,"integrity":"sha512-KT8xOiwyYYJbNA4kHhB6y6uL0ZRtluMNHJAWKggDohDGRBTX2VlfOWDDkPtKYKQvRlHIogrjQfQ4ZZNF9czLWg==","signatures":[{"sig":"MEUCID/4GVpZ42GH7NOy33/TP5Rx+xNdtm5pO6silLi4QkEoAiEAgDD2T8tMAW3cimQIhdww2/vpCDSBQ3+upE9PsDJ49QI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4702725},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"0dcfdff4a57987f2dba168f334e558688f0482eb","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.14.0_1784790258740_0.2877661361123254","host":"s3://npm-registry-packages-npm-production"}},"1.15.0":{"name":"imsg-mcp","version":"1.15.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.15.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"c7b017f87c33ae15dadb9776359a3649b017d572","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.15.0.tgz","fileCount":47,"integrity":"sha512-t6rbckV3sGmCzdWtHc9BjCrfA/ACWh0HrEZI731kh2b7qmb94eLphzK9nf+qPZNfEmZzjYVAKx+vfphXvTKxWw==","signatures":[{"sig":"MEQCIDh9p31WWo8k1ajXCkhl64PORc8dQEIB3N4gyZB7fk1AAiAdcE1HF/1P0/6x8TGHEq0RoWCmidI6fTKs6Oku7BvqXQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4735634},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"ae0d19477d590ddf034306a66753191e012e8314","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.15.0_1784802964468_0.9866315097302265","host":"s3://npm-registry-packages-npm-production"}},"1.15.1":{"name":"imsg-mcp","version":"1.15.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.15.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"3af7dae3e9be0398f7475cdf0e94238a2579e57e","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.15.1.tgz","fileCount":47,"integrity":"sha512-KQwwGPcFwBXEusUMceTxh1TSaUFwh/elH7nqsRO5cKSpV8ucBv6nJFeoJBaVnkuIY7+Q3bGD3PU59wDiMXZyNQ==","signatures":[{"sig":"MEUCIQD1iV74CiETKyT791YiZLZ0s2y7vsFHLq22acu7oajcBwIgSDSwEE71kV2kSTrOKvgai4aXUkkNMoTX8BaXP+OMo+E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.15.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4749060},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"9782f0a43b5aa3c860654b32dfc5edd8e748ad0f","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.15.1_1784994051626_0.7693552200147116","host":"s3://npm-registry-packages-npm-production"}},"1.16.0":{"name":"imsg-mcp","version":"1.16.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.16.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"10ea21ef27266167fd39f17902b300ce45883142","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.16.0.tgz","fileCount":47,"integrity":"sha512-q30lUaF43w2U4yWv+YXkpzINKgvIwOgroMDUkGg0hbId12NiQ/nE3qDF6AzWOPZp3Xo6y/k4D+AzAeo0MomqaQ==","signatures":[{"sig":"MEQCIFPQhrHvsdzdIv1uH8WE1VIoB1nOFGXtV+g3zhulh7XSAiBONr+eMLBKqqTFj64sGEx6c/DWw88ZiEbUYwk6ugNTRw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4759401},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"954fd68e36f051ab7a42bd1f81b20373624aca42","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.16.0_1784994859058_0.24779134914962708","host":"s3://npm-registry-packages-npm-production"}},"1.17.0":{"name":"imsg-mcp","version":"1.17.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.17.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"10496c37944de87f8db195bf4eac1e1a826e2441","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.17.0.tgz","fileCount":47,"integrity":"sha512-9FYdJo6oxkECmgmHTaQv+7XnWUOH1vh02RyqMH9OwiSu8Xxw0CD6tH1AcgO3ymHnHYc0Sw7jVqINxmNU9AeaOw==","signatures":[{"sig":"MEYCIQC1cuOR38dSRegojzRlDW6nhsQ+zJjvhN8C2fbERgDUZwIhAPZGkfetHdWA1iebwsE/Xe0jMG9/8uhMf38bF3xt+tdL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4764310},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"cf94282fb7e96350e221fee2e9a3a052eb5b8ce0","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.17.0_1784998078869_0.9535296506319773","host":"s3://npm-registry-packages-npm-production"}},"1.18.0":{"name":"imsg-mcp","version":"1.18.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.18.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"b70ef2fa71e93d1d1832278699329f396377ad65","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.18.0.tgz","fileCount":47,"integrity":"sha512-BwackN4/8n8t2C0hVOIKf2CGt9thDnk1ce02YU9qZ3nvSKMriPvtJWlJbcRQldosXGz8rvzIMnwkFQ2AFg4gHw==","signatures":[{"sig":"MEUCIHokluqbPZdKJK4amI9u0s7pJbhIZOJt4pji0/jB8RYpAiEAxQ01MNNO4ybN4ix3DYPkdodF1qI7hsum7cGyCd/zHjE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4768673},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"5f72f69d3899f5a0440cf2367a23a341adafe553","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.18.0_1784998979079_0.07994815534608812","host":"s3://npm-registry-packages-npm-production"}},"1.19.0":{"name":"imsg-mcp","version":"1.19.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.19.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"c016108d7740a2006e38f5c6d1a0200403b691e1","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.19.0.tgz","fileCount":47,"integrity":"sha512-arEtBA2ro2bOMfrwh7wv+4dUP8CHZN8JYA38DufiNu4/sX7zrr/+8oIm8IlM9ozDOMptyZ1HsgntdstD0CgC9A==","signatures":[{"sig":"MEUCIQDqq7A1lCmEhnOao0eD28VDocHPJaN3GU0tbFjjsqG9aQIgIjCZnAhT0gRJnkBZgViWitCzIWYBzaQXlJuXbULwtD8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4777420},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"30d0ea41ec046bc314393fddf9151da5c7859288","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.19.0_1784999362409_0.17348606583890236","host":"s3://npm-registry-packages-npm-production"}},"1.19.1":{"name":"imsg-mcp","version":"1.19.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.19.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"736b81c9319a30be72f2c9eb407cea435ef10e56","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.19.1.tgz","fileCount":47,"integrity":"sha512-s5ex+J29pZUx9evVYyxab95Hxl9GVviEvXXxbyUM+tw9S2/CBh7W+9MeNHxKIrwsVr2FZCUcyUsOx0MqK4OdWQ==","signatures":[{"sig":"MEYCIQDbByicqjojNAuHuyRNAiC74Mt/n3IVWtQY2hjAp4Cc/AIhAI98v5IcZb5s0xiwhU1ltwQ2G/oMLUtfkX3RcK8UhBIm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.19.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4799248},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"bcbfcf4c46da4aff183774799ff8c79dc1a95f04","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.19.1_1785411111758_0.6913960874600742","host":"s3://npm-registry-packages-npm-production"}},"1.19.2":{"name":"imsg-mcp","version":"1.19.2","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":{"name":"George G"},"license":"MIT","_id":"imsg-mcp@1.19.2","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/imsg-mcp#readme","bugs":{"url":"https://github.com/george43g/imsg-mcp/issues"},"bin":{"imsg":"dist/cli.js"},"dist":{"shasum":"c1f911b241ae4607e16da98d0fa743eaa525c658","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.19.2.tgz","fileCount":47,"integrity":"sha512-lXUo4BjH2Dr3Vecvadlfm32KB26NeFBUISzs+i1JNGwJGbGX3PXGwPJBMvgVNhq30llVuBnyJ20PVE9Vga+5OA==","signatures":[{"sig":"MEUCIQDqKmjgA5jIMgEYVRPoh9uaPiwRRdOZTUKMur7/SldcjwIgIBhnI1iEkU9eL88Yz8NK6CRD4VCKwOhDlOPidp0O/HU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.19.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4807347},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"gitHead":"60ff99a4273bb6f4436ec50ad2c6f9ad3f4efddc","scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","prepare":"pnpm build && pnpm fixtures:if-missing","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","hook:install":"git config core.hooksPath .githooks && echo '✓ pre-push hook installed (regenerates screenshots before push on macOS)'","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","prepublishOnly":"pnpm verify","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:963094d6-1acb-47f3-b97c-e87d54c20c00"}},"repository":{"url":"git+https://github.com/george43g/imsg-mcp.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"packageManager":"pnpm@11.1.1","devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^2.0.0","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^20.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.0.0","semantic-release":"^25.0.3","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.19.2_1785661386760_0.29104021690928317","host":"s3://npm-registry-packages-npm-production"}},"1.19.3":{"name":"imsg-mcp","version":"1.19.3","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.19.3","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"4f95c7e66cd3bc19bbc7bb5f27b91e7946b3f39c","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.19.3.tgz","fileCount":47,"integrity":"sha512-S9401cgboJ6P6WXTiPLLLTx2g6jElPvBnFu64YBQQAxwwu/msVSXCGME2yie45fOiaLrCr8vn/uTRZhqRKqc7A==","signatures":[{"sig":"MEUCIQCnw/MTdWJHHxcPbMHW8M/zSh9Lnk5xAkU7GrXVRQwPhAIgK2xYtBYtKKlGCAsOgSSjLpL8uHVaskHvWLe1146szKY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.19.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4808182},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.0.1","zod":"^3.23.0","react":"^19.2.5","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","zod-to-json-schema":"^3.25.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.19.3_1786271100354_0.4084610338587631","host":"s3://npm-registry-packages-npm-production"}},"1.19.4":{"name":"imsg-mcp","version":"1.19.4","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.19.4","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"a900fc2f9c3cbd972733c6042144c889c39da8e5","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.19.4.tgz","fileCount":47,"integrity":"sha512-uIRSI1rmj7lfCbA5vTSaJo7+1FjLq9kj1unLvodtP31fkklWLnriqVxZomXtaBxuqs8/pt1ZCJcEqIF5IOap/Q==","signatures":[{"sig":"MEUCIQCBQdo8gtK2bhubxc+DUWCk4Wdqq03rgxuGdRIFOgsQfAIgILT1LZmC1ob0C9/qUUJpkl9G/LYmSxB4oxhJvESFA8A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.19.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4865808},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.3.1","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.5.2","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.19.4_1786282237518_0.4934540759164421","host":"s3://npm-registry-packages-npm-production"}},"1.20.0":{"name":"imsg-mcp","version":"1.20.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.20.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"276347f3104f16a5b0e5820cf9640519a7cb07ae","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.20.0.tgz","fileCount":47,"integrity":"sha512-wkg6uagl9zVvUUvVzyJVQa2r7DbdsFfjX4anb56STnFWhjG0/UoESPj5Ra2c9sG5/GneacD2q0ddx0OW3roZvA==","signatures":[{"sig":"MEQCIA8MH9Nv1DRXHpbUvz/fRtr1+S4fUIdTZCizMBbDVtBfAiBBkcZn1/KZeMYUuDnROfTZxTRlHmAqSdQTlR4bX/AvoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4886540},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\"; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.3.3","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.6.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.20.0_1786283054365_0.34772574466162554","host":"s3://npm-registry-packages-npm-production"}},"1.21.0":{"name":"imsg-mcp","version":"1.21.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"7d96571cd8a184a33b36039150a40d633e1f11ed","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.0.tgz","fileCount":51,"integrity":"sha512-is6i4qVXLUVTr81MFDLMm9JiSK5pv2nYB9WMQYEdJvHBMuRvhEzDP6CbQdTMoykrYJ/gmdLRi9ejfRC/lqhVoQ==","signatures":[{"sig":"MEUCIQDV8sCgyBai9rpI8Hcvsn5byMhXkp5loEoT7rlrnz5L9AIgMAeqeIB8BlAuc4VM278WgO6zsVB8CIcIqdyIQ4hJA+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4979145},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.3.3","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.6.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.0_1786290645978_0.6459553300721266","host":"s3://npm-registry-packages-npm-production"}},"1.21.1":{"name":"imsg-mcp","version":"1.21.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"9ccbc917f30e494301dff313bf28a9d1d0ab3a5e","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.1.tgz","fileCount":51,"integrity":"sha512-cs1vHSVqVxkKwjh8fNDjCjgaBkeeNXsfCJ74+wpDlQN+fxVEVEQszpl3B1vKDXN05Thj5QD6RC8SXzFxIUSSrw==","signatures":[{"sig":"MEUCIQDmYd6A0LoNPPtUZxS0U6S51MXkX3mxvNlpJJ/CDMzbawIgH/Bj4ygcsQMkGF54k0kkQ+IbPGuPlNAyBVbpZ6tNSFY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4993591},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.1_1786308120738_0.3542295504170132","host":"s3://npm-registry-packages-npm-production"}},"1.21.2":{"name":"imsg-mcp","version":"1.21.2","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.2","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"ddee848a0d198b924e17b5b45a97340941137556","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.2.tgz","fileCount":51,"integrity":"sha512-ywfdzTTmRcb1vsrn5O3C21In8z5MiwdsH7m8ZPQWMZjjO42kJowMnFa2mCWouwO9X5+RzMwNvYwfSLqxY43LKg==","signatures":[{"sig":"MEQCICgmiGzaaL6/VRFyS9OTLrCZNg2Pe5hc7clZSHE+a2bUAiA55MoeonrRP5PQ2a4OW+9ADOHNCdJRPbtLC/n7bSHF7g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5001704},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.2_1786330206969_0.274295901350349","host":"s3://npm-registry-packages-npm-production"}},"1.21.3":{"name":"imsg-mcp","version":"1.21.3","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.3","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"a107c49ccfa74ad6d671f487651a95125255c549","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.3.tgz","fileCount":51,"integrity":"sha512-s6mJzLHn+TjViwgWmUcHiEmvJkEWrO9AqZl9kqAlQp8OYxJh+mh1aw7+Relly9erf0Tu8HEycgFDzVDL3ed6eQ==","signatures":[{"sig":"MEUCIBUsYHhNTkzUUdTFl80Mj78W9HzJ+7ZREGruZtxr/m7jAiEAmTyXdtKVz8iber7AjoLHzZZAztnGPhLbFxNfC9j9EDU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5004478},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.3_1786672623814_0.048775853130494484","host":"s3://npm-registry-packages-npm-production"}},"1.21.4":{"name":"imsg-mcp","version":"1.21.4","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.4","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"d7238a98bd70f4aaa8226ff73f5945ec345b54a6","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.4.tgz","fileCount":51,"integrity":"sha512-H7C3wFx4BieVge4lnuMj3kawGn05RKVR6fLLWao61Wl5BXJ7RfwUlkSABiGzFsNqf9dVybt139EwC3SDTru8GQ==","signatures":[{"sig":"MEUCIQD5nfRG8By1k+RQR8qv6T+l7R3wNoix7yPelVz1SEBtIgIgCuhE68yvFRrVcj29egalTqw5b4f+29c2JoFKcHSBUzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5004956},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.4_1786821881726_0.18725625207400287","host":"s3://npm-registry-packages-npm-production"}},"1.21.6":{"name":"imsg-mcp","version":"1.21.6","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.6","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"c82f52b5ce031ae028dd28432817169719d92cf0","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.6.tgz","fileCount":51,"integrity":"sha512-iFsmAnZ3+46fjlsnngrKj821GUuqcowjToEoDtGjnuRsRgPuzfCBcbK9/EGN3EgKDA6RtIsGEyqVgSL93oaQjg==","signatures":[{"sig":"MEYCIQDx9G606ZTcFCSXiiTjeQmxJCp5vvM7IWBEIkSLiZ3bEAIhAOUIZe0KnVkEn78WrcEBqhxw40odNSN1zyesYNdJGsyc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5012848},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.6_1786822870755_0.9637918416133402","host":"s3://npm-registry-packages-npm-production"}},"1.21.7":{"name":"imsg-mcp","version":"1.21.7","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.7","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"69c8903c785e7c19893e784ca12a8a14c383e8c7","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.7.tgz","fileCount":51,"integrity":"sha512-NQGo8xtfXlnrNvqsG9UIXlLyz5IYe9UnL2sQolvHp5jrxIudLZFrGVEE/20g72Qp2WBPBJdMOGT+tdSgPcFoSg==","signatures":[{"sig":"MEUCIQCBWbs5KDp8l0LtgAmE4X5cOy6eEDp1p6hzFwWHny3JiQIgfb/zrxnqzOKRt169v3Y7azE1nc8iBdqq6ezlSTDwNKI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5013952},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.7_1786823709448_0.23177501148443547","host":"s3://npm-registry-packages-npm-production"}},"1.21.8":{"name":"imsg-mcp","version":"1.21.8","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.8","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"939a63d11fd1b6b70022c76bfef743c0101dcc62","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.8.tgz","fileCount":49,"integrity":"sha512-AWVNwna3a3OOEGHsXoGXa6POZS4b3vM+XTQRYJZMq+bh/6psHYL48OsMbouE7ieiTp762Dhe5Lh5O7+vJwx/Yg==","signatures":[{"sig":"MEYCIQCCRLlpuLKvgHlCcvGIub6Kr0EYVV5COKTiObdfXx+bqgIhAJ4sqhviMQWA2Kiyi+BPHVcSESzjG2vpdiCRqWND5Wxh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5021935},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.8_1786824411057_0.039720023935681414","host":"s3://npm-registry-packages-npm-production"}},"1.21.9":{"name":"imsg-mcp","version":"1.21.9","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.9","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"a3d3c3ad2d1beac20334edb3cbde1c59b9eb08b8","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.9.tgz","fileCount":49,"integrity":"sha512-ofsObBs2AW8xDm93UnUffPwUeOA6DvwSGpDZE2JXQPbZGKGX7GvM8OBA9GNli0yxrD0WoUpOCw/Gcj4LbZTsyw==","signatures":[{"sig":"MEYCIQDyyQryma2gl3PcMelL2vxaxrkDSCxm0PILoewq2iVE8gIhAMBEe/BczJXSNOBd7Z6JMA+U19kEJIOSiV5ESSa43C1i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5024405},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.9_1786825324145_0.8198513689532165","host":"s3://npm-registry-packages-npm-production"}},"1.21.10":{"name":"imsg-mcp","version":"1.21.10","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.10","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"e9989ad75fbeb94001e530d29de565af390bad09","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.10.tgz","fileCount":49,"integrity":"sha512-ILUAPgbem5YTQ9XBZdZLlzjFYDTNHz8BQMPTYkGQjCQVhXMCCqN8G0aIiMmGkxWNuqLRILTsPAVUkroxNi3YEg==","signatures":[{"sig":"MEQCIF79qOgifv/lDO+4XVEc53UKAdMFrB//qPr66qAG7hYkAiADnJpQ3S5pGVx3RumURujWb5PjZDtrBtBKZHpKDyqj4g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5025866},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.10_1786826551958_0.9199745862208808","host":"s3://npm-registry-packages-npm-production"}},"1.21.11":{"name":"imsg-mcp","version":"1.21.11","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.11","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"3e68de803bbe6ad45a8308135acc6af42b4b1393","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.11.tgz","fileCount":49,"integrity":"sha512-XSXtP4X3UeVsrjhUspxYyj/SfBwJ+1QQpgLt9Tx7hp1tbLoM9HKp6E2KzYdk1O/NnOtf7lfcWG3K1W13z+Ex0g==","signatures":[{"sig":"MEYCIQCl+L+SJIsbfAUKQCy5vwAGAgDqZI3hkoGnrowfYAhoIgIhAMa7yQKsH1F2bRBWFRQMwY9ns0EzVn9KDX9CYBzhIJ0L","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5033552},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.11_1786828174521_0.38517920315681353","host":"s3://npm-registry-packages-npm-production"}},"1.21.12":{"name":"imsg-mcp","version":"1.21.12","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.12","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"0a317b289411bfd46528da738f3e1ff5ee833ba1","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.12.tgz","fileCount":49,"integrity":"sha512-EK3bUz9g9FrCkAdVkhH3LuepliGg3rxYOh9+0VTdUmQgdAeR19tzpsBmxR0NzBZzW7huXK0hZ/pJDcmJcbkCOg==","signatures":[{"sig":"MEUCIEzncYP+HI9rckl1n0VJm+n795HD06UA9tygfneNb4moAiEAvk5oefl4JW+jdwmTKpGW44jC6UoPMzTyssFKvvO8Ht8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5039727},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.12_1786829510058_0.5785359030205219","host":"s3://npm-registry-packages-npm-production"}},"1.21.13":{"name":"imsg-mcp","version":"1.21.13","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.13","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"12fb8829709d1bb843bf1428b08f4f58fdad3c65","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.13.tgz","fileCount":49,"integrity":"sha512-2MhHkXeUCy/0o8YiEXwCCuV2tNdb+b05ZjYViVtNmMB3KhwxvOELnAdjrbRbXnUvI8FADNh3U4ywfGkMNIpnqw==","signatures":[{"sig":"MEUCIQCm/8o8kSC1jQhFsTZ06bG5UOU1pguH6H1G6AQdU2YmowIgeU9Eeh8omy4Q1JPjDNCvDHY1vWSWdWDJoML5NJKX/es=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5041293},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.13_1786831075830_0.7000755623456882","host":"s3://npm-registry-packages-npm-production"}},"1.21.14":{"name":"imsg-mcp","version":"1.21.14","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.14","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"ef5d00d2c9fd7165cbf8a1a7900e455534c93f3c","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.14.tgz","fileCount":49,"integrity":"sha512-fWj6+O4tt3DjQVs9YMT18DNB1Q1alv/fiwrWf44aIqGnUdGDmGKkLHNXw4ddIClS4ALgHovMDXN5FN8I72407Q==","signatures":[{"sig":"MEYCIQC15a7v8IVNWjAj7Bz0Mfg85aZIGV31fcp/rpmjTb0qKwIhAKCYB6y1AFuqCym1OJvHZzCK0Xp2qJuyKfMWhxclaOJ7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5046910},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.14_1786832366476_0.5652124259857618","host":"s3://npm-registry-packages-npm-production"}},"1.21.15":{"name":"imsg-mcp","version":"1.21.15","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.15","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"82aef73752b9a9f0626c9c9dd6e8ad314c8f8e0a","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.15.tgz","fileCount":49,"integrity":"sha512-QKzK8aytWopxG9upeYO1tRL7Ys3OoFUhUSoEYMSTELaR1AkFRJg2/oeGsOhr5siJFkQ09oDnlsS0VE7UUUhhSw==","signatures":[{"sig":"MEYCIQDZbhlXBEvmhIpM4+zxXcnzmfQkPtSreAhldeSh/wPjDAIhANFveZnDoqDExfcvyWbP7eRn7bdh1bZPRcbR+wJoPkp5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5054246},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.15_1786833949520_0.7430043278030718","host":"s3://npm-registry-packages-npm-production"}},"1.21.16":{"name":"imsg-mcp","version":"1.21.16","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.16","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"8e93c32fedaa93431a15dcc7f47f5b8405bf99b1","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.16.tgz","fileCount":49,"integrity":"sha512-zbFMfdRpFPPY0z9pcZaJLtGWhzE83qZsJn7Egy/K0HzevQgyg+e1jHn5TLW/rnIayd/f2SKlJmemBMGyebtRQQ==","signatures":[{"sig":"MEUCIDFjIWNpFpFvIdvohPFNLs3CscGKgZINgUY2a/zyVI2WAiEAxFQBZ8DITEwLriNv64U+8lmlvccjRiOqqtu4YQQCqxg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5056289},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.16_1786835239726_0.7443618013375903","host":"s3://npm-registry-packages-npm-production"}},"1.21.17":{"name":"imsg-mcp","version":"1.21.17","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.21.17","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"d33cab651eb396453ec33fa6513388fa8daa7740","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.21.17.tgz","fileCount":49,"integrity":"sha512-dGnW9O4mg7ZlpODNNTYOcuZ82+2oFom5DaTciGbO22fKoh2YpuVhRUwViIAUBe7lONrPZz4P0FY0CU1exa6z7A==","signatures":[{"sig":"MEYCIQCVx1h2J7fguSSvtgYt3pUzhBJAKYL1K6haEtZSkQ5y1AIhANJuGkKxsjNlaXtpcgak4Je2ZkPXL4o6ixroZXeTa5uj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.21.17","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5057060},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.21.17_1786836160119_0.6289123344843475","host":"s3://npm-registry-packages-npm-production"}},"1.22.0":{"name":"imsg-mcp","version":"1.22.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.22.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"2f78433fa92da32e4f8397fb05a11105c22640e4","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.22.0.tgz","fileCount":49,"integrity":"sha512-urLCtoiFe+fTzZxqk6gGsWnPAlbHesmHQlqps8TjzuEf5opvXcrjASqu0ocyJxPX3hZug9FltY/qWcxoNvFSdA==","signatures":[{"sig":"MEYCIQCnXZ2JduRyvdbJMfLYRaGZ2Xy43v/EF2zzL9YSM2shKAIhAITOV5WnZzwVfO39SunLJqBE+5QhpL24Kf6OYBp81VCr","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5069906},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.7.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.22.0_1786837904179_0.2560377843109196","host":"s3://npm-registry-packages-npm-production"}},"1.22.1":{"name":"imsg-mcp","version":"1.22.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.22.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"36a4e468834cd0c1ea5363b7a501662c997ed16a","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.22.1.tgz","fileCount":49,"integrity":"sha512-cozPta373A5pMvGakky6ZlDJhX18dxB79fXZclxQCt2foVYQgx8KhRMmd0OJ+hlo3Gwj1ekLYmKlHYjs5Vvpkw==","signatures":[{"sig":"MEYCIQDCTiFHjqGO5fbQPbWfPoxgwi2A2FM7udWY1IWnSkTOGgIhAJW/2xvxglU7+y3as2TrIgznom5jUIui5N2uJtSWQsqZ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5076369},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.8.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.22.1_1786845287460_0.8198820620214726","host":"s3://npm-registry-packages-npm-production"}},"1.22.2":{"name":"imsg-mcp","version":"1.22.2","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.22.2","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"08640e84315d1deb39975b618c9190584e4f55b1","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.22.2.tgz","fileCount":49,"integrity":"sha512-3Tq5oAkfbs6/4A6hlqxKaoeTpH8ATgUyMRcAfJVNtN2MfeAqCgdAw9e4lEvLJgtblcW7xDauoFx7Oe0l0RKRMg==","signatures":[{"sig":"MEUCIQC8L0E5RyI2XunkgCg5m/mjssHrTK49KMBkpkCa18//iQIgKtCBm5KeYmSbPuCUPLONiXbg3LQN6kVFb+ittz0yQ8o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.22.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5074651},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.8.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.22.2_1786846538777_0.12218420080814307","host":"s3://npm-registry-packages-npm-production"}},"1.23.0":{"name":"imsg-mcp","version":"1.23.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.23.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"34f9c212adb65aebe37bbb22f6063899b493c802","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.23.0.tgz","fileCount":49,"integrity":"sha512-WAQSaUiR9ey0Dd4vljbqueSrYo/5pXl+3Dt7VGoc9OfRQY+EFE7XFBFO5BBJ5OakDI9xx2gB3qzpSBS1w01JcQ==","signatures":[{"sig":"MEUCIESf5SMUU6vpGFXL5RkOlRYZCPIm3pudH7VYIO59LwxUAiEAunADLEI+Z1RATu2At0a2ROiqNaZM67g6aHUf1pBFFmE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5080941},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.4.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.8.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.23.0_1786847654371_0.6858456859625184","host":"s3://npm-registry-packages-npm-production"}},"1.24.0":{"name":"imsg-mcp","version":"1.24.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.24.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"56e1531842d2c6a59d8c088bd008380e5c98622b","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.24.0.tgz","fileCount":49,"integrity":"sha512-n5LlYupBqzm6wU999omWzWlFCNWxhBtqm3ees8nbqSTt5TWSVBDkDoADfZAN+ekgiFvBhAnutrTyTsl3GB9c1w==","signatures":[{"sig":"MEUCIQDsK3nTD+JWdFTNUA85pfp/yhtErqynjcNgxlDo2zYcjwIgCRDM5fNvObAcyV66Wn33xIXEVa1dRq7N/u2X8BOflLE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5131546},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"node --import tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"node --import tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"node --import tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"node --import tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.5.0","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.8.1","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.24.0_1787336195212_0.0221307800479964","host":"s3://npm-registry-packages-npm-production"}},"1.25.0":{"name":"imsg-mcp","version":"1.25.0","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.25.0","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"32615b2e7677e047bede5ccab45d49f94fcfc20b","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.25.0.tgz","fileCount":49,"integrity":"sha512-zM4Loz7rfVdhrTPmSw67U4wGUPF5Q/gZ7+4M1oP7q9z9KknYCygUU7ZhPu6eVsTmdvLSk1/ECCYN8ALMPhDhNg==","signatures":[{"sig":"MEYCIQCd3IoUY/o4nFzQICj0GXgJjs+QcQpyXZZfkt52eL5PwgIhAP6IhZv5VvfBXU4o/D/N4TeLQDLyzX0aXxaTm7RQndFX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5154765},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"node --import tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"node --import tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"node --import tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"node --import tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.5.1","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.10.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.1","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.25.0_1787338637420_0.14606044666825246","host":"s3://npm-registry-packages-npm-production"}},"1.25.1":{"name":"imsg-mcp","version":"1.25.1","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.25.1","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"7d74440251666137d8b406663e7ebc572cfa6889","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.25.1.tgz","fileCount":49,"integrity":"sha512-n+Pv1alry6buiN9Vd3FVLanRWB0upeqzqAqEUEw2UuO2TXkNQxbolcbqZy9r7R9dYhtng98cry/jO64/6PtmKw==","signatures":[{"sig":"MEQCIBBAuil90jalARjWyMU3kCDQfh+URydDqUGN4iWdznkSAiBJH/l5aXkioqvYSl5aA/hJoYNJNoYH7oSWNaunJ6Sxtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.25.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5179850},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"node --import tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"node --import tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"node --import tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"node --import tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.5.1","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.11.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.6","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.25.1_1787374900292_0.9777576295691333","host":"s3://npm-registry-packages-npm-production"}},"1.25.2":{"name":"imsg-mcp","version":"1.25.2","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.25.2","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"8326a8cf8cb333afcc7ee2d03b1ad7b51700b55f","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.25.2.tgz","fileCount":49,"integrity":"sha512-kaBRsnoVO8NDgd0po89544IBj6ANtZaXqnKdj8dOr5Q1269xl+TwWcAfnb4RNGpk00q9vY9Pz66QLLg7NiohVQ==","signatures":[{"sig":"MEUCIFrj3S95i1AN4qZnPn3IC0m3K/CUIh07GMMHb7n2ySKWAiEA4qtiFvIULWtd7f9+IohFcO5ERAX1KH9UFNq2D6W8WaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.25.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5185400},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"node --import tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"node --import tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"node --import tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"node --import tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.5.1","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.12.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.6","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.25.2_1787376264626_0.9617959962189953","host":"s3://npm-registry-packages-npm-production"}},"1.25.3":{"name":"imsg-mcp","version":"1.25.3","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.25.3","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"4cec3905073d96434197e9335a471cdeff4f3eed","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.25.3.tgz","fileCount":49,"integrity":"sha512-ay/xkpasLB5jpVflNoEvFAgf0pt35mJQgivAIRonwOKclXX7tyxZt+P89kY/JEJn75P2sSXzWqM4IPkqS5Phkg==","signatures":[{"sig":"MEUCIFb/3G0DxuEru1TX7ZUgP8sLFZ2d5MxG/37cbuAdYUpNAiEAhliRuZTzlrUMB1m6kpctMr0ZE5r7vISC/Nnka5waAhM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.25.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5195745},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"node --import tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"node --import tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"node --import tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"node --import tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.5.1","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.12.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.6","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.25.3_1787490178414_0.3862023908454033","host":"s3://npm-registry-packages-npm-production"}},"1.25.4":{"name":"imsg-mcp","version":"1.25.4","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","license":"MIT","_id":"imsg-mcp@1.25.4","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"bin":{"imsg":"./dist/cli.js"},"dist":{"shasum":"887bdedc1f63047258207ece2ade30bec8b4e3a3","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.25.4.tgz","fileCount":49,"integrity":"sha512-0b/U9o3baztqdtsk4nG2g1n8dhvd/d8DgSvigJ0i259y6ZSXWWu+fA2x+2mfyEESYmzsyk/6W3xJdvqqO1wO5g==","signatures":[{"sig":"MEUCIDCpOBVK3TzgFi79iSsjYoYa5dfpCXHBu7Qvh79z9qBpAiEAguQf+UefrQfDbwNOAgu7Qz+2qq3UPjKdNM2AzA1HFYo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.25.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":5199988},"main":"dist/index.js","type":"module","volta":{"node":"24.13.0"},"engines":{"npm":"not in use","node":">=24"},"scripts":{"cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","lint":"biome check .","test":"vitest run","build":"pnpm build:ts && pnpm build:native:optional","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","stress":"node --import tsx scripts/stress-mcp.ts .env.test","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","dev:mcp":"node --import tsx src/cli.ts mcp","rebuild":"pnpm rebuild better-sqlite3","build:ts":"vite build","cli:test":"node --env-file=.env.test dist/cli.js cli","fixtures":"node --import tsx scripts/generate-fixtures.ts","mcp:test":"node --env-file=.env.test dist/cli.js mcp","tui:test":"node --env-file=.env.test dist/cli.js tui","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","test:rust":"cd native && cargo test --release","typecheck":"tsc --noEmit","stress:tui":"node --import tsx scripts/stress-tui.ts","test:watch":"vitest","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local","test:native":"vitest run --mode development","build:native":"cd native && napi build --platform --release","native:build":"cd native && napi build --platform --release","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","build:native:debug":"cd native && napi build --platform","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","native:build:debug":"cd native && napi build --platform","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"repository":{"url":"https://github.com/george43g/EQStack.git","type":"git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ink":"^7.1.1","zod":"^3.23.0","react":"^19.2.8","@inkjs/ui":"^2.0.0","commander":"^14.0.3","bplist-parser":"^0.3.2","better-sqlite3":"^12.6.2","fullscreen-ink":"^0.1.0","@inquirer/prompts":"^8.5.2","@george43g/tui-kit":"^0.5.1","zod-to-json-schema":"^3.25.2","@george43g/robustness":"^0.12.0","@modelcontextprotocol/sdk":"^1.0.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","vite":"^7.3.6","vitest":"^3.2.7","nodemon":"^3.1.14","typescript":"^5.5.0","@types/node":"^24.0.0","@napi-rs/cli":"^3.6.2","@types/react":"^19.2.14","@biomejs/biome":"^2.5.6","semantic-release":"^25.0.3","@eqstack/tsconfig":"0.0.0","@anthropic-ai/mcpb":"^2.1.2","ink-testing-library":"^4.0.0","@eqstack/biome-config":"0.0.0","@semantic-release/git":"^10.0.1","@semantic-release/npm":"^13.1.5","@types/better-sqlite3":"^7.6.13","@eqstack/vitest-config":"0.0.0","@semantic-release/exec":"^7.1.0","@semantic-release/github":"^12.0.9","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/release-notes-generator":"^14.1.0"},"_npmOperationalInternal":{"tmp":"tmp/imsg-mcp_1.25.4_1787492019689_0.7750356743362232","host":"s3://npm-registry-packages-npm-production"}},"1.25.5":{"name":"imsg-mcp","version":"1.25.5","description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","type":"module","main":"dist/index.js","bin":{"imsg":"./dist/cli.js"},"keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"author":"George G","repository":{"type":"git","url":"https://github.com/george43g/EQStack.git","directory":"apps/imsg-mcp"},"homepage":"https://github.com/george43g/EQStack#readme","bugs":{"url":"https://github.com/george43g/EQStack/issues"},"license":"MIT","dependencies":{"@george43g/robustness":"^0.12.0","@george43g/tui-kit":"^0.5.1","@inkjs/ui":"^2.0.0","@inquirer/prompts":"^8.5.2","@modelcontextprotocol/sdk":"^1.0.0","better-sqlite3":"^12.6.2","bplist-parser":"^0.3.2","commander":"^14.0.3","fullscreen-ink":"^0.1.0","ink":"^7.1.1","react":"^19.2.8","zod":"^3.23.0","zod-to-json-schema":"^3.25.2"},"devDependencies":{"@anthropic-ai/mcpb":"^2.1.2","@biomejs/biome":"^2.5.6","@napi-rs/cli":"^3.6.2","@semantic-release/changelog":"^6.0.3","@semantic-release/commit-analyzer":"^13.0.1","@semantic-release/exec":"^7.1.0","@semantic-release/git":"^10.0.1","@semantic-release/github":"^12.0.9","@semantic-release/npm":"^13.1.5","@semantic-release/release-notes-generator":"^14.1.0","@types/better-sqlite3":"^7.6.13","@types/node":"^24.0.0","@types/react":"^19.2.14","ink-testing-library":"^4.0.0","nodemon":"^3.1.14","semantic-release":"^25.0.3","tsx":"^4.19.0","typescript":"^5.5.0","vite":"^7.3.6","vitest":"^3.2.7","@eqstack/biome-config":"0.0.0","@eqstack/tsconfig":"0.0.0","@eqstack/vitest-config":"0.0.0"},"engines":{"node":">=24","npm":"not in use"},"volta":{"node":"24.13.0"},"scripts":{"build":"pnpm build:ts && pnpm build:native:optional","build:ts":"vite build","build:native":"cd native && napi build --platform --release","build:native:debug":"cd native && napi build --platform","build:native:optional":"cd native && (napi build --platform --release || (echo '⚠️  Rust native build skipped (rustc not installed). TS fallback will be used.' && exit 0))","dev":"vite build --watch","mcp":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","mcp:ai":"node --env-file=.env --env-file-if-exists=.env.ai dist/cli.js mcp","mcp:test":"node --env-file=.env.test dist/cli.js mcp","mcp:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js mcp","mcp:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js mcp","dev:mcp":"node --import tsx src/cli.ts mcp","dev:mcp:watch":"nodemon --ext ts --exec 'tsx src/cli.ts mcp'","start":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js","debug":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","cli":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js cli","cli:test":"node --env-file=.env.test dist/cli.js cli","tui":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","tui:test":"node --env-file=.env.test dist/cli.js tui","tui:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env --env-file-if-exists=.env.local dist/cli.js tui","tui:test:no-native":"IMSG_DISABLE_NATIVE=1 node --env-file=.env.test dist/cli.js tui","doctor":"node --env-file=.env --env-file-if-exists=.env.local dist/cli.js doctor","test":"vitest run","test:native":"vitest run --mode development","test:no-native":"IMSG_DISABLE_NATIVE=1 vitest run","test:watch":"vitest","test:rust":"cd native && cargo test --release","verify":"pnpm lint && pnpm typecheck && pnpm test && pnpm build","lint":"biome check .","typecheck":"tsc --noEmit","fixtures":"node --import tsx scripts/generate-fixtures.ts","fixtures:fresh":"rm -rf fixtures && pnpm fixtures","fixtures:stress":"node --import tsx scripts/generate-fixtures.ts --stress --out fixtures-stress","stress:tui":"node --import tsx scripts/stress-tui.ts","screenshots":"fc-list | grep -qi 'jetbrains mono' || { echo 'Install: brew install --cask font-jetbrains-mono'; exit 1; }; for f in scripts/screenshots/*.tape; do vhs \"$f\" || exit 1; done","screenshots:check":"pnpm screenshots && git diff --exit-code docs/screenshots/","screenshots:native":"for f in scripts/screenshots/native/*.sh; do echo \"→ $f\"; bash \"$f\" || echo \"  (script failed; continuing)\"; done","pack:mcpb":"pnpm build && rm -rf release/mcpb-stage release/imsg-mcp.mcpb release/imsg-mcp.dxt && mkdir -p release/mcpb-stage/native && cp -R dist release/mcpb-stage/ && cp manifest.json package.json icon.png release/mcpb-stage/ && node scripts/strip-dev-deps.mjs release/mcpb-stage && cp native/index.js native/index.d.ts release/mcpb-stage/native/ && (ls native/imsg-native.*.node 2>/dev/null | xargs -I{} cp {} release/mcpb-stage/native/ || true) && (cd release/mcpb-stage && npm install --omit=dev --omit=optional --ignore-scripts --no-audit --no-fund --no-package-lock) && node scripts/stage-native-deps.mjs && mcpb pack release/mcpb-stage release/imsg-mcp.mcpb && cp release/imsg-mcp.mcpb release/imsg-mcp.dxt","fixtures:if-missing":"node -e \"if(!require('fs').existsSync('fixtures/chat.db')){require('child_process').execSync('pnpm fixtures', {stdio:'inherit'})}\"","rebuild":"pnpm rebuild better-sqlite3","native:build":"cd native && napi build --platform --release","native:build:debug":"cd native && napi build --platform","stress":"node --import tsx scripts/stress-mcp.ts .env.test","stress:live":"node --import tsx scripts/stress-mcp.ts .env.local"},"_nodeVersion":"24.18.0","_id":"imsg-mcp@1.25.5","dist":{"integrity":"sha512-6NnhaYemxaEErSSAf4t/23TtdVa+kpsXfk+U72tGSfanH80NQq+SHRFWDJTULbO6C+7RNF6MZsBNTMY8yt7ZJQ==","shasum":"be1644d5441aea373beb74640f880ae1c3808524","tarball":"https://registry.npmjs.org/imsg-mcp/-/imsg-mcp-1.25.5.tgz","fileCount":49,"unpackedSize":5215783,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/imsg-mcp@1.25.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIH91ofHO91r7sfi/6GRdJeESbwKTyfmfPaPlGaqVftGxAiBsOQYg5oyqzqIoTJ21t3LhXvv/gSk7EOUGtx4cP9XZ2A=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:49d70e91-93e2-49ca-86ee-82c4c4bf105e"}},"directories":{},"maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/imsg-mcp_1.25.5_1788384571625_0.9567535200919153"},"_hasShrinkwrap":false}},"time":{"created":"2026-05-25T19:30:45.262Z","modified":"2026-09-02T21:29:32.236Z","1.0.0":"2026-05-25T19:30:45.623Z","1.1.0":"2026-06-07T07:07:32.246Z","1.1.1":"2026-06-07T07:56:45.396Z","1.2.0":"2026-06-07T21:58:31.099Z","1.3.0":"2026-07-12T00:11:59.342Z","1.3.1":"2026-07-12T02:00:50.912Z","1.3.2":"2026-07-12T09:30:54.787Z","1.4.0":"2026-07-13T14:49:25.568Z","1.5.0":"2026-07-19T04:01:55.348Z","1.6.0":"2026-07-19T07:56:06.122Z","1.6.1":"2026-07-19T09:43:51.765Z","1.6.2":"2026-07-20T10:50:21.496Z","1.7.0":"2026-07-20T10:55:29.821Z","1.8.0":"2026-07-20T11:00:41.977Z","1.9.0":"2026-07-21T07:58:54.186Z","1.10.0":"2026-07-21T08:16:07.252Z","1.11.0":"2026-07-21T08:23:26.844Z","1.12.0":"2026-07-22T10:14:23.907Z","1.13.0":"2026-07-22T13:45:48.075Z","1.14.0":"2026-07-23T07:04:19.004Z","1.15.0":"2026-07-23T10:36:04.668Z","1.15.1":"2026-07-25T15:40:51.818Z","1.16.0":"2026-07-25T15:54:19.225Z","1.17.0":"2026-07-25T16:47:59.021Z","1.18.0":"2026-07-25T17:02:59.258Z","1.19.0":"2026-07-25T17:09:22.556Z","1.19.1":"2026-07-30T11:31:51.982Z","1.19.2":"2026-08-02T09:03:07.027Z","1.19.3":"2026-08-09T10:25:00.523Z","1.19.4":"2026-08-09T13:30:37.692Z","1.20.0":"2026-08-09T13:44:14.538Z","1.21.0":"2026-08-09T15:50:46.158Z","1.21.1":"2026-08-09T20:42:00.913Z","1.21.2":"2026-08-10T02:50:07.155Z","1.21.3":"2026-08-14T01:57:03.995Z","1.21.4":"2026-08-15T19:24:41.913Z","1.21.6":"2026-08-15T19:41:10.937Z","1.21.7":"2026-08-15T19:55:09.705Z","1.21.8":"2026-08-15T20:06:51.231Z","1.21.9":"2026-08-15T20:22:04.312Z","1.21.10":"2026-08-15T20:42:32.150Z","1.21.11":"2026-08-15T21:09:34.745Z","1.21.12":"2026-08-15T21:31:50.270Z","1.21.13":"2026-08-15T21:57:56.030Z","1.21.14":"2026-08-15T22:19:26.699Z","1.21.15":"2026-08-15T22:45:49.692Z","1.21.16":"2026-08-15T23:07:19.908Z","1.21.17":"2026-08-15T23:22:40.314Z","1.22.0":"2026-08-15T23:51:44.353Z","1.22.1":"2026-08-16T01:54:47.629Z","1.22.2":"2026-08-16T02:15:39.018Z","1.23.0":"2026-08-16T02:34:14.573Z","1.24.0":"2026-08-21T18:16:35.508Z","1.25.0":"2026-08-21T18:57:17.670Z","1.25.1":"2026-08-22T05:01:40.490Z","1.25.2":"2026-08-22T05:24:24.790Z","1.25.3":"2026-08-23T13:02:58.579Z","1.25.4":"2026-08-23T13:33:39.909Z","1.25.5":"2026-09-02T21:29:31.859Z"},"bugs":{"url":"https://github.com/george43g/EQStack/issues"},"author":"George G","license":"MIT","homepage":"https://github.com/george43g/EQStack#readme","keywords":["mcp","model-context-protocol","imessage","messages","sms","macos","ai-agent","ai","anthropic","claude","applescript","tui","terminal-ui","cli","chat-export"],"repository":{"type":"git","url":"https://github.com/george43g/EQStack.git","directory":"apps/imsg-mcp"},"description":"MCP server, CLI, and TUI for reading and sending iMessage / SMS on macOS — lets AI agents text humans, fetch conversation history, and stream-export entire chats. Includes a self-healing watchdog and an optional Rust acceleration module.","maintainers":[{"name":"george43g","email":"george.g93@gmail.com"}],"readme":"","readmeFilename":""}