{"_id":"@pantion/dialogs","_rev":"43-4a848c69b263d9488a4ed2bb38d80d88","name":"@pantion/dialogs","dist-tags":{"latest":"0.4.6"},"versions":{"0.3.17":{"name":"@pantion/dialogs","version":"0.3.17","author":{"name":"Tom Neijman","email":"tom.neijman@pantion.org"},"license":"MIT","_id":"@pantion/dialogs@0.3.17","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://github.com/getpantion/pantion#readme","bugs":{"url":"https://github.com/getpantion/pantion/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"eae02db6d1d5a1594de79dd3c5c7fe55260ba075","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.3.17.tgz","fileCount":358,"integrity":"sha512-x+H1e4vnNVMZUI7mJ+Yh4z6/6bI2IWuv3b5uF59znxPjisjvtioB9ds7v+7btaTkw9gQ6w5P/J5iOSja3rutJg==","signatures":[{"sig":"MEYCIQCWFan4Gt7RU4zdd+G3aorfEHoBaY4qHIJ5Pj+NgxwI9gIhAMLud90Pn+GTLLyTPdsDCX4vLPmieWo1kB6WcdquDPiX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":975237},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"ea74d0930c9d7216f21efa4e841585fd46fd3778","scripts":{"test":"vitest run --passWithNoTests","build":"tsc","start":"node dist/index.js","copy-assets":"rm -rf protocol dialogs souls && cp -r ../../protocol protocol && cp -r ../../dialogs dialogs && cp -r ../../souls souls","prepublishOnly":"npm run copy-assets && npm run build && npm test"},"_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/getpantion/pantion.git","type":"git","directory":"packages/mcp-server"},"_npmVersion":"11.8.0","description":"The Pantion Dialog — turn ideas into unambiguous intent through dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.3.17_1772708861389_0.7411733932210627","host":"s3://npm-registry-packages-npm-production"}},"0.3.18":{"name":"@pantion/dialogs","version":"0.3.18","_id":"@pantion/dialogs@0.3.18","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"dist":{"shasum":"4ccf6e46ce0f1ed828503ab4b1bef5d66928377d","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.3.18.tgz","fileCount":2,"integrity":"sha512-bS6XiggADZxrXimowEya9rop0B19xbrfg1SuSuL9rBJGteUIDQnPmsjpyUZ2d+4RsaYfStp7Y6WuyI5gvmCM+A==","signatures":[{"sig":"MEUCIAtJ73IDhn1crnSx6n7hZb+MPOw0ttJd77srlJo8kBLAAiEAtYpuV3wB4BRKfXBITmAMBQCEitpKeawpE+uDWiAlXpw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":271},"main":"index.js","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"deprecated":"This package is no longer publicly available.","_npmVersion":"11.8.0","description":"This package is no longer publicly available.","directories":{},"_nodeVersion":"25.5.0","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.3.18_1772730735716_0.4896113943881928","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@pantion/dialogs","version":"0.4.0","author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","_id":"@pantion/dialogs@0.4.0","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://pantion.org","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"f36a63ecabe0eefd4f46ca0ce775c25460126f38","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.0.tgz","fileCount":241,"integrity":"sha512-MqlTTeSSNS8VLDmfgIKZKXw9UEzqR82T8EL9b2ULGpiuc9M263xpdZ8Dg3LemQ6izJCKDlqhgq4wclXkzhmpgQ==","signatures":[{"sig":"MEUCIQCVxCOT7TcUsh72UxTLsx5exEqhr2h6rpxfbEXD6hVnMwIgR8jauKODCweN/Q5vmqaZFgmXslfxcVtyqqPvziATmZA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":551445},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"26d89d78743d0617b7d08bf928646f0895346021","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git","type":"git"},"_npmVersion":"11.8.0","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.4.0_1773571686146_0.7442078512499615","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@pantion/dialogs","version":"0.4.1","author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","_id":"@pantion/dialogs@0.4.1","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://pantion.org","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"1b45dc0b78074722a0acd73a13a262b064ba195c","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.1.tgz","fileCount":317,"integrity":"sha512-aHZJUdbHltQfihDVPwiB3DewskFvwmH8lThYlge+uZ1zc9LU9BRIj7vtMu9zodtcIlnbX8p+s+sZ7im5pGSuGA==","signatures":[{"sig":"MEUCIF6aSXsFPiAIH2j7UGvLoBngqc0HpF1fzhVRdSd7QkImAiEAh9fnQ7lY5Iy43g3BfzCQZeJ9xVP1omLCMgn8Zpvd6Cg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":620759},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"56712f957a08cfa2e6c478fbe773ee521335bb94","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git","type":"git"},"_npmVersion":"11.8.0","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.4.1_1773573285915_0.12204011058648256","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@pantion/dialogs","version":"0.4.2","author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","_id":"@pantion/dialogs@0.4.2","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://pantion.org","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"162f5643832d067f9491c8d6f7dcb77617677e3c","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.2.tgz","fileCount":317,"integrity":"sha512-UiEHrD36fNN5nfWFdXxqCUf+7oEldrdWEGTXbreBMJIyPU3V5+PgD73l2JK5IWcD+PJ6QbAE9LUHGFjMzysQGg==","signatures":[{"sig":"MEQCIE5XeVd0ofXoNd0hqA7d03WIR++6DsibLxFNV3a/QvrYAiAbXCKt+n+6bCvJDiqHZY32xUzwHsiY2RrPR66Zjjty8w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621139},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"e5f2d68e268898e596a0518bda3e40c288935913","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git","type":"git"},"_npmVersion":"11.8.0","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.4.2_1773573660961_0.9037738115100089","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@pantion/dialogs","version":"0.4.3","author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","_id":"@pantion/dialogs@0.4.3","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://pantion.org","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"3ecc4ede52060cce8675819a5ccfe4b63d75ffa0","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.3.tgz","fileCount":317,"integrity":"sha512-a+GtmnD/H0v/YlYwxFLJT+eKM5GZv8MbHGArCfypdukID6XxTmmyqg3Qnp0iIs9PqsopuYmSkz5dvoszw90gww==","signatures":[{"sig":"MEQCIGgixQF1oCJ57YuwvY9SNMk6hzsGUEWtkR3eqtDgezr+AiAP+csMZmXu7SlbqkaiZw/SMgQh0dun69jH6LsJ7tuYkg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621151},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"b4533b1264ac6b5888058e4e13544f546cc1b55f","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git","type":"git"},"_npmVersion":"11.8.0","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.4.3_1773574053702_0.4446917438683442","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@pantion/dialogs","version":"0.4.4","author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","_id":"@pantion/dialogs@0.4.4","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://pantion.org","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"b557c6998de383c7e5486557f448701435c78ca1","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.4.tgz","fileCount":317,"integrity":"sha512-eCQ86kCrj9xIv9FexsLyjs4xF0XJtd6NE6ireKe3SqZDjYy0kSwqGVKVO7Y42QCLeA53Nqrlt7DakakKsTEBWg==","signatures":[{"sig":"MEQCIEB3Rj+/DQngGaASh0fJKLF/okqPP9dRbpU3Y4yxQFYEAiAyeCpeIxhdlQxChDBxNOd8TgK1gfMlfDTe9HMz9CLEjA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":619658},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"35ef403aa88ec8a2e400714a51c41285f2df7984","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git","type":"git"},"_npmVersion":"11.8.0","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.4.4_1773574892126_0.9576697801411993","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@pantion/dialogs","version":"0.4.5","author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","_id":"@pantion/dialogs@0.4.5","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"homepage":"https://pantion.org","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"bin":{"pantion-dialog":"dist/index.js"},"dist":{"shasum":"917bf108d17738c16e1c68ffaeee97a0fb936d7d","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.5.tgz","fileCount":317,"integrity":"sha512-0YD6lehUq4tHa13aowNFkoau1bsW16hobgk5VvhkhXZGJRxzZP97dSk/cpBIDny72iF3/UwQnuAvwABLdMH4KQ==","signatures":[{"sig":"MEUCICMsTpNNZa8V/wunXI0bZoA9hdpzNTYy5PNsC93l6M6kAiEA3HGr+fPVRhZczTVNdlZvJxCwPiXwCdygEAmUHz/a5uI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":621063},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"942da31daf133e520ec1e155d5b137cac2a42f76","_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"repository":{"url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git","type":"git"},"_npmVersion":"11.8.0","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","directories":{},"_nodeVersion":"25.5.0","dependencies":{"zod":"^3.24.0","@modelcontextprotocol/sdk":"^1.7.0"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/dialogs_0.4.5_1773575429631_0.9957932071582365","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@pantion/dialogs","version":"0.4.6","description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","type":"module","main":"dist/index.js","bin":{"pantion-dialog":"dist/index.js"},"dependencies":{"@modelcontextprotocol/sdk":"^1.7.0","zod":"^3.24.0"},"author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","repository":{"type":"git","url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git"},"homepage":"https://pantion.org","engines":{"node":">=20.0.0"},"gitHead":"182fccde8c7335a223c405b03f594252f4f9de67","types":"./dist/index.d.ts","_id":"@pantion/dialogs@0.4.6","bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"_nodeVersion":"25.5.0","_npmVersion":"11.8.0","dist":{"integrity":"sha512-fSdChHl9qpcEyefbeyYqh9A2cSIxM2LrEs2iC5J+0Xj44s/AT0CiDD1zjt2h8Vmvn2n1WA9lCzp1bALmwyW0Tg==","shasum":"47094e49db7b5a07a137c2e6f4d164f0d111f3e6","tarball":"https://registry.npmjs.org/@pantion/dialogs/-/dialogs-0.4.6.tgz","fileCount":317,"unpackedSize":620839,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC4+T83c0vsx/AaDkeuNK6mRqm7CiseNJhClP4hWB614QIhAJeGYoZ4+Cr245UrYnpYP6P6/J+yTP1mXDhx5grazOUE"}]},"_npmUser":{"name":"tomneijman","email":"tom.neijman@gmail.com"},"directories":{},"maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dialogs_0.4.6_1773579662210_0.522844346180424"},"_hasShrinkwrap":false}},"time":{"created":"2026-03-01T06:32:25.672Z","modified":"2026-03-15T13:01:02.548Z","0.2.1":"2026-03-01T06:32:25.906Z","0.3.0":"2026-03-02T11:30:57.110Z","0.3.2":"2026-03-02T13:59:22.357Z","0.3.3":"2026-03-02T14:11:35.784Z","0.3.4":"2026-03-02T14:26:36.661Z","0.3.5":"2026-03-02T14:44:12.712Z","0.3.6":"2026-03-02T14:55:40.064Z","0.3.7":"2026-03-02T15:08:53.279Z","0.3.8":"2026-03-02T16:02:29.166Z","0.3.9":"2026-03-02T16:18:59.795Z","0.3.10":"2026-03-03T09:02:50.638Z","0.3.11":"2026-03-03T13:15:53.657Z","0.3.12":"2026-03-03T13:24:20.490Z","0.3.13":"2026-03-04T17:24:07.901Z","0.3.14":"2026-03-05T10:12:33.234Z","0.3.15":"2026-03-05T10:27:12.550Z","0.3.16":"2026-03-05T11:00:51.415Z","0.3.17":"2026-03-05T11:07:41.564Z","0.3.18":"2026-03-05T17:12:15.852Z","0.4.0":"2026-03-15T10:48:06.280Z","0.4.1":"2026-03-15T11:14:46.126Z","0.4.2":"2026-03-15T11:21:01.109Z","0.4.3":"2026-03-15T11:27:33.915Z","0.4.4":"2026-03-15T11:41:32.306Z","0.4.5":"2026-03-15T11:50:29.789Z","0.4.6":"2026-03-15T13:01:02.395Z"},"bugs":{"url":"https://github.com/pantion-dialogs/pantion-dialogs/issues"},"author":{"name":"Tom Neijman","email":"info@pantion.org"},"license":"SEE LICENSE IN LICENSE","homepage":"https://pantion.org","repository":{"type":"git","url":"git+https://github.com/pantion-dialogs/pantion-dialogs.git"},"description":"Pantion Dialogs — turn ideas into unambiguous intent through structured dialog","maintainers":[{"name":"tomneijman","email":"tom.neijman@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/pantion-dialogs/pantion-dialogs/main/.github/images/manakin.png\" alt=\"Pantion\" width=\"80\">\n</p>\n\n<h1 align=\"center\">The Pantion Dialog</h1>\n\n<p align=\"center\"><strong>Agent coding is fast. Your intent is the bottleneck.</strong></p>\n\nToday's coding agents can outcode humans on speed and execution.\n\nBut great software isn't just code. It's **decisions**: defaults, edge cases, permissions, failure behavior, data boundaries, trade-offs. Agents guess those decisions silently — and when they guess wrong, you end up in correction loops.\n\nThe Pantion Dialog turns those decisions into a **Canon** — a converged dialog with no ambiguity left — before your agent writes a single line. And not just for software. The same dialog works for images, video, and any domain where AI generates from your intent.\n\n### The five-second version\n\n> **You:** \"I want a booking app.\"\n>\n> **Pantion:** \"What happens on double booking?\"\n>\n> **You:** \"First wins. Second gets alternatives.\"\n>\n> **Pantion:** \"Locked. That decision won't be guessed later.\"\n\n## Quick start\n\nPantion works best with **Claude Code**. It also installs on Cursor, Windsurf, Gemini CLI, and Codex — experience varies by model.\n\n**1. Install**\n\n```bash\nnpx @pantion/dialogs install --client claude\n```\n\nOr install for all supported clients at once:\n\n```bash\nnpx @pantion/dialogs install --all\n```\n\nSupported clients: `claude`, `cursor`, `windsurf`, `gemini`, `codex`\n\n**2. Start a dialog**\n\nDescribe what you want to build in natural language. Your agent calls Pantion automatically.\n\n> I want to start a Pantion dialog for a CLI tool that converts markdown files to a static website.\n\nPantion asks targeted questions until your intent has converged, then saves the canon. That's it.\n\n## See it in action: automatic mode\n\nDon't want to answer questions? In **automatic mode**, Pantion generates the entire dialog for you — you just describe your idea and review the result.\n\n> I want to start an automatic Pantion dialog for a web alarm clock with multiple timers\n\nPantion generates a full convergence dialog in seconds:\n\n```\nASSISTANT: What is the core intent?\nPANTION: A browser-based alarm clock with multiple independent timers ⚡\n\nASSISTANT: What are the inputs?\nPANTION: Timer name, duration (HH:MM:SS or MM:SS), optional label ⚡\n\nASSISTANT: What happens when a timer finishes?\nPANTION: Audio alert + visual flash. Audio stops on click/tap. ⚡\n\nASSISTANT: How many timers can run simultaneously?\nPANTION: No hard limit. UI scrolls. ⚡ Performance is the natural cap.\n\nASSISTANT: What does this NOT do?\nPANTION: No accounts, no server, no persistence across browser sessions ⚡\n```\n\nThe `⚡` marks are conservative assumptions — decisions Pantion made for you. Review, adjust what you disagree with, and the canon is ready.\n\nTwo modes:\n\n| Mode | How to start | Best for |\n|------|-------------|----------|\n| **Normal** | \"I want to start a Pantion dialog for...\" | Complex systems, precise control |\n| **Automatic** | \"I want to start an automatic Pantion dialog for...\" | Quick exploration, simple projects |\n\n## How it works\n\nPantion is an MCP server. Your coding agent connects to it, and it guides the conversation — asking one question at a time until there's nothing meaningful left to ask. That's convergence.\n\n```\nIdea → Dialog → Canon → Spec files → Build\n```\n\n1. **Dialog** — Pantion asks targeted questions to remove ambiguity. When new questions stop yielding new behavior, your intent has converged.\n2. **Canon** — The verbatim conversation becomes the source of truth. Decisions, rejected alternatives, rationale — all preserved.\n3. **Build** — Your coding agent reads the spec files or the canon directly via MCP resources. Point your agent at `canon/<project>/spec/` — or let it read the canon via `pantion://canons/<project>/dialog`.\n\n## What you get\n\n```\ncanon/<project>/\n├── dialog.md                  # the converged dialog — source of truth\n└── spec/\n    ├── requirements.md        # intent, functional & non-functional requirements\n    ├── constraints.md         # HARD vs FLEX decisions, forbidden actions\n    └── success-criteria.md    # definition of done, acceptance criteria\n```\n\nOptional (generated when applicable): `api-spec.md`, `data-model.md`, `architecture.md`.\n\nFor image and video dialogs, the canon translates to generator-agnostic prompts and creative briefs instead of spec files.\n\nCanon files are written to `./canon/` in your project root by default.\n\nThese files outlive tools, models, and rebuilds. Your intent survives. Everything else is replaceable.\n\n## Why it feels different\n\n- **It stops silent defaults.** Decisions get made explicitly, not implicitly by the model.\n- **It separates HARD from FLEX.** Non-negotiables and adjustable defaults — clearly labeled, so agents know what they can touch and what they can't.\n- **It preserves rationale.** \"Why this, not that?\" stays attached to the spec.\n- **It reduces variance across runs.** Same Canon, more predictable builds and rebuilds.\n- **Better LLM → stronger Pantion.** Pantion doesn't run its own model — your agent's LLM conducts the dialog. A more capable model asks sharper questions, catches more edge cases, and produces tighter canons. As models improve, so does every Pantion dialog — automatically, without updates.\n\n> PRDs describe. Canons decide.\n\n---\n\n## Tools\n\n| Tool | Description |\n|------|-------------|\n| `pantion_start` | Open the router — guides you to the right action |\n| `pantion_dialog` | Start a convergence dialog (normal or automatic mode) |\n| `pantion_check-convergence` | Validate whether a dialog has structurally converged |\n| `pantion_save-canon` | Save the converged dialog as a canon |\n| `pantion_resume` | Continue a DRAFT dialog across sessions |\n| `pantion_approve` | Authorize a converged canon (HUMAN STAMP) |\n| `pantion_reject` | Reject a canon — needs changes before it can proceed |\n| `pantion_list-canons` | List all canons in a project |\n| `pantion_translate` | Generate spec files from a canon |\n| `pantion_version` | Show Pantion server version |\n\nWorks with any agent that speaks [MCP](https://modelcontextprotocol.io/). Best experience with Claude Code.\n\n---\n\n<details>\n<summary><strong>Reference: resources, lifecycle, dialogs</strong></summary>\n\n### MCP resources\n\n| Resource | Content |\n|----------|---------|\n| `pantion://canons/{name}/dialog` | The canon (verbatim dialog) |\n| `pantion://canons/{name}/summary` | Derived summary |\n| `pantion://canons/index` | Canon index |\n| `pantion://dialogs` | Available dialogs |\n| `pantion://dialogs/{name}/rules` | Dialog-specific convergence rules |\n| `pantion://souls` | Available interaction styles |\n| `pantion://protocol/intent` | Core principles |\n\n### Canon lifecycle\n\n```\nDRAFT → CONVERGED → APPROVED (HUMAN STAMP)\n```\n\n### Dialogs\n\n| Dialog | Domain |\n|-------|--------|\n| `software` | Software development |\n| `image` | Image generation |\n| `video` | Video generation |\n| `router` | Routing dialog — guides to the right action |\n\n### Souls\n\nSouls control conversation style (tone, jargon level, pacing) without changing what gets covered. Three bundled: `default`, `beginner`, `young`.\n\n</details>\n\n---\n\n## License\n\n[Pantion Evaluation License v1.0](LICENSE) — Copyright (c) 2026 Tom Neijman\n\n## Links\n\n[pantion.org](https://pantion.org) · [X/Twitter](https://x.com/pantiondialog) · [info@pantion.org](mailto:info@pantion.org)\n\n---\n\n<p align=\"center\">\n  <img src=\"https://raw.githubusercontent.com/pantion-dialogs/pantion-dialogs/main/.github/images/manakin-front.png\" alt=\"Pantion manakin\" width=\"100\"><br>\n  <em>Agent coding is here to stay. The Pantion Dialog makes it reliable.</em>\n</p>\n","readmeFilename":"README.md"}