{"_id":"@dappermountain/payload-plugin-achievements","_rev":"25-915dfc842a9fec7aa3bcd4c1ae3ec3f3","name":"@dappermountain/payload-plugin-achievements","dist-tags":{"latest":"0.6.0"},"versions":{"0.1.0":{"name":"@dappermountain/payload-plugin-achievements","version":"0.1.0","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.1.0","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"8a25fc9d2ca60e0661629f651d7ec438707beab8","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.1.0.tgz","fileCount":237,"integrity":"sha512-KM/7XgUpDbPS620d2lXFEDRb8VLp/Ih/Hh2BPVWGoQI7MD3Y+klEfdXtRdsyO484NWVdySEglJ2rXYx5mggDsA==","signatures":[{"sig":"MEUCIQDk/tqqM92dn9utCWSegOpFfnXba9ct7q7HwvjY0rPfDgIgBaVeKp1jrCcEkvLDzVyk0PuRMvCEfDJOOUXitVDx0cs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":217245},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"d80801a5bca0454d553484e77baa27e25d23dff4","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"shadowstrand","email":"joshua@dappermountain.com"},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"10.9.8","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","@payloadcms/ui":"3.88.0","@dappermountain/agent-payload":"^0.1.0","@dappermountain/agent-practices":"^0.1.0"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","@payloadcms/ui":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.1.0_1788902630988_0.032512330609982154","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.0","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.0","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"cdff47901eea4e4cf5d9e1f3aa5b50db109faac0","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.0.tgz","fileCount":273,"integrity":"sha512-gK8D8S865rYBczSDi8PEM4+QQp/wwwp6m1Vm79VQ/elOnS53VZz4bHR6fL651ONpRrbADPD3odIXhu4qTsQylg==","signatures":[{"sig":"MEQCICBdRrXAOJ5OSKe8sASdiEdDIjTwAntuxm7Pluts+/KyAiBIf3DqSBrjJ+ZQMHE51X18pkzkRHQAXYJuiSXrg7dh6A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261967},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"5ce3bd8ac1bcaab310b54cbab705771bc7e500b2","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","@payloadcms/ui":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","@payloadcms/ui":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.0_1788908869154_0.1621898755808342","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.1","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.1","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"bb9c4f6f765b05efc30fae6b1276da127af3efa6","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.1.tgz","fileCount":288,"integrity":"sha512-YfqihkdvrXF7doDAGO9VP1qsf7TuhuVdZWy0gq6lkIrWjjtFuDMkSRt+F3+0x7o28XDuXjIfDYDSW8dpwTygKA==","signatures":[{"sig":"MEUCIDmhMw3na0NtDXf92bErzsKqbsA0n+DF9OkDbLVT+CzRAiEA4OjwPJU95urLmkenwPSWf1z+5m5zYQ88lDVtLpHeR98=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":281040},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"34b41b7a0410dc3ed75e222843e37b4c3301c2c1","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","@payloadcms/ui":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","@payloadcms/ui":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.1_1788911056316_0.015624697255192332","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.2","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.2","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"f0bc88f801132d5853bdecd8566b9daf912ad6fe","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.2.tgz","fileCount":291,"integrity":"sha512-5YhTDlRNATEdpaxEGsXvGHZ5DJ+KB88YqkuwaKZteO6nEEC2d+IiVzg4ERw5NJHgdhuipfY42LxmagMsu5nQVw==","signatures":[{"sig":"MEUCIQCc09MYdujPByF2xD2WNAMQX0AqZqv1qFM9i+zRg6ICMgIgNbJC8nRhZtrYBAiTe1u+9QXhHxdN/1+iKILh5Aegao0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":285595},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"541317c9b9cad69e06ff2bd51b6b628821ac0472","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","@payloadcms/ui":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","@payloadcms/ui":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.2_1788913085377_0.9557724938560248","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.3","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.3","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"7fbeefb9b048e847403ed5e8b492c3fd9bb3a992","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.3.tgz","fileCount":291,"integrity":"sha512-4vnlNWwjJ8De1WMn4R+iWqGpo7YM8jAO6VkoHS9J8vw3C5NCRtK2Jdb8EZ7uK5S6EniyMrXTrnBA5UBrwbi+qQ==","signatures":[{"sig":"MEQCIBiAzStnpQDXNECsxQUiRwoeRCuC4Y2hiDv3RYaVsk4xAiAdifU1lV5UtlVrICKhuOIrRR9P+wlodIrcv64qadbReg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286893},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"f5f66dd3e1a3e723738c12a6f24090867b5d29b9","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","@payloadcms/ui":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","@payloadcms/ui":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.3_1788917609631_0.34502669476033376","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.4","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.4","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"3ccc0922ca0adeca97a038e78eb94dab66d774be","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.4.tgz","fileCount":291,"integrity":"sha512-KkJdGMoIL+cUu4rUWOtnkzXh0Ml883c7oRENJbQlY1PDoSxEYCh/Shucdi2kWODyCFT3xX9ne0o8hfDoaq2PKw==","signatures":[{"sig":"MEUCIQCqVOePBDCPvgUeRml6Mu+Z/bcec4bj1VcXRqc+PbgpRgIgD6BelvOoKspB56kitfSj7by86yEwKPuFyughIBEeMl0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286990},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"c908463bf6ed5ebcf224e4cd3e114b042a6e8db8","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","@payloadcms/ui":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","@payloadcms/ui":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.4_1788918846927_0.2867451291191243","host":"s3://npm-registry-packages-npm-production"}},"0.2.5":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.5","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.5","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"58823b5abd77c98df3d7e596ac8f9bd4ab5499a4","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.5.tgz","fileCount":300,"integrity":"sha512-pHkLv9lEMhpoAWDiCvnP9fT5ELdO0QKuH/7xJlpgqBr6jlxdF+BOd9hpwogK9PM8vpW1KsSKwHBT+B9JnxMAew==","signatures":[{"sig":"MEQCIE+NHVb5pORPpW2UFcnX6iTXYj5scRbOVF26fFANOOJGAiBc+aAd6iyQBkOct7a3n8lW4+h8suciRMP0oygZQ0w7gQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":297164},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"7cb53053ea194f483b79d14172e072c3f6d13146","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.5_1788925879355_0.9882366810712166","host":"s3://npm-registry-packages-npm-production"}},"0.2.6":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.6","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.6","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"e1e5b003d77b8893ffb177551297ba18def02f86","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.6.tgz","fileCount":300,"integrity":"sha512-EY3WLtDBM1Jm2qX6b7oXhSQyFMXITKL699PmHVMWLqXjfCk+aqj225DJow7lCX0KHWFLzokNk/Ay/Ei2g/E0Lw==","signatures":[{"sig":"MEUCIQDuRl2G5lHCy8ewq3r6E6GIuoF2mw3BQ+45gj9iPDtC9AIgHbwtk60xgbmdBBJP1E4lgQaD/2Srbsj8CZ5s8DcJJOY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":303631},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"1a98b14d0a276076dc38ba7cc07dae5d4bb3c697","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.6_1788927033872_0.14711294107413253","host":"s3://npm-registry-packages-npm-production"}},"0.2.7":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.7","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.7","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"b6fd0a42def3242195edc046d11f948fc0cfefa7","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.7.tgz","fileCount":330,"integrity":"sha512-S3ZjcC0G4AJ0pqgjset3cjIt0geJAJdvAjjW4RZxokGvZXP+ceugx9kBw8caYT1Bn+1qWxZVhckO7iGxXNpaoQ==","signatures":[{"sig":"MEUCICOINZsCID/M+dZOdTG8treoRDrelnJpqvJx2BjWGMS3AiEAkMhN9mqLEDprm9yIKBmfEf9nzK/8jgUhneFf69OpaXk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349386},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"7fc23e105bba30d619c076f4afcaf70b2a994e10","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.7_1788930837653_0.9973341035860561","host":"s3://npm-registry-packages-npm-production"}},"0.2.8":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.8","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.8","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"9ade1169d646bc96e4f7fa304b2aa41ba08ba9ca","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.8.tgz","fileCount":330,"integrity":"sha512-OHbqWTQ96eYHjFfNktyUQVw/S7rMaULrQcytevOVxBTG86AQdBqynl8OmYj2OrfVGfMnG6lavyD8EbEuCIYPnA==","signatures":[{"sig":"MEUCIQCb/wRrWBz2c45nCLTMuXayI/yha1EKI2eDUF1+jatmuAIgG9hRGarflgOTXLqa4ZvN2roh6ReODNJj22GerKeP4EY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349768},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"e4ac4c2d1c23910fe8f1d753a5b9d652de2cae5a","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.8_1788931118565_0.34665415826028956","host":"s3://npm-registry-packages-npm-production"}},"0.2.9":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.9","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.9","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"0ea8eb1caccaea8639ae38a0e74e88514161afc5","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.9.tgz","fileCount":330,"integrity":"sha512-Y7D60WQ6yUQzZjqnIib2T6N0Zbbjn9Q/tngfH4GUGAhOmQ5Z7upkZsK4/SgqDoPJO0/BIWu5itVWq/37QuXK6A==","signatures":[{"sig":"MEUCIHiWHrJD7OoD3LkyetTjWSMzAR5G04OBzcx2vM3yun9EAiEAsYXIEcWIAE5z0IuF772txp14c3FKYxOoVfL1R6EXdns=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":349988},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"35ec2b710b65544a43fec6f4efd7206394e4965a","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.9_1788931338089_0.9056071505753827","host":"s3://npm-registry-packages-npm-production"}},"0.2.10":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.10","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.10","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"0e6cd9bbd63adb39180cb0db783083d1da0e9230","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.10.tgz","fileCount":333,"integrity":"sha512-09iAf2YZ5KNMZH30XftTaVZEHmF9/aAiJzLHLjfY6mbwC9DZJfRxe4fxCH1z2ZtyPkzFilVG+/9I5YHbnPWcOA==","signatures":[{"sig":"MEYCIQDqpUTkXbSxcwR9M7pUSux8ygYSCoB2G2/RbM65Thja7gIhAIkCD+34aQv8wMqDzTCQd4hhq0KaiMgekiEhv2F1z1nO","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":353265},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"38cd6fa9be211bf36fc52b47e983214237e10bf5","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.10_1788931592384_0.3359516614231166","host":"s3://npm-registry-packages-npm-production"}},"0.2.11":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.11","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.11","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"7dd56b978b4c0cdff6f4ed19ff47f8b577ce4e3d","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.11.tgz","fileCount":333,"integrity":"sha512-sRAOTt2W9IiRx46LQE29Ww04jmoJi0wHwun2gem1kodj/+tBQJlDzp+kXwVTGoz84TDD8uICMV1BN5fefJkFkQ==","signatures":[{"sig":"MEYCIQC+KErXEwUPaQu//+eVk2II8Jc4mmCR7J0EFuvk4hE2QgIhAKxfygeZPatBb/Y/PxA5ibFECV/WbV5OpcQ1ZxINBnpn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":356419},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"b66f4f34ad3c8b51cdc624cbfdcd95c9b30105ef","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.11_1788932753027_0.21813005188793233","host":"s3://npm-registry-packages-npm-production"}},"0.2.12":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.12","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.12","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"41930812be1e9adafaf7e8c5021359e29962a14d","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.12.tgz","fileCount":333,"integrity":"sha512-3KkS2rfmOG7Jf838SV4C6puGc1d1SDONdpaI0yaXvwcH1uk6ALdIrm4dCTF66Mvj+ezWuaJXIrgT5oomtvnp/A==","signatures":[{"sig":"MEQCIDvQKRJ0RSL2Yi3Q6U4O/700VqKiumLL0TbU9FJiDrLWAiArFrSWIxG9lEBRjokzTKxFy6HcvB4OnQlkkGm7o+a2Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":356477},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"8760633bfe028e968e2c9bd472e6ab0c38740ed8","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.12_1788933519080_0.07616874617730063","host":"s3://npm-registry-packages-npm-production"}},"0.2.13":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.13","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.13","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"bc80ac1d4c88624dbe186e1f0bf963d7767c4fd5","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.13.tgz","fileCount":333,"integrity":"sha512-QVfFU2Rydvr2y4s/b7224htGKpoEWkZtwtZumcaT+2iZzLpS4RAb90yxo2nMDlEWf3xOEntqai+bnbEbOmC56A==","signatures":[{"sig":"MEYCIQDO6W/hHQhHNzWT11c9TOulN5nYUw0pIbT6sdB7uj2dXwIhAPcKEljzkKUByINlW7Qf4toAkFZWBAP1Dzv/GBWUF4DB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":359059},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"a187f35ab2bd330661c473c0e10ada01484dd5ab","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.13_1788934060036_0.07492088785749007","host":"s3://npm-registry-packages-npm-production"}},"0.2.14":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.14","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.14","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"3c1b5ac7d663b05f08a25c5d253740d54dc641a7","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.14.tgz","fileCount":333,"integrity":"sha512-3nQYnURaRgYAJ47YT8+wh72lYpvpc5CEYeI2C/fFchAp1RtFBUzfAZ8WTHN+PPP2jumUYk3sY76PFDohgC8Ixw==","signatures":[{"sig":"MEUCID5GMu7wBDAHcLhB3rtagO6WqR5UC1UwQ73H9vQdUZ4UAiEAwEwlngyvopDsSLwLZM1A0DovU3wQPMgmoow55KJ7O+0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.14","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":360140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"bbc2dee8f09eeebd4cc8d798ad366220bb7b7711","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.14_1788934851198_0.42293515057569686","host":"s3://npm-registry-packages-npm-production"}},"0.2.15":{"name":"@dappermountain/payload-plugin-achievements","version":"0.2.15","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.2.15","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"19c088e07cb947e46385f5f9cb7826b393e1fe33","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.2.15.tgz","fileCount":333,"integrity":"sha512-JbXAbZJHRduMpkINMfKErt6yef7kJWfkeOvmBMxO/k11demrY6r9QClY7JdQVUWDLHjAa5N0U6GbHaGPVbbwTA==","signatures":[{"sig":"MEQCIHdmpaXSeEM3lDWkpa1IlRQjtNSTIPX3afGl6HWjf/NgAiADfBYiVKl5hKC4m8DL1JLKQn/FWcG/MiV5lrgOgpgH8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.2.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":360434},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"9e589fac170040f3e9b43c8f87626d14f856f052","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.2.15_1788935320596_0.5400496290063526","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@dappermountain/payload-plugin-achievements","version":"0.3.0","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.3.0","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"04f1e6417d993d03a101b8c7c229bffb5c7ff8ce","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.3.0.tgz","fileCount":333,"integrity":"sha512-LOIqeNx/nFK9T9h9V0HEL24/9CgAkqOV4Lw/UnvIGmJSyhDt6BblitRoBzSi0fLmNfhJrnZKtQ1GHxhxNuVrVA==","signatures":[{"sig":"MEUCIQC4Ur+j0cqu7ppgUH/Z2bPVVSE3HEkSjga6I8al1SzOVAIgUO582eUVLKv46nl5aWYogLJRthcwUNveWXeANDocll4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":356697},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"0a81e50493fc67de2e6fbc3aa779622c7b2fb43d","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.3.0_1788937026130_0.7390270536075021","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@dappermountain/payload-plugin-achievements","version":"0.3.1","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.3.1","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"c1d4154ae3f85f80699c85b85ca5a648e051f4e0","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.3.1.tgz","fileCount":339,"integrity":"sha512-EX4453Ag5FAs6BhCIMbGOeygk7IkZJEokwVUhUsz3vWx3lhayRglh/162X7iCmAuHumxSo1rSgIva+QsXvtc2g==","signatures":[{"sig":"MEQCIEPiDYThPlBb1vrD4EHICcT0sschT5P70G0p0/rstycBAiBjLffodC6Qo6+d21z3BIMK68HVtRIilMr8miLQF70Xvg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBLCvNFpqg+N1/xPGSxc0/Oxx8jGFwDl2v/t/1j04F1nAiEAgN5WcNov1cSdwxlmUda7MtNK5dWKRkXGswjei0IaCXs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":375282},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"8797d3d2ab219be75bd23599dbbb8eee5c71d1cb","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.88.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.88.0","@payloadcms/richtext-lexical":"3.88.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.88.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.88.0","@payloadcms/richtext-lexical":"^3.88.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.3.1_1789070075816_0.1500934241386096","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@dappermountain/payload-plugin-achievements","version":"0.4.0","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.4.0","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"0cbb70c41adde07293215338ba582a137ced54db","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.4.0.tgz","fileCount":345,"integrity":"sha512-ef2BWgzLjr2pzZY0aUmi7zcB15c1/a6iM81hIRrgSfjuZhAdjhoKE65e5lN2qyQvy8ZtVIBkbHYW1jOyPoWPtA==","signatures":[{"sig":"MEQCIDAk0wMNpgrSg08EyUzP/6fb5MrqMyMwVyf7idnlNOc4AiBa4PLoIKesYWx94r+syLJm1UQaARfjziThTfhkQIGGVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQD2gmuUxc0HIwzc9lMxaMQQNDjbc6KCBYHETM8Rc1ZHxgIgIOChBLxSRPVKOz5hEkWkI12sk9Ym0TeLSmQp07G5Sls=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393337},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"08e24e328dbfa8e5ab84c7e5954137a4e38bcff8","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.89.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.89.0","@payloadcms/richtext-lexical":"3.89.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.89.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.89.0","@payloadcms/richtext-lexical":"^3.89.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.4.0_1789385903768_0.17717986469779867","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@dappermountain/payload-plugin-achievements","version":"0.4.1","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.4.1","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"97d38069a37b34d94a399e8b028eaa56d7ebb8e6","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.4.1.tgz","fileCount":345,"integrity":"sha512-xPbHMEQNMxm3cMqDzOB8g0HA3M0uWzDiKzfjkCMEFUo4pJjb7gXVpx0SDXUVXi5mawtCKkuH5TtVNIPJ1c2IIw==","signatures":[{"sig":"MEUCIQDaEFaoC2bV8to/6qSzUt8MCdBJJJ/ZT/Q9RFnFcCda/gIgLNukMW77r0YzrtdI6M5eYtKvOmbgTmIGnaSA1undhpo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIBdO+Xeb10lSUqqTmWtH3uFGQ4Ehs1X2usCxEk21oXLUAiEA/tGwrsZEgiYKwmAzIg6UWWQOuKjLNzpR+r0je3a2E5k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393338},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"1998a73bc0bb451db4e84fe0704802156b5b6b07","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.89.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.89.0","@payloadcms/richtext-lexical":"3.89.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.89.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.89.0","@payloadcms/richtext-lexical":"^3.89.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.4.1_1789387055452_0.9029934700574489","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@dappermountain/payload-plugin-achievements","version":"0.4.2","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.4.2","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"78939e2a7b48c446973458361a6975d4d1831c22","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.4.2.tgz","fileCount":345,"integrity":"sha512-2lfn3a+4f/qsM31qg0OWS505jKM4T1trCpn8LkJhzdq3msP7h2UOLzvUHk7jBh9lCb1yFrVm2tifnVzwQyDejQ==","signatures":[{"sig":"MEUCIDmkya61ibixaAC2GZrXlzFLPUgHOsjqSbimDMtjshncAiEA9y6B53gAqD7q/OfrRZZrZL+MkCo1tRj61tOndvlVIIk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIHqD0IP43Hi7jQ4rkAL3pf5ayBpBtEv/R4D+u0AFQbSrAiAytUp8qLTDqJKgzOyLIqsyztY+gAFxoU/BYLAEXm4qcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":393766},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"d47f2ccf166fef07dc9e9406315ac99bb446c1be","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.89.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.89.0","@payloadcms/richtext-lexical":"3.89.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.89.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.89.0","@payloadcms/richtext-lexical":"^3.89.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.4.2_1789388137924_0.41787611437397265","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@dappermountain/payload-plugin-achievements","version":"0.5.0","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.5.0","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"1b4fb6748472db04eb6dd0ac86b1f5003f29db6e","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.5.0.tgz","fileCount":348,"integrity":"sha512-zkrhQnRxfBfyV+VnPagw6AuTBREdhSCF/4+cxgbaDX9/Nh7xHMQx1HDN0e/RJQJfmKLD4pkrp03zKXnOM2fxmw==","signatures":[{"sig":"MEUCIGpZ4ge5aP6V2Zs9n1b7WwHuTsGxK699ou69AFLHOy40AiEAm8OGLX8YI4S/78NDXGS2vzOftILD4h/+rmThZ22jf4c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCo3NXFTxcGNNsMOqRemjSbSEJxfevTCOlIVPW6IgfdHAIhAPXNdAt67sCo1uO68z0yUH6Q9RoYwJ+FTTkUNllKz5ao","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":406657},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"fbd967b260f4e39b16530161968ee3d698e6e560","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.89.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.89.0","@payloadcms/richtext-lexical":"3.89.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.89.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.89.0","@payloadcms/richtext-lexical":"^3.89.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.5.0_1789475620568_0.7927748761592193","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@dappermountain/payload-plugin-achievements","version":"0.5.1","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"author":{"name":"Dapper Mountain"},"license":"MIT","_id":"@dappermountain/payload-plugin-achievements@0.5.1","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"892d6da48221468a0244b2ff61594617531158b8","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.5.1.tgz","fileCount":348,"integrity":"sha512-7osZzkD5HLz2I0ruSVykDOn2a1OYhc79cgDr8NBL0yHDe/bZkygLyOlcalW4knO8P/wSEq/n5TwRAvNlu9pbGQ==","signatures":[{"sig":"MEUCIQCBovVsqhcLWdeF98lhlr/rfZ6TOsPphrdsus76OA1uDAIgI/TmX3SCBnS1OdFH4DBuAfTxa9xRfYkRRWP35UMgkBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDXg9wfUrAieMJf1iD1aG9Am5TyuOaKenW6TNR2ZaUsHQIgBTSBhVhhWYfwkw3PuMkjf0NO3/J21w4d8/PzPCmQrsk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.5.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":407115},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"3773dd5fba5b3cb2d29ec1efd563e1ea95a64f4e","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.89.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.89.0","@payloadcms/richtext-lexical":"3.89.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.89.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.89.0","@payloadcms/richtext-lexical":"^3.89.0"},"_npmOperationalInternal":{"tmp":"tmp/payload-plugin-achievements_0.5.1_1789484203860_0.34887309802261735","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"_id":"@dappermountain/payload-plugin-achievements@0.6.0","bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"dist":{"shasum":"23037299981cab8ce2dafc7a538ab4ee420acb64","tarball":"https://registry.npmjs.org/@dappermountain/payload-plugin-achievements/-/payload-plugin-achievements-0.6.0.tgz","fileCount":366,"integrity":"sha512-pQUTfTJIo8zOZZw38426JRHU4oimYoL3b7qzb3CX+/QoA8IJ9wi+pHtWO5EDSSTD3WvMHRJkU9dShpOnVav7Dw==","signatures":[{"sig":"MEYCIQCX6zGboqOVMUJXVHNVGrF+tX+RGzmKagmhGJ8TWP7XFwIhAKkVG5nhjoYJZWA1yu+ax2sgvfwPP9x5lAgCBr8EwoFc","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDDDXONC9pkayYtnLylCBoVc9RtNeas68TymWE2SLzd6wIgH0r2hVquY9DF6X55+OOOva2E7sm/pWS8A/4Rf9OiQ9U="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@dappermountain%2fpayload-plugin-achievements@0.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":431192},"main":"./dist/index.js","name":"@dappermountain/payload-plugin-achievements","type":"module","types":"./dist/index.d.ts","author":{"name":"Dapper Mountain"},"engines":{"node":">=20"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./cli":{"types":"./dist/cli/index.d.ts","import":"./dist/cli/index.js","default":"./dist/cli/index.js"},"./types":{"types":"./dist/types.d.ts","import":"./dist/types.js","default":"./dist/types.js"},"./client":{"types":"./dist/exports/client.d.ts","import":"./dist/exports/client.js","default":"./dist/exports/client.js"}},"gitHead":"32426610d9014aea1ef31d1e025998cd2d5579e4","license":"MIT","scripts":{"lint":"tsc --noEmit","test":"bun test src","build":"tsc -p tsconfig.build.json","clean":"rm -rf dist *.tsbuildinfo","format":"prettier --write \"src/**/*.{ts,tsx,md}\" \"*.md\"","prepare":"bun run build","agents:sync":"bunx @dappermountain/agent-payload sync","skills:check":"bunx skills check -p","skills:update":"bunx skills update payload -y -p","prepublishOnly":"bun run build","skills:install":"bunx skills add payloadcms/skills --skill payload -y --copy -a cursor"},"version":"0.6.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:bbc54a0d-77b6-4261-a866-ecd9e4cb6368"}},"homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"_npmVersion":"11.19.0","description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","directories":{},"maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"_nodeVersion":"24.20.0","publishConfig":{"access":"public","registry":"https://registry.npmjs.org/"},"_hasShrinkwrap":false,"devDependencies":{"react":"19.2.4","payload":"3.89.0","prettier":"^3.6.2","@types/bun":"1.4.0","typescript":"5.9.2","@types/react":"^19.0.0","lucide-react":"0.543.0","@payloadcms/ui":"3.89.0","@payloadcms/richtext-lexical":"3.89.0","@dappermountain/agent-payload":"^0.1.5","@dappermountain/agent-practices":"^0.1.2"},"peerDependencies":{"react":"^19.0.0","payload":"^3.89.0","lucide-react":"^0.543.0","@payloadcms/ui":"^3.89.0","@payloadcms/richtext-lexical":"^3.89.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/payload-plugin-achievements_0.6.0_1789570869119_0.984538552350787"}}},"time":{"created":"2026-09-08T21:23:50.791Z","modified":"2026-09-16T15:01:09.636Z","0.1.0":"2026-09-08T21:23:51.181Z","0.2.0":"2026-09-08T23:07:49.298Z","0.2.1":"2026-09-08T23:44:16.472Z","0.2.2":"2026-09-09T00:18:05.509Z","0.2.3":"2026-09-09T01:33:29.778Z","0.2.4":"2026-09-09T01:54:07.109Z","0.2.5":"2026-09-09T03:51:19.489Z","0.2.6":"2026-09-09T04:10:34.017Z","0.2.7":"2026-09-09T05:13:57.842Z","0.2.8":"2026-09-09T05:18:38.724Z","0.2.9":"2026-09-09T05:22:18.250Z","0.2.10":"2026-09-09T05:26:32.514Z","0.2.11":"2026-09-09T05:45:53.155Z","0.2.12":"2026-09-09T05:58:39.240Z","0.2.13":"2026-09-09T06:07:40.175Z","0.2.14":"2026-09-09T06:20:51.347Z","0.2.15":"2026-09-09T06:28:40.732Z","0.3.0":"2026-09-09T06:57:06.293Z","0.3.1":"2026-09-10T19:54:35.930Z","0.4.0":"2026-09-14T11:38:23.856Z","0.4.1":"2026-09-14T11:57:35.544Z","0.4.2":"2026-09-14T12:15:38.041Z","0.5.0":"2026-09-15T12:33:40.667Z","0.5.1":"2026-09-15T14:56:43.957Z","0.6.0":"2026-09-16T15:01:09.245Z"},"bugs":{"url":"https://github.com/DapperMountain/payload-plugin-achievements/issues"},"author":{"name":"Dapper Mountain"},"license":"MIT","homepage":"https://github.com/DapperMountain/payload-plugin-achievements#readme","keywords":["payload","payload-plugin","payloadcms","achievements","gamification","tiers","grants"],"repository":{"url":"git+https://github.com/DapperMountain/payload-plugin-achievements.git","type":"git"},"description":"A robust, Admin-configured achievements engine for Payload: composable unlock rules, derived rank progress, request/review grants, metrics, and scoped multi-tenant support.","maintainers":[{"name":"shadowstrand","email":"joshua@dappermountain.com"}],"readme":"# `@dappermountain/payload-plugin-achievements`\n\nAchievements, ranks, points, and an activity log for Payload CMS — all configured in Admin.\n\nYou describe what people can earn and what has to happen first. Your app records those happenings. The plugin derives the current rank and progress from that history, so the ladder stays in step with real activity.\n\n## What you get\n\n- **A catalog in Admin.** Achievements, tiers, metrics, event types, and reactions. Editors change rules there.\n- **Composable rules.** Nested all-of / any-of trees, plus your own leaf types.\n- **Derived ranks.** Current tier and next-tier fill come from the same unlock rules.\n- **Request and review.** Members can ask for an achievement; reviewers approve or reject. Composed achievements can grant themselves when their completion rules pass.\n- **An activity log.** Grants, score changes, rank moves, and your own event kinds.\n- **Optional multi-tenant scope.** Point `scope` at your tenants / workspaces / orgs collection.\n- **Host hooks.** Prefixable slugs, collection overrides, a review policy you inject, and server helpers for trusted code.\n\n## Requirements\n\n- Payload `^3.89`\n- `@payloadcms/ui` `^3.89`\n- `@payloadcms/richtext-lexical` `^3.89`\n- `lucide-react` `^0.543`\n- React `^19`\n\n## Install\n\n```bash\nbun add @dappermountain/payload-plugin-achievements\n```\n\n`npm` and other clients work too. Next.js hosts should list the package in `transpilePackages` so the `'use client'` Admin fields compile.\n\n## Wire it up\n\n```ts\nimport { buildConfig } from 'payload'\nimport { achievementPlugin } from '@dappermountain/payload-plugin-achievements'\n\nexport default buildConfig({\n  plugins: [\n    achievementPlugin({\n      usersCollectionSlug: 'users',\n      canReview: (user, scopeId) => Boolean(user?.roles?.includes('admin')),\n      // scope: { collection: 'tenants', relationField: 'scope' },\n    }),\n  ],\n})\n```\n\n`canReview` is how staff get to edit catalogs and approve requests. It receives the user and a scope id (`null` when the row is global).\n\nThen:\n\n1. `payload generate:importmap` — Admin fields for logs, subjects, and Lucide icons.\n2. Migrate (or push) schema. The plugin adds collections; your app still owns the migrate runner.\n3. Restart so Payload can seed the system catalog on `onInit` (`points`, `metric.delta`, `achievement.granted`, `achievement.revoked`, `tier.changed`). Set `seedSystemCatalog: false` if you want to call `seedAchievementCatalog` yourself.\n\nYour product catalog — extra event types, metrics, tiers, achievements — is `seedAchievements`.\n\n## How the pieces fit\n\nThink of four layers:\n\n1. **Catalog** — named things in Admin (event types, metrics, tiers, achievements, reactions).\n2. **Log** — what happened. Your hooks call `recordLog` / `recordMetricChange`. Grant and revoke write their own rows.\n3. **Grants** — what someone has earned. One row per user (+ scope). Creating or deleting a grant updates the log and re-checks composed achievements and ranks.\n4. **Reactions** — set-based side effects when a host event is logged or an achievement is granted/revoked.\n\nWriting a host or metric log also re-checks composed achievements and derived tiers. Grant and revoke logs skip that path because the Grants hooks already ran it.\n\n## Collections\n\nSlugs use the prefix `achievement-` so they sit beside your own collections. Override with `collections.prefix` or per-key `collections.slugs`.\n\n| Config key | Default slug | Purpose |\n| --- | --- | --- |\n| `metrics` | `achievement-metrics` | Named numbers: **stored** totals or **computed** values (elapsed time). |\n| `metricBalances` | `achievement-metric-balances` | Running totals for stored metrics, per user (+ scope). Leaderboards read this. |\n| `eventTypes` | `achievement-event-types` | Kinds of log entries you can count or require. |\n| `tiers` | `achievement-tiers` | Ladder steps with unlock rules. |\n| `achievements` | `achievement-definitions` | Earnable items with eligibility and completion rules. |\n| `grants` | `achievement-grants` | One earned achievement per user (+ scope). |\n| `achievementRequests` | `achievement-requests` | Request → pending / approved / rejected. |\n| `tierRequests` | `achievement-tier-requests` | Rank unlock waiting on review (`requiresReview` on the tier). |\n| `logs` | `achievement-logs` | Activity history. |\n| `reactions` | `achievement-reactions` | Side effects when something is logged or granted. |\n\nSystem rows (`points` and the four engine event types) are protected. The plugin locks their slugs and blocks deletes.\n\n## Event types\n\nEach log row points at an event type. Dotted slugs read well: `post.published`, `comment.created`, `course.completed`, `post.edited`.\n\nFlags on the type decide which log fields Admin asks for:\n\n| Flag | Log field |\n| --- | --- |\n| Requires an actor | `actor` — who caused it (a peer, an admin, …) |\n| Adjusts a metric | `metric` + `change` |\n| Requires a subject | `subject` — the host document (a post, a comment, a user, …) |\n| Snapshot actor tiers | stamps the actor’s derived rank at write time |\n\n**Actor tier** on an `event-count` rule then counts only logs whose snapshot already met that rank in this scope. Leave Actor tier blank to count every matching event. A filter only matches logs that were stamped.\n\nUnscoped logs stamp every ladder. Scoped logs stamp that tenant plus any unscoped ranks.\n\n## Subjects\n\nLogs can link to a host document the same way they link to an actor.\n\n```ts\nachievementPlugin({\n  canReview,\n  subjects: {\n    collections: ['posts', 'comments', 'users'],\n  },\n})\n```\n\nThat turns on:\n\n- **Requires a subject** and **Subject collections** on event types\n- a polymorphic **Subject** field on logs\n- `recordLog({ subject: logSubject('posts', postId) })`\n\n`collections: 'all'` includes every collection on your Payload config except this plugin’s slugs and anything prefixed `payload-`. It is optional. The picker and generated types grow with your schema, and collections you add later show up after a restart.\n\nExample — “this member enrolled”, scoped to a tenant, subject = the user:\n\n```ts\nawait recordLog({\n  payload,\n  req,\n  userId: memberId,\n  scopeId: tenantId,\n  type: 'user.enrolled',\n  subject: logSubject('users', memberId),\n})\n```\n\nSame shape as `post.published` with `subject: logSubject('posts', postId)`.\n\nPut host document links on `subject`. Engine grant/revoke/tier rows use a small `{ from, to }` envelope in `data`:\n\n| type | `from` | `to` |\n| --- | --- | --- |\n| `tier.changed` | previous tier (`null` on first climb) | current tier |\n| `achievement.granted` | `null` | achievement |\n| `achievement.revoked` | achievement | `null` |\n\n## Rules\n\nUnlock (tiers), eligibility, and completion (achievements) share one tree:\n\n- Empty top-level list — everyone passes\n- Groups — **All of these** (AND) or **Any of these** (OR)\n- Built-in leaves — `tier-at-least`, `achievement-complete`, `metric-minimum`, `event-count`\n- Your leaves — `extensions.ruleTypes` (`type`, `evaluate`, optional `progress`, `progressRole`, `label`, `fields`)\n\n`label` and `fields` show up in the Admin rule editor. The plugin only displays those fields when that leaf type is selected.\n\n**Eligibility** gates who may request an achievement. **Completion** describes what a composed achievement is made of. When `requiresReview` is off and completion passes, the parent grants itself. Nested achievement graphs skip cycles.\n\n**Current tier** walks ranks in order (`resolveCurrentTier`). A tier with `requiresReview` becomes current after an **approved** tier request. Turning `requiresReview` off approves pending requests for that row and writes missing `tier.changed` logs for people who already meet the unlock rules.\n\n**Next-tier fill** (`resolveTierProgress` / `evaluateRuleProgress`):\n\n| Combinator / leaf | Progress |\n| --- | --- |\n| AND | Equal average of *requirement* children |\n| OR | Best child |\n| `tier-at-least` | Gate — skipped in AND averages |\n| `event-count` / `metric-minimum` | Fraction of the target |\n| `achievement-complete` | `1` if granted; otherwise that achievement’s own completion (or eligibility) tree |\n\n`buildUnlockRequirementLeaves` walks a tree and returns met/progress plus catalog subjects (`relations`, `target`, `unit`, `since`). Your UI supplies the copy. `achievement-complete` is omitted by default so those stay on catalog groups. `eachRuleLeaf` is the walker on its own.\n\n## Metrics\n\n**Stored** metrics (default `points`) are sums of `change` on `metric.delta` logs. `recordMetricChange` writes the log and updates `achievement-metric-balances` together. Reconcile rebuilds balances from the log if they drift.\n\n**Computed** metrics (v1: elapsed time) are derived at evaluation:\n\n- `kind: 'computed'`, `compute: 'elapsed'`\n- `unit`: seconds, minutes, hours, days, years (365-day years)\n- `since`: `user-created-at`, `first-event` (plus an event type), or a key from `extensions.metricAnchors`\n\nSystem seed creates stored `points`. You seed computed metrics after your anchors are registered.\n\n**Leaderboards** (`getMetricLeaderboard` / `GET /api/achievements/leaderboard?metric=points`) rank stored balances for authenticated users. Each row is `{ user, value, rank }`. Your UI adds names, current tier, and who may appear. For a single user’s computed value, call `resolveMetricValue`.\n\n## Reactions\n\nA reaction is: **when this happens, run this command**.\n\nTriggers:\n\n- **Event logged** — a host event type (for example `course.completed`)\n- **Achievement granted** / **revoked** — a specific achievement\n\nBuilt-in action: **Grant achievement** (no-op if they already have it).\n\nYour actions go in `extensions.actions`. Each one needs a `type` (a command slug like `accessGroup.addMember`), optional `label` / `fields` for Admin, and a `run` function. `run` should be set-based: adding someone who is already a member is a no-op. Reactions run in the same request as the log or grant. Start a job from `run` if the work belongs on a queue.\n\nGrant/revoke reactions fire from the grant row. Point event reactions at your host event types (`post.published`, `course.completed`, …).\n\n## Custom rules, anchors, and actions\n\n```ts\nachievementPlugin({\n  canReview,\n  extensions: {\n    metricAnchors: {\n      'membership-started': {\n        label: ({ t }) => t('custom:achievements:anchors:membershipStarted'),\n        resolve: async ({ payload, userId, scopeId }) => {\n          if (!scopeId) return null\n          const found = await payload.find({\n            collection: 'memberships',\n            limit: 1,\n            overrideAccess: true,\n            where: {\n              and: [\n                { user: { equals: userId } },\n                { workspace: { equals: scopeId } },\n              ],\n            },\n          })\n          const startedAt = (found.docs[0] as { startedAt?: string } | undefined)?.startedAt\n          return startedAt ? new Date(startedAt) : null\n        },\n      },\n    },\n    ruleTypes: [\n      {\n        type: 'host.course-complete',\n        label: 'Course complete',\n        fields: [\n          { name: 'course', type: 'relationship', relationTo: 'courses', required: true },\n        ],\n        evaluate: async ({ rule, userId, payload, req }) => {\n          // return true when this user has completed rule.course\n          return true\n        },\n      },\n    ],\n    actions: [\n      {\n        type: 'accessGroup.addMember',\n        label: 'Add to access group',\n        fields: [\n          {\n            name: 'accessGroup',\n            type: 'relationship',\n            relationTo: 'access-groups',\n            required: true,\n          },\n        ],\n        run: async ({ userId, reaction, req }) => {\n          // merge the user into the group; already-a-member is a no-op\n        },\n      },\n    ],\n  },\n})\n```\n\nAnchor `label` is a Payload Admin string (`OptionLabel`): plain text, `{ en, es }`, or `({ t }) => t('custom:…')`. Your app owns those `custom:` keys.\n\nThen seed a computed metric (`since: 'membership-started'`) and use `metric-minimum` in rules.\n\n## Access\n\n- Catalog, grants, logs, reactions, and request approval use `canReview(user, scopeId)`.\n- Metric balances: reviewers can read and delete; trusted helpers write them.\n- Member-facing requests use normal collection access plus eligibility hooks.\n- Server helpers (`recordLog`, `recordMetricChange`, `grantAchievement`, …) run with `overrideAccess: true`. Call them from hooks, jobs, and locked-down endpoints. Pass `req` so nested Local API stays in the same transaction.\n\n## Localization\n\nWith Payload `localization` enabled, these catalog fields are already `localized: true`:\n\n| Collection | Localized | Other |\n| --- | --- | --- |\n| Achievements / tiers | `name` (text), `description` (Lexical) | `slug`, rules, flags |\n| Metrics / event types | `name` | `slug`, flags |\n\nTier `icon` is a Lucide picker (stores `sparkles`, `shield`, …). Peer-depend on `@payloadcms/richtext-lexical` and `lucide-react`. After upgrading, regenerate the import map and migrate so `description` columns accept JSON.\n\n`GET /api/achievements/me` and progress helpers return Lexical `description` as stored. Convert in your UI (`convertLexicalToHTML`, `convertLexicalToPlaintext`, or the plugin’s `descriptionToPlaintext` / `plainTextToLexical`).\n\nAdmin chrome ships in English. Member-facing copy lives in your i18n bundle. Seed extra locales after the English system catalog exists.\n\n## Configuration\n\n```ts\nachievementPlugin({\n  enabled?: boolean\n  seedSystemCatalog?: boolean\n  usersCollectionSlug?: string\n  canReview?: (user, scopeId) => boolean | Promise<boolean>\n  scope?: { collection: string; relationField?: string }\n  mediaCollection?: string\n  slugPrefix?: string // deprecated; use collections.prefix\n  collections?: {\n    prefix?: string\n    adminGroup?: string | false\n    slugs?: Partial<Record<AchievementCollectionKey, string>>\n    overrides?: Partial<Record<AchievementCollectionKey, AchievementCollectionOverride>>\n  }\n  users?: { includeJoins?: boolean }\n  endpoints?: { me?: string | false; leaderboard?: string | false; reconcile?: string | false }\n  subjects?: { collections?: 'all' | string[] }\n  extensions?: {\n    ruleTypes?: AchievementRuleType[]\n    metricAnchors?: Record<string, AchievementMetricAnchorEntry>\n    actions?: AchievementAction[]\n  }\n})\n```\n\n### Core\n\n| Option | Default | Notes |\n| --- | --- | --- |\n| `enabled` | `true` | `false` leaves the package installed with no collections or endpoints. |\n| `seedSystemCatalog` | `true` | Upserts system metrics and event types on `onInit`. |\n| `usersCollectionSlug` | `'users'` | Users collection for grants, requests, and joins. |\n| `canReview` | denied | Staff catalog and approval access. `scopeId` may be `null`. |\n| `scope` | unset | `collection` is the tenant target. `relationField` defaults to `'scope'`. |\n| `mediaCollection` | unset | e.g. `'media'` — optional upload on tiers for badge images. Icon keys still work. |\n| `extensions.metricAnchors` | unset | Named dates for elapsed metrics. |\n| `extensions.ruleTypes` | unset | Custom rule leaves; `label` / `fields` appear in Admin. |\n| `extensions.actions` | unset | Extra reaction commands. Built-in `achievement.grant` is always there. |\n\n### `collections`\n\n| Option | Default | Notes |\n| --- | --- | --- |\n| `prefix` | `'achievement'` | Default slugs, REST paths, and table names. |\n| `adminGroup` | `'Achievements'` | Sidebar group. `false` leaves collections ungrouped. |\n| `slugs` | derived | Absolute slug per key (ignores `prefix` for that key). |\n| `overrides` | unset | `access`, `admin`, `hooks`, `labels`. Access keys replace; hook arrays append after plugin hooks; `admin` / `labels` merge shallowly. |\n\n```ts\nachievementPlugin({\n  canReview,\n  collections: {\n    overrides: {\n      achievementRequests: {\n        hooks: {\n          afterChange: [\n            async ({ doc, previousDoc }) => {\n              if (doc.status === 'approved' && previousDoc?.status !== 'approved') {\n                // notify, analytics, …\n              }\n            },\n          ],\n        },\n      },\n    },\n  },\n})\n```\n\n### `users`\n\n| Option | Default | Notes |\n| --- | --- | --- |\n| `includeJoins` | `true` | Adds an `achievements` group on users (`grants` / `requests` joins). `false` if you already own that UI. |\n\n### `subjects`\n\n| Option | Default | Notes |\n| --- | --- | --- |\n| `collections` | `[]` | Host slugs for log `subject`, or `'all'`. Empty skips the feature. |\n\n### `endpoints`\n\n| Option | Default | Notes |\n| --- | --- | --- |\n| `me` | `'/achievements/me'` | Signed-in user’s grants, derived tiers, lean requests. `?reviews=1` adds a review snapshot. Always the caller’s own snapshot. `false` skips it. |\n| `leaderboard` | `'/achievements/leaderboard'` | Stored-metric ranks. `false` skips it. |\n| `reconcile` | `'/achievements/reconcile'` | Reviewer repair endpoint. `false` skips it. |\n\n`me` query: `scope`, `limit`, `page`, `requestsLimit`, `reviews`. Leaderboard: `metric` (required), `scope`, `limit`, `page`.\n\n## Server helpers\n\nCall these from hooks, jobs, and trusted endpoints:\n\n```ts\nimport {\n  recordLog,\n  recordMetricChange,\n  getMetricLeaderboard,\n  resolveMetricValue,\n  grantAchievement,\n  reconcileProgression,\n  reconcileUserProgression,\n  resolveCurrentTier,\n  resolveTierProgress,\n  getUserProgress,\n  loadUserProgressReviews,\n  buildUnlockRequirementLeaves,\n  submitAchievementRequest,\n  reviewAchievementRequest,\n  logSubject,\n} from '@dappermountain/payload-plugin-achievements'\n\nawait recordLog({ payload, req, userId, scopeId, type: 'post.published', subject: logSubject('posts', postId) })\nawait recordMetricChange({ payload, req, userId, scopeId, metric: 'points', change: 10 })\nconst points = await resolveMetricValue({ payload, req, userId, scopeId, metric: 'points' })\nconst board = await getMetricLeaderboard({ payload, req, metric: 'points', scopeId, limit: 20 })\nconst tier = await resolveCurrentTier({ payload, req, userId, scopeId })\nconst progress = await getUserProgress({ payload, req, userId, scopeId, include: { reviews: true } })\nconst unlockLeaves = await buildUnlockRequirementLeaves({\n  payload,\n  req,\n  userId,\n  scopeId,\n  rules: nextTier.unlockRules,\n  ladderRank: tier?.rank ?? null,\n})\n\nawait reconcileProgression({ payload, req })\nawait reconcileProgression({\n  payload,\n  req,\n  userId: '…',\n  scopeId: '…',\n  achievementSlug: 'first-steps',\n  tierSlug: 'veteran',\n})\n\nimport { runReconcileCli } from '@dappermountain/payload-plugin-achievements/cli'\nawait runReconcileCli({ config })\n```\n\nPass catalog **slugs** or ids for `type` and `metric`. Creating or deleting a grant writes `achievement.granted` / `achievement.revoked`, syncs composed achievements, and may open tier requests or write `tier.changed`.\n\nTurning **Requires review** off on a definition or tier approves that row’s pending requests (each waiting user goes through the existing request hooks).\n\nThe Grants list in Admin includes **Repair progression**, which `POST`s the reconcile endpoint (`canReview`).\n\nAlso exported: `collectionOf` / `slugOf` (resolved collection slugs), `syncProgressionFromLog`, `runReactions`.\n\n## REST\n\nPaths follow your `collections.prefix` / `slugs`.\n\n| Goal | Request |\n| --- | --- |\n| Current user snapshot | `GET /api/achievements/me?scope=<scopeId>&limit=10&page=1` (`&reviews=1` for review keys) |\n| Stored metric leaderboard | `GET /api/achievements/leaderboard?metric=points&scope=<scopeId>&limit=20&page=1` |\n| Repair progression | `POST /api/achievements/reconcile` (reviewer; optional `{ userId, scopeId, achievementId\\|achievementSlug, tierId\\|tierSlug, limit }`) |\n| List grants | `GET /api/achievement-grants?where[user][equals]=<userId>` |\n| Log history | `GET /api/achievement-logs?where[user][equals]=<userId>` |\n| Request an achievement | `POST /api/achievement-requests` with `{ achievement }` |\n| Approve / reject achievement | `PATCH /api/achievement-requests/:id` with `{ status: \"approved\" \\| \"rejected\" }` |\n| Approve / reject tier | `PATCH /api/achievement-tier-requests/:id` with `{ status: \"approved\" \\| \"rejected\" }` |\n| Browse catalogs | `GET /api/achievement-event-types`, `GET /api/achievement-metrics`, `GET /api/achievement-reactions`, … |\n\n## Seeding\n\n```ts\nimport {\n  seedAchievementCatalog,\n  seedAchievements,\n} from '@dappermountain/payload-plugin-achievements'\n\nawait seedAchievementCatalog(payload)\n\nawait seedAchievements(payload, {\n  eventTypes: [\n    { name: 'Post published', slug: 'post.published', requiresSubject: true, subjectRelationTo: ['posts'] },\n    { name: 'Comment created', slug: 'comment.created', requiresActor: true, requiresSubject: true, subjectRelationTo: ['comments'] },\n    { name: 'User enrolled', slug: 'user.enrolled', requiresSubject: true, subjectRelationTo: ['users'] },\n  ],\n  metrics: [\n    { name: 'Streak days', slug: 'streak-days' },\n    {\n      name: 'Days as member',\n      slug: 'days-as-member',\n      kind: 'computed',\n      compute: 'elapsed',\n      unit: 'days',\n      since: 'membership-started',\n    },\n  ],\n  tiers: [\n    { name: 'Novice', slug: 'novice', rank: 0, unlockRules: [] },\n  ],\n  achievements: [\n    {\n      name: 'First steps',\n      slug: 'first-steps',\n      requiresReview: false,\n      completionRules: [{ type: 'metric-minimum', metricSlug: 'points', minimum: 10 }],\n    },\n  ],\n  removeAchievementSlugs: ['old-slug'],\n})\n```\n\n`name` / `description` accept a string (default locale) or `{ en: '…', es: '…' }` when localization is on. Seed extra locales after English system rows exist. Rule arrays in seed can use `metricSlug` / `eventTypeSlug` / `achievementSlug`; the seeder resolves them to relationships.\n\n## License\n\nMIT © Dapper Mountain\n\n## Agent context (Cursor)\n\nRules and skills live under [`.agents/`](.agents/). See [`AGENTS.md`](AGENTS.md).\n\n```bash\nbun install\nbun run agents:sync\nbun run skills:install\n```\n","readmeFilename":"README.md"}