{"_id":"@0xhoneyjar/quests-engine","_rev":"5-bcb88e900136691a3aa8a35aa18171d8","name":"@0xhoneyjar/quests-engine","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.0":{"name":"@0xhoneyjar/quests-engine","version":"0.1.0","keywords":["freeside","quests","engine","effect","state-machine"],"license":"MIT","_id":"@0xhoneyjar/quests-engine@0.1.0","maintainers":[{"name":"janitooor","email":"jani@0xhoneyjar.xyz"},{"name":"zerkereth","email":"zerkereth@gmail.com"},{"name":"zksoju","email":"underrated@gmail.com"}],"homepage":"https://github.com/0xHoneyJar/freeside-quests/tree/master/packages/engine#readme","bugs":{"url":"https://github.com/0xHoneyJar/freeside-quests/issues"},"dist":{"shasum":"f77c7ad8a1b30efa136d36398aae9e7faedcf276","tarball":"https://registry.npmjs.org/@0xhoneyjar/quests-engine/-/quests-engine-0.1.0.tgz","fileCount":107,"integrity":"sha512-X9KW4gEBWxZ2GJzItxamz2MFbxNijjAIGBYbSI3hxRuWuTBVfs3gv5S20SZWrlaCRSZHaU0f+uhbP4on69x5mw==","signatures":[{"sig":"MEYCIQDKukXEl7vseG7qpRwopjNiROPf8qtxlcEPz3bdyi4X/gIhAMBPHfWj8Zf7cl4UM0189wVx3ixE3SI48elsSYY2Fyjm","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481849},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3bb5274f0c104e88ac10184238496204bcf34a9f","private":false,"scripts":{"test":"vitest run","build":"tsc -b","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"zksoju","email":"underrated@gmail.com"},"deprecated":"broken: workspace:* dep specifier published verbatim. Use 0.1.1+.","repository":{"url":"git+https://github.com/0xHoneyJar/freeside-quests.git","type":"git","directory":"packages/engine"},"_npmVersion":"10.9.0","description":"Headless quest engine — substrate-step dispatch bridging (gateway → construct → resolution) + future quest publish/query/complete/claim flows. Framework-agnostic. The construct is OPENED via Effect Requirements; consumers plug in their own grader.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"@0xhoneyjar/quests-protocol":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.11.0","effect":"^3.10.0","vitest":"^2.1.0","@types/pg":"^8.11.0","typescript":"^5.7.0"},"peerDependencies":{"pg":"^8.11.0","effect":"^3.10.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/quests-engine_0.1.0_1777921718053_0.01645339453395156","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@0xhoneyjar/quests-engine","version":"0.1.1","keywords":["freeside","quests","engine","effect","state-machine"],"license":"MIT","_id":"@0xhoneyjar/quests-engine@0.1.1","maintainers":[{"name":"janitooor","email":"jani@0xhoneyjar.xyz"},{"name":"zerkereth","email":"zerkereth@gmail.com"},{"name":"zksoju","email":"underrated@gmail.com"}],"homepage":"https://github.com/0xHoneyJar/freeside-quests/tree/master/packages/engine#readme","bugs":{"url":"https://github.com/0xHoneyJar/freeside-quests/issues"},"dist":{"shasum":"69680bf1767ef50a400c8a71e8fa7e9960bef98a","tarball":"https://registry.npmjs.org/@0xhoneyjar/quests-engine/-/quests-engine-0.1.1.tgz","fileCount":23,"integrity":"sha512-PaNA/E8vZRoFErUmIKMdjvDNp78scAaWgHNTVohm8+TxYvYudylNSVcyJ5+wSArGvVjJYRHIdWtIJe/8omCKDA==","signatures":[{"sig":"MEQCIEx+YjQYxSp8a7VWGQbgmq85LU85FIN+UiqjSbJdWQzsAiAPiv5N/nghC3ub66aqB702g6aScUdBz9/48OTEtOqS9Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":168848},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"3bb5274f0c104e88ac10184238496204bcf34a9f","private":false,"scripts":{"test":"vitest run","build":"tsc -b","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"zksoju","email":"underrated@gmail.com"},"repository":{"url":"git+https://github.com/0xHoneyJar/freeside-quests.git","type":"git","directory":"packages/engine"},"_npmVersion":"10.9.0","description":"Headless quest engine — substrate-step dispatch bridging (gateway → construct → resolution) + future quest publish/query/complete/claim flows. Framework-agnostic. The construct is OPENED via Effect Requirements; consumers plug in their own grader.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"@0xhoneyjar/quests-protocol":"^0.1.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.11.0","effect":"^3.10.0","vitest":"^2.1.0","@types/pg":"^8.11.0","typescript":"^5.7.0"},"peerDependencies":{"pg":"^8.11.0","effect":"^3.10.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/quests-engine_0.1.1_1777922077408_0.7456889369685826","host":"s3://npm-registry-packages-npm-production"},"deprecated":"broken: dist/ missing from tarball. Use 0.1.2+."},"0.1.2":{"name":"@0xhoneyjar/quests-engine","version":"0.1.2","keywords":["freeside","quests","engine","effect","state-machine"],"license":"MIT","_id":"@0xhoneyjar/quests-engine@0.1.2","maintainers":[{"name":"janitooor","email":"jani@0xhoneyjar.xyz"},{"name":"zerkereth","email":"zerkereth@gmail.com"},{"name":"zksoju","email":"underrated@gmail.com"}],"homepage":"https://github.com/0xHoneyJar/freeside-quests/tree/master/packages/engine#readme","bugs":{"url":"https://github.com/0xHoneyJar/freeside-quests/issues"},"dist":{"shasum":"3f04d32bb6f6c804bbaea6301aedbfff87442435","tarball":"https://registry.npmjs.org/@0xhoneyjar/quests-engine/-/quests-engine-0.1.2.tgz","fileCount":107,"integrity":"sha512-zwyNmuX3uSLEJBtVe320Nn8YuopqZfa69Jwuyzen4M2kWYjecn5egCPfCiNrc3ck0JLhVINd94sGstRWAYwAog==","signatures":[{"sig":"MEUCIQD4ZJIALPduCPR71tGXDcBTa5eWpKOQpvq+3Ex7lkpSsAIgSyqHz42lbtzbY0O9somxWfEzqPB+EAJe3U9dFwpEwWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":481844},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"gitHead":"39d7809c0cbb7a60ec96cbd8c5aa091f6e1adf38","private":false,"scripts":{"test":"vitest run","build":"tsc -b","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"zksoju","email":"underrated@gmail.com"},"repository":{"url":"git+https://github.com/0xHoneyJar/freeside-quests.git","type":"git","directory":"packages/engine"},"_npmVersion":"10.9.0","description":"Headless quest engine — substrate-step dispatch bridging (gateway → construct → resolution) + future quest publish/query/complete/claim flows. Framework-agnostic. The construct is OPENED via Effect Requirements; consumers plug in their own grader.","directories":{},"_nodeVersion":"23.3.0","dependencies":{"@0xhoneyjar/quests-protocol":"^0.1.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"pg":"^8.11.0","effect":"^3.10.0","vitest":"^2.1.0","@types/pg":"^8.11.0","typescript":"^5.7.0"},"peerDependencies":{"pg":"^8.11.0","effect":"^3.10.0"},"peerDependenciesMeta":{"pg":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/quests-engine_0.1.2_1777922225299_0.3876515971904717","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-05-04T19:08:37.971Z","modified":"2026-05-04T19:17:18.381Z","0.1.0":"2026-05-04T19:08:38.237Z","0.1.1":"2026-05-04T19:14:37.550Z","0.1.2":"2026-05-04T19:17:05.505Z"},"bugs":{"url":"https://github.com/0xHoneyJar/freeside-quests/issues"},"license":"MIT","homepage":"https://github.com/0xHoneyJar/freeside-quests/tree/master/packages/engine#readme","keywords":["freeside","quests","engine","effect","state-machine"],"repository":{"url":"git+https://github.com/0xHoneyJar/freeside-quests.git","type":"git","directory":"packages/engine"},"description":"Headless quest engine — substrate-step dispatch bridging (gateway → construct → resolution) + future quest publish/query/complete/claim flows. Framework-agnostic. The construct is OPENED via Effect Requirements; consumers plug in their own grader.","maintainers":[{"name":"janitooor","email":"jani@0xhoneyjar.xyz"},{"name":"zerkereth","email":"zerkereth@gmail.com"},{"name":"zksoju","email":"underrated@gmail.com"}],"readme":"# packages/engine — headless quest logic\n\nThe core quest engine library. Stateful where needed; framework-agnostic. What `cubquests-dashboard/actions/*` becomes when the operator-dashboard chrome is stripped from the engine logic.\n\n## Status: scaffolded; content extraction pending\n\nSource: `world-sprawl/cubquests-dashboard/actions/` + `world-sprawl/cubquests/apps/frontend/lib/`. Per `../../docs/EXTRACTION-MAP.md`.\n\n## Planned contents (post-extraction)\n\n| file | purpose |\n|---|---|\n| `publish.ts` | Quest publishing flow (validate, persist via injected port, emit completion event). Logic only; DB binding is swappable. |\n| `queries.ts` | Cached quest queries; cache layer parameterized. |\n| `loader.ts` | Quest discovery + filtering logic. |\n| `generators.ts` | Quest authoring helpers (generate-input + generate-json + diff utilities). |\n| `diff.ts` | Quest-version diff utility (find-json-differences). |\n| `claim/` | Consumer-side claim flow (validate completion, mint badge, emit event). Currently inline in cubquests' apps/frontend/lib/. |\n| `index.ts` | Public exports |\n\n## Why \"headless\"\n\nThe engine has logic that operates on schemas + ports. It does NOT:\n- Render UI (that's `packages/ui/`)\n- Talk directly to a specific DB (that's adapter-injected)\n- Know about Next.js / SvelteKit / framework specifics\n- Own the partner integrations (those stay in CubQuests)\n\nThis makes the engine reusable: any app (Purupuru, Honey Port, Mibera, future) can install + wire up the engine to its own UI + DB + chain integrations.\n\n## Composition\n\n- Imports types + schemas from `../protocol/`\n- Implements ports declared in `../ports/`\n- Doesn't import `../ui/` (rendering is downstream)\n- Doesn't import `../adapters/` (adapters compose with the engine; engine doesn't depend on transport)\n\n## Consumers\n\n- `world-sprawl/cubquests-dashboard/` — post-extraction, dashboard wires its actions to call engine functions instead of inline logic\n- `world-sprawl/cubquests/apps/frontend/` — claim flows wire to `engine/claim/`\n- Future world apps (Purupuru Year 2, Honey Port) — install + wire up the engine\n- Server-rendered surfaces that want quest data without a roundtrip\n","readmeFilename":"README.md"}