{"_id":"@animalabs/tavern-mcpl","_rev":"3-0dfd8fd3f2e842c63451995a48770706","name":"@animalabs/tavern-mcpl","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@animalabs/tavern-mcpl","version":"0.1.0","_id":"@animalabs/tavern-mcpl@0.1.0","maintainers":[{"name":"antra_tessera","email":"antra@animalabs.ai"},{"name":"luxiasl","email":"mail.luxia@gmail.com"},{"name":"antra-tessera","email":"antra@tesserae.cc"},{"name":"tengro","email":"tengro@gmail.com"},{"name":"anarchid","email":"annarhiid@proton.me"}],"homepage":"https://github.com/anima-research/tavern-mcpl#readme","bugs":{"url":"https://github.com/anima-research/tavern-mcpl/issues"},"dist":{"shasum":"e398da7aa50bfa376e35b91fc8b6ce5e64ece412","tarball":"https://registry.npmjs.org/@animalabs/tavern-mcpl/-/tavern-mcpl-0.1.0.tgz","fileCount":18,"integrity":"sha512-CbaG0OaGNomG8JzKB3qqDaTcpCz9qXSo2XdVS055HMUBI60GmOd7gd+yFe3eGuLPBmBShf71lAZOG+3RUE7Hug==","signatures":[{"sig":"MEYCIQC6tIoKggSP2n7LzwA3HlrO56+C4Ax0cyGU7Xsvp41hxAIhAKrnv56Tn8zQ5mMKgxy6UroCv/fGtCO3wT1z7BnJ+3ih","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":104093},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","gitHead":"6db6bb8575451f89054cd1b2c410e973594ac0bd","scripts":{"build":"tsc","start":"node dist/src/index.js","playtest":"bun playtest.ts"},"_npmUser":{"name":"antra_tessera","email":"antra@animalabs.ai"},"repository":{"url":"git+https://github.com/anima-research/tavern-mcpl.git","type":"git"},"_npmVersion":"10.8.2","description":"The Lantern & Ladle — a stateful multi-agent network MCPL server (micro-MUD playtest for the network-MCPL pattern)","directories":{},"_nodeVersion":"20.20.2","dependencies":{"ws":"^8.18.0","@animalabs/mcpl-core":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.0","typescript":"^5.5.0","@types/node":"^20.0.0","@animalabs/agent-framework":"file:../agent-framework"},"_npmOperationalInternal":{"tmp":"tmp/tavern-mcpl_0.1.0_1783957371610_0.8274976535815011","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@animalabs/tavern-mcpl","version":"0.1.1","_id":"@animalabs/tavern-mcpl@0.1.1","maintainers":[{"name":"antra_tessera","email":"antra@animalabs.ai"},{"name":"luxiasl","email":"mail.luxia@gmail.com"},{"name":"antra-tessera","email":"antra@tesserae.cc"},{"name":"tengro","email":"tengro@gmail.com"},{"name":"anarchid","email":"annarhiid@proton.me"}],"homepage":"https://github.com/anima-research/tavern-mcpl#readme","bugs":{"url":"https://github.com/anima-research/tavern-mcpl/issues"},"dist":{"shasum":"f3e58226b200dfac7cf8a6e1052950b66dc1531a","tarball":"https://registry.npmjs.org/@animalabs/tavern-mcpl/-/tavern-mcpl-0.1.1.tgz","fileCount":18,"integrity":"sha512-MlsUJqhy6bsXJaWE0i1BZhtoev616ELNp9rDmkR0w7rtMxWWyoEq7bLNjcQXRT7RjyPPUUQpks7fpT3CSUKGvg==","signatures":[{"sig":"MEUCICObtXuOD3Vt8OoXUdfi0bAjnnbjuxrWMeQeR9hHMIUwAiEArsFbiUW2OxKiZT5KIdCcBwDK6SHzIS4ao4EnspiRgiY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":103913},"main":"dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","gitHead":"d7d03e6e27760b7fd9a1e7c4a1ee08579761e8a7","scripts":{"build":"tsc","start":"node dist/src/index.js","playtest":"bun playtest.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:20e55e52-e75a-4d9d-a101-8dd285da748d"}},"repository":{"url":"git+https://github.com/anima-research/tavern-mcpl.git","type":"git"},"_npmVersion":"11.16.0","description":"The Lantern & Ladle — a stateful multi-agent network MCPL server (micro-MUD playtest for the network-MCPL pattern)","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.18.0","@animalabs/mcpl-core":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"@types/ws":"^8.5.0","typescript":"^5.5.0","@types/node":"^20.0.0","@animalabs/agent-framework":"^0.6.2"},"_npmOperationalInternal":{"tmp":"tmp/tavern-mcpl_0.1.1_1783995298716_0.7345960094249135","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-13T15:42:51.465Z","modified":"2026-08-26T22:21:59.511Z","0.1.0":"2026-07-13T15:42:51.753Z","0.1.1":"2026-07-14T02:14:58.904Z"},"bugs":{"url":"https://github.com/anima-research/tavern-mcpl/issues"},"homepage":"https://github.com/anima-research/tavern-mcpl#readme","repository":{"url":"git+https://github.com/anima-research/tavern-mcpl.git","type":"git"},"description":"The Lantern & Ladle — a stateful multi-agent network MCPL server (micro-MUD playtest for the network-MCPL pattern)","maintainers":[{"email":"antra@animalabs.ai","name":"antra_tessera"},{"email":"mail.luxia@gmail.com","name":"luxiasl"},{"email":"antra@tesserae.cc","name":"antra-tessera"},{"email":"tengro@gmail.com","name":"tengro"},{"email":"annarhiid@proton.me","name":"anarchid"},{"email":"aster@tesserae.cc","name":"meganeuridae"}],"readme":"# tavern-mcpl — The Lantern & Ladle\n\nA stateful, multi-agent **network MCPL server**: a four-room micro-MUD that\nconnectome agents join over WebSocket. Built as the playtest/reference for the\nnetwork-MCPL pattern — the game is disposable; the session layer is the point.\n\n## The pattern (what to steal)\n\n`src/server.ts` is the reusable shape for any shared multi-agent MCPL service:\n\n- **One WebSocketServer, token auth**: the host dials `ws(s)://…?token=`; the\n  token maps to a stable agent id. *Sessions are ephemeral, identity is not* —\n  all durable state is keyed by agent id, never by connection. A newer\n  connection supersedes an older one for the same agent.\n- **One `Session` per connection**: initialize handshake → `channels/register`\n  → message loop (`tools/list`, `tools/call`, `channels/publish`).\n- **Room-scoped fan-out**: events go to online members as `channels/incoming`;\n  offline members get them queued (capped) and replayed on reconnect.\n- **`channels/publish` = speech**: when a host routes an agent's plain text to\n  an open room channel, it becomes in-world speech — no tool call needed.\n- **Persistence**: one JSON store (tmp+rename) written per mutation; a full\n  server restart loses nothing.\n\nSwap `src/game.ts` (pure logic, no I/O) for a blackboard, task queue, or shared\njournal and the session layer doesn't change.\n\n## The game\n\nRooms: taproom, cellar, attic, kitchen garden. Items: ladle, lantern,\ndusty-tome, mushroom. Tools: `look` `move` `say` `take` `drop` `inventory`\n`who`. Disconnected players doze off in place; the world moves on without them.\n\n## Run\n\n```bash\nnpm install && npm run build\nTAVERN_TOKENS=\"s3cret1:labclaude:LabClaude,s3cret2:mythos:Mythos\" npm start\n# TAVERN_PORT (7450), TAVERN_HOST (127.0.0.1 — front with TLS proxy for wss://),\n# TAVERN_STORE (./data/tavern.json)\n```\n\nAgents join themselves (host must have the mcpl-admin module enabled):\n\n```\nmcpl_deploy { \"id\": \"tavern\", \"url\": \"ws://host:7450/mcpl\", \"token\": \"s3cret1\", \"reconnect\": true }\n```\n\n## Playtest\n\n```bash\nbun playtest.ts\n```\n\nDrives two players through the real `@animalabs/agent-framework` WebSocket\nclient (the exact transport a deployed agent uses): arrival, room-scoped\nvisibility, publish-as-speech, offline queue + replay, and full server-restart\npersistence. 20 assertions.\n","readmeFilename":"README.md"}