{"_id":"tandem-editor","_rev":"58-0deb61386e75b2c2434f7c86747aa7be","name":"tandem-editor","dist-tags":{"latest":"0.28.0"},"versions":{"0.1.0":{"name":"tandem-editor","version":"0.1.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.1.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"b905ac389bd8b1681f469c3a5b32ad8db992ab12","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.1.0.tgz","fileCount":12,"integrity":"sha512-c3jrbm1SrVW7fiO4xrS0Y+XlTUjp0+W90+lau/uGcp20uVQZ0pdsjjz3IpRwo2bu3bYtY6/NgXifYsXu17xTUw==","signatures":[{"sig":"MEUCIGHG0imGaEnq6Sy63B3EpTC6/VBFTFSJjpZGx1tX1543AiEAruy88QpSCly3GL0D6A8gFRT0vYtOF9BXENCGiYoDVh8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1578648},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"fd9a6755f39ed376f623fd6752e08d0ef9cea59f","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.4.2","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.2.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","react-markdown":"^10.1.0","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.1.0_1775060470603_0.626678427888711","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"tandem-editor","version":"0.1.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.1.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"25279ecdfbb9a8a878c2ad2e6a79ec846ade8cd1","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.1.1.tgz","fileCount":12,"integrity":"sha512-MIKfic361pKeF0QznNWAycmMwMRfJyZgvj2SR0V+dgCtn0w5QROAo7TO3Wmr4ULJ47mb6pnT+xcxDD53Nm1c7w==","signatures":[{"sig":"MEUCIQC+pvlcvOHX7KFc61fibW0OQMnO1VnfsuHC6aKOT7yx2AIgdFTTCOcjMLD0ceV51AJue+OsqBAZ9OfSUSWBJd81lHg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1578973},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"8d0d472f8269f8f80a9ea007c6cb741461420383","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.4.2","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.2.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","react-markdown":"^10.1.0","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.1.1_1775061554271_0.030866856518652064","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"tandem-editor","version":"0.1.2","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.1.2","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"f9e4a966a98c1761f9fb0edb86059c9d644a7cf9","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.1.2.tgz","fileCount":12,"integrity":"sha512-T4wmkNgHxMH0ujRhbF3bOcaXNkGfktQAIPpSCRtiBCtZmx8l+8ZccykY3cQXIANvX9g7emfrTev2oIgys1upQg==","signatures":[{"sig":"MEQCIEdofc4J2aK80A7RwvZBH8FoS6032h27NeT+H/JMIjNvAiALDatKYSj9A3/pr/xp2e8Z2SzjX4vN0cg8hZ6hTeWi8A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1579226},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"d69d27085360e2f049134d89f4bd8987fcfc02d8","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.4.2","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.2.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.1.2_1775061864592_0.32220845885044147","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"tandem-editor","version":"0.2.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"12b949cf0ad6d243064c7843de19a5f680190841","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.0.tgz","fileCount":12,"integrity":"sha512-mpWklUg2no9PrpqGDz6P7I8WevniwTugCrMwRrgMU/mdsJQABepZ8mqtZfoUHSJejalopN5wlfmXjO9AkvVpFA==","signatures":[{"sig":"MEUCIQCOp3zcZWcZoquJ32voGzYYgoAB5JT4uXBORnuoswi0fgIgFWQpUMrjorZTwMu7M8QMN90rxA5HEVSnbcBYv5Pav/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1725370},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"edfb2fc865445265e02a8d54655b6223e0b22e4e","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.0_1775397349851_0.14261229872168513","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"tandem-editor","version":"0.2.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"bd8981b8916a2b6eda39fd0261357cf879553c8f","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.1.tgz","fileCount":12,"integrity":"sha512-CmPga8kyAjXiY/S/NE3xNt7KhlG/IH4pKDkHn2PB3R+9jaRd4wxRgOvmOIgzXnty2Lc2oG4DyWkQgaQNlAfb2Q==","signatures":[{"sig":"MEYCIQCd7uKXYBfbScdy+1WFpQY3f3WyJ5fJAl8E8yaqrB8f0AIhAMhdIyCtlnn26DyTubA0NH/YUsRo5ExQJUF+3bW7NVSk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1735900},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"6767d714484b2e990741fefb8e0648d41efd5415","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.1_1775400846345_0.19615739789553732","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"tandem-editor","version":"0.2.2","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.2","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"7e0317e7d0fe5c5e739eed8f3a06f8ad9e0cf7cc","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.2.tgz","fileCount":12,"integrity":"sha512-s56krsWB9vnEhPNFTtZ1Xv4OLPWqUC35anDGv279ypONwWGl4Vy0jGMUYasOCsGmbdiZJM3q5if7xvMEW6ybZQ==","signatures":[{"sig":"MEUCIC+EJ0deVHYPAlRdrevuQBpOfUX1mSDffvP+C62n6v5CAiEAspy4Det0vFWPXeKmt6xrazuK9DvU7Uel9b+yfWszge0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1736124},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"84573b358fb30a835d0b715cc8755dba38e44ff9","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.2_1775401038904_0.3551836197905862","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"tandem-editor","version":"0.2.3","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.3","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"b8f01d58dfce44060fe1d4757fb5224a1f83cd8a","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.3.tgz","fileCount":12,"integrity":"sha512-fwjmJFoaxlKjsbE9fSLleIZboAZr3HWoddVxnvJU1VJRtwgmH3E5hwS5fLWUoTPTQMNJhceyhcYsI42znZx+1A==","signatures":[{"sig":"MEQCIGVQGwPkBor0mitjJbgUGRiHMA+CxS0Tl7mcKBrjGdyVAiAoKePptrXOSV2g9TYs/aFtcXfhuQN+V2JwvOiY4/cYOw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1736216},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"01a81538ad2e43e5a887442605cfe8e626a3c6d7","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.3_1775406277502_0.9415801083193143","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"tandem-editor","version":"0.2.4","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.4","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"5b0eda3015590e09b433cc0c765e895f3bc25852","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.4.tgz","fileCount":12,"integrity":"sha512-/uMQmsf40XQowobV/34ill7VVmgaNNiD4OTB8TYVHke1MyDYa4xpzYHcbv9uA94oYRqfkBMgqMtEqnFZM3i2oQ==","signatures":[{"sig":"MEUCIDG4TvIAULDlY6/xn8EkjHLQej42/1MybEIGyjgogwfmAiEAtsKhq87p6WLjNw7A6+snuUijHo9FoDVj+xKC9REQCi8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1737506},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"d6c615deae246b80cffc4e6f71a260a4dabfe9e5","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.4_1775412018977_0.38856346960256527","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"tandem-editor","version":"0.2.5","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.5","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"a8cab5e1c09d8ec0ad29b2f44d526f3e39dc2cdd","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.5.tgz","fileCount":12,"integrity":"sha512-a94mXhD/WWW8buzq8kyZKa/bmEqgLf2OiJ3mFouJCfe4TWMvttgmXFUOH/Q1GM4JweoACn5Qmttz1YMStHG2DA==","signatures":[{"sig":"MEUCIQDO8V5gNXDDmWM8bfEsyhrFa0YrtS2Xr51Jm8Ypzd6XWQIgAw37Vcbwfvq6nK3gLERQQ3Tct9nBtuc7MnpHPgmnO/I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1738772},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"c5871b1a1fcfdd2dd594d75b2181092f91cde2c1","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.5_1775412698767_0.3748903862109465","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"tandem-editor","version":"0.2.6","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.6","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"d71d06d84a5ba6dc6c1c468a6aa2b2da83f68ff3","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.6.tgz","fileCount":13,"integrity":"sha512-aqgw/vz0V9Bzz2UXn6SQ1Zd8owgEhvcP0hpHfW2vm5MNvhRb/hZI+mRoN1vZjAA/q4sVfeSpTqWftCAVSdHfDg==","signatures":[{"sig":"MEYCIQCz4OFxSkqrmInjIcanN08bo935x0n2U24WSMsT8oky1wIhAIlcCMhIdexsIf3rppBH5+ybwh/Ipl0azPSVdWg3GIdf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1740446},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"6392b4a1bfd03cc95d4bdf03c6a5ac115910a1fb","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.6_1775415880433_0.40211191025134974","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"tandem-editor","version":"0.2.7","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.7","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"f98260b8a3545f77f2b19e64ce01078829c4995e","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.7.tgz","fileCount":13,"integrity":"sha512-knYVC2ONhIwiXCvCU7Pf7kFTtYDChcvn7D4tJ5VoPqekW8jM+LW+p9QzqA3irSzbDswhEiZvs3ynIH+zhnLxmg==","signatures":[{"sig":"MEQCIFWx66q1DF2ad+EZvq+BvktgxGhwN4WvOa+esqXz2xyRAiAaRFtQSez60jA0nqgN7D24Q+IyfeRsb53YlWV00cluVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1744005},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"d9aa178785e0339ea8dc63ff1f2684c37997283b","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.7_1775426259859_0.38954037368529515","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"tandem-editor","version":"0.2.8","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.8","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"49f7bf969a9db5a1e6e41074cea2a79e2b6809ec","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.8.tgz","fileCount":14,"integrity":"sha512-O9ABaOocKbWTRoyXVf8837t7kLyV7L1TAO2HHhaIOJSlcX6AaJ4FzQDcu0VHk3mifQlY+gk69DrnwmvQIeEDzw==","signatures":[{"sig":"MEUCIHx/l8TVjmUvYbhOt6fWMOQg+JE8DwSBjVco6z41xwpRAiEAwngIAGKkmQWa1e4Ps0JSVBvboqKKDmS1v1LmrjsLAzI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1750581},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"7e8816f0df1cc9c0071b6e4de801b4d7d2223421","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.8_1775429558392_0.7853014719557483","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"tandem-editor","version":"0.2.9","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.9","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"d3e928d0beeba3e25a729f2c1e86460e8dde0073","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.9.tgz","fileCount":14,"integrity":"sha512-wP7sppU3/pFbMexopkuCnCp0KMMP7eGdJKrL2peuJf4wbZY+0dTcMM93CXEHQNSv1z/VU2AyRXAQkVNRq0Ju+A==","signatures":[{"sig":"MEUCIBIK5YMP7xj+09hErlpz+qPPrJRu9bu0P7t6nhSwXTcAAiEAszVpv0T2B07ti2fIH0YkHD6UquPj2mxXZI6u51M0rdM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1751182},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"b78a2323be27c4d6ff18451b0776116ce8739304","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.9_1775431880033_0.6029653393042307","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"tandem-editor","version":"0.2.10","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.10","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"4168f34af27adf76712cb2fc70743b956a17e99c","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.10.tgz","fileCount":14,"integrity":"sha512-24kElD8etYrqMgppZXEBt2OhB/7EzDFGeZNQiwWluCQHn+Aqrngpu7xz69eHGiIFhQmEp3x6GfhsWrggl5Bwdg==","signatures":[{"sig":"MEYCIQDoOigWpZ5UWnDHzo5PQhumPaGWw8M4WqiuflRkjGPJbgIhAN8AOMwZ9D47unalCtcZa9Vw2r5sE7BKO/kjwl62LQeV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1755679},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"3e06aabee891e60f7a2a486a68396a78884d129c","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.10_1775446027114_0.2505589654669558","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"tandem-editor","version":"0.2.11","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.11","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"ec4377c53b1718913d22e08691ce1a62daa390bc","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.11.tgz","fileCount":14,"integrity":"sha512-UrjxW4227D6pzt8C6ZaflH9DyhAusE9Gg03Lv7W85/A195a3aGldhYKvn43y7LfR4UABkeejS/nqRDpZozvLgQ==","signatures":[{"sig":"MEUCIQDr5Y8xDMgk8bCxP2QKsTIztxqeFVVogLIj8yfFnG8llAIgeuFzTKwtQahnZMSAZ25ihIviC4Ubeod/SqXjInjxIxA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1777440},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"18d300f4c79269d0d2326b75e3a2fc8b1356c746","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"workspaces":["packages/*"],"_npmVersion":"11.12.0","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"24.14.0","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.11_1775454323972_0.7143444049707444","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"tandem-editor","version":"0.2.12","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.2.12","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"8dcedd1c40db8aadb744f96dd41998a32ff30303","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.2.12.tgz","fileCount":14,"integrity":"sha512-QsPcxNWO0MxcqdLjJx9C5vsDPiJoKxgp5aV+G+5/OJrT0FKOcbwN/VTcXf4V3PCrW1qGkPlUW+2xQJkqtYjHVA==","signatures":[{"sig":"MEUCIG8b5qh5OkTdBNRVjZET6arV7y2CnyDMai8ddlTfwmS3AiEA2q3+vd8ghokYmOb3u8JimJAH4hndlsCGh7gNnlSEIn0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.2.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1761345},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"247f7d56ecebbd8932111f01cb4d51a4d82de6e6","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.8.2","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"20.20.2","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.2.12_1775520314859_0.19960726342479185","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"tandem-editor","version":"0.3.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.3.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"89f6b86e9244d801c6af1263d5df2d93a262fb67","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.3.0.tgz","fileCount":14,"integrity":"sha512-spna+mlzrjsUkZdsawDW3CQWjfu7p/Ui50diiimflgAWpLm5hbLtswCsO8zX0c9GPi8cqrLqtQFXy9yD9wzPaQ==","signatures":[{"sig":"MEYCIQCKmqEJvh3adYvyiDC6KekZUex0hXWfRtbbAy53mk/zSwIhAMxH9PqjiZ4NKvMKraqAYUVMp9EpYElR087ExnPBsZWy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1783633},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"1e285887584c0c6b6a6e263fd3e78c4e316b8a84","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.8.2","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"20.20.2","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.3.0_1775596787838_0.4688066207323054","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"tandem-editor","version":"0.3.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.3.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"578702b8ff2d4641cc9ca7ca7ccdfcb9bbf72c20","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.3.1.tgz","fileCount":14,"integrity":"sha512-tF2arkK47VwDglyiGqgjPiEP98eKxxfwDG/wDPd2j1f2o+WtU3ToxLubqLGuo9uVN6mZH3Ejn5zW0V31MsI5Sw==","signatures":[{"sig":"MEUCIQC2M3HQT/G2pTxaBouGocdFhfL0kEH9WbzBaUNsQrxomgIgIGpQfV4460tTwqrpctPbb+RpwjSMMbrEVCCITPvWBzg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1798491},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"8daaf6a5bdb48ffddca8d8348c0cfce9dc90d627","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.7","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.{ts,tsx}":["eslint --fix","biome format --write"],"*.json !package-lock.json":["biome format --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.3.1_1775863889959_0.32102454781531486","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"tandem-editor","version":"0.3.2","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.3.2","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"17d01c220d24c60f92948cd28ec9f83efb8cc0b4","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.3.2.tgz","fileCount":14,"integrity":"sha512-4dPsQ2RRRny+B10LRcAkICwhE7BK4ysQ5zYouIvoKiBYdrVPV+iV9BERlmwAPlTfnv/jeHjgc+qJgE0qz56+gw==","signatures":[{"sig":"MEYCIQCmztuvE2wfaPSzoNKh1RZqzfBWdRQyFuGOCMqwlP//xgIhAKSTAi6ZI4nU4J/AIL7LrcxqwMlZpGsiNMg/6tl4f9Sh","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.3.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1812832},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"699c882ec91dd01de718237d789b15bcf23d3292","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.7","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.3.2_1775977940457_0.9948855650125557","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"tandem-editor","version":"0.4.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.4.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"a010a1bf1ac21c03bc0f4932deff6bd7b231c30e","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.4.0.tgz","fileCount":14,"integrity":"sha512-ocJQ30WVz/AbGbQomSDV3gc6Q2RKuBY5WraRj6TU/8dbzbeX9q/SAMw8LWfpShEysSB/sSsCngoC7Pt4kIosdg==","signatures":[{"sig":"MEUCIQD/HEciT0pqZ4DY+vI7S/zbFhkE4/GZqPEkfbmaASXxngIgDo9Dy+nMwsY0gAJOh+HhHzi6Dcd2+NsX5sGhojYFsiw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14445016},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"1b119ee1c3272c4299dd11be33b074f6eb43688d","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.7","description":"Collaborative AI-human document editor with MCP tool integration for Claude","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"^13.6.0","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"^1.0.6","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"^1.2.12","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"^2.13.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"^3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.4.0_1776044327047_0.9033914778616496","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"tandem-editor","version":"0.5.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.5.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"ed44f09e3c7a6357842c69bad6ea3520594f7ce4","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.5.0.tgz","fileCount":15,"integrity":"sha512-t/tTTF6YJs+VGt9uHcVdnKcJ9wlpzxkzDifr+ewC3x5cXhVe69IgKGsit8j+ct7byReAjD8V718heeZzM9iK0w==","signatures":[{"sig":"MEUCIDGR/IsRAOQnewkU47mXMZOPz/ul67+dm0eEN5aYbDK8AiEAneerGOiitKP2nokFHcFilqNYdPCQcT3BoOz/HfA/rlI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":14515932},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"0969dc630923c3f7990776f4d867e7bbc78d6f2a","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, full LLM access via MCP","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.5.0_1776114912737_0.6721859808151787","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"tandem-editor","version":"0.6.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.6.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"0bdc143ecb92e4e593e6df374523e5df19bebc00","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.6.0.tgz","fileCount":20,"integrity":"sha512-Gjh6fQskyu+Bwyz/mf+wXVd9kqVaFVgLMog9mECU0odpk/Ri0ux2OlNYFFVRIRN5qG6f7zE0uHCbgmtKqNOPbg==","signatures":[{"sig":"MEUCIGgBxi5NX5WGiiAwSmyU8uhESry2J033FYozK/X6n/ZmAiEA5zPsmCAZTU30+hskhO/KRLdK1UwTIT6XZfMo9dmeFfQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15032188},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"db7cac968425de74a9e82cf75f9592fe15ba5668","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.6.0_1776268855615_0.9305365247441626","host":"s3://npm-registry-packages-npm-production"}},"0.6.1":{"name":"tandem-editor","version":"0.6.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.6.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"c5d7fd8a4bd86ef74fa36267e5b36bf45494a83b","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.6.1.tgz","fileCount":20,"integrity":"sha512-eM4cMPx59UI7ZSqzApHXwu9sY+Z139QmfkbHRCq4zNJ3rtj75FednornWz69qeyk43OWZeNSw4oemXzfnCRXFw==","signatures":[{"sig":"MEYCIQDiVxh+F1VYGKNHugqH91yZ1D3elLsA7gb+q//p9mDSdwIhAMzgLIslSwiurxs00mZxlrEEikrX2g2mLTtH7EO4RyJy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15032874},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"cd2f082aefdfb861d1df8207214e8b79ed62fee5","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.6.1_1776270737437_0.1967766364133008","host":"s3://npm-registry-packages-npm-production"}},"0.6.2":{"name":"tandem-editor","version":"0.6.2","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.6.2","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"0a34ed1ec961dc43c7c991cd6f7325c448121ca3","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.6.2.tgz","fileCount":20,"integrity":"sha512-GGGzN386WEdJnDw2ESVDQbyqBP8dtasC/b4SeUgB1bFK7RgRjER2SrwI7hFhUOI5YLYpQ0FKW9ft0GXI4AEQwQ==","signatures":[{"sig":"MEUCIHSdqAuacYTaZ1Fj0wSbdlfR/ljVu6B0y//y0VOD++ksAiEAmM3JbIgo25l/c+BXPndvqYt8zAaPqWejDWZzB1ZVghs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15033864},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"2dc2840a5163c60131de6bf6912ee6a23ee07162","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.6.2_1776300343249_0.8822690530976731","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"tandem-editor","version":"0.6.3","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.6.3","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"7e06954e21ce83cec015c676343393a0ca5e7c1a","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.6.3.tgz","fileCount":20,"integrity":"sha512-vY+nyN488bDnVFeELr1HTn3dGcrUwwRQm1dxn4OVpcu09oyyARiVb3x9zLPlrMLtiiBz02yKZinM1Dik9tVt0w==","signatures":[{"sig":"MEUCIQD/DhAwK5s9gB+FRGfoMJpNivMQAHYCpbihSSUJlgHp/AIgKH/jOvaT+s6QlkLmx/VMZSQ2tx6LLjk84PsC/meIZNE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15192453},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"25b89b02a6d0f2ea323cf3e8771d981b00c8ac06","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.6.3_1776626713877_0.6221393474421959","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"tandem-editor","version":"0.7.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.7.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"409b974652262f6b6d670bbe61f668a00bc4d9bd","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.7.0.tgz","fileCount":20,"integrity":"sha512-6lPC/wMPOR42NC8bNiG0+ikqz2jtImf+rIBKJALuOtKuJsyV6zX6dfapSIpS3wRSxEkbNQSW+CsXzNguk9kh0A==","signatures":[{"sig":"MEYCIQDXNBW3aG9eZVObDWbi2Q6wMDSAfDKhm1nUrSc75x9JigIhAKtMHCLf5mgzvmuo/u4F6mtYzqX8lkimO3VCn/8N/0Hs","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15316606},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"7611a2dd55cf0f6b3b7f85ead31f217253e71b5c","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.7.0_1776709259429_0.19759834379960606","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"tandem-editor","version":"0.7.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.7.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"e933f55a2a3131a9332cb0137cc968e60a4ae7d1","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.7.1.tgz","fileCount":20,"integrity":"sha512-jWYtWIeX+XPITFFQXE8vkYfxw+U/X19y+bPibOfo5X06Bt7RXKCGls5gtFqbA3uuO37h91mBraSYshlvsUe3BA==","signatures":[{"sig":"MEUCIGYPuYn/9MMzwc80cAfUGfSHBMV8bnts7ia17yDrdQtLAiEAz0IS5VckaInR1TXHRLBMawAVWxLSkmRWh6cfBUe+sNU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15356548},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"3d322d476126dd05c12e1b73e812e926a8d49cc2","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently \"vite\" \"tsx watch src/server/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"11.12.0","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"24.14.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tauri-apps/plugin-fs":"^2.5.0","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@tauri-apps/plugin-shell":"^2.3.5","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.0","@tauri-apps/plugin-process":"^2.3.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tauri-apps/plugin-window-state":"^2.4.1","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.7.1_1776809892850_0.29948267764079306","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"tandem-editor","version":"0.8.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.8.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"3f83bf4cfd902d8587187d468e4f3b53c1e5744d","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.8.0.tgz","fileCount":23,"integrity":"sha512-L4QMTdFs2mVk617tcmxBw9v/0ljMDp15HwJ+4iuaJ8UyEX7l6hvOeTBGv5jOW+oohimKu2Pl5uBTs0AqIHEfww==","signatures":[{"sig":"MEYCIQDcb47BHZKeXEAQYtR0mnmiWCW1ZHnVVO8OlU9L/4KnwAIhALXklQ7Wesi+nZ2ok0QKlYOVufGPN42e6MXh/TnCHQNR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15429416},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"7d383af50bbac72e6efd5f66ddf162b3e2025bae","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently --names client,server,monitor \"vite\" \"tsx watch src/server/index.ts\" \"tsx src/monitor/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/client/**/*.{ts,tsx}":["tsx scripts/check-semantic-tokens.ts"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.8.0_1777223848309_0.2238807449894702","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"tandem-editor","version":"0.9.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.9.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"6da784b24ffcd775e2351137857cfeb098d3b2e3","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.9.0.tgz","fileCount":23,"integrity":"sha512-RlLSk3P3uYgquZWC6CqsB5SnHIO6T00uzvaUalF2wnmwwef+1flTPX+ZYG+pMhW1e12rpRCVx2eAp4Txpho7oA==","signatures":[{"sig":"MEUCIEdNkuMaKr5JkO5OWNKhR9zkRgbc1vMGBcg3AgVq/7FsAiEAk0cbmTlNQYyU4Kh6f4WJoADX5xg/fuok7bm1nidIIu4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15451174},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"19785d27a1d38e557d57f4c9cb9978c7aeb277b7","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"concurrently --names client,server,monitor \"vite\" \"tsx watch src/server/index.ts\" \"tsx src/monitor/index.ts\"","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/client/**/*.{ts,tsx}":["tsx scripts/check-semantic-tokens.ts"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.9.0_1777408156959_0.7901846972286835","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"tandem-editor","version":"0.9.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"MIT","_id":"tandem-editor@0.9.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"10f99a36993bcf33f496fa3b92699f32ddfb3514","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.9.1.tgz","fileCount":24,"integrity":"sha512-ImEc3NxNjti+W7rDD5vmRI2deDgJ8SlRVJphPpB8hlmNpoBQvHffx4bz5KIRSwSrU/kaxGQ5qS0EXydKP3g1bA==","signatures":[{"sig":"MEYCIQDZzUb1DhdTHQgcgp88xnyASWftogM/MKkDIUK6N7JH/wIhAP7uzi3usMgrXsBVE9SNyt3VrAyYgHAFwU/DoWsZ8P5h","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15517920},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"b689b2ac9b3a30084ecfad5fbc5614a7cd8dc8d3","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"*.mjs":["eslint --fix","biome check --write"],"*.{ts,tsx}":["eslint --fix","biome check --write"],"*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/client/**/*.{ts,tsx}":["tsx scripts/check-semantic-tokens.ts"],"*.json !package-lock.json":["biome check --write"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","react":"^19.2.4","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","react-dom":"^19.2.4","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","@tiptap/react":"^2.11.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","react-markdown":"^10.1.0","@tauri-apps/api":"^2.10.1","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","vitest":"^4.1.0","cross-env":"^10.1.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","@types/react":"^19.2.14","concurrently":"^9.1.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","@types/react-dom":"^19.2.3","typescript-eslint":"^8.57.2","@vitejs/plugin-react":"^4.3.0","@types/update-notifier":"^6.0.8","eslint-plugin-react-hooks":"^5.2.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.9.1_1777643848463_0.6918368543877551","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"tandem-editor","version":"0.11.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.11.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"4216029b66325b75b25f2c70eac7f60f8d9f5994","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.11.0.tgz","fileCount":29,"integrity":"sha512-K6NZEQCiEQydcLUVjauFfgaKZTYI/EBxSu5sKVH9ZgXP0P4hMG5EtRII1C8atixUE/cC/Jx8odIfC9huQw5lSQ==","signatures":[{"sig":"MEUCIF/jcTtOzJfb9MyuJJrL4MU+NJVL9zq0iRhrmDu9w1oDAiEAw8zQa6mnu6i/vudjMdlzQCpw3LxCdgVbKALahze0sLM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.11.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15667502},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"a0ba1b064e34d168c2732e46df7c0cf85a277a43","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","concurrently":"^9.1.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.11.0_1778542235026_0.8919815927326251","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"tandem-editor","version":"0.11.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.11.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"5aeb0d057a44936c82da02460742dc7580fef899","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.11.1.tgz","fileCount":29,"integrity":"sha512-ofTxGZvfGm1iHEeEAdfDComaOB2nvGFwFDLTnkZAF6bD+fPYl8FGshysXEm7vK9sEKjBOtH5Ad8mQPso1EmKTw==","signatures":[{"sig":"MEUCIARUZpVnlzE7kxo/nRbN9OMlS0DACnOKC0ol3SJ7yYG9AiEAjwoeWN5MIvr7dXM+/M49kfXbq5AHH+FDOHdYx/3Iwl4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.11.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15682981},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"0780ab65826f252eed4baafc58805ecfd3cc4a0b","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","concurrently":"^9.1.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.11.1_1778641313389_0.06943904917474164","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"tandem-editor","version":"0.11.2","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.11.2","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"c1589afb22fe1a122a4881d0e58974295dd7f365","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.11.2.tgz","fileCount":29,"integrity":"sha512-EWPdBBY62DcAcPBLoOYsKpZGkbcBesiSRtRdII8IoQ9d5qrW4SNEZyADYjdYobnKaEyj2BoClwRO0S6OftWr5g==","signatures":[{"sig":"MEUCIQCkOkfT5jS70P9Dxhn3/VxNVv24Eza4lyu4Oft0xl5wTAIgQeteW0KElDqrzFCXPRevF2OqkgCuRQYYXgzOUX2qpTQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.11.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15683978},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"0c07cc1aebc9d28ae1b32e553a002ee4efe61c69","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-unique-id":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","concurrently":"^9.1.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.11.2_1778676084705_0.9029928481535792","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"tandem-editor","version":"0.12.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.12.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"0a86f62d30dc3795378e0bc17fc1a4b273aefd5d","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.12.0.tgz","fileCount":30,"integrity":"sha512-T8lGPEzswlS1chD/anqakdVvdPUzFVrPYLMMeP7pSrCC/xjn4duems1kHWsfpKS5NoxX2eiNLcM8SamGC3/E/w==","signatures":[{"sig":"MEQCIFgYk0FaFY54aK6Ii5xfWQsEBghj+zNZqTWntNcjwANDAiAFHY2AaCdtW9ZjPdHRDZsjXX6Pn3uD+kKzb9CZ/KXK0Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.12.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15829731},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"5bc7e5dab37a99d3f5d99e1335cdc596a2728ea5","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.7","description":"Edit and iterate on documents with Claude — no copy-paste, real-time push via plugin monitor","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.2","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","docx":"^9.6.1","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.12.0_1778896615962_0.9674471183939455","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"tandem-editor","version":"0.13.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.13.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"534c814a9a6a940d87ae5c7599c0ef47b18e5163","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.13.0.tgz","fileCount":41,"integrity":"sha512-dsHSx7QELaA6rY1ebZ/tntFnPS7d3giFDdTdhcBHqOWteRQ0yVvyV8x0jnU3X2DAEWjbL/KZaUfDx5uj7prxKg==","signatures":[{"sig":"MEYCIQDY6tmA3U1rxpMkRSMtPkH6vhO7zPvFbNAAOwrwAx6+TQIhAJg4BNL+ihKsSxnvOUx8yYA+M4MI5SblIq7PFFgIDNWg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":16684736},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"c047076f290d65ad6fa59234c3b303ce8279b1a4","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via plugin monitor or channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","docx":"^9.6.1","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.13.0_1779764938332_0.44301946057971153","host":"s3://npm-registry-packages-npm-production"}},"0.13.5":{"name":"tandem-editor","version":"0.13.5","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.13.5","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"6186ea9c8a2c9a1a959b9dc700df4eeae5a3ed62","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.13.5.tgz","fileCount":42,"integrity":"sha512-/Ue9L5yn64LWyJFmek7y7Y1qwR6noBb/hy5nAKxt4+oe847t76BYn2pyPJxTlVDxM+1qDNTcUPwUmbFp4JIfVg==","signatures":[{"sig":"MEQCIA4bTHrlLVITBQNbQKUUpa1xDXP51AKbHB+LmksGh8ohAiBTh7dT8Hc4DIn1T96nr4U/m8aE6XjYNoXr/QyfdZ+09Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.13.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17018286},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"90c0a7dddcb7d0978b07b2ef8b4ba175c3e71544","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"node scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via plugin monitor or channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.1.1","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","docx":"^9.6.1","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.13.5_1780090027642_0.37900177052518","host":"s3://npm-registry-packages-npm-production"}},"0.13.6":{"name":"tandem-editor","version":"0.13.6","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.13.6","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"eb519824dfd0520c015e0b2981a89507177bb49e","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.13.6.tgz","fileCount":42,"integrity":"sha512-dj17G5FU13OV7fE/A1o8/SbUlE18cQjVzHUvvnyxC8nC0sdiHge3nKKzYXC+zVmeoqWPXs0+2AdGLEz28Vs0iw==","signatures":[{"sig":"MEUCIEJ27sPyBUh7boClkqTP+wM0WnrYR0D9291g+i6xsgSxAiEA1J6pvhg9WrSKWN2XBp5aisHURqlP/AboDju6dtIne5o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.13.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":17287844},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"bc279218be5c5dd9d33a43526f17bf6e825f3bbf","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.1.1","y-protocols":"1.0.7","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","docx":"^9.6.1","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.13.6_1780582561028_0.7965953417381293","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"tandem-editor","version":"0.14.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.14.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"c5da79f824267de54596a2edbd5c9c39c884f519","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.14.0.tgz","fileCount":46,"integrity":"sha512-fwG+qw4u8apa0AdELADaTaiJyZuybSA72HEamgHEeBJRQ3jqCxQ4YXdyZ2L2AhoZ1o8lhch1mc47CHeps7c9IQ==","signatures":[{"sig":"MEUCIQCJFIgLt5adnX7bCkQXIogpAYQIO9+IL+D0ZYN6ewDRBAIgDeMxZR5LYRF7JZWA9dU7tVGEo/jRkaeTIYwavGfpVw0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25745952},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"bf927ecfbb8a45e092868cd92b372eb0d21efe8b","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.1.1","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.14.0_1781113692742_0.9071095689309656","host":"s3://npm-registry-packages-npm-production"}},"0.14.1":{"name":"tandem-editor","version":"0.14.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.14.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"72737e04bad8ec63338d5fea23701834c6b8f866","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.14.1.tgz","fileCount":46,"integrity":"sha512-Y8BoFMKT083DSpzG+m8zBY+irXqHpb9jmfLm2dVSVhL2CxGYtw4R8cFLXT4xGHdeaD4sIoMIis0nnYE49F7OBA==","signatures":[{"sig":"MEUCIBAv+ZndFcp5uP/3YW2ZAWbM/jqpcW/hTIvWMIxcBhOLAiEA9NMQgIY2lgZYp4n60mD/kADLvC32nPeIYGANwSCb3yI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.14.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25772621},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"544834d17253fcda9fc099555c32283ea9e6bd6d","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write"],"**/*.{ts,tsx}":["eslint --fix","biome check --write"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write"],"**/*.json !package-lock.json":["biome check --write"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.1.1","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.14.1_1781189291391_0.21138984301350905","host":"s3://npm-registry-packages-npm-production"}},"0.14.2":{"name":"tandem-editor","version":"0.14.2","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.14.2","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"af9e0b1216f71004a6be53fa23ff03c15439ea0e","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.14.2.tgz","fileCount":46,"integrity":"sha512-lNEc8PkJzMS/j7Uw4ckRi6Um30mmYXRdSiAjhuQxaJvss7IltUYgYVbMQ3XOounaD8q8O7jwHlxaPya+9n77/g==","signatures":[{"sig":"MEYCIQDkYu7nj8ZeOPkHM89DGaOIOuDMVa8Oaqq90stgdlGmmwIhANbd98TcYiqJVwSVfQj5uacNa7cdePnVGk3XcSFgv79p","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.14.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":25809175},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"9155d62d6b9a159591c78518d2c8e63598eb72fb","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.1.1","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.0","knip":"^5.66.0","tsup":"^8.5.1","vite":"^6.0.0","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.37.0","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.14.2_1781441412166_0.3109325507692242","host":"s3://npm-registry-packages-npm-production"}},"0.14.3":{"name":"tandem-editor","version":"0.14.3","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.14.3","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"7c378f7abb9fa93897c50fcc85988cc6a247c02f","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.14.3.tgz","fileCount":45,"integrity":"sha512-AmUXED+TPhxn7SDv4NLCZpW0cntrdoKCsn1nUt0QjKvzAwwg7ETr3l47Quoop8wX8mx6qM3/hmBh3MmOvX42lA==","signatures":[{"sig":"MEQCIF9LNWXC1iJQad8hrR2Rqrq+AyZ67WcmvMtykxttdMKOAiAczWLu8rXyMnVgjZy6ForKxaSLDKSp3vuGwY/+dip7kg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.14.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26470284},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"e50c44a1de7b8baccb580928455fa8f7f2ff4b6b","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.22.3","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.14.3_1782142533004_0.13571061133961404","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"tandem-editor","version":"0.15.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.15.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"5456917dafc2e903dabe2f29c69bea52825e9af0","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.15.0.tgz","fileCount":45,"integrity":"sha512-wYSt/rm+f3pcel6oiKoC48KsEFLv+XkHJxAXxyF//alZgaGCI5rg8UWU9jeoUwAIOrLiLeXkR73Jw5K/XATHNQ==","signatures":[{"sig":"MEUCIQCyzxS7QISptc9XQroyE667S+4ZmVH42dO6b9JmN2hPvwIgDeArn8x0EzkOf4wkDIxtJTO6ZyMexT478bJC5MPuJGc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26550786},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"3b6811c7eb2e7810b46c454cd925dc86e6a54a84","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.15.0_1783453382927_0.9939318310791878","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"name":"tandem-editor","version":"0.16.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.16.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"6a55c7143469bf31ac1a7d29e11f15b0e133401c","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.16.0.tgz","fileCount":45,"integrity":"sha512-k/DeyUyZpDEryXSjr0JHdY1IRm1/dy06Of9lNii+kmmvrn8yyiMU4Hi6iehrv5725hGCiQb87T2CNmNXkb0ZOQ==","signatures":[{"sig":"MEUCIQCLk05CjFBi72mPT9uA5QMQ0nQXorpEDu/O5mcfX3H7ZAIgROrEAJOUIre/Y9wlCx6vUaQiZ25vwXDUbvhdk/NfMrU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26568453},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"095a65997b118e12791db35799c77b8d9563ce50","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.16.0_1783973632047_0.9253205346668838","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"tandem-editor","version":"0.17.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.17.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"f1aa501f5e49f6b173d22c5e4c48c10692483d8f","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.17.0.tgz","fileCount":45,"integrity":"sha512-60+HO3zXRESTeDCKFQKMwGeAB7p01AywCcKZnZdo7K2x9tX4SVPMTsivawCYC2YrgoaQtSEuH80VQ8RbO6uVQQ==","signatures":[{"sig":"MEUCIQCmuD5FhOVJLDVyU4D9Jx7RFLGtjREFaPEbWPPZgCLG0wIgebo0sORwTJJqXkT0Q6oAG8zEMcP70nIiiUkF0V2nkvU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26669396},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"181093d3b4d782dfbda052813e7afa6283465757","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.17.0_1784305325409_0.04102906975366771","host":"s3://npm-registry-packages-npm-production"}},"0.18.0":{"name":"tandem-editor","version":"0.18.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.18.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"eca2f2504dcc57690cfc665c336f1dbedcf56045","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.18.0.tgz","fileCount":45,"integrity":"sha512-1eQ9yIG1FFdHz5DpUv41ZC3Ilr2z7L3nRJClMNaNvPp+Bi6/wiJSieSXJ/i6BMbqvp0yaFWSVM02OiAzP9+NcQ==","signatures":[{"sig":"MEYCIQCSDwWWzXV0F5ChcjyWZmPLJJ6PziLVZVVGV9d7/y2MIQIhAMgklBJ9/I/BBceksVQAE7WhvP09AOsb4FTfibmDlOME","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.18.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26695046},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"fcb61b396382b337ebbde621bcd761e0ee50f8b8","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.18.0_1784490809079_0.7891017743050379","host":"s3://npm-registry-packages-npm-production"}},"0.19.0":{"name":"tandem-editor","version":"0.19.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"license":"BUSL-1.1","_id":"tandem-editor@0.19.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"4cb06f43d5db4aed691d48ca0243e95dcc184853","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.19.0.tgz","fileCount":45,"integrity":"sha512-Jmy+6fapAI//TjH/nNar7s+448XDGb4jQuUCOP0SHQKBVZvIOhdM0JaM9Lamt/7m6KObmn5wQjzeptWVevMVQA==","signatures":[{"sig":"MEYCIQCk5Bn7oXtl0DZEfEq1ux6CLa9Nez2j/ac8u0CCWwnQLwIhANwV76aatgTuPq1BBRw5qFFm3pp9QJkNNaWIneBP17c3","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.19.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":26775970},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"1337d7793b83bdb149e870e1e9ed05af04e59829","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"}},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","eslint-plugin-react-hooks":"^5.2.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.19.0_1784654638617_0.5456785300220568","host":"s3://npm-registry-packages-npm-production"}},"0.20.0":{"name":"tandem-editor","version":"0.20.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.20.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"e759c6d0a88c6f60493a8f4b0762a928984ddc7c","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.20.0.tgz","fileCount":45,"integrity":"sha512-MRxTq0zk+KMGSZ7DK5nUCOqB4f10rp2uGVjAdh9vIcBRXg4bLHKaKpw9RFupH/aocK97lj9LnmWKJz3bqwXjIw==","signatures":[{"sig":"MEUCIAjZva2I4F3fGdNH/xDHNkqiiFr1VVtg0XU2oMdgAoZTAiEAu6JDo05i+S2tZtjSTKZrn0PEEHtngoySFhkAS+SOddc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.20.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27233138},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"b175f2365feba6e3f9065208d804f1f6916ab927","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.20.0_1785904839653_0.12929506590473627","host":"s3://npm-registry-packages-npm-production"}},"0.20.1":{"name":"tandem-editor","version":"0.20.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.20.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"b8e73e3aeedeb9f2c4bb24919b9004f80d9a8b41","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.20.1.tgz","fileCount":45,"integrity":"sha512-sCCYdREqNQ50eEqxoTaOsxZgTVhjcFg7rggcVnqkrB5zmR9kbLMF7CGs8m7/fD2veu0ppPfN8OMlRN6+T+pG4A==","signatures":[{"sig":"MEQCIFOOfxEFhCE8YKdaS/fFb42zi/WXCCn56GvLj90+FMgDAiAORHrd081X20QmTh1Q4vjQqyQnmdVZrdzDUmNSI0CyiA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.20.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27236154},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"685f2218e48c81b82bf55e9a0ab965460ee90463","scripts":{"kg":"node scripts/kg.mjs","dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","kg:lint":"node scripts/kg-lint.mjs","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^9.39.4","svelte":"^5.46.4","vitest":"^4.1.0","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.20.1_1785949529007_0.17595532518554768","host":"s3://npm-registry-packages-npm-production"}},"0.21.0":{"name":"tandem-editor","version":"0.21.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.21.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"d9884b77d438b7f4771a7205e38eeff43c7e2fa6","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.21.0.tgz","fileCount":45,"integrity":"sha512-M+KlD/YTy7Q7irSTvgBy+85vCd4JjBK3eCdAIIrcmEkc4erAHs7S0BXhEXA7n+tGLafAkeet2y0G8LWya80NNg==","signatures":[{"sig":"MEUCICXbAd5rVsC2ts4V50u/ImcnTaDuD//BL7wmSo3NXJFtAiEA3IOj8RFNA40weEKZWhaEYESG78hJmZJDoy03RiDjrzU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.21.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27729086},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"41a6c5e00fabe24cddf4d2ffae04bec0905af9a3","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"npm run build && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.21.0","yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.21.0_1786365949126_0.6971052346914541","host":"s3://npm-registry-packages-npm-production"}},"0.22.0":{"name":"tandem-editor","version":"0.22.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.22.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"847c6263c06546bf4fe7f507ee0da2f99cff9e2f","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.22.0.tgz","fileCount":45,"integrity":"sha512-iLzYXTXwrpP4ekkcyu4ZkknFsUIeqe5/26mUNc84y+whVXlHAIfEtJibDz1Kti8qCvF3gRYL1s/CjqQtCT1Vfw==","signatures":[{"sig":"MEYCIQD+SzIczXT2pB2cYWecqNlI5+YRGb4JJCEYWSVvFd+5fAIhAMThByI0T4o36LDHj+bcoirXPdI1S5pK0Q95Y8v0LJd4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.22.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":27782394},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"1261779a8f86e383339db87959bf54e86acb1c0a","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"npm run build && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"cd scripts/spikes && python -m unittest test_session_monitor_acceptance","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.1","dependencies":{"ws":"^8.21.0","yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.22.0_1786507612910_0.9625462024437201","host":"s3://npm-registry-packages-npm-production"}},"0.22.1":{"name":"tandem-editor","version":"0.22.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.22.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"cd6167bb6469e75d00fd571103a05316b1166523","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.22.1.tgz","fileCount":47,"integrity":"sha512-qa0D06QmSKKeiKoYVU+qP+1KTKSysV5LwQd3e9+BITNxonZ2LUNrPppUuph1oVGSKiOlP4QMIyCO9hJGqc6YDA==","signatures":[{"sig":"MEQCIEkduSMw7f6FbI42lJrREiwLrAE1TNeEIhD3RaGi2QQvAiA8X3xBD4UyIk0vxiGSOQEgaqgHsQdUwIcDxSjD+ZFHZw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.22.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":28560227},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"5b451d02659437f912e344fd915f8122cd1cfdf8","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"npm run build && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"cd scripts/spikes && python -m unittest test_session_monitor_acceptance","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.21.0","yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.22.1_1786646901560_0.05785869767150209","host":"s3://npm-registry-packages-npm-production"}},"0.23.0":{"name":"tandem-editor","version":"0.23.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.23.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"f988d013217e8bfe60f9e21dac63eac4b1ea2a31","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.23.0.tgz","fileCount":47,"integrity":"sha512-TAhOaa9VDVOQ+N0+8UgLX0KaNswT2RpfBLnf67CW+cj+DAbrTayteYWQjdYKH7m2BIOascf+HPWZISaJ3MHAWw==","signatures":[{"sig":"MEUCIGmhys1mLfxXRG9oGi3dvjCczKuad/7Ladne8uQKK5t3AiEAuuaOMmxk23GUqpO8VTYp2TMtuIIwpjQAkxkGisXLvos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.23.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29001124},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"966268fc887ae5e8214cc0b544d1838eeead8413","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && vite build && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"npm run build && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"cd scripts/spikes && python -m unittest test_session_monitor_acceptance","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.21.0","yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-paragraph":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.23.0_1787075314401_0.4271797040665235","host":"s3://npm-registry-packages-npm-production"}},"0.24.0":{"name":"tandem-editor","version":"0.24.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.24.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"62bcfa4235a80de5f711caed071520fdd932b13c","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.24.0.tgz","fileCount":47,"integrity":"sha512-K7wgw55F/dTnz5xkwr0TxsChbcI0wIaoZeuM1L2kreUpKfVfATpCVQivXBmUSvYbrEGJ+j9J7zYDgLoTRUMmrg==","signatures":[{"sig":"MEYCIQC3POGI1gjvGJ9ZxwL6dgWbDHdF7O/CC69pcxXhm73qzwIhAPe0X7hQiZzJ/ZhA3Rnrwv6VYMj9SSsVnvFbizcx1BgU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.24.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29191562},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"36080a3847e729789e76b7fe969bc989f9ebf671","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && node scripts/build-client.mjs && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"tsx scripts/perf-build.ts && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"node scripts/spikes/run-acceptance-harness.mjs","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.21.0","yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-paragraph":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","yaml":"^2.8.2","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.24.0_1787328586015_0.7720135495410125","host":"s3://npm-registry-packages-npm-production"}},"0.24.1":{"name":"tandem-editor","version":"0.24.1","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.24.1","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"48753fa35510175173b2a682f06c566ecbbb99b9","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.24.1.tgz","fileCount":47,"integrity":"sha512-Xz1y71Jx6HA2D4ITVqtMheHdSVn5YiHo9ZmDJApJnfT3DIJv13EPV+rmAMU8SyB4pzHT2TzZdc4ft5ugHMIFNA==","signatures":[{"sig":"MEUCIEW/S2rEiLh5Jy7nPQX/+AY8PBhUDop8Y5IWIXzDM3h5AiEA2DfxtIs2Kqu1M3HFgrkDsyfu3o9EPGi9WikfTqMyzFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.24.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":29345312},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"63d15d1a2d361bca20bf8ac10b3f7f6fca677a77","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && node scripts/build-client.mjs && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"tsx scripts/perf-build.ts && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"node scripts/spikes/run-acceptance-harness.mjs","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"bloknayrb","email":"bloknayrb@gmail.com"},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@hono/node-server":"^2.0.12"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"10.9.8","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"22.23.2","dependencies":{"ws":"^8.21.0","yjs":"13.6.30","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^2.11.0","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^2.11.0","remark-parse":"^11.0.0","y-prosemirror":"1.3.7","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^1.3.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^2.11.0","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^2.27.2","@tiptap/extension-image":"^2.27.2","@tiptap/extension-table":"^2.11.0","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^2.11.0","@tiptap/extension-list-item":"^2.27.2","@tiptap/extension-paragraph":"^2.27.2","@tiptap/extension-subscript":"^2.27.2","@tiptap/extension-table-row":"^2.11.0","@tiptap/extension-underline":"^2.27.2","@tiptap/extension-table-cell":"^2.11.0","@tiptap/extension-typography":"^2.27.2","@tiptap/extension-placeholder":"^2.11.0","@tiptap/extension-superscript":"^2.27.2","@tiptap/extension-table-header":"^2.11.0","@tiptap/extension-collaboration":"^2.11.0","@tiptap/extension-collaboration-cursor":"^2.11.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^5.66.0","tsup":"^8.5.1","vite":"^8.0.16","yaml":"^2.8.2","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^25.5.0","lint-staged":"^16.4.0","svelte-check":"^4.0.0","@biomejs/biome":"^2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.24.1_1787503482015_0.9586309680751544","host":"s3://npm-registry-packages-npm-production"}},"0.25.0":{"name":"tandem-editor","version":"0.25.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.25.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"58d53e8e5404e0db2c0aa481b8cb2db74abc2fb8","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.25.0.tgz","fileCount":47,"integrity":"sha512-TbYrSexAVzlwVHRAKUBY/Hsz0QNORb3NVXs90oA4ll5E8qgA4NCPMPX5UdLF4t5OBUYFvVy2woOjD+NfnLKzvg==","signatures":[{"sig":"MEQCICzM1My2sn2l47zYZ99YE4qP6CcRHsTMRC4bjABh+uW7AiB4mMDRp/SSdh8yPQ9uOJHwOppdsItCprGf2ydSju1fRg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.25.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":32776170},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"2525eb2c1fc333ffd12ce091d804c13a2e2a996b","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && node scripts/build-client.mjs && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"tsx scripts/perf-build.ts && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","start:channel":"node dist/channel/index.js","test:coverage":"cross-env TANDEM_COVERAGE=1 vitest run --coverage --coverage.reporter=text --coverage.reporter=json-summary --coverage.reporter=html --testTimeout=120000 --hookTimeout=300000 && node scripts/ci/coverage-manifest.mjs && node scripts/ci/coverage-gate.mjs","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","typecheck:tests":"tsc -p tsconfig.tests.node.json --noEmit && tsc -p tsconfig.tests.client.json --noEmit && tsc -p tsconfig.tests.e2e.json --noEmit","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"node scripts/spikes/run-acceptance-harness.mjs","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c4a3e59-f96d-4dc9-978d-76d9d96aaf68"}},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@tiptap/y-tiptap":"^3.0.9","prosemirror-view":"^1.42.3","@hono/node-server":"^2.0.12","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","prosemirror-transform":"^1.12.1"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"11.19.0","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"**/*.json !package-lock.json":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","yjs":"13.6.32","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^3.30.5","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^3.30.5","remark-parse":"^11.0.0","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^2.0.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^3.30.5","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^3.30.5","@tiptap/extension-image":"^3.30.5","@tiptap/extension-table":"^3.30.5","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^3.30.5","@tiptap/extension-list-item":"^3.30.5","@tiptap/extension-paragraph":"^3.30.5","@tiptap/extension-subscript":"^3.30.5","@tiptap/extension-table-row":"^3.30.5","@tiptap/extension-underline":"^3.30.5","@tiptap/extension-table-cell":"^3.30.5","@tiptap/extension-typography":"^3.30.5","@tiptap/extension-placeholder":"^3.30.5","@tiptap/extension-superscript":"^3.30.5","@tiptap/extension-table-header":"^3.30.5","@tiptap/extension-collaboration":"^3.30.5","@tiptap/extension-collaboration-cursor":"3.0.0-next.6"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^6.34.0","tsup":"^8.5.1","vite":"^8.0.16","yaml":"^2.8.2","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^26.4.1","lint-staged":"^17.4.1","svelte-check":"^4.0.0","@biomejs/biome":"2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.11","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2","@tauri-ui-inspector/inspector":"^0.1.0","@tauri-ui-inspector/adapter-svelte":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.25.0_1788703969674_0.6305816864336955","host":"s3://npm-registry-packages-npm-production"}},"0.26.0":{"name":"tandem-editor","version":"0.26.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.26.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"0ce78d5788430c6e7301d638937eefec093a7cee","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.26.0.tgz","fileCount":47,"integrity":"sha512-CLCxvHcWfGGm1tOOPWh7iiy0G0Cf1EofK3F2usMGGLu5FYRDjomGpoCbntdRHL9JR59v5hSD3axcgx7iF19Frw==","signatures":[{"sig":"MEYCIQDiRVFGCAgJrz8SFk4HhN9X+HIGaHaTPLwNtMe1xGxuSAIhAPJVbIpkQ+IvmEI48+jq/owtwMakvbdoYOAm4zpIBAI4","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBeSTSdbmZjMuPFXklzKnvPt5vBcRBNqRhTfCiR0+QYmAiAXczdkI8k9lxGsfqdFb8wnUbOGvmQmsk7VD4vFjXAddw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.26.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33590642},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"c1361f33d01934d8344b291146880a567d08a50f","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && node scripts/build-client.mjs && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"tsx scripts/perf-build.ts && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","coverage:gate":"node scripts/ci/coverage-gate.mjs","start:channel":"node dist/channel/index.js","test:coverage":"cross-env TANDEM_COVERAGE=1 vitest run --coverage --coverage.reporter=text --coverage.reporter=json-summary --coverage.reporter=html --testTimeout=120000 --hookTimeout=300000","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","typecheck:tests":"tsc -p tsconfig.tests.node.json --noEmit && tsc -p tsconfig.tests.client.json --noEmit && tsc -p tsconfig.tests.e2e.json --noEmit && svelte-check --tsconfig ./tsconfig.tests.client.json --fail-on-warnings","coverage:manifest":"node scripts/ci/coverage-manifest.mjs","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"node scripts/spikes/run-acceptance-harness.mjs","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c4a3e59-f96d-4dc9-978d-76d9d96aaf68"}},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@tiptap/y-tiptap":"^3.0.9","prosemirror-view":"^1.42.3","@hono/node-server":"^2.0.12","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","prosemirror-transform":"^1.12.1"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"11.19.0","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.json":["biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","yjs":"13.6.32","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^3.30.5","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^3.30.5","remark-parse":"^11.0.0","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^2.0.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","dingbat-to-unicode":"^1.0.1","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^3.30.5","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^3.30.5","@tiptap/extension-image":"^3.30.5","@tiptap/extension-table":"^3.30.5","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^3.30.5","@tiptap/extension-list-item":"^3.30.5","@tiptap/extension-paragraph":"^3.30.5","@tiptap/extension-subscript":"^3.30.5","@tiptap/extension-table-row":"^3.30.5","@tiptap/extension-underline":"^3.30.5","@tiptap/extension-table-cell":"^3.30.5","@tiptap/extension-typography":"^3.30.5","@tiptap/extension-placeholder":"^3.30.5","@tiptap/extension-superscript":"^3.30.5","@tiptap/extension-table-header":"^3.30.5","@tiptap/extension-collaboration":"^3.30.5","@tiptap/extension-collaboration-cursor":"3.0.0-next.6"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^6.34.0","tsup":"^8.5.1","vite":"^8.0.16","yaml":"^2.8.2","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^26.4.1","lint-staged":"^17.4.1","svelte-check":"^4.0.0","@biomejs/biome":"2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.11","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2","@tauri-ui-inspector/inspector":"^0.1.0","@tauri-ui-inspector/adapter-svelte":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.26.0_1789753894298_0.9381380666575307","host":"s3://npm-registry-packages-npm-production"}},"0.27.0":{"name":"tandem-editor","version":"0.27.0","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"author":{"name":"bloknayrb"},"license":"BUSL-1.1","_id":"tandem-editor@0.27.0","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"homepage":"https://github.com/bloknayrb/tandem#readme","bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"bin":{"tandem":"dist/cli/index.js"},"dist":{"shasum":"2d3d09190fa562f28dfcda62dda0db50f21de9a0","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.27.0.tgz","fileCount":47,"integrity":"sha512-tpMy1xN+L8SC328iEYlPGkHOKM1LpUop+5KIjiWs+URDdCDHKiDJ33o0gmkMz3btNejgO9gsZhXv0i5BUzVDEg==","signatures":[{"sig":"MEQCIBHj3nAPbdzPo7FLdezssMBpaUSgOHi9oo6bXe4UCKSoAiAVtE3DlY80pkfqNkGZyXxEd7ceTo2tgLIet27pZi8HXg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDNkpeCPlYSs5XlOIF659BHEtzjZcjFSMsz7ENKxQosoQIgWo0dLXZEDgBPZM9z6es9ROfcf4rF9twJWMPCxSMxnWU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.27.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33618309},"main":"./dist/cli/index.js","type":"module","engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"8751b3f67253b221e85f31d16bad315fa033711e","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && node scripts/build-client.mjs && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"tsx scripts/perf-build.ts && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","coverage:gate":"node scripts/ci/coverage-gate.mjs","start:channel":"node dist/channel/index.js","test:coverage":"cross-env TANDEM_COVERAGE=1 vitest run --coverage --coverage.reporter=text --coverage.reporter=json-summary --coverage.reporter=html --testTimeout=120000 --hookTimeout=300000","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","typecheck:tests":"tsc -p tsconfig.tests.node.json --noEmit && tsc -p tsconfig.tests.client.json --noEmit && tsc -p tsconfig.tests.e2e.json --noEmit && svelte-check --tsconfig ./tsconfig.tests.client.json --fail-on-warnings","coverage:manifest":"node scripts/ci/coverage-manifest.mjs","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"node scripts/spikes/run-acceptance-harness.mjs","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c4a3e59-f96d-4dc9-978d-76d9d96aaf68"}},"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@tiptap/y-tiptap":"^3.0.9","prosemirror-view":"^1.42.3","@hono/node-server":"^2.0.12","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","prosemirror-transform":"^1.12.1"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"11.19.0","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.json":["biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.21.0","yjs":"13.6.32","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^3.30.5","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^3.30.5","remark-parse":"^11.0.0","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^2.0.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","dingbat-to-unicode":"^1.0.1","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^3.30.5","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^3.30.5","@tiptap/extension-image":"^3.30.5","@tiptap/extension-table":"^3.30.5","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^3.30.5","@tiptap/extension-list-item":"^3.30.5","@tiptap/extension-paragraph":"^3.30.5","@tiptap/extension-subscript":"^3.30.5","@tiptap/extension-table-row":"^3.30.5","@tiptap/extension-underline":"^3.30.5","@tiptap/extension-table-cell":"^3.30.5","@tiptap/extension-typography":"^3.30.5","@tiptap/extension-placeholder":"^3.30.5","@tiptap/extension-superscript":"^3.30.5","@tiptap/extension-table-header":"^3.30.5","@tiptap/extension-collaboration":"^3.30.5","@tiptap/extension-collaboration-cursor":"3.0.0-next.6"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^6.34.0","tsup":"^8.5.1","vite":"^8.0.16","yaml":"^2.8.2","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^4.1.0","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^26.4.1","lint-staged":"^17.4.1","svelte-check":"^4.0.0","@biomejs/biome":"2.4.8","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^4.1.11","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2","@tauri-ui-inspector/inspector":"^0.1.0","@tauri-ui-inspector/adapter-svelte":"^0.1.0"},"_npmOperationalInternal":{"tmp":"tmp/tandem-editor_0.27.0_1790078848152_0.348469297160531","host":"s3://npm-registry-packages-npm-production"}},"0.28.0":{"_id":"tandem-editor@0.28.0","bin":{"tandem":"dist/cli/index.js"},"bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"dist":{"shasum":"d25dbf98f21bd0a24d12d3ab2ecdc10eb3465d07","tarball":"https://registry.npmjs.org/tandem-editor/-/tandem-editor-0.28.0.tgz","fileCount":47,"integrity":"sha512-NxJYrBYs6aHuSloORo7yExoN7xfBGg/bDOiAgH0M/QNGZKGXLM+RUpIJdED3nEkfMmfPlXNol12s34xR6sJIbg==","signatures":[{"sig":"MEUCIENEsj5sYzuOzSmG8HUBxUuPYDxC+3olScS/+i3+TnBmAiEA2P0HyNmHNCCMgKL5pFntTl5WJayifb//lDAIm9WQpZM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICXA4v5La11C6Lpwx5LMi6VEF9THVZ8wYx1EbD29debnAiB+8cycbCVgTqLYXYjeEJf7RlCicn0rK4Z1IvOpjqUQQg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/tandem-editor@0.28.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":33626606},"main":"./dist/cli/index.js","name":"tandem-editor","type":"module","author":{"name":"bloknayrb"},"engines":{"node":">=22.12.0"},"exports":{".":"./dist/cli/index.js","./dist/cli/index.js":"./dist/cli/index.js"},"gitHead":"ef543da757cb83a815228d66c37a10fe4f4fe8f2","license":"BUSL-1.1","scripts":{"dev":"vite","lint":"eslint .","test":"vitest","build":"npm run typecheck && node scripts/build-client.mjs && node scripts/check-font-assets.mjs && tsup","doctor":"tsx scripts/doctor.mjs","format":"biome format --write .","server":"tsx src/server/index.ts","channel":"tsx src/channel/index.ts","prepare":"husky","preview":"vite preview","test:e2e":"playwright test","dev:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri dev","perf:gate":"tsx scripts/perf-build.ts && playwright test --config=tests/perf/playwright.config.ts","typecheck":"tsc -p tsconfig.server.json --noEmit && tsc --noEmit && svelte-check --tsconfig ./tsconfig.client.json --fail-on-warnings","dev:client":"vite","dev:server":"tsx watch src/server/index.ts","build:tauri":"node scripts/download-node-sidecar.mjs && node scripts/build-reaper.mjs && cargo tauri build","check:fonts":"node scripts/check-font-assets.mjs","check:links":"node scripts/check-doc-links.mjs","test:e2e:ui":"playwright test --ui","build:reaper":"node scripts/build-reaper.mjs","build:server":"tsup","check:tokens":"tsx scripts/check-semantic-tokens.ts","start:server":"node dist/server/index.js","audit:origins":"tsx scripts/audit-origins.ts","coverage:gate":"node scripts/ci/coverage-gate.mjs","start:channel":"node dist/channel/index.js","test:coverage":"cross-env TANDEM_COVERAGE=1 vitest run --coverage --coverage.reporter=text --coverage.reporter=json-summary --coverage.reporter=html --testTimeout=120000 --hookTimeout=300000","dev:standalone":"node scripts/dev-standalone.mjs","prepublishOnly":"npm run build","audit:dead-code":"knip","audit:ymap-keys":"tsx scripts/audit-ymap-keys.ts","typecheck:tests":"tsc -p tsconfig.tests.node.json --noEmit && tsc -p tsconfig.tests.client.json --noEmit && tsc -p tsconfig.tests.e2e.json --noEmit && svelte-check --tsconfig ./tsconfig.tests.client.json --fail-on-warnings","coverage:manifest":"node scripts/ci/coverage-manifest.mjs","test:tauri-driver":"npm --prefix tests/tauri-driver test","capture:screenshots":"cross-env SCREENSHOTS=1 playwright test --config=scripts/screenshots/playwright.config.ts","test:acceptance-harness":"node scripts/spikes/run-acceptance-harness.mjs","capture:design-baselines":"cross-env CAPTURE_DESIGN_BASELINES=1 playwright test --config=scripts/design-baselines/playwright.config.ts"},"version":"0.28.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:6c4a3e59-f96d-4dc9-978d-76d9d96aaf68"}},"homepage":"https://github.com/bloknayrb/tandem#readme","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"overrides":{"ws":"^8.21.0","tsup":{"esbuild":"^0.28.1"},"postcss":"^8.5.23","@tiptap/y-tiptap":"^3.0.9","prosemirror-view":"^1.42.3","@hono/node-server":"^2.0.12","prosemirror-model":"^1.25.11","prosemirror-state":"^1.4.4","prosemirror-transform":"^1.12.1"},"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"_npmVersion":"11.19.0","description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","directories":{},"lint-staged":{"**/*.mjs":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.json":["biome check --write --no-errors-on-unmatched"],"**/*.{ts,tsx}":["eslint --fix","biome check --write --no-errors-on-unmatched"],"**/*.{yml,yaml,md}":["node scripts/normalize-eol.mjs"],"src/**/*.{svelte,css,html}":["biome check --write --no-errors-on-unmatched"],"src/client/**/*.{ts,tsx,svelte,css,html}":["tsx scripts/check-semantic-tokens.ts"]},"maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.21.0","yjs":"13.6.32","zod":"^3.23.0","docx":"^9.6.1","jszip":"^3.10.1","express":"^5.2.1","mammoth":"^1.8.0","unified":"^11.0.0","env-paths":"^4.0.0","@tiptap/pm":"^3.30.5","remark-gfm":"^4.0.1","htmlparser2":"^12.0.0","markdown-it":"^14.2.0","y-protocols":"1.0.7","@sentry/node":"^10.8.0","@tiptap/core":"^3.30.5","remark-parse":"^11.0.0","dom-serializer":"^3.0.0","@sentry/browser":"^10.8.0","@tauri-apps/api":"^2.11.0","update-notifier":"^7.3.1","@napi-rs/keyring":"^2.0.0","remark-stringify":"^11.0.0","unist-util-visit":"^5.1.0","@hocuspocus/server":"2.15.3","dingbat-to-unicode":"^1.0.1","remark-frontmatter":"^5.0.0","@tiptap/starter-kit":"^3.30.5","@hocuspocus/provider":"3.4.4","prosemirror-markdown":"^1.13.4","@tiptap/extension-link":"^3.30.5","@tiptap/extension-image":"^3.30.5","@tiptap/extension-table":"^3.30.5","tauri-plugin-sentry-api":"^0.5.0","@modelcontextprotocol/sdk":"^1.12.1","@tauri-apps/plugin-dialog":"^2.7.1","@tiptap/extension-highlight":"^3.30.5","@tiptap/extension-list-item":"^3.30.5","@tiptap/extension-paragraph":"^3.30.5","@tiptap/extension-subscript":"^3.30.5","@tiptap/extension-table-row":"^3.30.5","@tiptap/extension-underline":"^3.30.5","@tiptap/extension-table-cell":"^3.30.5","@tiptap/extension-typography":"^3.30.5","@tiptap/extension-placeholder":"^3.30.5","@tiptap/extension-superscript":"^3.30.5","@tiptap/extension-table-header":"^3.30.5","@tiptap/extension-collaboration":"^3.30.5","@tiptap/extension-collaboration-cursor":"3.0.0-next.6"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.22.4","knip":"^6.34.0","tsup":"^8.5.1","vite":"^8.0.16","yaml":"^2.8.2","husky":"^9.1.7","eslint":"^10.8.1","svelte":"^5.46.4","vitest":"^5.0.1","postcss":"^8.5.23","@types/ws":"^8.18.1","cross-env":"^10.1.0","happy-dom":"^20.9.0","typescript":"^5.6.0","@types/node":"^26.4.1","lint-staged":"^17.4.1","svelte-check":"^4.0.0","@biomejs/biome":"2.5.13","@playwright/test":"^1.58.2","typescript-eslint":"^8.57.2","@types/markdown-it":"^14.1.2","@vitest/coverage-v8":"^5.0.1","@axe-core/playwright":"^4.11.3","@types/update-notifier":"^6.0.8","@testing-library/svelte":"^5.0.0","@sveltejs/vite-plugin-svelte":"^7.1.2","@tauri-ui-inspector/inspector":"^0.1.0","@tauri-ui-inspector/adapter-svelte":"^0.1.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/tandem-editor_0.28.0_1790382694588_0.9572134661199054"}}},"time":{"created":"2026-04-01T16:21:10.602Z","modified":"2026-09-26T00:31:35.175Z","0.1.0":"2026-04-01T16:21:10.855Z","0.1.1":"2026-04-01T16:39:14.535Z","0.1.2":"2026-04-01T16:44:24.792Z","0.2.0":"2026-04-05T13:55:50.049Z","0.2.1":"2026-04-05T14:54:06.536Z","0.2.2":"2026-04-05T14:57:19.123Z","0.2.3":"2026-04-05T16:24:37.691Z","0.2.4":"2026-04-05T18:00:19.187Z","0.2.5":"2026-04-05T18:11:39.015Z","0.2.6":"2026-04-05T19:04:40.672Z","0.2.7":"2026-04-05T21:57:40.045Z","0.2.8":"2026-04-05T22:52:38.597Z","0.2.9":"2026-04-05T23:31:20.233Z","0.2.10":"2026-04-06T03:27:07.275Z","0.2.11":"2026-04-06T05:45:24.152Z","0.2.12":"2026-04-07T00:05:15.049Z","0.3.0":"2026-04-07T21:19:47.986Z","0.3.1":"2026-04-10T23:31:30.123Z","0.3.2":"2026-04-12T07:12:20.657Z","0.4.0":"2026-04-13T01:38:47.317Z","0.5.0":"2026-04-13T21:15:13.026Z","0.6.0":"2026-04-15T16:00:55.913Z","0.6.1":"2026-04-15T16:32:17.718Z","0.6.2":"2026-04-16T00:45:43.562Z","0.6.3":"2026-04-19T19:25:14.175Z","0.7.0":"2026-04-20T18:20:59.797Z","0.7.1":"2026-04-21T22:18:13.149Z","0.8.0":"2026-04-26T17:17:28.578Z","0.9.0":"2026-04-28T20:29:17.273Z","0.9.1":"2026-05-01T13:57:28.728Z","0.11.0":"2026-05-11T23:30:35.397Z","0.11.1":"2026-05-13T03:01:53.688Z","0.11.2":"2026-05-13T12:41:25.059Z","0.12.0":"2026-05-16T01:56:56.327Z","0.13.0":"2026-05-26T03:08:58.622Z","0.13.5":"2026-05-29T21:27:07.888Z","0.13.6":"2026-06-04T14:16:01.247Z","0.14.0":"2026-06-10T17:48:12.996Z","0.14.1":"2026-06-11T14:48:11.739Z","0.14.2":"2026-06-14T12:50:12.389Z","0.14.3":"2026-06-22T15:35:33.273Z","0.15.0":"2026-07-07T19:43:03.191Z","0.16.0":"2026-07-13T20:13:52.332Z","0.17.0":"2026-07-17T16:22:06.057Z","0.18.0":"2026-07-19T19:53:29.312Z","0.19.0":"2026-07-21T17:23:58.901Z","0.20.0":"2026-08-05T04:40:39.976Z","0.20.1":"2026-08-05T17:05:29.281Z","0.21.0":"2026-08-10T12:45:49.412Z","0.22.0":"2026-08-12T04:06:53.158Z","0.22.1":"2026-08-13T18:48:21.846Z","0.23.0":"2026-08-18T17:48:34.716Z","0.24.0":"2026-08-21T16:09:46.306Z","0.24.1":"2026-08-23T16:44:42.287Z","0.25.0":"2026-09-06T14:12:49.957Z","0.26.0":"2026-09-18T17:51:34.511Z","0.27.0":"2026-09-22T12:07:28.396Z","0.28.0":"2026-09-26T00:31:34.849Z"},"bugs":{"url":"https://github.com/bloknayrb/tandem/issues","email":"support@tandem.ink"},"author":{"name":"bloknayrb"},"license":"BUSL-1.1","homepage":"https://github.com/bloknayrb/tandem#readme","keywords":["tandem","mcp","claude","editor","ai","collaborative"],"repository":{"url":"git+https://github.com/bloknayrb/tandem.git","type":"git"},"description":"Edit and iterate on documents with any MCP-capable AI (Claude by default). Real-time push via the channel shim.","maintainers":[{"name":"bloknayrb","email":"bloknayrb@gmail.com"}],"readme":"<p align=\"center\">\n  <picture>\n    <source media=\"(prefers-color-scheme: dark)\" srcset=\"docs/assets/logotype-dark.png\">\n    <img src=\"docs/assets/logotype-light.png\" alt=\"Tandem\" width=\"280\">\n  </picture>\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/tandem-editor\"><img src=\"https://img.shields.io/npm/v/tandem-editor?label=npm\" alt=\"npm version\"></a>\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-BUSL--1.1-blue\" alt=\"License: BUSL-1.1\"></a>\n  <a href=\"https://github.com/bloknayrb/tandem/releases/latest\"><img src=\"https://img.shields.io/github/v/release/bloknayrb/tandem?label=release\" alt=\"Latest release\"></a>\n</p>\n\n**An editor where you and an AI work on the same document at the same time.**\n\n## Why I built this\n\nAt work I kept asking Claude to draft a report for me. I'd have it write into a scratch file in my Obsidian vault, and that file updated instantly. That much was great. But if I wanted a paragraph changed, or wanted to ask why a sentence was there at all, I was back to copying text into the chat window and pasting the answer out again. It was a one-way street. And Claude couldn't open a note for me either; I had to go find it myself.\n\nSo I built Tandem. I tell Claude to pull something up in Tandem, and then I just keep talking to it there: in the chat beside the document, or by commenting on a specific paragraph, or by highlighting a sentence and asking about *that* (it knows what I'm pointing at). It works the other way too. I can open any file in Tandem and Claude is already attached to it, with no session to start and nothing to paste in. If I want it to see the rest of that folder as well, Tandem offers to relaunch it there.\n\nIt started with reports, but it isn't really about reports. If you're copying text back and forth between a chat window and the document you're writing, that's what this is for.\n\nOne thing you need, though: an AI client running on your own computer, plus the subscription behind it. [Claude Code](https://claude.com/claude-code) is the default, and a Claude Pro or Max subscription includes it. Clients connect over [MCP](https://modelcontextprotocol.io), an open standard for letting an AI reach tools and files, so you can use others too. [Install](#install) below covers the setup, which is a wizard rather than a config file. Without a client connected, Tandem is still a local editor (open, edit, save) and nothing more.\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/01-editor-overview.png\" alt=\"The Tandem editor with a document open on the left and a panel of AI annotation cards on the right\" width=\"820\">\n</p>\n\n*Your document on the left, the AI's comments and suggested rewrites as cards on the right. Accept, dismiss, or reply to ask for something different.*\n\n## Who Tandem is for\n\n- You're drafting something long (an essay, a report, a proposal, a design doc) and you want a second reader for tone and structure.\n- You're reviewing what someone else wrote (a thesis chapter, a contract, a spec) and you want a faster pass.\n- The AI wrote a draft and you have to decide what to keep.\n\nI built Tandem for one person working on their own documents. Those three are examples rather than a boundary, and the kind of document doesn't change how any of it works: a contract behaves the same as an essay. The interface is English-only for now.\n\n## Install\n\n**[Download the installer for your platform →](https://github.com/bloknayrb/tandem/releases/latest)** Windows, macOS, and Linux. The desktop app bundles the editor, its server, and its own updates. Double-click a `.md`, `.markdown`, `.txt`, or `.html` file and it opens in Tandem.\n\nThen connect your AI. Tandem opens a setup wizard the first time you run it. If [Claude Code](https://claude.com/claude-code) isn't installed it can install it for you in one click on all three platforms, and it writes the connection settings itself. You can reopen the wizard any time from **Settings → AI Assistant**. Two things before you start. **A Claude Pro or Max subscription includes Claude Code** (pay-as-you-go API billing works too). And **the Claude you use at claude.ai in a browser can't connect**, because a web page has no way to reach a file on your disk. The subscription alone doesn't do it: you need Claude Code, or Claude Desktop, installed locally as well.\n\nPrefer a different AI? Any MCP-capable client can connect to the same endpoint. [docs/integrations.md](docs/integrations.md) covers what's supported and what's untested. Claude Desktop is set up by the same wizard on all three platforms; [Cowork](#cowork), its local agent mode, is the Windows-only part.\n\n<details>\n<summary><b>System requirements</b></summary>\n\nWindows 10 version 22H2 or Windows 11; macOS 12 (Monterey) or later; Linux with glibc 2.31 or later (Ubuntu 20.04+, Debian 11+, Fedora 34+). On Windows the first launch may show a \"Windows protected your PC\" warning, which lasts until the installer's signing certificate accumulates SmartScreen reputation. [The troubleshooting entry](docs/troubleshooting.md#windows-smartscreen-warning) has how to dismiss it.\n\n</details>\n\n<details>\n<summary><b>Install from npm instead</b></summary>\n\n`npm install -g tandem-editor` (you'll need Node.js 22.12.0 or newer), then run `tandem`. It starts the server and prints a `http://127.0.0.1:3479` URL that opens the editor in your browser, where the first-run wizard connects Claude. For a scripted setup with no prompts, run `tandem setup --apply` once first. This is mostly useful if you already have Node.js; otherwise I'd just use the desktop app.\n\n</details>\n\n<details>\n<summary><b>Real-time updates for hand-started sessions</b></summary>\n\n**How Claude starts matters.** Tandem talks to Claude over two independent connections: one lets Claude read and edit your document, the other tells it the moment you comment or send a chat message. Sessions Tandem launches for you, including the desktop app's **Relaunch Claude** button, get both and need no setup from you. A session you start yourself by typing `claude` begins with only the first. On the first Tandem response that carries a wake-stream address — opening a document (`tandem_open`), creating a scratchpad (`tandem_scratchpad`), or a read-mode `tandem_status` — Tandem's bundled skill tells it to attempt the second with the built-in Monitor, where that tool is available.\n\nThe simplest route needs no installation at all: **the built-in Monitor watch starts automatically on first Tandem use.** The bundled skill reads the live wake-stream address from the first Tandem response that carries one — `tandem_open`, `tandem_scratchpad` or a read-mode `tandem_status` — and makes one persistent attempt for the session. If the attempt got skipped, asking Claude to watch is a recovery step rather than normal setup. It does need a Claude Code that offers a built-in Monitor tool. That's enabled per account rather than per version, so upgrading won't add it, and on Windows it also needs Git Bash. The plugin monitor shares that same per-account gate, so it can't help when that gate is off. But the plugin monitor does not require Git Bash on Windows and can fall back to PowerShell, so it may help when Git Bash is the missing precondition. The third option below, the channel shim, avoids both requirements.\n\nThe second route is to install the Tandem plugin, which also needs no flag. See [Real-time updates](#real-time-updates) below. It starts watching the first time Claude uses Tandem's skill in a session, so ask for Tandem by name (\"let's work on this in Tandem\") rather than expecting it to be listening before you've mentioned it. Start `claude` from a terminal window if you install it: the plugin's monitor uses whatever program path that shell has, and a Claude Code started from a desktop icon may not have one it can use.\n\nThe third is the channel shim, which has to be registered once and then switched on for each session:\n\n```bash\ntandem setup --apply --with-channel-shim                              # once\nclaude --dangerously-load-development-channels server:tandem-channel  # every session\n```\n\nChoose one setup route where possible. A plugin-backed session whose Claude Code also offers the built-in Monitor may start both automatically when it first uses Tandem's skill. Those wakes carry no message content, host rate limiting can hide the overlap, and the inbox de-duplicates what Claude reads. If wakes visibly double, ask Claude to stop its built-in watch with `TaskStop`.\n\nWithout any of them nothing breaks and nothing is lost: your messages and comments are saved, and Claude sees them the next time it checks its inbox. But it won't react on its own, which reads as Claude ignoring you. If that's what you're seeing, [this troubleshooting entry](docs/troubleshooting.md#i-sent-a-chat-message-or-left-a-comment-and-nothing-happened) walks through it, and **Settings → About → Copy Diagnostics** (or `tandem doctor`, on npm installs) reports whether anything is listening. There's more detail in [Real-time updates](#real-time-updates).\n\n</details>\n\n## How you work with Tandem\n\nTandem has to be running, and once you've been through [Install](#install) it and your AI client find each other on their own, so you don't reconnect them each time. From there it works in both directions, and which one you pick changes how you start rather than what you do next.\n\n**Starting in Tandem.** Open a document and the AI can already see it. There's nothing to attach and no session to paste into. If Claude isn't running yet, the desktop app can start it for you.\n\n**Starting in Claude.** Ask it to open the file in Tandem (\"pull up the draft in Tandem\") and the document appears in a tab with the AI already on it. This is the direction I use most.\n\nEither way, the rest is the same:\n\n1. Type a question in the chat panel, or highlight text in the document to point the AI at a passage. It sees what you highlight as you highlight it.\n2. The AI's suggestions show up as cards beside the document. You decide what to accept.\n3. Save when you're finished.\n\n[docs/workflows.md](docs/workflows.md) has examples of what this looks like day to day.\n\n## What you get\n\n- Multiple documents open in tabs, with `.md`, `.markdown`, `.txt` and `.html` support (HTML opens read-only, for reading and annotating). Markdown means CommonMark plus GitHub Flavored Markdown; `[[wikilinks]]` and `![[embeds]]` are saved as literal text, so Obsidian, Logseq and Foam vaults are not a supported input for this release.\n- Tandem snapshots a file before its first write, so you can restore the original from inside the app.\n- Word (`.docx`) files are not supported in this version. Word support wasn't reliable enough for serious work, so it has been taken out of the app for now; to bring a Word document in, save a copy from Word as Plain Text (`.txt`) to edit it, or as Web Page (`.html`) to review it read-only.\n- A scratchpad (`Ctrl+N` on desktop; the **+** button in the tab bar in the browser build, where the browser itself owns `Ctrl+N`) for drafts you don't want to save to disk.\n- A command palette (`Ctrl+Shift+P`) with fuzzy search, ranked by how well each result matches.\n- Find and replace, including across all open tabs.\n- An outline panel for navigating long documents.\n- Paste that keeps its structure: Markdown tables and images arrive as real tables and images, and a URL pasted over selected text becomes a link.\n- Suggestions shown as word-level diffs, so you can see exactly which words change.\n- Optional smart typography (curly quotes, em dashes) and a spellcheck toggle, in Settings (`Ctrl+,`).\n- Light and dark themes.\n- Keyboard navigation through pending suggestions: `Alt+]` and `Alt+[` to move between them, `Ctrl+Enter` to accept, `Ctrl+Shift+Enter` to dismiss.\n\n<details>\n<summary><b>More screenshots</b></summary>\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/03-side-panel.png\" alt=\"A close-up of annotation cards beside the document, including a replacement card showing the original text in red strikethrough and the proposed text in green, with Accept and Dismiss buttons\" width=\"500\">\n</p>\n\n*Annotations from the AI. Comments and suggestions appear as cards. For a replacement you see your current text and the proposed wording together, so you can accept the change, dismiss it, or reply to ask for something different.*\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/02-chat-sidebar.png\" alt=\"The chat panel showing a question from the user and a reply from the AI assistant about the document\" width=\"460\">\n</p>\n\n*The chat panel. Ask a question about the document and the AI answers in place. It can read the file directly, so there's nothing to copy and paste.*\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/04-toolbar-actions.png\" alt=\"The top of the editor showing several documents open in tabs, the formatting toolbar, a text selection, and the Solo and Tandem mode toggle\" width=\"800\">\n</p>\n\n*Several documents open in tabs, with the formatting toolbar above the text. Highlight a passage and the AI sees the selection as you make it. The Solo / Tandem toggle on the right decides whether you're working alongside the AI or on your own; [Privacy and trust](#privacy-and-trust) covers what Solo holds back.*\n\n<p align=\"center\">\n  <img src=\"docs/screenshots/11-margin-annotations.png\" alt=\"Comment cards laid out down the right margin, each one level with the underlined sentence it refers to\" width=\"800\">\n</p>\n\n*The optional margin view. Instead of stacking in a side panel, each card sits level with the passage it's about, so you can see what's being discussed without clicking anything.*\n\n</details>\n\n## Privacy and trust\n\n- Tandem runs on your computer and keeps your documents on your disk. I don't run any server that holds your files.\n- When you ask the AI to do something, the text you share with it goes to whichever AI service you're using. Connect Claude and that text goes to Anthropic under their terms. Tandem doesn't relay or copy your document anywhere else.\n- Tandem has a private notes feature. Notes you mark private are stripped out of every response the AI sees ([ADR-027](docs/decisions.md)).\n- **Solo mode holds your work back from the AI.** The Solo / Tandem toggle in the title bar (`Ctrl+Shift+M`) isn't just a notification setting. While you're in Solo, the comments and replies *you* write are withheld from what the AI is told and from what it can look up: its inbox, its reads of the annotation list, and the live updates pushed to it. Each held item shows an amber **Held** pill, the status bar keeps a running count, and switching back to Tandem releases the set together. The hold is enforced where the AI *reads*, not just where things are *displayed*, and that includes the annotation export, which reports how many items it withheld rather than quietly including them. What Solo doesn't cover: it holds comments and replies, not the document text itself, which the AI can still read. [The user guide](docs/user-guide.md#solo--tandem-mode) has the full boundary.\n- Tandem collects no telemetry and no analytics by default. No usage data, and **crash reporting is off unless you turn it on**. It activates only if you set `TANDEM_SENTRY_DSN` to a [Sentry](https://sentry.io) or self-hosted [GlitchTip](https://glitchtip.com) endpoint of your own. Leave it unset, which is the default, and no crash data ever leaves your machine. Reports that do get sent are scrubbed of home-directory paths, API keys, and document payloads; [docs/security.md](docs/security.md) has the details.\n- When paid licensing arrives at v1.0, running the app will validate a signed license file on your own machine, with no network call. Update checks will stay network-only, carry no analytics, and the update service will log only what it needs to authorize the download. Once you activate a paid license it runs indefinitely, because the run check only verifies the signature. The one-year window governs which updates you're offered, not whether the app keeps working.\n\n[docs/security.md](docs/security.md) has the full security model.\n\n## Where Tandem is headed\n\nTandem is close to v1.0, and I keep shipping. [CHANGELOG.md](CHANGELOG.md) records what landed in each release and [docs/roadmap.md](docs/roadmap.md) has the full plan. Today the supported integration is Claude (Claude Code or Claude Desktop) over MCP, set up by the in-app wizard. Local models (Ollama, LM Studio) are committed for v1.0. They're built and shipping in the app already, but switched off until then, so you won't see a Models tab in this release ([#1123](https://github.com/bloknayrb/tandem/issues/1123)). Same one-time license. Cloud API-key providers (OpenAI, Gemini) follow in v1.1. What's left is turnkey setup on macOS and Linux, and switching on the licensing that's already built in. Pricing is under [License](#license) below.\n\n## Documentation and help\n\n**Something not working?** Run the built-in diagnostics first, since they check the setup problems behind most first-launch failures. In the desktop app: **Settings → About → Copy Diagnostics**. On an npm install: `tandem doctor`. (The desktop app doesn't install the `tandem` command, so use the button rather than the CLI.) Then see [docs/troubleshooting.md](docs/troubleshooting.md).\n\n| | |\n| - | - |\n| [User guide](docs/user-guide.md) | a longer walkthrough of the editor |\n| [Workflows](docs/workflows.md) | daily usage patterns |\n| [Troubleshooting](docs/troubleshooting.md) | when something goes wrong |\n| [Data locations](docs/data-locations.md) | where Tandem stores data, and clean uninstall |\n| [Integrations](docs/integrations.md) | which AI clients connect, and how |\n| [Security](docs/security.md) | the full security model |\n| [Licensing](docs/licensing-explained.md) | how licensing works at v1.0, plain English first |\n| [Configuration](docs/configuration.md) · [CLI](docs/cli.md) | advanced setup and command reference |\n| [Positioning](docs/positioning.md) · [Decisions](docs/decisions.md) · [Roadmap](docs/roadmap.md) · [Architecture](docs/architecture.md) · [MCP tools](docs/mcp-tools.md) | why Tandem exists, ADRs, what's next, diagrams, the MCP tool reference |\n| [CHANGELOG](CHANGELOG.md) | release notes |\n\n## License\n\nTandem is free during the public beta — every pre-1.0 release, with no time limit and nothing to activate. At v1.0 it moves to a **one-time paid license** with a **14-day free trial**: install it, use everything for 14 days, then buy once and keep that version forever. There is no subscription and no renewal. The run gate checks a license's signature and nothing else (`src/server/license/verifier.ts`), so the version you paid for keeps running indefinitely; what a license's expiry date governs is the *update window* — how long you keep receiving new versions — never your right to run the copy you have. Beta users are grandfathered with a free license and skip the trial entirely.\n\nThe code is under the Business Source License 1.1 (BUSL-1.1); [LICENSE](LICENSE) has the terms, and [docs/licensing-explained.md](docs/licensing-explained.md) explains the mechanism in plain English. None of it is enforced yet — the gate ships dark and flips at v1.0.\n\n**Claiming the beta license:** Tandem has no telemetry, no analytics, and no signup, so there's no list of beta users to work from. I can only grandfather people who tell me they're here. If you've been using the beta, email <support@tandem.ink> with roughly when you first installed it, and I'll send you a free license before enforcement turns on. Activate it as soon as it arrives (Settings → License) rather than filing it away: the pre-v1.0 build tells you licensing isn't enforced yet, which is true, and is exactly why an unactivated key is easy to lose.\n\n## Feedback\n\nTandem is still early, and I'd rather hear what's wrong with it than not hear. If something breaks, or the setup doesn't make sense, or the feature you expected isn't there, [open an issue](https://github.com/bloknayrb/tandem/issues) or email <support@tandem.ink>. I read all of it.\n\n---\n\n## Cowork\n\n[Cowork](https://www.anthropic.com/news/claude-code-on-the-web) is Claude Desktop's local agent mode, where Claude runs in an isolated VM on your machine. Tandem connects to it through Claude's **plugin system**, but you don't add a marketplace or run any `/plugin` commands yourself.\n\n- **How to enable (Windows desktop app):** open the integration wizard (Settings → AI Assistant, or \"Set up\" next to Cowork) and click **Enable Cowork**, or toggle it on in Settings → Network. Tandem writes the plugin entry into every Cowork workspace it detects and adds a Windows firewall rule so the VM can reach the Tandem server on this computer. That firewall step needs admin once; without it the VM can't connect.\n- **Why it's automated instead of a manual marketplace install:** inside the VM the plugin has to point at `host.docker.internal:3479` and carry a per-machine secret auth token. A published marketplace plugin can't carry that token, so Tandem provisions the workspace entries directly. (The published `tandem@tandem-editor` marketplace plugin is for Claude Code running *on the host*, over `127.0.0.1`. See below.)\n- **Verify:** in a Cowork session, ask Claude to open or list your documents, and Tandem's tools should appear. If they don't, re-run Enable.\n- **Real-time updates:** live annotation and chat push needs the Tandem desktop app plus one of the push transports (see [Real-time updates](#real-time-updates)); the Cowork connection itself is request and response. The self-armed watch is **not** one of the options here, because its wake stream refuses non-loopback peers and a session inside a Cowork VM can't reach it.\n- **macOS / Linux:** not yet, tracked in #316 / #317.\n\nFor Claude Code on the host, you can add the published plugin from the marketplace instead of using the wizard:\n\n```bash\nclaude plugin marketplace add bloknayrb/tandem\nclaude plugin install tandem@tandem-editor\n```\n\nThis activates the MCP tools, the bundled skill, and, on Claude Code 2.1.212 or newer, a monitor that delivers real-time events with no extra flag. [Real-time updates](#real-time-updates) covers how that compares to the other two.\n\n<details>\n<summary><h2>For developers and contributors</h2></summary>\n\nBuilding Tandem, running it from source, the git hooks, and the checks to run before a pull request are all in **[CONTRIBUTING.md](CONTRIBUTING.md)**. The MCP integration policy (ADR-038), the client compatibility table, and the MCP tools by capability area are in **[docs/integrations.md](docs/integrations.md)**.\n\nThree layers: the editor (Tiptap inside a Tauri desktop app or a browser), the Tandem server (Hocuspocus on port 3478 for collaborative edits and an MCP HTTP server on port 3479 for AI tool calls), and the AI client (Claude Code, or any other MCP-capable client). The full file map and data flows are in [docs/architecture.md](docs/architecture.md). Tandem is built on [Tiptap](https://tiptap.dev) and [ProseMirror](https://prosemirror.net) for the editor, [Yjs](https://yjs.dev) and [Hocuspocus](https://github.com/ueberdosis/hocuspocus) for CRDT sync, [Tauri 2](https://v2.tauri.app) for the desktop shell, and [Svelte 5](https://svelte.dev) for the UI.\n\n### Real-time updates\n\nReal-time delivery gets events (annotation actions, chat messages) to the AI the moment they happen, so it doesn't have to wait until it next polls. There are three setup routes, and they aren't layers you configure together. When the plugin and the built-in Monitor are both available, though, first skill use can start both automatically, which is a safe but potentially wasteful overlap described below.\n\nNone of them is needed for a session Tandem launches for you. Those get woken directly by Tandem over the session's own input and use none of the three; everything below is about sessions you start by hand.\n\n**A self-armed watch** needs nothing installed and no flag. On first Tandem use, the bundled skill reads the wake-stream address from the first Tandem response that carries one — `tandem_open`, `tandem_scratchpad` or a read-mode `tandem_status` — and makes one persistent built-in Monitor attempt. It lasts for that session and disappears with it, which is also the point: nothing is left configured on your machine. Asking Claude to watch is the recovery path if the automatic attempt got skipped. Two limits. It needs a Claude Code that offers a built-in Monitor tool, and the wake stream is **loopback-only**, so it doesn't reach a session running anywhere but this machine, Cowork included.\n\n**The plugin monitor** needs no flag either, and once installed it applies to every session. But it starts watching only when Claude first uses Tandem's skill in that session, not the moment the session opens. In practice that means asking for Tandem by name; a Claude that has never been told about Tandem isn't listening yet. That's deliberate. It used to start in every session including ones with nothing to do with Tandem, so when it couldn't run it reported a failure in all of them. Two more conditions: it needs **Claude Code 2.1.212 or newer** (on older versions the install still succeeds and the monitor simply never runs, with nothing to tell you so), and you should start `claude` from a terminal, because the monitor runs with whatever program path that session was given and a desktop-icon launch may not include Node. If it reports `exit 127`, that's this.\n\n**The channel shim** is the transport Tandem has tested against longest ([ADR-028](docs/decisions.md)). It is **not registered by default**. That changed in the release this note ships with, because a shim whose session never enables the flag connects, delivers nothing, and makes Tandem believe something is listening. Registering it isn't enough on its own either; the session has to be started with the flag as well:\n\n```bash\ntandem setup --apply --with-channel-shim                   # once\nclaude --dangerously-load-development-channels server:tandem-channel   # every session\n```\n\nThe flag is Claude Code's marker for unstable APIs. It works only in an interactive session, and it's required rather than optional: `tandem-channel` is a plain MCP server, and Claude Code's channel allowlist covers only plugins, so there's no list Tandem could join that would remove the need for it. If you already have it configured, your configuration is untouched and keeps working; the change is to what a *new* setup writes. To remove it, run `tandem setup --apply --without-channel-shim`.\n\nChoose one setup route where possible. A plugin-backed session may still start its packaged monitor and built-in watch automatically. Wakes carry no message content, the inbox de-duplicates what Claude reads, and host rate limiting can hide the overlap. If wakes visibly double, ask Claude to stop its built-in watch with `TaskStop`.\n\nSolo mode suppresses annotation events on all three by design; chat still comes through. If you're testing real-time delivery and only chat arrives, check the mode toggle before you debug the transport.\n\nWithout any of them, the AI uses `tandem_checkInbox` to pull the same events on demand. You can also ask Claude to poll periodically with `/loop 30s check tandem inbox and respond to any new messages`.\n\n</details>\n","readmeFilename":"README.md"}