{"_id":"@dytsou/intern-corner-scheduler","_rev":"10-2e84b0112efb9338a7d6109479f1c922","name":"@dytsou/intern-corner-scheduler","dist-tags":{"latest":"1.3.1"},"versions":{"1.2.0":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.0","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.0","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"8099f2fd6ded88f2d156edb56fcacdda2a49474a","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.0.tgz","fileCount":22,"integrity":"sha512-BYrq20srU1RjkyZCgoUBU1QZWF6jXAos+R5draE0GY+spPfDdFcSesE21iCrLgqCkAFVJ8r1ZeEWqFW4zoXSuw==","signatures":[{"sig":"MEYCIQDlYU0PVbZcXPJo/blnJetyPt5PYRfuRgTLRP4R/5QuwQIhAMBND1KSxKMkmauLvq2tRmF0PSOZ9pviTPDQHHtelA4f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30248},"type":"module","_from":"file:dytsou-intern-corner-scheduler-1.2.0.tgz","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","preview":"vite preview"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"_resolved":"/private/var/folders/dk/z09d8d2n7jbdng515w1psz3c0000gn/T/b4dca2fc5c38da0a3fd96facf35d7e5c/dytsou-intern-corner-scheduler-1.2.0.tgz","_integrity":"sha512-BYrq20srU1RjkyZCgoUBU1QZWF6jXAos+R5draE0GY+spPfDdFcSesE21iCrLgqCkAFVJ8r1ZeEWqFW4zoXSuw==","repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.5.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.0_1763826036105_0.6604660261206465","host":"s3://npm-registry-packages-npm-production"}},"1.2.1":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.1","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.1","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"00cd71da70959c824d4816c8373fa2603946456a","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.1.tgz","fileCount":22,"integrity":"sha512-actl/RMOzvDUsKvWFNbbI2jtd4xwYQ5Pix1bkcBWDm7eYV4VVmlf9qgDSGMSrEjQZon6czp/j9gDX60HT7suuQ==","signatures":[{"sig":"MEYCIQC7JH81UTL651BD+yDVuJNXL1xdyTOYuByEbOoaadxZZgIhANBkDq8tZKi+D9glPC8hgpNCpsxnAL676PCj8XkXc/hk","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30374},"type":"module","gitHead":"ef5436a4d116cbdf4f77f53ac5fe478f10203171","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","preview":"vite preview","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.5.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.1_1764328765411_0.8222705579918792","host":"s3://npm-registry-packages-npm-production"}},"1.2.2":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.2","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.2","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"f9a01d256a6897f6da232e77bbb6d17408ac6f7e","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.2.tgz","fileCount":22,"integrity":"sha512-UosaiZAG+eM+5rnLcYDXfhWzjPXPKGCaVAVeIla/Mc5heHaG3VQfThtGSMLiLSMz3+cebTSfLacRn/+t1xfdzA==","signatures":[{"sig":"MEYCIQCCKbPHO3BEPjDe/NgCfEX+Bdo6N3resnoD1cp22BVLYAIhAJl//PTnlcU0LX8qOwmo57t1FhTM7dKTzxUxGQLgNtEB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30374},"type":"module","gitHead":"91fb8389d21e0ece981f39e4d029153ec692ef86","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","preview":"vite preview","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.5.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.1","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.2_1764566795423_0.8161511714800971","host":"s3://npm-registry-packages-npm-production"}},"1.2.5":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.5","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.5","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"eadcc9a8944503cbe2385fd6c616e620f950d316","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.5.tgz","fileCount":22,"integrity":"sha512-Yvj1CnBW96ndd/u2tunFHv+o0WVHZMC9zPQk/4tTb+VuVyHOaEjPj8vV+Clr/0AzdyjcwNuELefI/fqxUEWM2A==","signatures":[{"sig":"MEQCICZlWT3rHj9WLg2kvZYLZJePyfl3ze+kPbaW8vN3ImByAiANoXRTR4ByTEM/koCp9b73B5nFW+Q68lpLCzU9+jRbYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33037},"type":"module","gitHead":"461564490d24440ce7f5745ab5eeb448b8889618","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.5.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","prettier":"^3.7.4","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.1","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.5_1768028265988_0.6342326177495057","host":"s3://npm-registry-packages-npm-production"}},"1.2.6":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.6","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.6","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"c7b465b03b535adfc8b251e9a643474388e118b6","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.6.tgz","fileCount":22,"integrity":"sha512-RkLYr/kZDqxjCstkfKKd+5fRjrXFLSlo/5Zo5htWyhokrUzfeGMt6z/p4VgkJm3/2fwKr0WCjh0mBq1Pcf8Irg==","signatures":[{"sig":"MEYCIQDiW9fdfQco33SJaTAmtmJoNp+q4q6Dour1UFIR22sgGgIhAIMlf2yAxWMq7ACx4z8lhkeERS6KT4jBBEgxjdNC7jz6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33037},"type":"module","gitHead":"1a0353419d14b60424c19a535e566be2bd65739d","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.5.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","prettier":"^3.7.4","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.1","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.4.24"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.6_1769173152182_0.702028860175643","host":"s3://npm-registry-packages-npm-production"}},"1.2.7":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.7","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.7","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"fe2277a119aa436267c34d752399b9aac71f8a93","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.7.tgz","fileCount":22,"integrity":"sha512-VWKy1JDunUDnmfWc5BKCLLRKs2aDkncdRJNSQEyxyY8R22INvkJbQB7AeOrmPt/LCAtJJtF4BU7jX7RfEELshw==","signatures":[{"sig":"MEUCIEMx55wo6e1siXUdbtdXxksAtZwtTxDEKmYf797FnQq+AiEA8OA45XhQvi/NwnIXCUTyBhrm+Q4y/D1tljFbT8AeyBw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33036},"type":"module","gitHead":"4eb85b95e51195c7e47541cff31cb84f7e07870c","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.5.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^7.2.4","eslint":"^9.39.1","prettier":"^3.7.4","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^5.1.1","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.7_1770385775630_0.8386380449836346","host":"s3://npm-registry-packages-npm-production"}},"1.2.8":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.8","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.8","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"305ae1cbfa177b5036ef20dc3d18aa218c26f386","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.8.tgz","fileCount":22,"integrity":"sha512-fX2GUQXhT4AO71s67WJRkSlxkW7oRiNWi1HUGY+subOJ5GVhS6X2rPVTdWZx0hw+h0L8KtUKdc6yKNuBL1MYzQ==","signatures":[{"sig":"MEUCID1leSUBFMG1vn6saFsZi9/1CytIWibJeLKy97SL1GV2AiEAopNFUQfq6YGvjtTkbD4ZPgOut2CtxkXdMyHhDEoVPHQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33036},"type":"module","gitHead":"84b5e53c73b5ba0d057a371ba9eb8e45e68df21a","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"11.10.1","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"24.6.0","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^8.0.1","eslint":"^9.39.1","prettier":"^3.7.4","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^6.0.1","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.0.1","eslint-plugin-react-refresh":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.8_1775390111972_0.9174067292179757","host":"s3://npm-registry-packages-npm-production"}},"1.2.13":{"name":"@dytsou/intern-corner-scheduler","version":"1.2.13","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.2.13","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"7ac50bfaebb2447a393d06dcc5014ad3f60f9df1","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.2.13.tgz","fileCount":22,"integrity":"sha512-iIK74FcT3F17pP+jLCtGdAEz4r6+U6+1BvLnS1L40prkPSrtDvE3YVfJBg6S/hV0j2EAQfNRB91yYGROdFkPHA==","signatures":[{"sig":"MEYCIQDbES90EzTCz+jmugUUHMlsZu2Xb4nq57RBNVy233Bm1gIhAIl8DZ6ESqlf5JFrGo9BYeu82+5bfmtvfJ155tlMIgY9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDwwbiHDoTRM1xpKv2HYd0yFg3GFGT+El1anRgP+cFr9AiEAoNFbGobI/E1XSsphfj9UwYnxTnaLaYKnrzZVZOmoZ5w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33473},"pnpm":{"overrides":{"@babel/core":"7.29.6","brace-expansion@1":"1.1.18"}},"type":"module","gitHead":"163fb1f30f5061bb6c6f7c29aa4c23e3d3fea41e","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"10.8.2","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"20.20.2","dependencies":{"react":"^19.2.0","react-dom":"^19.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.20.0","devDependencies":{"vite":"^8.2.1","eslint":"^9.39.1","prettier":"^3.7.4","@types/react":"^19.2.6","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^6.0.5","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.2.13_1787901655146_0.25661133972392736","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@dytsou/intern-corner-scheduler","version":"1.3.0","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"author":{"name":"dytsou"},"license":"MIT","_id":"@dytsou/intern-corner-scheduler@1.3.0","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"5a4f403cdb0062a20df77ed7087da9d478008059","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.3.0.tgz","fileCount":24,"integrity":"sha512-OlF/Lf3h3tmU6Mzw5vobc9nyMQ3p/ifAaHFIj0GPuUQFvTkdKXaqJazO2AkbZq8+mtovwkjkkttQwWfm1gmiDw==","signatures":[{"sig":"MEUCIQCws0GL/vTVuyaTiv8+PRvT/TMm02vLSZlSGEyQewFnIAIgV/TTU9u/ipdldFzbk9cMeufcog7yGeIhufdItArKow4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCICvwn2LEDFnm+4pzQ9OcSgPFzc2p6TXwoXlrvfb+/j4XAiEAoIgxrxhStXbARxfM6OoAJ84rKSXCbxrGOi9WZdq7SpU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":72765},"type":"module","_from":"file:dytsou-intern-corner-scheduler-1.3.0.tgz","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","test":"node --test tests/web-scheduler.test.js","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","test:browser":"playwright test","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org","deploy:preview":"pnpm build && pnpm dlx wrangler pages deploy ./docs --branch preview","build:cloudflare":"pnpm install --frozen-lockfile && pnpm build","deploy:production":"pnpm build && pnpm dlx wrangler pages deploy ./docs --branch main"},"_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"_resolved":"/tmp/56537766e4c60cd108028d0d9b74c84a/dytsou-intern-corner-scheduler-1.3.0.tgz","_integrity":"sha512-OlF/Lf3h3tmU6Mzw5vobc9nyMQ3p/ifAaHFIj0GPuUQFvTkdKXaqJazO2AkbZq8+mtovwkjkkttQwWfm1gmiDw==","repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"10.9.8","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"_nodeVersion":"22.23.2","dependencies":{"react":"19.3.0","react-dom":"19.3.0","or-tools-wasm":"0.9.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.1","eslint":"^9.39.1","globals":"^14.0.0","prettier":"^3.7.4","@eslint/js":"^9.39.5","protobufjs":"7.6.6","@types/react":"^19.2.6","@playwright/test":"^1.63.0","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^6.0.5","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.0"},"_npmOperationalInternal":{"tmp":"tmp/intern-corner-scheduler_1.3.0_1790437466597_0.875021748580165","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"_id":"@dytsou/intern-corner-scheduler@1.3.1","bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"dist":{"shasum":"af6d655b13d2bfc0d3b049291b4ef147ffbbfa9a","tarball":"https://registry.npmjs.org/@dytsou/intern-corner-scheduler/-/intern-corner-scheduler-1.3.1.tgz","fileCount":24,"integrity":"sha512-idYAv2rmf97rmqSGFOAe1Iz1N559uWVroWzFe93i1NiBlk24lIfqlxV1I2sVIS0aoBE9SAC7DUODFO+s276SOw==","signatures":[{"sig":"MEQCIBYGXgZYez8x06GMkuTLRzZpk28H6gFpq7hR2CREJd3TAiBjeNw/sFhn2G1vX9BtTHiEyd6l2cDPdh8bEUwYGn334w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIC6Mu0MEWbGBjr/z6DMy0CcLFzSRXU4wR9tt400TMMMcAiEAn+lIWKwV6xa4jDthxgYWZ9151/Q1nRrbBAPr0ASd9OE="}],"unpackedSize":73285},"name":"@dytsou/intern-corner-scheduler","type":"module","_from":"file:dytsou-intern-corner-scheduler-1.3.1.tgz","author":{"name":"dytsou"},"license":"MIT","scripts":{"dev":"vite","lint":"eslint . --ext js,jsx --ignore-pattern 'docs/**' --report-unused-disable-directives --max-warnings 0","test":"node --test tests/web-scheduler.test.js","build":"vite build && node scripts/create-nojekyll.js","format":"prettier --write \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","preview":"vite preview","format:check":"prettier --check \"src/**/*.{js,jsx,json,css}\" \"scripts/**/*.js\" \"*.{js,json,html}\"","test:browser":"playwright test","publish:npmjs":"npm publish --access public --registry https://registry.npmjs.org","deploy:preview":"pnpm build && pnpm dlx wrangler pages deploy ./docs --branch preview","build:cloudflare":"pnpm install --frozen-lockfile && pnpm build","deploy:production":"pnpm build && pnpm dlx wrangler pages deploy ./docs --branch main"},"version":"1.3.1","_npmUser":{"name":"dytsou","email":"dytsou@gmail.com"},"homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"_resolved":"/tmp/d3b2a5f107f1a26d14032129579c168b/dytsou-intern-corner-scheduler-1.3.1.tgz","_integrity":"sha512-idYAv2rmf97rmqSGFOAe1Iz1N559uWVroWzFe93i1NiBlk24lIfqlxV1I2sVIS0aoBE9SAC7DUODFO+s276SOw==","repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"_npmVersion":"10.9.8","description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","directories":{},"maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"_nodeVersion":"22.23.2","dependencies":{"react":"19.3.0","react-dom":"19.3.0","or-tools-wasm":"0.9.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^8.2.1","eslint":"^9.39.1","globals":"^14.0.0","prettier":"^3.7.4","@eslint/js":"^9.39.5","protobufjs":"7.6.6","@types/react":"^19.2.6","@playwright/test":"^1.63.0","@types/react-dom":"^19.2.3","eslint-plugin-react":"^7.37.5","@vitejs/plugin-react":"^6.0.5","eslint-config-prettier":"^10.1.8","eslint-plugin-react-hooks":"^7.1.1","eslint-plugin-react-refresh":"^0.5.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/intern-corner-scheduler_1.3.1_1790438890991_0.4283958014869942"}}},"time":{"created":"2025-11-22T15:40:36.000Z","modified":"2026-09-26T16:08:11.218Z","1.2.0":"2025-11-22T15:40:36.286Z","1.2.1":"2025-11-28T11:19:25.600Z","1.2.2":"2025-12-01T05:26:35.619Z","1.2.5":"2026-01-10T06:57:46.168Z","1.2.6":"2026-01-23T12:59:12.308Z","1.2.7":"2026-02-06T13:49:35.778Z","1.2.8":"2026-04-05T11:55:12.137Z","1.2.13":"2026-08-28T07:20:55.217Z","1.3.0":"2026-09-26T15:44:26.691Z","1.3.1":"2026-09-26T16:08:11.074Z"},"bugs":{"url":"https://github.com/dytsou/intern-corner-scheduler/issues"},"author":{"name":"dytsou"},"license":"MIT","homepage":"https://github.com/dytsou/intern-corner-scheduler#readme","keywords":["scheduler","round-table","cp-sat","or-tools","seating","optimization"],"repository":{"url":"git+https://github.com/dytsou/intern-corner-scheduler.git","type":"git"},"description":"Round-table Scheduler (CP-SAT) - Python CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints","maintainers":[{"name":"dytsou","email":"dytsou@gmail.com"}],"readme":"# Round-table Scheduler (CP-SAT)\n\nPython CLI and web interface using OR-Tools CP-SAT to generate round-table seating across rounds with fixed hosts, balanced tables, and pair-wise constraints.\n\n## Input (stdin)\n- Line 1: `a b c`\n- Line 2: `d` (number of same-once pairs)\n- Next `d` lines: `e_i f_i`\n- Next line: `x` (number of never-together pairs)\n- Next `x` lines: `y_i z_i`\n\nInterpretation:\n- `a`: participants 1..a\n- `b`: tables 1..b; participants 1..b are hosts, fixed at their table number each round\n- `c`: number of rounds\n- Same-once pairs: each pair should be seated together in exactly one round if possible\n- Never-together pairs: must never be seated together\n\n## Output (stdout)\nJSON with fields:\n- `participants`, `tables`, `rounds`\n- `table_sizes`: balanced per table\n- `assignments`: list per round, each a list per table of participant IDs\n- `satisfied_same_once_pairs`, `unsatisfied_same_once_pairs`\n- `never_together_violations` (should be empty)\n- `objective_value`, `solver_status`\n\n## Install\n```bash\nmake install\n```\n\n## Run\n\n### Docker development stack (web UI + separate API)\n```bash\nmake run          # builds and starts the web UI and the separate API in Docker\n                  # web UI:  http://localhost:${WEB_PORT:-5173}\n                  # API:     http://localhost:${API_PORT:-8000} (not used by browser scheduling)\nmake run-down     # stop the Docker containers\n```\n\n### CLI\nPipe input into the program:\n```bash\n# example\ncat <<EOF | make run-cli\n6 2 3\n1\n3 5\n1\n4 6\nEOF\n```\n\nOr directly:\n```bash\ncd python && python3 main.py < input.txt\n```\n\n## Web Interface\n\nThe React + Vite frontend solves schedules in the user's browser with OR-Tools CP-SAT compiled to WebAssembly. Cloudflare Pages serves static files; it does not run the Python API or receive schedule inputs.\n\n### Run the Frontend Locally\n\n```bash\npnpm install --frozen-lockfile\npnpm dev\n```\n\nTo build and preview the production files locally:\n\n```bash\npnpm build\npnpm preview\n```\n\nThe production output is written to `docs/`. The `public/_headers` file adds the COOP and COEP response headers needed for browser isolation.\n\n### Cloudflare Pages Settings\n\nConnect the repository to Cloudflare Pages with these build settings:\n\n| Setting | Value |\n| --- | --- |\n| Build command | `pnpm run build:cloudflare` |\n| Build output directory | `docs` |\n| `NODE_VERSION` | `22` |\n| `PNPM_VERSION` | `10.20.0` |\n| `SKIP_DEPENDENCY_INSTALL` | `1` |\n\nThe build command installs locked dependencies and generates `docs/` in one step. `SKIP_DEPENDENCY_INSTALL=1` prevents Pages from running a second dependency install. Keep the Pages project static: no Pages Functions or Worker API are needed for browser scheduling.\n\n### Python API and CLI\n\nThe Python CLI, FastAPI service, and Docker setup remain available as separate tools. Start the API locally with `make serve-backend`; its documentation is available at `http://localhost:8000/docs`. The browser frontend does not need a backend URL or API server.\n\n## API Documentation\n\nThe FastAPI backend provides a REST API for scheduling. When the server is running, interactive API documentation is available at:\n- Swagger UI: `http://localhost:8000/docs`\n- ReDoc: `http://localhost:8000/redoc`\n\n### API Endpoint\n\n**POST `/api/schedule`**\n\nGenerate a schedule based on constraints.\n\n**Request Body:**\n```json\n{\n  \"participants\": 6,\n  \"tables\": 2,\n  \"rounds\": 3,\n  \"same_once_pairs\": [\n    {\"u\": 3, \"v\": 5}\n  ],\n  \"never_together_pairs\": [\n    {\"u\": 4, \"v\": 6}\n  ],\n  \"time_limit_seconds\": 60\n}\n```\n\n**Response:**\n```json\n{\n  \"participants\": 6,\n  \"tables\": 2,\n  \"rounds\": 3,\n  \"table_sizes\": [3, 3],\n  \"table_sizes_per_round\": [[3, 3], [3, 3], [3, 3]],\n  \"assignments\": [\n    [[1, 3, 5], [2, 4, 6]],\n    [[1, 4, 5], [2, 3, 6]],\n    [[1, 3, 6], [2, 4, 5]]\n  ],\n  \"satisfied_same_once_pairs\": [[3, 5]],\n  \"unsatisfied_same_once_pairs\": [],\n  \"never_together_violations\": [],\n  \"objective_value\": 1005,\n  \"solver_status\": \"OPTIMAL\"\n}\n```\n\n### Health Check\n\n**GET `/health`**\n\nReturns the health status of the API.\n\n**Response:**\n```json\n{\n  \"status\": \"healthy\"\n}\n```\n\n## Modeling Notes\n- Hosts (1..b) are fixed to their own table every round.\n- Tables are balanced: first `a % b` tables have size `a//b + 1`, others `a//b`.\n- Non-hosts do not sit at the same table in consecutive rounds.\n- Objective maximizes how many same-once pairs are met exactly once; never-together is enforced strictly.\n\n## License\n\nThis project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.\n","readmeFilename":"README.md"}