{"_id":"johns-harness","_rev":"32-c8f38fd5798aa44f611a50a75adb2097","name":"johns-harness","dist-tags":{"extended":"2026.9.29","latest":"2026.9.34"},"versions":{"2026.9.8":{"name":"johns-harness","version":"2026.9.8","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.8","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"4864bdbbb66339534941d89e03d71d29638e7dce","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.8.tgz","fileCount":7301,"integrity":"sha512-+CdSKae0xQYnCRrBM6suQquoIG9poz9OpTZbxIWjxIOx2chi22+BPOJK4yecgQqOwD1z+vZ2ttLOTZViPuWEKw==","signatures":[{"sig":"MEQCIHw3D99TB6y6JvhthDuEUFWs6ses4+of1D6KSHogyh9uAiAURnw15+dAzbT4HXGCG+XCD+qwsmhPlGt7ymcDpqAbZg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":131320382},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"864915c20ef2b76abc59d15b4bf23492b323b574","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.8_1788851459207_0.727950703722245","host":"s3://npm-registry-packages-npm-production"}},"2026.9.10":{"name":"johns-harness","version":"2026.9.10","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.10","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"c7985eb997b05405ab7da6b286d872d261989507","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.10.tgz","fileCount":7316,"integrity":"sha512-8aXBStltyodfoHleNy7nRFCbV/HgJw1aInrnPr6JLS7gAD898DqENS98WbZfAVeTqOn0RjsGodstIb23KmS8ZQ==","signatures":[{"sig":"MEUCIQDsjO8oAAb1p2Y34FasEE/qvDXKAQC8GF3AavmCA4o1/QIge3loJmQTo9uhgZIQSyUyxe1oUlITcLZnHncjOXuNFNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137967308},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.10_1789079907703_0.9828957546871724","host":"s3://npm-registry-packages-npm-production"}},"2026.9.11":{"name":"johns-harness","version":"2026.9.11","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.11","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"9690bfb6bb9f4c849c0e5e403d930d0523c84561","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.11.tgz","fileCount":7318,"integrity":"sha512-TaY7iwcPCMRW6DIj+0sI4nOyRMut5+ZCNM8jS96O/8waQ7WKjCD9wFetmHG6dfV4fwxFKLelcDwhSdrDqD6zGQ==","signatures":[{"sig":"MEUCIQDUA//LbtbCrkuGNesILxlxTX8YnuKB5Z0OiZwSafEDjgIgLsi7+B59MHqd6B5cmZSw/jwc2oHTIbgrEjVrzDuWHPg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":137998331},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"d0a28dda6518cd2e6cd8d9f901f100fa7ff17374","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.11_1789087734296_0.5052672823523188","host":"s3://npm-registry-packages-npm-production"}},"2026.9.12":{"name":"johns-harness","version":"2026.9.12","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.12","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"8fe29483536dcac34987f1041ed801157e62d754","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.12.tgz","fileCount":7318,"integrity":"sha512-iP5iGoElE92PQPyp9gUymmJGFzt5K/ZrF034lGbZp0lDsAqe315iuz0MCnl2m/hJohY5YMtRlUQ2QN7/3NnZTw==","signatures":[{"sig":"MEUCICocE5+OBurZVB044C/kUIcn1w0yT80XrcxZtUC3f89/AiEAnjiOajiUf88IVNhNAv8yGToQep2v6YorRmjq2PPBe80=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138002717},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"3ea3fbf39ca956a1a39ee30d21539d372ecbe371","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.12_1789092317695_0.10680023699881414","host":"s3://npm-registry-packages-npm-production"}},"2026.9.13":{"name":"johns-harness","version":"2026.9.13","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.13","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"952b1a9e6694f02059effbb05e383c25b5ec47f0","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.13.tgz","fileCount":7318,"integrity":"sha512-X5JHT3TMDGbBPttd678bLCPk0IZdm2uiQVxb3Z5SWjMMcjiPw5e1cHqjrBhIN/UjOA7hu2UjMs0T4h4BxP6zEw==","signatures":[{"sig":"MEUCIFrKiepdosRF175EbPU/meIxCLb3gto3l17Bdp5CH8PqAiEAruBGDJxCDZNlm4RBD+rT9BRGVD94zV/ivyF42JXeQP8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138068270},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"44116b0d252d844197bf6a8ace22b93846831577","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.13_1789123342995_0.1072202408819456","host":"s3://npm-registry-packages-npm-production"}},"2026.9.14":{"name":"johns-harness","version":"2026.9.14","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.14","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"c14507a222ff37daf8dade9a869ff242d1bfb869","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.14.tgz","fileCount":7318,"integrity":"sha512-I0/RTtet99EEi1YnR+Xvj7ifXPG2aIm4RQCFio1752jj8na4F1X7yAb2vs2JAViVV6K1MK3zFjB7JqHf0o9LMA==","signatures":[{"sig":"MEUCIQC8OeJ4RVRPRl/rFlofqnCvEyvwXpdFQfG7p6dK6QnPxQIgE9TTpsAymfUZ2pnd03+a5X8PVixDiAhrXuahAsL2rTM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138133158},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"d1820d96d6a1cfd762ad4c5e91b33cbc61ed03ee","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.14_1789192427346_0.7275897224766625","host":"s3://npm-registry-packages-npm-production"}},"2026.9.15":{"name":"johns-harness","version":"2026.9.15","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.15","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"417e3106f91d20ba251aefd8e6048f10b727bb7b","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.15.tgz","fileCount":7318,"integrity":"sha512-AHQUtJlnZvGdg4ZnY4fUvU82O9FvhSdwFO4mRpS06WKLwH14hu2I4mUQB+qXijuBN5LE0Me4EFXIyVhXU4kMfA==","signatures":[{"sig":"MEUCIAkrAH4iaIzyLrTSAo7nAhCzbfRomOqDugpBymfklT0BAiEA1IqDs+gxI5HHie1trvHkMYpTbqtkuituAZGXahfQ+A4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138160678},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"8ed7f3490ee0ab80fa97279869b495e1c0305ca2","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.15_1789194876758_0.16594945597724986","host":"s3://npm-registry-packages-npm-production"}},"2026.9.16":{"name":"johns-harness","version":"2026.9.16","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.16","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"0b7f43a2e50e5bead1a825de7064d0cba8a8a074","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.16.tgz","fileCount":7318,"integrity":"sha512-nJ4OC3cqaiZKgarMur7ZS+VYQJPw2eC+sYGt/ZG06lncGMHiRfrzD73NP/oQQZcojqB6ACTr5I/bVe7fy0T4AA==","signatures":[{"sig":"MEQCIAXuHUcagdAkCXWt/TIRnK2DxgnRgUS1y9Q8Cvvvlg//AiAwon6gotmGtBZKfcykT1GjMm31BcRy3yvGpO+TqbzFoQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138188720},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"97adf79db24b5eac43ad87fbf16eaccc79fa4ad7","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.16_1789210228013_0.7036451313896999","host":"s3://npm-registry-packages-npm-production"}},"2026.9.17":{"name":"johns-harness","version":"2026.9.17","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.17","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"a830c2e43914a0ffbf16ae0292beec675023ff1f","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.17.tgz","fileCount":7321,"integrity":"sha512-Vg12A5VyTboazYKX53PTHHGBdm67SKB/zfxUY+s8RsJEC119PHQPr8r8b2p+oO0XcHYWAcAj+1tDiF3c5CvmEA==","signatures":[{"sig":"MEQCIAzWEFqAY0XE3ZBN8LJokUVA91t0axJLfyEg8ucya1QcAiA7TWF/iT3JSdlvNTKV9kxyeyCLQdTW0cKSAwBp88kFlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138226977},"main":"dist/index.js","type":"module","_from":"file:/tmp/johnness-f65-pack.bsKn60/johns-harness-2026.9.17.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/johnness-f65-pack.bsKn60/johns-harness-2026.9.17.tgz","_integrity":"sha512-Vg12A5VyTboazYKX53PTHHGBdm67SKB/zfxUY+s8RsJEC119PHQPr8r8b2p+oO0XcHYWAcAj+1tDiF3c5CvmEA==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.17_1789247946654_0.8646475852343949","host":"s3://npm-registry-packages-npm-production"}},"2026.9.18":{"name":"johns-harness","version":"2026.9.18","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.18","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"bf22eae2b6db15853aea7eba7d29dfbe26f7498b","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.18.tgz","fileCount":7323,"integrity":"sha512-MbTtl8fjf1uV6hrTHwVLh4Y3FRct7k71kD2G4XwnWtWrNTGa4C+QfM2qvasFVhG84B/FG7a54+IJKEwA1oTAzQ==","signatures":[{"sig":"MEUCIEMZ6Mj9nWUL7rx2U/cGmCoo+Yy1gwvt2udm2GXrLyqnAiEA5X4khNnc0x9UXFYNKUTH3vSV9xHHGiefOUsDDI5bhsI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":138253800},"main":"dist/index.js","type":"module","_from":"file:/tmp/jh651-pack/johns-harness-2026.9.18.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/jh651-pack/johns-harness-2026.9.18.tgz","_integrity":"sha512-MbTtl8fjf1uV6hrTHwVLh4Y3FRct7k71kD2G4XwnWtWrNTGa4C+QfM2qvasFVhG84B/FG7a54+IJKEwA1oTAzQ==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","undici":"^7.22.0","express":"^5.2.1","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","mr-memory":"3.13.2","opusscript":"^0.1.1","pdfjs-dist":"^5.5.207","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","markdown-it":"^14.1.1","osc-progress":"^0.3.0","@buape/carbon":"0.0.0-beta-20260216184201","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","playwright-core":"1.58.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@sinclair/typebox":"0.34.48","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"node-llama-cpp":"3.16.2","@napi-rs/canvas":"^0.1.89"},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.18_1789254744074_0.6022845411644198","host":"s3://npm-registry-packages-npm-production"}},"2026.9.19":{"name":"johns-harness","version":"2026.9.19","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.19","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"e65c82d00650b26841ee9c56e925adb3a55b2825","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.19.tgz","fileCount":7474,"integrity":"sha512-EcxoPhjmAY16/iIJDP781NZFaK4TqEPN+yYscKNB9jJhrX1tYEF2Hv6v0vX2TL+iEvYbIgHyW1KcUoCAwxkjBQ==","signatures":[{"sig":"MEYCIQDLIxXxXyYWAu95cH8+pjeNZsIvMNvBNB9WvpzYluEGAgIhAI70GcghdgMYJxQDfeozZYk+tyjK5on51zB1sUoOfLQz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128165128},"main":"dist/index.js","type":"module","_from":"file:/tmp/jh66-evidence/johns-harness-2026.9.19.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/jh66-evidence/johns-harness-2026.9.19.tgz","_integrity":"sha512-EcxoPhjmAY16/iIJDP781NZFaK4TqEPN+yYscKNB9jJhrX1tYEF2Hv6v0vX2TL+iEvYbIgHyW1KcUoCAwxkjBQ==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.19_1789257122116_0.8442317641095867","host":"s3://npm-registry-packages-npm-production"}},"2026.9.20":{"name":"johns-harness","version":"2026.9.20","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.20","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"d3e5476d61fc3ef4229bea2546311f22257719cb","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.20.tgz","fileCount":7476,"integrity":"sha512-LtvYwR8XD/LQSgDSrwIc5AkHXWkbJ9T7c6L5keKfa/dcbA7yhyVKA19OAjnDE2vvJ6H9JNbYaNYZYcNWTAOxcw==","signatures":[{"sig":"MEYCIQCZobqCG30xN19F8YhgcAA9qWCNiIxbsY2T1U1OTpCJaAIhALa6nk9tWHU1g7XYVJpELb+/ZwYepaxdLAZkNE59OgFd","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128230289},"main":"dist/index.js","type":"module","_from":"file:/tmp/provider-catalog-audit/johns-harness-2026.9.20.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/provider-catalog-audit/johns-harness-2026.9.20.tgz","_integrity":"sha512-LtvYwR8XD/LQSgDSrwIc5AkHXWkbJ9T7c6L5keKfa/dcbA7yhyVKA19OAjnDE2vvJ6H9JNbYaNYZYcNWTAOxcw==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.20_1789337544095_0.68485824674296","host":"s3://npm-registry-packages-npm-production"}},"2026.9.21-extended.1":{"name":"johns-harness","version":"2026.9.21-extended.1","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.21-extended.1","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"6a943bfcc531ec75f71297755826bb1aaacadb09","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.21-extended.1.tgz","fileCount":7476,"integrity":"sha512-o+GpclJ81Th2XtaVfz9ZFWfQQMu5F7f1kcFPIGk0wI69Pf4TqD49Z1VHqfddizZdkRUsO7CkrjNw5bFgVR9htg==","signatures":[{"sig":"MEUCIQCbBaVqGnoW9p9Gomqfw9KYc8ZAk1q2tSHEsGE1kwoBNQIgLYqJw02WjmmlFUJC3/XUNMPagDImAnO2ZBEHf8l4kNA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128233036},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"e24549bc2b6729d621294f5e635fad279010f683","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"readmeFilename":"README.md","peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.21-extended.1_1789349603180_0.01692101110909472","host":"s3://npm-registry-packages-npm-production"}},"2026.9.22":{"name":"johns-harness","version":"2026.9.22","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.22","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"233a396f9d46b9a7941907f0d448feeae5491d78","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.22.tgz","fileCount":7476,"integrity":"sha512-xobeJxUld0uaspLBzqUIh/iOIdl62F9P2850pY1c/+9aCTGs96yJAz7yHA0PCuNBNWgUDJP1TEBk7BXeTnW8tw==","signatures":[{"sig":"MEUCIQCzET5WmJ6Mh2qt5xsEfFy4n+ta2re3q5mexCEvvi0bowIgeBQRQFvQV5pUBooDbFQnTDpTm5wWHJ1lzwV35bgJXZQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128231489},"main":"dist/index.js","type":"module","_from":"file:johns-harness-2026.9.22.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/Users/johnrood/Documents/GitHub/johns-harness/johns-harness-2026.9.22.tgz","_integrity":"sha512-xobeJxUld0uaspLBzqUIh/iOIdl62F9P2850pY1c/+9aCTGs96yJAz7yHA0PCuNBNWgUDJP1TEBk7BXeTnW8tw==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.22_1789354807611_0.8654113751931856","host":"s3://npm-registry-packages-npm-production"}},"2026.9.23":{"name":"johns-harness","version":"2026.9.23","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.23","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"cbb9d0aa56af9253d22b5cec75e813b922c647ba","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.23.tgz","fileCount":7477,"integrity":"sha512-7cIdl2HQ4UYlCuHLImv8wgnJnDQVrerSz+UWX0l2MK5oRjHpSuCOdDUtFvyUwhgMPWSwoi3MnwEa7BC4Lv72Yw==","signatures":[{"sig":"MEYCIQC2CazUllt/HiE9CfeOMur9k0wKlgGqI6HjWzZsZm0ZhAIhAP7cQrUzpJ45OtgUrHTUAa4IczUP3WS/ACQm1YTozd5j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128236038},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.23_1789373227411_0.4369633986135948","host":"s3://npm-registry-packages-npm-production"}},"2026.9.24":{"name":"johns-harness","version":"2026.9.24","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.24","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"ca9ab430483e85aba5805d8ea0fa3d533d726f58","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.24.tgz","fileCount":7479,"integrity":"sha512-elFSekCf3HbxpXRiOGG78MdeIoIMJ29MaQSWKrfIvaA34LZ1GbdA0yhogWahFE9mqkh2m1HenxSuVfraRbP83w==","signatures":[{"sig":"MEUCIQCYJs3bJ7yMu6stagnRcGx6zCb/pyiJ+XvoqdSBKrX7xQIgbhN82/bBQhfucWtEYfJO5A1Ivaa7BMKQ0a0waqvPbis=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128251889},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"970e60fac09ddedac4191e6e1163114301202765","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.24_1789426129992_0.45111728085898783","host":"s3://npm-registry-packages-npm-production"}},"2026.9.25":{"name":"johns-harness","version":"2026.9.25","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.25","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"2b423ac694b224bdc1bc78af1220963dcc889682","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.25.tgz","fileCount":7490,"integrity":"sha512-GtZ8mG8cypdlMY6ezNd54DDkUMGNl7BF8GLO6gs7Z+3X2GbAGi35/xhurUld6Ubw5TIQpFNzZypiRVQD+01woQ==","signatures":[{"sig":"MEUCIQCn6/pHQqtlstM5tEtXqku9IlDVYNC0HWyi8bWs7455aAIgOXtPi0w1nY9Tg3dTc1Ftnd28qcPsuaZLvD5Rc2j//gg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128294019},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"a21b076eae4f9f98ddc0644da8c88451c7ba81df","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.25_1789428337998_0.6039940466597928","host":"s3://npm-registry-packages-npm-production"}},"2026.9.26":{"name":"johns-harness","version":"2026.9.26","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.26","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"422d8a3f16bb2c0db80cd6f56e1b0aec0a1ecc92","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.26.tgz","fileCount":7487,"integrity":"sha512-X3cAiG8SEyJoeOP5L5rPX+/HGSYPmLpMnULGjkC4/pYJhahPKKjysjcDWWWqfAQpm1WWe+VEUdpAmppDuLaAug==","signatures":[{"sig":"MEUCIF28QJCE2MU6pfFIPR33s1hV/QT5cf7Mr8D4sNuHnJx0AiEAqYranKD4fS2DNkBFL7oFHV7xwUxAy6J/LATkXz4c4UE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128286311},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"be7e20abfa5baca53929a4aa499b80a618259249","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.26_1789434486195_0.41840850731419343","host":"s3://npm-registry-packages-npm-production"}},"2026.9.27":{"name":"johns-harness","version":"2026.9.27","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.27","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"3659db01bb70eb05047ead4d91cb856226a446cd","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.27.tgz","fileCount":7487,"integrity":"sha512-O84MLtNMj0109Aj4Uta9VaJ4POf5/y42OqcgyROG4IwaGVUm5A1e2bajeZiFra8UETczHZlFVsxr5xK/Fx8uew==","signatures":[{"sig":"MEUCIQDfJXnQOUA8jM8JnMWPVgYl5x8m2uwTKIJk+U3mVZL2bAIgCOyEJvZB/mg+ctDPb3q8C+wtdFBL+4Eqh0/RZVaPYFo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128294618},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"82a67b02017ee9f0ce401ee2e40b1e45271448da","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.27_1789453702694_0.03881276718567639","host":"s3://npm-registry-packages-npm-production"}},"2026.9.28":{"name":"johns-harness","version":"2026.9.28","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.28","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"83f7aef7e1cee37dc96a257ceec0ee955c7e16ce","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.28.tgz","fileCount":7491,"integrity":"sha512-nVPAlFyGrOUhdBoxKqaM/VN4PcpK2Fr0TBUiDN7aWNGQx7J8F+E35lfcj2EleDD5NjAnsfRjLIAEWOskv0GTnw==","signatures":[{"sig":"MEUCIQDxJP/IFigiS8hOjIZMuWCpl07/H3f7aB/fdNTVyOxKTQIgKxGiGxjrT6QD10q4E/N0wET/41Wn4cswbybPIaiYa20=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128355913},"main":"dist/index.js","type":"module","_from":"file:/tmp/jh-928-pack/johns-harness-2026.9.28.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/jh-928-pack/johns-harness-2026.9.28.tgz","_integrity":"sha512-nVPAlFyGrOUhdBoxKqaM/VN4PcpK2Fr0TBUiDN7aWNGQx7J8F+E35lfcj2EleDD5NjAnsfRjLIAEWOskv0GTnw==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.28_1789578090566_0.28930805505801427","host":"s3://npm-registry-packages-npm-production"}},"2026.9.29":{"name":"johns-harness","version":"2026.9.29","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.29","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"6b7a978c58e5a9629dcdee280232daedaddb597f","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.29.tgz","fileCount":7491,"integrity":"sha512-WkHy0a6kqahCJLIoCsGojTdODA0O/0GyiKPJlxR3XiH6BLXjryLqQOQCJiNkjPx13M349vmxKdz57Ww9aZFrzA==","signatures":[{"sig":"MEUCIQDlXWqDzekWtWW/Z1KjO899clyxsuqw6OY/fp6YEm4QdQIgYRKpfWNjqhqEaLuST/Dh0EXBAuG45MKxGR4iznKyVd8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128358796},"main":"dist/index.js","type":"module","_from":"file:/tmp/jh-929-pack/johns-harness-2026.9.29.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/jh-929-pack/johns-harness-2026.9.29.tgz","_integrity":"sha512-WkHy0a6kqahCJLIoCsGojTdODA0O/0GyiKPJlxR3XiH6BLXjryLqQOQCJiNkjPx13M349vmxKdz57Ww9aZFrzA==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.29_1789579255589_0.808505623588069","host":"s3://npm-registry-packages-npm-production"}},"2026.9.30":{"name":"johns-harness","version":"2026.9.30","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.30","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"822255d9f36dd8a670a3c47160535a68458df633","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.30.tgz","fileCount":7492,"integrity":"sha512-UjAphYWxsF1DODG4vph/aoHDS9yK1h9nO0ZuO/Zrx8ILZXVo1lDnGRnrta6WxXxmvkQS72bG6iCKLu3gdIGn1g==","signatures":[{"sig":"MEUCIQC2FTWQwfhgr9sPLUK8zem/2Qx5llVerSzEZZzcdRimQgIgUfGiOldSslbyluTb8v17fC6hs+BkWXuh1hBZBMiG4GU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDof/UgNpk0snS7+7HDA9wvP/1F7USduM2/6xTxBUisewIhAOQVYXvDs2W1eX9+JlmNcjwdKDy1YpALSm+WEKkxlwqU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128371839},"main":"dist/index.js","type":"module","_from":"file:/tmp/harness-audit-20260920/johns-harness-2026.9.30.tgz","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"_resolved":"/tmp/harness-audit-20260920/johns-harness-2026.9.30.tgz","_integrity":"sha512-UjAphYWxsF1DODG4vph/aoHDS9yK1h9nO0ZuO/Zrx8ILZXVo1lDnGRnrta6WxXxmvkQS72bG6iCKLu3gdIGn1g==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.30_1789901177397_0.4288050524993192","host":"s3://npm-registry-packages-npm-production"}},"2026.9.31":{"name":"johns-harness","version":"2026.9.31","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.31","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"dee338bc22f7a24a8b6a7f3d677e56b12da5dde5","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.31.tgz","fileCount":7492,"integrity":"sha512-RHpl1GDFA5d4upleARjpbBRJ0UXfn2p+r/jTku+23y9slEikvEyToR8ZQgD3+ZgmSmitgunPDgBBoGg3L7/QxA==","signatures":[{"sig":"MEYCIQC566Qw5S72/siEj7p0m7WQSrk2X6auL5pH84mkwrwaggIhAINo/Lt5uzEn/2q8TAwvqei5EBOUE6mwDWi0zYdb8ai4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBam9govpyG9IfyEKR+O20jJJmsPdt497AkjCxFEV3fvAiEAybeovXPbizqUB+QDwgrYElquHCsU8dacm/l+qoRKpGI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128381385},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"86105422630b76f4ca675702dbbb2e3c7831efa7","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.31_1790186801802_0.0320821046273414","host":"s3://npm-registry-packages-npm-production"}},"2026.9.32":{"name":"johns-harness","version":"2026.9.32","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.32","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"577bce5cb3924e2723790102387ed20db9091a3d","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.32.tgz","fileCount":7492,"integrity":"sha512-VhBJC/3GD4YB1EUU36Ro4lipSjwGdtU+kUL2mWPvX+j3nAP51wFQVEyEX4jBeL0hrazRTz1FXYu4fl0Suy9O8g==","signatures":[{"sig":"MEQCIFpXSAeKRT0JAoHgm5ncYu2PjxU8RoJAWPU7cshjXS/dAiBe88rhOZTEThx8O5HydANP0bRlhAXsvPwHT/pXTwF0sw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDtnr7AGnouwK5vhJSuW3PP5MPcWUfaaLILn1y8nasC4AiEAtuQRVzP999fXqUq/VF/N08su58yZn8IGDXsdKrpj+Vw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128455069},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"661e046efe587f39910e6dba1ea405a2d0225cf4","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.32_1790192648392_0.691101326004089","host":"s3://npm-registry-packages-npm-production"}},"2026.9.33":{"name":"johns-harness","version":"2026.9.33","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","_id":"johns-harness@2026.9.33","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"homepage":"https://github.com/John-Rood/johns-harness#readme","bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"bin":{"johnness":"johnness.mjs"},"dist":{"shasum":"46c5a90e449641e59adeefcc2f9b294553b2374c","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.33.tgz","fileCount":7492,"integrity":"sha512-mkkd2AkNrDw3ZAe/f5WQyn1AP5WAhEcFpXwxZvqtnZ/VIYZv85k/qpJKP9jj6eWrhRmf316r+i/Bw9SUmI/ORw==","signatures":[{"sig":"MEUCIHIVYr/AAm9E+/aOllcyrTiTmfU35LspUOAKZQL3vM97AiEAs5aFdG+rOI7pvggNt/dULXsG6HdXDz3ZeGX0C/GHhos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCFsD3die+WPtETpwVsRv1mgsnWD+JkoXHIL13N3HF0AgIhALf8o7vW3AMR2kmZ5X5bLPgXe2rHRCIH30r6FqKlJOPY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":128459251},"main":"dist/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"gitHead":"c589db5a47e6268c34a6d1d5fa87dc0e7e064df8","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/johns-harness_2026.9.33_1790209493042_0.5504782024742718","host":"s3://npm-registry-packages-npm-production"}},"2026.9.34":{"_id":"johns-harness@2026.9.34","bin":{"johnness":"johnness.mjs"},"bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"dist":{"shasum":"7c85654ff03e0961fb781a8a7e3cc455f1a3959e","tarball":"https://registry.npmjs.org/johns-harness/-/johns-harness-2026.9.34.tgz","fileCount":7492,"integrity":"sha512-PdNOejVlx7eVXleQD+gsBUO5rh2wS23zuVQnLtlEUYqE6SHCtThJu0iqlsKNLsFOSNAIeRL0KjsDrovtF25h0Q==","signatures":[{"sig":"MEQCICzbzrkvP6OYwb80c58qbkqdlywt9mQmctY3/dbpQ7n6AiA4/eCerlVNiYZg+rh5xnAbjwTTV+K9aSzxboWFjqfwMA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE5LTR7q19mPaCG38JjSAf7K3waFLBzyS/DZWCFWOBj1AiBF5bYw1MzG7NkoyAfACG6CcDb/E/YkUHQL1d4eE8K5Rg=="}],"unpackedSize":128487949},"main":"dist/index.js","name":"johns-harness","type":"module","_from":"file:johns-harness-2026.9.34.tgz","author":{"name":"John Rood","email":"john@johnrood.com"},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/index.js","./cli-entry":"./johnness.mjs","./plugin-sdk":{"types":"./dist/plugin-sdk/index.d.ts","default":"./dist/plugin-sdk/index.js"},"./plugin-sdk/irc":{"types":"./dist/plugin-sdk/irc.d.ts","default":"./dist/plugin-sdk/irc.js"},"./plugin-sdk/acpx":{"types":"./dist/plugin-sdk/acpx.d.ts","default":"./dist/plugin-sdk/acpx.js"},"./plugin-sdk/core":{"types":"./dist/plugin-sdk/core.d.ts","default":"./dist/plugin-sdk/core.js"},"./plugin-sdk/line":{"types":"./dist/plugin-sdk/line.d.ts","default":"./dist/plugin-sdk/line.js"},"./plugin-sdk/tlon":{"types":"./dist/plugin-sdk/tlon.d.ts","default":"./dist/plugin-sdk/tlon.js"},"./plugin-sdk/zalo":{"types":"./dist/plugin-sdk/zalo.d.ts","default":"./dist/plugin-sdk/zalo.js"},"./plugin-sdk/diffs":{"types":"./dist/plugin-sdk/diffs.d.ts","default":"./dist/plugin-sdk/diffs.js"},"./plugin-sdk/nostr":{"types":"./dist/plugin-sdk/nostr.d.ts","default":"./dist/plugin-sdk/nostr.js"},"./plugin-sdk/slack":{"types":"./dist/plugin-sdk/slack.d.ts","default":"./dist/plugin-sdk/slack.js"},"./plugin-sdk/compat":{"types":"./dist/plugin-sdk/compat.d.ts","default":"./dist/plugin-sdk/compat.js"},"./plugin-sdk/feishu":{"types":"./dist/plugin-sdk/feishu.d.ts","default":"./dist/plugin-sdk/feishu.js"},"./plugin-sdk/matrix":{"types":"./dist/plugin-sdk/matrix.d.ts","default":"./dist/plugin-sdk/matrix.js"},"./plugin-sdk/signal":{"types":"./dist/plugin-sdk/signal.d.ts","default":"./dist/plugin-sdk/signal.js"},"./plugin-sdk/twitch":{"types":"./dist/plugin-sdk/twitch.d.ts","default":"./dist/plugin-sdk/twitch.js"},"./plugin-sdk/discord":{"types":"./dist/plugin-sdk/discord.d.ts","default":"./dist/plugin-sdk/discord.js"},"./plugin-sdk/lobster":{"types":"./dist/plugin-sdk/lobster.d.ts","default":"./dist/plugin-sdk/lobster.js"},"./plugin-sdk/msteams":{"types":"./dist/plugin-sdk/msteams.d.ts","default":"./dist/plugin-sdk/msteams.js"},"./plugin-sdk/imessage":{"types":"./dist/plugin-sdk/imessage.d.ts","default":"./dist/plugin-sdk/imessage.js"},"./plugin-sdk/llm-task":{"types":"./dist/plugin-sdk/llm-task.d.ts","default":"./dist/plugin-sdk/llm-task.js"},"./plugin-sdk/telegram":{"types":"./dist/plugin-sdk/telegram.d.ts","default":"./dist/plugin-sdk/telegram.js"},"./plugin-sdk/whatsapp":{"types":"./dist/plugin-sdk/whatsapp.d.ts","default":"./dist/plugin-sdk/whatsapp.js"},"./plugin-sdk/zalouser":{"types":"./dist/plugin-sdk/zalouser.d.ts","default":"./dist/plugin-sdk/zalouser.js"},"./plugin-sdk/account-id":{"types":"./dist/plugin-sdk/account-id.d.ts","default":"./dist/plugin-sdk/account-id.js"},"./plugin-sdk/googlechat":{"types":"./dist/plugin-sdk/googlechat.d.ts","default":"./dist/plugin-sdk/googlechat.js"},"./plugin-sdk/mattermost":{"types":"./dist/plugin-sdk/mattermost.d.ts","default":"./dist/plugin-sdk/mattermost.js"},"./plugin-sdk/open-prose":{"types":"./dist/plugin-sdk/open-prose.d.ts","default":"./dist/plugin-sdk/open-prose.js"},"./plugin-sdk/talk-voice":{"types":"./dist/plugin-sdk/talk-voice.d.ts","default":"./dist/plugin-sdk/talk-voice.js"},"./plugin-sdk/test-utils":{"types":"./dist/plugin-sdk/test-utils.d.ts","default":"./dist/plugin-sdk/test-utils.js"},"./plugin-sdk/voice-call":{"types":"./dist/plugin-sdk/voice-call.d.ts","default":"./dist/plugin-sdk/voice-call.js"},"./plugin-sdk/bluebubbles":{"types":"./dist/plugin-sdk/bluebubbles.d.ts","default":"./dist/plugin-sdk/bluebubbles.js"},"./plugin-sdk/device-pair":{"types":"./dist/plugin-sdk/device-pair.d.ts","default":"./dist/plugin-sdk/device-pair.js"},"./plugin-sdk/memory-core":{"types":"./dist/plugin-sdk/memory-core.d.ts","default":"./dist/plugin-sdk/memory-core.js"},"./plugin-sdk/copilot-proxy":{"types":"./dist/plugin-sdk/copilot-proxy.d.ts","default":"./dist/plugin-sdk/copilot-proxy.js"},"./plugin-sdk/phone-control":{"types":"./dist/plugin-sdk/phone-control.d.ts","default":"./dist/plugin-sdk/phone-control.js"},"./plugin-sdk/synology-chat":{"types":"./dist/plugin-sdk/synology-chat.d.ts","default":"./dist/plugin-sdk/synology-chat.js"},"./plugin-sdk/memory-lancedb":{"types":"./dist/plugin-sdk/memory-lancedb.d.ts","default":"./dist/plugin-sdk/memory-lancedb.js"},"./plugin-sdk/nextcloud-talk":{"types":"./dist/plugin-sdk/nextcloud-talk.d.ts","default":"./dist/plugin-sdk/nextcloud-talk.js"},"./plugin-sdk/diagnostics-otel":{"types":"./dist/plugin-sdk/diagnostics-otel.d.ts","default":"./dist/plugin-sdk/diagnostics-otel.js"},"./plugin-sdk/qwen-portal-auth":{"types":"./dist/plugin-sdk/qwen-portal-auth.d.ts","default":"./dist/plugin-sdk/qwen-portal-auth.js"},"./plugin-sdk/thread-ownership":{"types":"./dist/plugin-sdk/thread-ownership.d.ts","default":"./dist/plugin-sdk/thread-ownership.js"},"./plugin-sdk/keyed-async-queue":{"types":"./dist/plugin-sdk/keyed-async-queue.d.ts","default":"./dist/plugin-sdk/keyed-async-queue.js"},"./plugin-sdk/minimax-portal-auth":{"types":"./dist/plugin-sdk/minimax-portal-auth.d.ts","default":"./dist/plugin-sdk/minimax-portal-auth.js"},"./plugin-sdk/google-gemini-cli-auth":{"types":"./dist/plugin-sdk/google-gemini-cli-auth.d.ts","default":"./dist/plugin-sdk/google-gemini-cli-auth.js"}},"license":"MIT","scripts":{"test":"node --test tests/*.test.mjs","start":"node johnness.mjs","prepack":"node scripts/postinstall.mjs 1>&2","postinstall":"node scripts/postinstall.mjs"},"version":"2026.9.34","_npmUser":{"name":"johnrood","email":"roodbiz@gmail.com"},"homepage":"https://github.com/John-Rood/johns-harness#readme","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"_resolved":"/private/tmp/f80-pack2/johns-harness-2026.9.34.tgz","_integrity":"sha512-PdNOejVlx7eVXleQD+gsBUO5rh2wS23zuVQnLtlEUYqE6SHCtThJu0iqlsKNLsFOSNAIeRL0KjsDrovtF25h0Q==","repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"_npmVersion":"11.8.0","description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","directories":{"doc":"docs","test":"test"},"maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"_nodeVersion":"25.5.0","dependencies":{"ws":"^8.19.0","ajv":"^8.18.0","tar":"7.5.10","zod":"^4.3.6","diff":"^8.0.2","glob":"^13.0.1","jiti":"^2.6.1","long":"^5.3.2","yaml":"^2.8.2","chalk":"^5.6.2","json5":"^2.2.3","jszip":"^3.10.1","sharp":"^0.34.5","tslog":"^4.10.2","croner":"^10.0.1","dotenv":"^17.3.1","grammy":"^1.41.1","ignore":"^7.0.5","marked":"^15.0.12","openai":"6.10.0","undici":"^7.22.0","express":"^5.2.1","mammoth":"^1.8.0","chokidar":"^5.0.0","linkedom":"^0.18.12","commander":"^14.0.3","file-type":"^21.3.0","ipaddr.js":"^2.3.0","minimatch":"^10.2.3","mr-memory":"3.13.2","mime-types":"^3.0.1","opusscript":"^0.1.1","sqlite-vec":"0.1.7-alpha.2","strip-ansi":"^7.2.0","@slack/bolt":"^4.6.0","@types/node":"^25.0.9","ajv-formats":"^3.0.1","extract-zip":"^2.0.1","markdown-it":"^14.1.1","proxy-agent":"^6.5.0","osc-progress":"^0.3.0","partial-json":"^0.1.7","@buape/carbon":"0.0.0-beta-20260216184201","@google/genai":"^1.40.0","@line/bot-sdk":"^10.6.0","cli-highlight":"^2.1.11","node-edge-tts":"^1.2.10","@clack/prompts":"^1.1.0","@slack/web-api":"^7.14.1","hosted-git-info":"^9.0.2","playwright-core":"1.58.2","proper-lockfile":"^4.1.2","qrcode-terminal":"^0.12.0","@discordjs/voice":"^0.19.0","@grammyjs/runner":"^2.0.3","@homebridge/ciao":"^1.3.5","@lydell/node-pty":"1.2.0-beta.3","@anthropic-ai/sdk":"^0.73.0","@sinclair/typebox":"0.34.48","@types/mime-types":"^2.1.4","discord-api-types":"^0.38.41","https-proxy-agent":"^7.0.6","@mariozechner/jiti":"^2.6.2","zod-to-json-schema":"^3.24.6","@mariozechner/pi-ai":"0.55.3","@mariozechner/pi-tui":"0.55.3","@mozilla/readability":"^0.6.0","get-east-asian-width":"^1.3.0","@aws-sdk/client-bedrock":"^3.1004.0","@whiskeysockets/baileys":"7.0.0-rc.9","@agentclientprotocol/sdk":"0.15.0","@silvia-odwyer/photon-node":"^0.3.4","@mariozechner/pi-agent-core":"0.55.3","@mariozechner/pi-coding-agent":"0.55.3","@aws-sdk/client-bedrock-runtime":"^3.983.0","@grammyjs/transformer-throttler":"^1.2.1"},"_hasShrinkwrap":false,"peerDependencies":{"koffi":"^2.9.0","pdf-parse":"^1.1.1","pdfjs-dist":"^5.5.207","node-llama-cpp":"^3.16.2","@napi-rs/canvas":"^0.1.89"},"bundleDependencies":["@buape/carbon","@mariozechner/pi-ai","@mariozechner/pi-tui","mr-memory","@mariozechner/pi-agent-core","@mariozechner/pi-coding-agent"],"optionalDependencies":{"@types/ws":"8.18.1","@types/bun":"1.3.9","@hono/node-server":"1.19.9"},"peerDependenciesMeta":{"koffi":{"optional":true},"pdf-parse":{"optional":true},"pdfjs-dist":{"optional":true},"node-llama-cpp":{"optional":true},"@napi-rs/canvas":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/johns-harness_2026.9.34_1790265562317_0.4868862400597278"}}},"time":{"created":"2026-09-08T07:10:59.002Z","modified":"2026-09-24T15:59:23.073Z","2026.9.8":"2026-09-08T07:10:59.865Z","2026.9.10":"2026-09-10T22:38:28.604Z","2026.9.11":"2026-09-11T00:48:55.170Z","2026.9.12":"2026-09-11T02:05:18.504Z","2026.9.13":"2026-09-11T10:42:23.811Z","2026.9.14":"2026-09-12T05:53:48.081Z","2026.9.15":"2026-09-12T06:34:37.516Z","2026.9.16":"2026-09-12T10:50:28.712Z","2026.9.17":"2026-09-12T21:19:07.511Z","2026.9.18":"2026-09-12T23:12:24.791Z","2026.9.19":"2026-09-12T23:52:02.656Z","2026.9.20":"2026-09-13T22:12:24.774Z","2026.9.21-extended.1":"2026-09-14T01:33:23.806Z","2026.9.22":"2026-09-14T03:00:08.179Z","2026.9.23":"2026-09-14T08:07:07.992Z","2026.9.24":"2026-09-14T22:48:50.601Z","2026.9.25":"2026-09-14T23:25:38.657Z","2026.9.26":"2026-09-15T01:08:06.834Z","2026.9.27":"2026-09-15T06:28:23.262Z","2026.9.28":"2026-09-16T17:01:31.129Z","2026.9.29":"2026-09-16T17:20:56.291Z","2026.9.30":"2026-09-20T10:46:17.943Z","2026.9.31":"2026-09-23T18:06:42.307Z","2026.9.32":"2026-09-23T19:44:08.943Z","2026.9.33":"2026-09-24T00:24:53.571Z","2026.9.34":"2026-09-24T15:59:22.900Z"},"bugs":{"url":"https://github.com/John-Rood/johns-harness/issues"},"author":{"name":"John Rood","email":"john@johnrood.com"},"license":"MIT","homepage":"https://github.com/John-Rood/johns-harness#readme","keywords":["ai-agents","agent-harness","swarm","coding-agents","memory","gateway","cli"],"repository":{"url":"git+https://github.com/John-Rood/johns-harness.git","type":"git"},"description":"John's Harness: a production agent harness that runs autonomous coding agents as one cooperative swarm.","maintainers":[{"name":"johnrood","email":"roodbiz@gmail.com"}],"readme":"# John's Harness\n\n**Run a fleet of autonomous coding agents as one cooperative swarm.**\n\n[![npm version](https://img.shields.io/npm/v/johns-harness)](https://www.npmjs.com/package/johns-harness)\n[![license: MIT](https://img.shields.io/badge/license-MIT-blue)](LICENSE)\n[![node >=22.12](https://img.shields.io/badge/node-%3E%3D22.12-brightgreen)](package.json)\n\n![A collective of AI agents working one codebase together](docs/images/swarm-collective.png)\n\nJohn's Harness is a production agent harness for engineers who run more than one coding agent at a time. Agents work the same repositories at once, coordinate through a durable board keyed by git origin, message each other while they run, and ship only through an exact-head push gate with per-commit production authority. Memory persists across sessions and compaction and is shared by every agent in the swarm. Launching a swarm takes one command and a number; the members divide the work among themselves.\n\n## Migrating from OpenClaw\nBring your agents, memory, credentials, and scheduled jobs into John's Harness.\n```sh\nnpm i -g johns-harness && johnness migrate\n```\nPreparation backs up offline state, creates `~/.johnness`, rewrites settings, and verifies the result. It does not change services; `--force` is a nonactivating live-snapshot rehearsal only.\nOn macOS, review attention items, then use `johnness migrate --cutover --to ~/.johnness --yes`. The detached completer registers a gated native LaunchAgent before stopping the exact selected old job, then requires supervisor, listener PID and HTTP health agreement.\nInterrupted cutovers resume forward with `johnness migrate --resume --to ~/.johnness`. Every CLI entrypoint reports an incomplete journal. No service cutover rolls back or deletes the old plist/state.\nPreview without writes using `--dry-run`. See [migration cutover](docs/MIGRATION-CUTOVER.md) for ownership requirements, limitations and recovery.\n\n## Quick start\n\nRequires Node 22.12 or newer.\n\n```bash\nnpm install -g johns-harness\njohnness onboard\njohnness memory mk_your_key\n```\n\nThe package is `johns-harness`; the command it installs is `johnness`.\n\nThe wizard sets up credentials, workspace, gateway, and channels. It asks for your MemoryRouter API key and links to [signup](https://app.memoryrouter.ai/signup), free to start. If you skip memory in the wizard, the third line stores the key later.\n\n### First run\n\n| Step | Command | What happens |\n| --- | --- | --- |\n| Install | `npm install -g johns-harness` | Installs the CLI, the runtime, and the default memory plugin. A postinstall step applies the patched dependency files. |\n| Configure | `johnness onboard` | Interactive wizard for gateway, workspace, and skills. `johnness configure` reopens it later. |\n| Memory | `johnness memory mk_your_key` | Turns on persistent memory. The plugin is already installed and enabled. |\n| Start | `johnness gateway start` | Starts the gateway as a background service. `johnness gateway run` keeps it in the foreground. |\n| Connect | `johnness channels add --channel telegram --token \"<bot token>\"` | Connects a chat channel. Discord, Slack, WhatsApp, Signal, iMessage, Matrix, and more are supported. |\n| Check | `johnness doctor` | Health checks and quick fixes for the gateway and channels. |\n\n<!-- JOHNNESS_PATCH_DEVICE_LOGIN_60B -->\n### Signing in from chat\nOwners and allowlisted senders can send `/login` (or `/relogin`) in Telegram, Discord, or another chat channel.\nOpen the link, sign in to ChatGPT if asked, then enter the device code on the same page and tap Approve. In Telegram, tap the code to copy it.\nEnable \"Device code authorization for Codex\" once in chatgpt.com > Settings > Security; if it was disabled, send `/login` again for a fresh code.\nFor headless installs, run `johnness models auth login --device`; no browser or localhost callback needed.\nExpired ChatGPT credentials trigger an owner notice with the `/login` recovery command.\n\n<!-- JOHNNESS_PATCH_DEFAULTS_61 -->\n### Batteries included\nThe harness ships the current model catalog and the short aliases `opus`, `sonnet`, `fable`, `astra`, `sol`, `luna`, `terra`, `gpt`, `grok`, `flash`, `banana`, `image`, `deepseek`, `deepseek-pro`, `muse`, and `gemini-lite`, so `/model opus` works on a fresh install with no `models.providers` block. Channels you configure load without a `plugins.allow` list; only an explicit `enabled: false` or `plugins.deny` turns one off. Updating the harness updates the catalog and aliases for every agent. Any `openai-codex/<model>` primary that hits its ChatGPT usage limit fails over to `openai/<model>` on the API key first, then to your configured fallbacks, with no config (the sibling is skipped when no OpenAI API key is present). Image generation and editing use GPT Image 2 through the `image_generate` tool: `openai-codex/gpt-image-2` on the ChatGPT subscription first, `openai/gpt-image-2` on the API key second (`agents.defaults.imageGenerationModel`). Nano Banana Pro (`google/gemini-3-pro-image-preview`) ships in the catalog as a selectable image model, reachable with `model: \"nano-banana\"` and its own `aspectRatio` option; the default stays GPT Image 2 because the subscription path costs nothing.\n\n**The alias contract.** Every shipped alias points at the newest model in its line, so an install or an `/update` moves every agent forward with zero per-instance config. Your own `agents.defaults.models[*].alias` entries are still consulted first and still win. Every catalog bump must move the matching alias; the verifier fails the release if it does not. `/model deepseek` always selects the newest DeepSeek model (currently V4.1 Flash); `deepseek-pro` the newest Pro.\n\n### Updating from chat\nSend `/update` to install the newest `johns-harness` on the machine the gateway runs on and restart into it; `/update 2026.9.14` pins an exact version. Owner only. The reply names the current and target versions, a second `/update` while one is running is refused, and the first message after the restart confirms the running version. On a writable host the package is reinstalled into the existing global prefix. On an immutable image with a persistent volume (Fly), it is installed into `$JOHNNESS_STATE_DIR/runtime/johnness` and the entrypoint prefers that runtime when it is newer than the image: `exec node \"$(node /opt/johnness/lib/node_modules/johns-harness/dist/runtime-path.js)\" gateway run`. `JOHNNESS_UPDATE_PREFIX` overrides the target. On failure the reply carries the last lines of npm output and the one command that fixes it.\n\n### Optional local engines\n\nThe default install stays lean. Remote embeddings, hosted PDF understanding, chat, channels, tools, memory, and swarms do not need local embedding or PDF engines. Opt in when you use local extraction:\n\n```bash\nnpm i -g node-llama-cpp   # local embeddings\nnpm i -g pdfjs-dist@5.5.207 @napi-rs/canvas@0.1.89 pdf-parse@1.1.1  # local PDF text and images\nnpm i -g koffi            # Windows enhanced terminal input only\n```\n\nUse the same npm prefix as `johns-harness` (add the same `--prefix /path` to those commands). Missing local engines return the install command, not a startup failure. `pdf-parse` is pinned to its callable v1 API used by memory uploads. Production dependency source maps are removed after install; set `JOHNNESS_KEEP_SOURCEMAPS=1` during installation to keep dependency maps for debugging. No `--omit=optional` or `--omit=peer` flag is needed for the slim default.\n\n### From source\n\n```bash\ngit clone https://github.com/John-Rood/johns-harness.git\ncd johns-harness && npm install\nnode johnness.mjs --help\n```\n\n### Verify\n\n```bash\nnpm test                        # 992 tests against the installed dependency tree\nbash scripts/verify-patches.sh  # 468 checks across every patch family\n```\n\n## Launch a swarm with one command\n\nOne call, one number. The orchestrator writes a single directive and chooses how many agents should work it. The members decide everything else.\n\n```\nswarm_spawn({\n  directive: \"<the whole briefing: goal, scope, forbidden files, push rules, author identity>\",\n  count: 12,\n  coord: { root: \"/abs/path/to/repo\", branch: \"main\", prodAuthorized: false },\n  model: \"anthropic/claude-fable-5-1\"      // optional, applies to every member\n})\n```\n\n![One command launches a hundred agents that fan out over a codebase and pick up work from a shared board](docs/images/swarm-spawn.png)\n\nEvery member receives the same directive plus a short runtime preamble that carries the protocol. Nobody hands out work.\n\nThe lowest-numbered live member decomposes the directive into work items on the shared board. The post is a compare-and-swap, so exactly one plan exists no matter how many members arrive at the same moment; the rest wait for it rather than poll.\n\nEach member claims one open item atomically, works it, pushes, marks it done or failed, and claims the next. A claim is exactly one winner, even under concurrent attempts.\n\nClaims carry a 15 minute lease that heartbeats extend. A lease that lapses reopens the item the moment anyone looks at the board, so a dead member never strands its work.\n\nWhen work reveals more items, any member appends them to the plan and the addition wakes the others through their inboxes. Members message each other directly only for a real dependency, and each records how the swarm coordinated so the next one starts smarter.\n\nThe preamble also carries the operating protocol as defaults with named exceptions: the planner declares the shape of the work, one integrator merges parallel branches and builds and pushes once so parallel work flows into a single sequential step, one gateway or a shared budget fronts each rate-limited host, and done means done. Members ask a service holder with a durable request and wait on the answer without polling.\n\nPer-member announces are suppressed. When the last member finishes, one `swarm finished` rollup arrives with every item, its owner, its pushed head, and its summary.\n\n`count` runs from 2 to 100. Members beyond the concurrency limit are queued and start as slots free, and `swarm_status` reads a swarm's progress without interrupting anyone. Members are ordinary agents: same depth rules, same push preflight, same per-commit production authority, no force pushes.\n\nFull guide, including the preamble members receive and the work item state machine: [`docs/SWARM.md`](docs/SWARM.md).\n\n## The problem\n\nCoding agents today run as isolated processes. Two agents on the same repository have no shared state, no way to talk to each other mid-task, and no gate between a dirty local branch and production. Once a context window compacts, whatever the agent knew is gone.\n\n## What makes it different\n\n- **A swarm, not a pile of agents.** One coordination board per repository, direct agent-to-agent messages delivered inside a busy agent's run, exclusive claims on shared areas, a push preflight that blocks stale, forced, broad, and unauthorized pushes, and `swarm_spawn`, which launches up to 100 agents from one directive in a single call.\n- **Memory built for production.** Tiered recall that traces from consolidated reflections down to the verbatim record, surviving compaction and shared across the swarm. Installed and enabled by default.\n- **Production authority per commit.** Promotion is granted to an exact SHA, never to a branch name, so one worker's authorization never covers another worker's commits.\n- **An append-only action log.** Agents record every consequential action to `ACTION_LOG.md` and read it before acting.\n- **A fixed runtime surface.** The core does not grow on a schedule. New mechanisms enter only to solve a demonstrated production failure, one narrow, tested, reversible patch at a time: 76 patch families, each with a regression test and an explicit recovery path.\n- **Reliability with a definition.** Bounded retries, explicit failure states, exact-once continuation, context-pressure recovery, durable delivery, and supervised gateway recovery.\n- **Coding first, phone optional.** Direct the work at a high level from a chat channel while agents plan, implement, test, coordinate, and stage releases unattended.\n- **Local voice.** Optional native Whisper transcription of inbound audio, entirely on your machine. Off by default. [Setup](docs/NATIVE-WHISPER-MUSE.md).\n\n## How it works\n\n![Swarm architecture: agents message each other mid-run over a shared board keyed by the git repository](docs/images/swarm-mesh.png)\n\nAgents talk to each other laterally, not through the orchestrator. Every clone of a repository lands on the same board, and memory sits beside the swarm as shared infrastructure.\n\n| Stage | Mechanism | Guarantee |\n| --- | --- | --- |\n| 1. Spawn | The orchestrator starts agents with `repo`, `branch`, `areas`, and `prodAuthorized` attached, then steps back. | Work is divided once; the orchestrator is not a traffic hub. |\n| 2. Claim | Each agent takes an exclusive claim on the areas it will touch, recorded on a board keyed by normalized git origin. | Two agents never silently edit the same surface. |\n| 3. Work | Agents post progress, exact heads, and pushed or blocked state to the board as they go. | The record outlives a busy or departed sibling. |\n| 4. Message | A message to a busy sibling is delivered between tool steps, in its active run, with no restart. Receipts read `queued`, `delivered`, or `replied`. | Late instructions land before the run finishes, through a sealed pre-completion drain. |\n| 5. Push gate | Preflight compares the exact local head against a freshly fetched remote before any push. | Stale, forced, broad, and unauthorized pushes are blocked; a sibling's published head is integrated, never overwritten. |\n| 6. Production | Promotion is authorized per exact commit SHA. | Authorization to ship one change never covers commits riding along with it. |\n\n## Swarm\n\nAgents sharing a filesystem are not a swarm. A swarm knows who owns which work, exchanges instructions while the work is in flight, and reconciles changes before anything is pushed. John's Harness puts that coordination in the runtime, not in a prompt.\n\n**One board per repository.** The board is durable and keyed by normalized git origin. It records claims, progress, exact heads, pushed and blocked work, production authority, and messages.\n\n**Messages land inside the active run.** Siblings message each other directly, scoped to the repository, with no reach into unrelated sessions. Waiting is reported as waiting, never as a timeout.\n\n**Every push clears a gate.** The preflight blocks stale pushes, force pushes, broad pushes, and pushes that carry another worker's unauthorized commits.\n\n**Production authority belongs to a commit.** Never to a branch name or a timestamp.\n\n**One directive, one number.** `swarm_spawn` launches up to 100 members from the same briefing and they divide the work themselves. See the launch section near the top of this page and the [swarm guide](docs/SWARM.md).\n\n## Memory\n\nRun `johnness memory mk_your_key` to set your MemoryRouter API key and start persistent memory, or enter it during onboarding.\n\nThe future of AI is not smarter models. It is models with the right context: what is happening, what happened before, and what matters now.\n\nAn agent in this harness remembers what it was told yesterday, the decision it made last Tuesday, the fix it tried that did not work, and why. That context persists across sessions and survives compaction. It does not live and die inside one context window.\n\n| Capability | How it works |\n| --- | --- |\n| Tiered, traceable recall | Raw verbatim memories at the bottom, reflections of specific events above them, consolidated reflections on top. Any high-level memory drills back to its exact source. |\n| Time-window and semantic recall | \"What happened last week\" and \"find the decision about X\" both work. |\n| Reflect, then commit | Consolidation checks out a batch, writes reflections, and changes nothing until commit. Memory is never silently rewritten. |\n| Shared across the swarm | Every agent reads from the same memory. Context one agent earned is available to the next. |\n\nThe implementation is [mr-memory](https://www.npmjs.com/package/mr-memory), installed and enabled as the default memory plugin. The one requirement is a MemoryRouter API key from [memoryrouter.ai](https://memoryrouter.ai). Behind the key is an effectively infinite memory space, sharded across distributed A100s on cloud edge compute: years of memory, added to every day, available in an instant.\n\n## Action log\n\nAgents append every consequential action to `ACTION_LOG.md` at the workspace root and read it before acting. What shipped, what was sent, and what changed stays on disk for the next decision, in this session or the next.\n\nThe log is a [`RULES.md`](RULES.md) workspace convention enforced through the activity-logging skill and paired with the daily log. It records outcomes, not busywork.\n\n## Design principles\n\n**Simplicity by design.** Fewer features, fewer failure surfaces. The core is fixed and does not take on features for their own sake; a mechanism is added only to solve a demonstrated problem, and every addition is narrow, tested, documented, and independently reversible. A runtime that changes only when production demands it is a runtime you can reason about at 3 a.m.\n\n**Reliability and durability.** Bounded retries, explicit failure states, exact-once continuation, context-pressure recovery, durable delivery, supervised gateway recovery, and tests that run against the package and its installed dependencies.\n\n**Coding first.** The harness works as a companion, but it is built for autonomous coding: plan, inspect repositories, implement, test, coordinate with peers, stage through staging-first git, and ship through pipeline-only deployment paths. The step beyond a single coding session is an engineering operation that keeps working while you are away from the keyboard.\n\n## Patch families\n\nThe runtime carries 76 patch families plus the 65.1 safe-update amendment. Each is a production fix applied at the source with a regression test, a durable patch marker, and an explicit recovery path. A verifier runs 468 checks against the package tree and installed dependencies, and 992 tests run against the installed dependency tree.\n\nEvery family follows the same six steps: reproduce the failure, trace the exact runtime path, make the smallest source-level change that restores the invariant, add a regression test and a patch marker, run the verifier, and retain rollback artifacts. The full index: [`docs/PATCHES.md`](docs/PATCHES.md).\n\n## Configuration\n\n| Item | Detail |\n| --- | --- |\n| Node | `>=22.12.0` (from `package.json` `engines`) |\n| State directory | `~/.johnness` holds config, credentials, sessions, and the workspace |\n| `--profile <name>` | Isolates state under `~/.johnness-<name>` so several installs coexist on one machine |\n| `--dev` | Dev profile under `~/.johnness-dev` with its own gateway port and shifted derived ports |\n| Rules | [`RULES.md`](RULES.md) ships 19 operating-policy sections injected on every call. Fill in the placeholders; keep long procedures in skills. |\n| Orchestrator skill | Bundled and loaded implicitly on every install. Decide whether to pass the user's words through or expand them, then keep the briefing brief. Override with a workspace `skills/orchestrator/SKILL.md`. |\n| Bundled generic skills | Eight generic skills ship in `skills/` and load by description match: `code-ops`, `web-research`, `plan-archival`, `todos`, `arch-viz`, `gcp-logs`, `activity-logging`, `outlook`. Workspace copies override; `enabled: false` and `allowBundled` still apply. |\n\n## Documentation\n\n- [`docs/index.md`](docs/index.md): runtime docs, from gateway and channels to plugins, nodes, and CLI reference.\n- [`docs/PATCHES.md`](docs/PATCHES.md): the 76 patch families, one record each.\n- [`docs/NATIVE-WHISPER-MUSE.md`](docs/NATIVE-WHISPER-MUSE.md): local Whisper transcription setup.\n- [`RULES.md`](RULES.md): the default operating rules, including Rule Zero on production authorization.\n\n## Contributing\n\nIssues and pull requests are welcome. Run `npm test` and `bash scripts/verify-patches.sh` before opening a PR. One narrow, tested, reversible patch per change; fixes come with a regression test and a rollback path.\n\n## License\n\nMIT. See [`LICENSE`](LICENSE).\n","readmeFilename":"README.md"}