{"_id":"@x12i/activix","_rev":"32-afd75ecda33989811cf8c9f1923988b5","name":"@x12i/activix","dist-tags":{"latest":"9.0.6"},"versions":{"6.4.0":{"name":"@x12i/activix","version":"6.4.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@6.4.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"eeae90116229c7fdb3216a53b9ec73a7756f2b23","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-6.4.0.tgz","fileCount":136,"integrity":"sha512-xP9tAur3GAQBslLYjrwT+iGBgmeTJwep4eR4TBK1o90OrPx7WUikxKV/igwWrHbXC0PxHP986BbCg0Uu6KlBAQ==","signatures":[{"sig":"MEUCIHP65MdQ9lPi4EqjeaWjCFvTRWZUl91HzP0unRMQGvO1AiEA6gK5oEnj/KSaZ0CLjO/J5M7Ynrocoe2G7hbTVR6eUsE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":717828},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"de60ac2855f1093657c6744e44dc51471b99aaa1","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-persistence-summary.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.1.0","@x12i/xronox-store":"^1.6.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_6.4.0_1777121195036_0.42171642458903613","host":"s3://npm-registry-packages-npm-production"}},"6.5.0":{"name":"@x12i/activix","version":"6.5.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@6.5.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"c8a7d8590b8f418a53ecc45dd12c6f016fc54892","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-6.5.0.tgz","fileCount":136,"integrity":"sha512-vs3Yg7L8vJe8ofrxJ5/fNSXES4Nrk3qXaPn6W6Hfx9UlORvaNKVDpLXEsrgreCIQhhrh2S5OdxowX0a2l5x1dg==","signatures":[{"sig":"MEUCIQDDTNhlXZmq4HhEAh54MNnSNTR8e4Zb/iKWqfStY4HzdQIgA752F0sU7f1asxlEA0oy1TMSyyqmd0VTSiSIyfSUu0E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":744005},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"de60ac2855f1093657c6744e44dc51471b99aaa1","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.1.0","@x12i/xronox-store":"^1.7.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_6.5.0_1777154219459_0.5200949357087854","host":"s3://npm-registry-packages-npm-production"}},"6.5.1":{"name":"@x12i/activix","version":"6.5.1","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@6.5.1","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"199b4fed874f8a8db7b1d53591ec0a998d8b6a74","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-6.5.1.tgz","fileCount":136,"integrity":"sha512-9iiBTCX8GbQzNyVbThdDhxHCXA1WKrq/FRBKdQprZr7qsX7OCD2nB7RVppo0vTmUi1c9ZXVh7sNv8/+tAFD6tA==","signatures":[{"sig":"MEUCIQDWga+XdcYd3DS1G/4RwSCHAFRQphE0hzuCkUyGnpz3swIgMQO0spLP/zNlPbcLeutkS5buE5mlxeh2TF9zRtkxsIY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":747193},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"de60ac2855f1093657c6744e44dc51471b99aaa1","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_6.5.1_1777298174307_0.6336518283141168","host":"s3://npm-registry-packages-npm-production"}},"6.6.0":{"name":"@x12i/activix","version":"6.6.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@6.6.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"2d3097742eac1a732baabfe92fbdf94c2077d178","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-6.6.0.tgz","fileCount":136,"integrity":"sha512-1i1rCBELdWvVjwyYT87EnQJTR7ij4XtHhB7/Gwa8aiO5Vm+aQAmSA/JwtT08GzRIh3zkgOamCEeBJ7zOkMHE7w==","signatures":[{"sig":"MEYCIQDpSBqvwram1zWC8/6rFHrzu7JZ/FWPsG9gvCVqrp9LTAIhAP1MNWTRpcQtXizuy0JuPZR1uGeqUAiOwPQj+NkyRYym","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":765406},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"de60ac2855f1093657c6744e44dc51471b99aaa1","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_6.6.0_1777364513327_0.49045042852312437","host":"s3://npm-registry-packages-npm-production"}},"6.7.0":{"name":"@x12i/activix","version":"6.7.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@6.7.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"79e26463a64749820ede6f9835ca78eab80e05bb","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-6.7.0.tgz","fileCount":136,"integrity":"sha512-1jhGZSGaW6ZHPE2dKIaXAxu5BWc9vLMOx6STWKlEToI1lLg7SgOuQ6wxbkSrdgFovmXME/IR9QB9xVAV665ffA==","signatures":[{"sig":"MEUCIBS44fFpzycyGlT0IuArHSYOyisklmYY3dDL8IdHQnvAAiEA09CIrm+gqncK0qx6L8tUnApYySZ418ry5+7f5k6BjHA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":830701},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"de60ac2855f1093657c6744e44dc51471b99aaa1","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_6.7.0_1777370031778_0.6667199470729628","host":"s3://npm-registry-packages-npm-production"}},"7.1.0":{"name":"@x12i/activix","version":"7.1.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@7.1.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"1b2ae709bfe113cf58696035bf9403def4d7e0b2","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-7.1.0.tgz","fileCount":136,"integrity":"sha512-CJzR9dHNcd/Jcr7djkBcDn0bBNfbXmUez7P1YqCpHNJGIQG6+RVet11DDqXLzdtVbhIvVOsh05mLREomes3e6Q==","signatures":[{"sig":"MEQCIHgM3D8TmEMmOkR2puGuWQqjEdKSp3DAJibilnJ0ov3TAiAgt6BHOzONuJrrDpf8PuzR8drOjnoqe5SiJh42gSX0jw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":862098},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"aaab95df9757425bbf4cd26f6016b707b838b3e7","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_7.1.0_1777883695851_0.8568639820515065","host":"s3://npm-registry-packages-npm-production"}},"7.1.1":{"name":"@x12i/activix","version":"7.1.1","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@7.1.1","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"87d0064045855091c66447dafcb081cf4b30f5a0","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-7.1.1.tgz","fileCount":136,"integrity":"sha512-InXnvoKW8hWvx/5g7H79NxTacvXvf26H1J4RHJYxSXB6kiwy1fgLi4XVBmyDXUbW9xnHG0qHTXff5STAh4j83g==","signatures":[{"sig":"MEYCIQDfcWEodfZ66MsdBk1cJPvBneB/+ATQy/m7c/HjtR585wIhAKp4jT2bYvgbMMJblrEfbWMnLO50pXsZqofNI1WZCTTV","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":876766},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"aaab95df9757425bbf4cd26f6016b707b838b3e7","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_7.1.1_1779735544371_0.031796648221701806","host":"s3://npm-registry-packages-npm-production"}},"7.1.2":{"name":"@x12i/activix","version":"7.1.2","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@7.1.2","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"749449cf6326f4f831d1f581deb8e387415d26c3","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-7.1.2.tgz","fileCount":136,"integrity":"sha512-cl9eEdfTDkWZmafXRGgu2g1wYHnEP1TpHcB2OonvQZNlrPGK4kzPCCnEgl1Lk8R05wOiU7xILFuCEpDsno3m2A==","signatures":[{"sig":"MEUCIG2Hw0m9enrXJa1sA+qgTlBVgQ87rGwMqlAAokgJ/fGBAiEAuFldD/RHXW8jtHg7WAUhPrwynUgTlCYL369kiMkd5/E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":876766},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"aaab95df9757425bbf4cd26f6016b707b838b3e7","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_7.1.2_1779735741065_0.6490347638848153","host":"s3://npm-registry-packages-npm-production"}},"7.2.0":{"name":"@x12i/activix","version":"7.2.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@7.2.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"1b7335c5c5357478e3253253ca122a5ad6d89826","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-7.2.0.tgz","fileCount":144,"integrity":"sha512-wycD99ZnPAnm4KkiAibQaNS+CUBWvUbTJn31e1Sim1zFZTa0kL24ZjQHHIqR8o9cmOKP2dKhzqb1zfCOZxPqTA==","signatures":[{"sig":"MEUCIApiUPNDE1JaJgOucqPEg++5MivlJYERtN4VEICobljeAiEAm0VRnBOLadpN9FAdoPRVe4o29k+Oosf2H5B2hs083Fc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":943889},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"aaab95df9757425bbf4cd26f6016b707b838b3e7","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.0","@x12i/xronox-store":"^1.9.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_7.2.0_1779883330113_0.33006387212946997","host":"s3://npm-registry-packages-npm-production"}},"8.0.0":{"name":"@x12i/activix","version":"8.0.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.0.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"cef0f2ef316efbb0df08a0405fe45725b2a015ce","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.0.0.tgz","fileCount":144,"integrity":"sha512-2aGWZXUJ7wgajers7AOv6HDZfiyoLtXRT8dDl9s+Vsl2ZyOvJJsWRvT1IuqghVosl1W6zc81TGFDn4k9A/RkcQ==","signatures":[{"sig":"MEQCIG8QX1CW69vqwZDr+GHBwFmBLuNJOQU7lBhEjraOLSRtAiA0t6KMhaW1nvCiZsGTPfGewqtUPbmE4UPloEJeruwUXA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":855426},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"aaab95df9757425bbf4cd26f6016b707b838b3e7","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.0.0_1779900664646_0.05795588488090675","host":"s3://npm-registry-packages-npm-production"}},"8.0.1":{"name":"@x12i/activix","version":"8.0.1","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.0.1","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"162d73883183a896fd6858f8787dfe3437aadb19","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.0.1.tgz","fileCount":144,"integrity":"sha512-UQVxVbxpZDu0tuy5TBku4nxRhx85gQ3HhtpgbwIXnmE8k3CwhO+UTFwFnQYyozjPP0Sck3Z6KNg4zm91snz5mA==","signatures":[{"sig":"MEQCIGvZ00zKsRhrghhg3f5WVgzdCnMgV07BqMrycxEP6uIOAiBRsBGX23X80x52Nvjlb2z/kQo5UJvyKJySo6B0tznWtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":864390},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"4cb9ea832259384ee53e458d238778bc0bd0688b","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.0.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.0.1_1779914428143_0.24594871143545216","host":"s3://npm-registry-packages-npm-production"}},"8.0.2":{"name":"@x12i/activix","version":"8.0.2","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.0.2","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"17c68f15db289ad4e6f77ea7eb20c4832f7df459","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.0.2.tgz","fileCount":144,"integrity":"sha512-KW5VsQAwmZqiyosn3yH61pOVDpusL/GutfyPzQ0UWGgID6o2ZGfE+bAnWPXIIl6HaqVWJi/0mwcCaWMCrf/L2g==","signatures":[{"sig":"MEYCIQD2wAxxV1KdQKl83cVrNM/mg/EhkQqaeDx/uqOFcbB39QIhALbP2eKIa0IClKRuMW4CDVI0AHxribdZXSgpYWkP1pYH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":864951},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"4cb9ea832259384ee53e458d238778bc0bd0688b","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.0.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.0.2_1779914701328_0.1826673400033212","host":"s3://npm-registry-packages-npm-production"}},"8.0.5":{"name":"@x12i/activix","version":"8.0.5","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.0.5","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"66343abc8da64a09e4c2f5b465bd1d89cb87a381","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.0.5.tgz","fileCount":144,"integrity":"sha512-e3ZYne0dQzR6XzmJmjoc3B9qeVUIbO4DZB5d+LjCxWfMOohLbTQRluZ+MHXeNxXWtFqDaDeBp7pRe/Bzkv/sEQ==","signatures":[{"sig":"MEYCIQCfPJeO+NFNpeVt6MiePfZVgEj5TQAasN6ApZKuP+RR7gIhAOpsP1NjVBJ4Ggh25bX+PJYi1WVdUpYSrJSoxHqekS+t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":867958},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"be2326cb38162f031482232f17164ce8f64b0990","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.0.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.0.5_1779918870098_0.20367153579546815","host":"s3://npm-registry-packages-npm-production"}},"8.0.6":{"name":"@x12i/activix","version":"8.0.6","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.0.6","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"8e33ac2e15d8c51a7c886528ce0f0ecad340143b","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.0.6.tgz","fileCount":153,"integrity":"sha512-dGyEssffKrCg7h8jSy5zO5Wlg+HFkBcrWnq+EacNPOfk8B5LONf7R3vhoWb0Bvzbimy3T0zcdD+OycNt5Hp+Vw==","signatures":[{"sig":"MEYCIQCfw7xPp9QfLDDwlqTpUxfdgSclpkfEussW+jrv2MsfwQIhAKcBqIrTC9epVCjNdQ6uZGankF+7ytxgc1kk+ZAQxkN0","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889096},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"be2326cb38162f031482232f17164ce8f64b0990","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.0.3"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.0.6_1779957267516_0.9267276126060955","host":"s3://npm-registry-packages-npm-production"}},"8.0.7":{"name":"@x12i/activix","version":"8.0.7","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.0.7","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"616f921f31882a76efee8471bf513432fef0d9c5","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.0.7.tgz","fileCount":153,"integrity":"sha512-4eXxvvHlVcFeqo65dJ7itmdtx0IObgbBRPriFY6CBt1b68vzh/+7b4GuJcMxdKV+5vuWpCn9kHpA76p/2aLZaQ==","signatures":[{"sig":"MEUCIAvQdVYVwmdTu0PRqbJL/ya2+WxzOyJIlBk6TuEY6Gv7AiEAtbCLQjgNjOBKFBqeieZ2PQI86gQsHu2E3TDc9SjNrFU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889450},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"f48338613781a789a786c2bf67aaea217151bab4","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.4","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.0.5"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.0.7_1779961904571_0.47907928758228135","host":"s3://npm-registry-packages-npm-production"}},"8.1.0":{"name":"@x12i/activix","version":"8.1.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.1.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"25b3b93f16f6b9392d06db970902d140353bacb7","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.1.0.tgz","fileCount":153,"integrity":"sha512-COFghNEluNX557HmkVX/3EFDWZ9UmPQFLNkq9q1GMex+1x6fzN9xHiDzAntUZItp0+3RyDWViz5MWtGlAddQgQ==","signatures":[{"sig":"MEUCIQC4cg9HJ9ZTsQ85kVgo9E/owMPXNHjPZCURz064LYb3BQIgczmHA5zdofv+0HxPDKTwjIdNUdtnkgHyu1kBfrPii7s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889450},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"53b5645399787f04322b01e8213351f7abc70153","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.4","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.1.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.1.0_1779979493216_0.825901888059279","host":"s3://npm-registry-packages-npm-production"}},"8.2.0":{"name":"@x12i/activix","version":"8.2.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.2.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"2a0b739f488c4223e4ac154eb58c441a4a641cb3","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.2.0.tgz","fileCount":153,"integrity":"sha512-v4P3pLvj+XUzxuQH2zaF7OXmgO1YuV6yAuj8hsp7VB/8xIkhAqC0/+cvzVonaQY+Av+rmbL8qnuLVf4ZOq3B+g==","signatures":[{"sig":"MEQCIGYGf8dEJ7xXXBLJxIylaETTRCn7TJK1h9r8nlHAlegyAiA/ldcs1NOxJiIEYmOaxa+s2nmVn02Vtm2MX4FXmXGtFg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889450},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"53b5645399787f04322b01e8213351f7abc70153","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.4","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.2.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.2.0_1779979704002_0.9354302821538265","host":"s3://npm-registry-packages-npm-production"}},"8.3.0":{"name":"@x12i/activix","version":"8.3.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.3.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"136daa9ecdbf2491dd037ab6972c433629c1c162","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.3.0.tgz","fileCount":153,"integrity":"sha512-+/wx+WzTf2ZXHr3eMNawOZGFzfN9oMmjBSrxqil9rqgwNVcJFnAVYTDYMIMsMlK47fd96JfSWTsVNKzORwFWoQ==","signatures":[{"sig":"MEUCIA9njgW24BwLggFGMnX2FAKPk9TYXNbI3TCg5dPVHcrkAiEAqKgeq0O5kiPnLz2lpuHUo+4OztnGuWqqhJ2dqdM+GaY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":889450},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"53b5645399787f04322b01e8213351f7abc70153","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/logxer":"^4.2.1","@x12i/ai-tools":"^2.0.7","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.3.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.3.0_1779981246243_0.7048706227089718","host":"s3://npm-registry-packages-npm-production"}},"8.3.1":{"name":"@x12i/activix","version":"8.3.1","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.3.1","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"01a7ba5d4a599c4306b9fe82843e8854b29ca6e8","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.3.1.tgz","fileCount":153,"integrity":"sha512-5b4TfSR+YtoL8XBzu5Ocq4eC/itQ7E8zLuXfJTYFDmHT9AVOZVoCBtbxJNyQF5dHjxsjwZYw343TuNaHAgMufA==","signatures":[{"sig":"MEQCIDfOb8GHprJi88K6BFSAFlqaKbJDYD7dYdf7eO9GhSpFAiAh9Hj/9DF1F4Mxn+FlnSZ27JfEZTGGLgOsXlONW1S+nA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":892457},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"32c7bc79405c152afc7f0a2c24bec125fe8fee4c","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^2.0.7","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.3.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.3.1_1780000573736_0.5879116245664247","host":"s3://npm-registry-packages-npm-production"}},"8.4.0":{"name":"@x12i/activix","version":"8.4.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.4.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"5c9984a2e574cc20bbd8c4d90cec833ef61c8466","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.4.0.tgz","fileCount":161,"integrity":"sha512-QRfUmgSV9KWM9Oui/e//TS/onh/M5Fd17PsHrcF2J9GtY0YJugsSKYF7uRKw+pQJcInVJVYtbUWf0fvt/m5kmw==","signatures":[{"sig":"MEUCIQC4j2V2TXkdsQfjx7l8aX8etWX4t/hbNTCQiIG/InX5pQIgGXwL33+RWbO5HhA2hTBk5rGK7LvlL8i63WRlVO9VAws=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":944096},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"bba3ac3c046957bf3c72c6c99dd078408bb5c446","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^2.0.7","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.4.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.4.0_1780219377849_0.5805884418867302","host":"s3://npm-registry-packages-npm-production"}},"8.4.1":{"name":"@x12i/activix","version":"8.4.1","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.4.1","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"b37ed7245a139d7251c2a7e83ffcfc1ff8a34e07","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.4.1.tgz","fileCount":161,"integrity":"sha512-jhi5Dbn9UXC0ypWTWkMTaXzM+LlVNU6cXh/1uCkzh3q13lxQIrR5OlDwW7XO8HWxb5r2kkeCBOPEz9fmRCxo0g==","signatures":[{"sig":"MEUCIGT6MjR/fqtCTMAH4yimVtJkjogORUZ9lsNgK+FKTOyZAiEA7u+oKThEBFYkZCvxsbJnMYYvUJrma+uyVNJ2an/0zyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":945595},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"bba3ac3c046957bf3c72c6c99dd078408bb5c446","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^2.0.7","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.4.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.4.1_1780220335064_0.8374882155402288","host":"s3://npm-registry-packages-npm-production"}},"8.5.0":{"name":"@x12i/activix","version":"8.5.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.5.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"b344c974e4343a93ddf436ac3e20c43650abf80c","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.5.0.tgz","fileCount":169,"integrity":"sha512-4RklB4L0319hUw3baa/Wg7nmRNTz3WgFeR/vgcMwAmAFTdyN6IJ6tIl04I1V6EWTMHWVxh+2DSNusC61SQ8rug==","signatures":[{"sig":"MEQCIDh3crpKOGLdUuvCn162WZbUIBJJWat0scxSxHAZOq/DAiAd/hPl5ODj3J9ThemyWgxnxecF/vX/Wv6Sxe0OJx1aVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":989655},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=16.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"bba3ac3c046957bf3c72c6c99dd078408bb5c446","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^2.0.7","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.5.0_1780226565954_0.9440868525291404","host":"s3://npm-registry-packages-npm-production"}},"8.6.0":{"name":"@x12i/activix","version":"8.6.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.6.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"eb63462df51a516cc3743e5d2a09c4c2c087c96a","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.6.0.tgz","fileCount":169,"integrity":"sha512-9RFtgwO0S3iUAtLrrVwE1WUhp2FgQg8URWVCP9GbkInzg9pugtSLAGL6zNeek6Ni9BViFdLpw7JFlaseDxmWRA==","signatures":[{"sig":"MEUCIQDfzXZ17mz7oeNEjPLpbgo9PgpfSrCCn9+R9zfUvwMd5QIgQcAkhXwLTEd0iqUkQNhOQw2n7UURthJQK1eTD2pXzBM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":970718},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"5143988502fa3786d843dafcb3453036b26dd7a0","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^3.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.6.0_1780674164346_0.36270945291346846","host":"s3://npm-registry-packages-npm-production"}},"8.6.1":{"name":"@x12i/activix","version":"8.6.1","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"Athenix License","_id":"@x12i/activix@8.6.1","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"1aef3447f12cc3257fd5ea8b57ecb94d8af17ef9","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.6.1.tgz","fileCount":169,"integrity":"sha512-sGkKsQVwWrPj01sCqVBbdRv8YHD8QGCno9Ugk23KUdXKFCoegWu6DwRY1/6XvvPHSNzZN9cDCqWJX08NVSrLhg==","signatures":[{"sig":"MEUCIAu1YLwHcMEyq6Fd1irq5xbkdBpljwy8Rz33gtv1NSIcAiEA04TUL+oZpO5sOJBxyqdp6CuwjK3huSsBz0pQF06rrOg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":975777},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"3229049c9f30f520be85f30fe57a1d0093d4561c","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^3.1.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.0"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.6.1_1780685535569_0.24904744729988382","host":"s3://npm-registry-packages-npm-production"}},"8.6.2":{"name":"@x12i/activix","version":"8.6.2","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@8.6.2","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"5979fa081bc17309c82711316988d18ff9560039","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.6.2.tgz","fileCount":169,"integrity":"sha512-cjO2ycVDKPVeOtQqG0+RW+mDsypu1mz3Lz6vcIwdu13Jp0+LLnU8W6dAI60SX0IxhH2QaSVhD7+M/svkXFWTVw==","signatures":[{"sig":"MEQCIFgLx3NEHbIi/k61B2k2+MWuI6h0XcUhHy2WoRcXhQd7AiBXDLN2fxcMuNw/SQpyAUHYVKa8NDbyGONkryJdjcjIIg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":976755},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"99c4a03d8f7f799169dcf673a7549c884e6b1f45","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+https://github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^3.3.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.6.2_1780907972138_0.08287972270320076","host":"s3://npm-registry-packages-npm-production"}},"8.6.3":{"name":"@x12i/activix","version":"8.6.3","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@8.6.3","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"675ad6e87bc2eea3311155945c88b8e45413e902","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-8.6.3.tgz","fileCount":169,"integrity":"sha512-Sk70wWBA5KB/Flw3aP5GbMnvGjg6VguPDR/W3GnXlwi/PTs1OwWx1q0JHg6dhrZfaM9XjJLphnYJyobvdvGALA==","signatures":[{"sig":"MEQCIBrJGB/YA7/gEAXfP8aDo8WoVKTtXTNHOkCsV8qaTprjAiApdVW+wmb6+/ZaG7GhHcBAfVj7KbVpp/ax1kESyY8UEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":976757},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"e027b465f4168bce761d8acbe9bf1306d4bc28a3","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+ssh://git@github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^3.3.3","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_8.6.3_1781002587239_0.20135544374433256","host":"s3://npm-registry-packages-npm-production"}},"9.0.0":{"name":"@x12i/activix","version":"9.0.0","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@9.0.0","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"7c521a57b88359cb93c647c12907181b4a288c1f","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-9.0.0.tgz","fileCount":169,"integrity":"sha512-o9OqDkc9ZOY8q1dOElX32rUl6qtE4ch2d1ZdReZ1VGELIy4bi14zL3BJexay54b7MxTNvnDXjCf/R2Z40vaaoQ==","signatures":[{"sig":"MEUCICWEVl8uM0yu4J3kt1k++8MMbLiZlz2VQ6utnJMD90giAiEAtqkqQIMfGAPHj/E/OggPIMSG2lS6NrAfAvm6pKuolo8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":979588},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"b214f9f7ebcc3c36f5ce8840269c7d08cfbf4c6e","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-storage-mode.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:storage-mode":"npm run build && npm run build:tests && node .tests-out/activix-storage-mode.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+ssh://git@github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^3.3.3","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_9.0.0_1782486807063_0.47222199041295654","host":"s3://npm-registry-packages-npm-production"}},"9.0.2":{"name":"@x12i/activix","version":"9.0.2","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@9.0.2","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"a512e5dc1d37d339daf67dc13e8b270cd1c6c4c1","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-9.0.2.tgz","fileCount":169,"integrity":"sha512-lD1LcLITpCc4gS7zeLrD7ykUH885HTftf8/vQ+ew5De6N4OxP+Uu0jxfS6ehCjA+k/cNuqiymlp5LTB0g9lEnA==","signatures":[{"sig":"MEUCIHamCLDWg6TBq6UekG4sWoRQV1IKFS/SlP+EIMBDEYghAiEA7PxCAZ8xuIw63udGZM2dyl59hH+cligNGyEq9iZkIJU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":979889},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"5b5cc5713b433447adf6f051530ac0e09818b712","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-storage-mode.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:storage-mode":"npm run build && npm run build:tests && node .tests-out/activix-storage-mode.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+ssh://git@github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"11.12.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.22.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^3.3.5","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_9.0.2_1782570041636_0.2926739658860773","host":"s3://npm-registry-packages-npm-production"}},"9.0.3":{"name":"@x12i/activix","version":"9.0.3","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@9.0.3","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"738cd371e1846ca3973a72b0756009a5b6b5f5de","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-9.0.3.tgz","fileCount":169,"integrity":"sha512-RD9GMZWZrtZBd0LCPBdNUdYjUc5aCRKxcAIEZR98g4KMJ8/997zAo8Ml+hM10oPUJIObMkxQwZ//nKrj4w+LFw==","signatures":[{"sig":"MEYCIQDG+Oq6Wpt0mXrPENFVxzHX77l59aE3jin3jHEoEBcMPQIhALLfHut34TolpaEBpbi67cziTG9h6QafrJ+dNlQmRF9J","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":979889},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"5b5cc5713b433447adf6f051530ac0e09818b712","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-storage-mode.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:storage-mode":"npm run build && npm run build:tests && node .tests-out/activix-storage-mode.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+ssh://git@github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^4.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.1"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_9.0.3_1783461017990_0.6362139722447069","host":"s3://npm-registry-packages-npm-production"}},"9.0.4":{"name":"@x12i/activix","version":"9.0.4","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@9.0.4","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"a10d1b19f929f15fb28e628cb2ece3b5a8259cd9","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-9.0.4.tgz","fileCount":169,"integrity":"sha512-+5X/cQUwjpq8RoUHhp85uBCRR7FEY5NE730f788T8/KjRFRd1rzuuWropXEUvch+6YvIGz3bbuKAo4k/bNGhjg==","signatures":[{"sig":"MEUCIQCtogsca17vzvzjnaJw4oYj7LWvmvat3nwIZMaK8b5vhgIgSgyDz5RfL8Gsvk4sIcQR00nS7mnwoHFdi9qwIuI+J8I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":980243},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"5b5cc5713b433447adf6f051530ac0e09818b712","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-storage-mode.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:storage-mode":"npm run build && npm run build:tests && node .tests-out/activix-storage-mode.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+ssh://git@github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^5.0.0","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_9.0.4_1783705117606_0.9393636054035859","host":"s3://npm-registry-packages-npm-production"}},"9.0.5":{"name":"@x12i/activix","version":"9.0.5","keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","_id":"@x12i/activix@9.0.5","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"bin":{"activix":"dist/cli.js"},"dist":{"shasum":"8fe220e52c515f55bc8807aec92cb4c88dfac786","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-9.0.5.tgz","fileCount":169,"integrity":"sha512-rEK/gPvHTfr2yb0pWfJHUccUy3jTFzoDdZduMA/zTwGpOrc4hkuVKTPKFTyXQg+F5HY0Zj0yR5Hj0VK1wlD5ew==","signatures":[{"sig":"MEUCIFz+2l54WLm10fxUS1RT9MFvjdxeRFVBeNA49nAjBlldAiEAlp5l2fQbR/+EKkUxZjytFPKQpjnMIKb19prbvf4ZN8k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":980364},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","engines":{"node":">=20.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"gitHead":"bc337a411d55220f143c9a2756809cf8befae227","scripts":{"test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-storage-mode.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","prepublishOnly":"npm run build","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:storage-mode":"npm run build && npm run build:tests && node .tests-out/activix-storage-mode.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js"},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"repository":{"url":"git+ssh://git@github.com/x12i/activix.git","type":"git","directory":"packages/activix"},"_npmVersion":"10.9.0","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","directories":{},"_nodeVersion":"22.12.0","dependencies":{"mongodb":"^6.3.0","@x12i/env":"^4.0.1","@x12i/ai-tools":"^5.0.1","@x12i/xronox-store":"^1.9.3","@x12i/activix-contracts":"^1.5.2"},"publishConfig":{"access":"public","registry":"https://registry.npmjs.org"},"_hasShrinkwrap":false,"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"_npmOperationalInternal":{"tmp":"tmp/activix_9.0.5_1783711645957_0.9762477433482373","host":"s3://npm-registry-packages-npm-production"}},"9.0.6":{"name":"@x12i/activix","version":"9.0.6","description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","type":"module","bin":{"activix":"dist/cli.js"},"main":"dist/index.js","types":"dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist-cjs/index.js"}},"scripts":{"build":"node scripts/clean-spurious-dist.js && tsc && tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:esm":"tsc","build:cjs":"tsc -p tsconfig.cjs.json && node scripts/create-cjs-package.js","build:tests":"tsc -p .tests/tsconfig.json && node scripts/create-tests-package.js","legend:backfill":"npm run build && node scripts/backfill-collection-legend.js","test":"npm run build && npm run build:tests && node .tests-out/activix.test.js","test:options":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js","test:storage-mode":"npm run build && npm run build:tests && node .tests-out/activix-storage-mode.test.js","test:local":"npm run build && npm run build:tests && node .tests-out/activix-local.test.js","test:single":"npm run build && npm run build:tests && node .tests-out/activix-single.test.js","test:patch":"npm run build && npm run build:tests && node .tests-out/activix-patch.test.js","test:stale":"npm run build && npm run build:tests && node .tests-out/activix-stale.test.js","test:gaps":"npm run build && npm run build:tests && node .tests-out/activix-gaps.test.js","test:spy":"npm run build && npm run build:tests && node .tests-out/activix-spy.test.js","test:purge":"npm run build && npm run build:tests && node .tests-out/activix-purge.test.js","test:clean-export":"npm run build && npm run build:tests && node .tests-out/activix-clean-export.test.js","test:record-metadata":"npm run build && npm run build:tests && node .tests-out/activix-record-metadata.test.js","test:persistence":"npm run build && npm run build:tests && node .tests-out/activix-persistence-summary.test.js","test:persistence-warnings":"npm run build && npm run build:tests && node .tests-out/activix-persistence-warnings.test.js","test:collection-tracking":"npm run build && npm run build:tests && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","test:tracking-manager":"npm run build && npm run build:tests && node .tests-out/activix-tracking-manager.test.js","test:cost":"npm run build && npm run build:tests && node .tests-out/activix-auto-cost.test.js","test:all":"npm run build && npm run build:tests && node .tests-out/activix-options.test.js && node .tests-out/activix-storage-mode.test.js && node .tests-out/activix-local.test.js && node .tests-out/activix-single.test.js && node .tests-out/activix.test.js && node .tests-out/activix-patch.test.js && node .tests-out/activix-stale.test.js && node .tests-out/activix-gaps.test.js && node .tests-out/activix-spy.test.js && node .tests-out/activix-purge.test.js && node .tests-out/activix-clean-export.test.js && node .tests-out/activix-record-metadata.test.js && node .tests-out/activix-persistence-summary.test.js && node .tests-out/activix-persistence-warnings.test.js && node .tests-out/activix-auto-cost.test.js && node .tests-out/activix-collection-tracking.test.js && node .tests-out/activix-collection-tracking-ttl.test.js","prepublishOnly":"npm run build"},"dependencies":{"@x12i/activix-contracts":"^1.5.2","@x12i/ai-tools":"^5.1.0","@x12i/env":"^4.0.1","@x12i/xronox-store":"^1.9.3","mongodb":"^6.3.0"},"devDependencies":{"@types/node":"^20.0.0","@x12i/xronox":"^3.3.0"},"engines":{"node":">=20.0.0"},"publishConfig":{"registry":"https://registry.npmjs.org","access":"public"},"keywords":["activity","lifecycle","mongodb","tracking"],"author":{"name":"x12i"},"license":"MIT","homepage":"https://github.com/x12i/activix#readme","bugs":{"url":"https://github.com/x12i/activix/issues"},"repository":{"type":"git","url":"git+ssh://git@github.com/x12i/activix.git","directory":"packages/activix"},"gitHead":"f48fa824934f465e1cf646263302940be7c7631f","_id":"@x12i/activix@9.0.6","_nodeVersion":"22.22.0","_npmVersion":"11.12.0","dist":{"integrity":"sha512-0l+AUeJOVQvujBfwHM4ZfAcugT09V52fj0PM9W6Qp3SG60bm2T7VRnh9WnjNDnSradfyJ05dKeFYSFOvEbINoQ==","shasum":"4721fe17eb9a19cf573220cac47ec194cc7d571e","tarball":"https://registry.npmjs.org/@x12i/activix/-/activix-9.0.6.tgz","fileCount":169,"unpackedSize":980483,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCICkYPcg1jNiD1oLAgK1QyYEN+Zyx7DH5x93Ws0ksBWdXAiAeI5sBw0a5aus+fQajFxhZFZwEteBTgbAAfm3Y0+cyWw=="}]},"_npmUser":{"name":"x12i","email":"ami@x12i.com"},"directories":{},"maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/activix_9.0.6_1783864615890_0.2707351953903643"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T12:46:34.890Z","modified":"2026-07-12T13:56:56.170Z","6.4.0":"2026-04-25T12:46:35.232Z","6.5.0":"2026-04-25T21:56:59.666Z","6.5.1":"2026-04-27T13:56:14.524Z","6.6.0":"2026-04-28T08:21:53.522Z","6.7.0":"2026-04-28T09:53:51.952Z","7.1.0":"2026-05-04T08:34:56.022Z","7.1.1":"2026-05-25T18:59:04.540Z","7.1.2":"2026-05-25T19:02:21.267Z","7.2.0":"2026-05-27T12:02:10.297Z","8.0.0":"2026-05-27T16:51:04.867Z","8.0.1":"2026-05-27T20:40:28.284Z","8.0.2":"2026-05-27T20:45:01.551Z","8.0.5":"2026-05-27T21:54:30.247Z","8.0.6":"2026-05-28T08:34:27.659Z","8.0.7":"2026-05-28T09:51:44.793Z","8.1.0":"2026-05-28T14:44:53.417Z","8.2.0":"2026-05-28T14:48:24.212Z","8.3.0":"2026-05-28T15:14:06.437Z","8.3.1":"2026-05-28T20:36:13.947Z","8.4.0":"2026-05-31T09:22:58.000Z","8.4.1":"2026-05-31T09:38:55.267Z","8.5.0":"2026-05-31T11:22:46.203Z","8.6.0":"2026-06-05T15:42:44.492Z","8.6.1":"2026-06-05T18:52:15.852Z","8.6.2":"2026-06-08T08:39:32.272Z","8.6.3":"2026-06-09T10:56:27.401Z","9.0.0":"2026-06-26T15:13:27.232Z","9.0.2":"2026-06-27T14:20:41.848Z","9.0.3":"2026-07-07T21:50:18.138Z","9.0.4":"2026-07-10T17:38:37.782Z","9.0.5":"2026-07-10T19:27:26.166Z","9.0.6":"2026-07-12T13:56:56.078Z"},"bugs":{"url":"https://github.com/x12i/activix/issues"},"author":{"name":"x12i"},"license":"MIT","homepage":"https://github.com/x12i/activix#readme","keywords":["activity","lifecycle","mongodb","tracking"],"repository":{"type":"git","url":"git+ssh://git@github.com/x12i/activix.git","directory":"packages/activix"},"description":"Generic two-phase activity lifecycle tracker built on @x12i/xronox-store","maintainers":[{"name":"x12i","email":"ami@x12i.com"}],"readme":"# @x12i/activix\n\nPart of the [Activitix monorepo](../../README.md). Shared record types live in **`@x12i/activix-contracts@^1.3.0`** (re-exported from this package for convenience).\n\nFor **runtime optimization** of AI execution (first scenario: adaptive max completion budget), use **[`@x12i/optimixer`](../optimixer)** (2.x). Optimixer writes `optimixer:prediction` rows through your Activix client; Activix does not make optimization decisions.\n\nTrack **start → complete / fail** (and timeouts) for activities stored in **MongoDB** (via [`@x12i/xronox-store`](https://github.com/x12i/xronox-store)) or in a **local playground folder** (no database). Each record has **root-level** **`outer`** (**`input`**, **`output`**, **`metadata`**, optional **`cost`**) and optional **`inner[]`**, optional top-level **`metadata`** (orchestrator observability) and **`config`** (routing mirror), a **`runContext`** object (pass **`sessionId`** / **`jobId`** for correlation — Activix does **not** invent `sessionId` if you omit it), primary key **`activityId`**, and lifecycle fields (**`status`**, **`startTime`**, **`endTime`**, **`duration`**) that Activix sets (integrators should not send those or parallel **`createdAt`** / **`updatedAt`**).\n\n**Docs map:** [Record fields & naming](#record-shape-where-each-value-belongs) · [`.docs/activity-structure.md`](./.docs/activity-structure.md) · [`.docs/activity-trace-schema.md`](./.docs/activity-trace-schema.md) (studio export / joins) · [`.docs/run-context-object.md`](./.docs/run-context-object.md) · **v9 consumers:** [../../.docs/MIGRATION-CONSUMERS.md](../../.docs/MIGRATION-CONSUMERS.md) · **v6:** [`.docs/MIGRATION-v6.md`](./.docs/MIGRATION-v6.md) · **v5 `runContext`:** [`.docs/MIGRATION-v5.md`](./.docs/MIGRATION-v5.md)\n\n## Install\n\n`@x12i/xronox-store` is a **private** dependency on npmjs. Make sure your npm auth token has access to the `@x12i` org (see `.npmrc.example`), then:\n\n```bash\nnpm install @x12i/activix\n```\n\nThe published package ships **`.docs/`** (same as this repo). Dependents can link or copy from **`node_modules/@x12i/activix/.docs/run-context-object.md`** when documenting their own Activix integration.\n\n## Activation policy (important)\n\nActivix is **explicitly enabled by config**.\n\n- Enable Activix by constructing `new Activix(...)` with either:\n  - a pre-built `store`, or\n  - **`collection` / `collections`** (and usually `mongoUri` or Mongo URI env vars when you expect database storage).\n- **Default `storageMode` (when omitted):** if **`mongoUri`** (or Mongo URI env vars) is set → **`database`** (no probe; fails at store init when Mongo is down). If no URI → **`local`** playground. For probe-then-fallback dev ergonomics, pass **`storageMode: 'automatic'`** explicitly.\n- Set **`storageMode: 'database'`** for the same behavior as omitting mode when a URI is present. Set **`storageMode: 'local'`** for playground-only (see [Storage modes](#storage-modes)).\n- **`await Activix.create(options)`** is equivalent to **`new Activix(options)`** then **`await ax.init()`** (convenience helper).\n- If your app does not construct Activix, treat it as **disabled** (do not silently auto-enable from ambient env).\n- If Activix is enabled, missing required connection details should fail fast at app wiring/startup.\n- Collection name is **required application wiring**. Every package must pass a package-owned, hard-coded **`collection`** or **`collections`** value when constructing Activix. Do **not** pick runtime package collection names from `.env`.\n- Database name is **not** accepted in constructor options. Set DB once in `.env`\n  (`ACTIVIX_DB_NAME`, fallback `MONGO_AI_LOGS_DB`, then `MONGO_LOGS_DB`, then `MONGO_DB`), otherwise Activix uses `activitix`.\n- **Diagnostic logs are error-only by default.** This prevents feedback loops where routine Activix diagnostics would add noise around activity-log writes. Set **`ENABLE_ACTIVIX_LOGXER=true`** to enable full console diagnostics. When enabled, level follows **`ACTIVIX_LOGS_LEVEL`** (canonical; legacy **`ACTIVIX_LOG_LEVEL`** fallback); if both are unset, the default is **`warn`**. Set **`ACTIVIX_LOGS_LEVEL=error`** to return to errors-only while diagnostics are enabled. Injected **`logger`** instances are also gated: with the enable flag off, only `logger.error` is called. Structured logging via **@x12i/logxer** is provided by **@x12i/optimixer**, not Activix.\n- **Dependencies below Activix** use **their own** log switches (documented here for convenience only; each package remains authoritative). To trace persistence end-to-end, enable each layer you need (see [Diagnostic logging down the stack](#diagnostic-logging-down-the-stack)).\n\nThis keeps behavior deterministic across environments and avoids hidden coupling to process env.\n\n## Run context at runtime (not Activix constructor config)\n\n**`runContext` is per-run execution context**, not something you define once in **`new Activix({ … })`** or in static app configuration.\n\n- **Constructor options** (`mongoUri`, `collection` / `collections`, `store`, index definitions, storage mode, and similar) only configure **where and how** documents are stored. They do **not** carry `sessionId`, `jobId`, `taskId`, or other correlation fields for a specific request, message, or job.\n- **On each write** (`startRecord`, and any follow-up that carries run context), pass the **`runContext`** object that reflects **this** execution: usually taken from the inbound request or job envelope, optionally extended at each layer, and forwarded to downstream code. That is the object persisted under the configured **`runContext`** field (default BSON key **`runContext`**; override with **`runContextField`**). Full guide: [`.docs/run-context-object.md`](./.docs/run-context-object.md).\n\nIf you omit both `runContext.sessionId` and top-level `sessionId`, Activix **does not** invent a value—it logs a **warning** and stores the record without `sessionId`. For end-to-end correlation across services, **supply** `sessionId` (and other work-scope fields) from the true upstream of the run.\n\n**v5 naming:** the correlation object is **`runContext`** only—there is **no** `identity` field, `identityField` config, or `findRecordsByIdentity` in the default public API (no backward-compatible aliases). Stray **`identity`** keys on writes are **not** read as the correlation envelope. v5 API summary is at the top of [`.docs/run-context-object.md`](./.docs/run-context-object.md#v5-runcontext-only-api-quick). To announce this upgrade to teams, use [`.docs/COMMUNICATING-RUNCONTEXT-V5.md`](./.docs/COMMUNICATING-RUNCONTEXT-V5.md).\n\n## Diagnostic logging down the stack\n\nActivix sits on **xronox-store**, which sits on **xronox**. Diagnostic output is **layered**: turning on Activix logs does **not** automatically enable store or engine logs. The table below is **reference for Activix users** only; do not treat it as instructions to modify downstream repos — pull specifics from each dependency when you need them.\n\n| Layer | Package | Turn on | Notes |\n|-------|---------|---------|--------|\n| **Activix** | `@x12i/activix` | Default: errors only. Full diagnostics: **`ENABLE_ACTIVIX_LOGXER=true`**; optional **`ACTIVIX_LOGS_LEVEL`** (`error`, `warn`, `info`, `debug`, etc.) | Avoids logging-system noise about logs activity. **`isActivixDiagnosticLoggingEnabled()`** is true only when the enable flag is true and the level is not silenced. |\n| **Store** | [`@x12i/xronox-store`](https://github.com/x12i/xronox-store) | `XRONOX_STORE_LOG=1` (or `true` / `yes` / `on`) | Console lines prefixed **`[xronox-store]`**. Optional `logger` on **`XronoxStore`**; see [xronox-store README — Logging](https://github.com/x12i/xronox-store/blob/main/README.md). |\n| **Engine** | [`@x12i/xronox`](https://github.com/x12i/xronox) | `XRONOX_VERBOSE=1` or `XRONOX_LOGS=1` (`1`, `true`, or `yes`) | **Only** `XRONOX_*` keys; generic `DEBUG=1` does **not** enable xronox diagnostics. |\n\nExample for a noisy trace of one persistence path:\n\n```bash\nENABLE_ACTIVIX_LOGXER=true\nACTIVIX_LOGS_LEVEL=debug\nXRONOX_STORE_LOG=1\nXRONOX_VERBOSE=1\n```\n\nExpanded reference (same scope — Activix docs only) and **logs-gateway** pointers: [`.docs/logging-stack.md`](./.docs/logging-stack.md).\n\n### Breaking change: no constructor DB override\n\n`mongoDb` in `new Activix(...)` is intentionally unsupported.\n\nWhy:\n\n- Prevent hidden per-component DB selection in code.\n- Avoid accidental split-brain activity history (some services writing to one DB, others to another).\n- Keep one operational source of truth in deployment/env config.\n\n## Quick start (single collection)\n\nUse this when all activity records for this `Activix` instance live in **one** MongoDB collection. Pass the collection name **once** in the constructor; you do not pass it again on `startRecord`, `completeRecord`, and the other methods.\n\nThe collection name is part of the package's source-level ownership contract. Choose a stable package-owned name such as **`my-service-activities`** and hard-code it in your Activix initialization. Environment variables are for deployment settings like Mongo URI or database name, not for deciding which package-owned activity collection a runtime package writes to.\n\n**Production (default):** Mongo when URI is configured — no probe, fail fast if Mongo is down.\n\n```typescript\nimport {\n  Activix,\n  activixActivityIo,\n  activixOuterTier,\n  type ActivixRunContext,\n} from '@x12i/activix';\n\nconst ax = new Activix({\n  mongoUri: process.env.MONGO_URI!,\n  collection: 'my-service-activities',\n});\n\nawait ax.init(); // ax.storageBackend === 'database' when Mongo is reachable\nconst runContext: ActivixRunContext = {\n  sessionId: '550e8400-e29b-41d4-a716-446655440000', // normally the id your upstream already assigned\n  jobId: 'job-123',\n};\nconst { activityId } = await ax.startRecord({\n  runContext,\n  ...activixActivityIo(\n    activixOuterTier({ kind: 'task', args: { id: 1 } }, null, { type: 'import' })\n  ),\n});\nawait ax.completeRecord(activityId, {\n  outer: { output: { result: 'ok' } },\n});\nawait ax.close();\n```\n\n**Always MongoDB** (no probe; same behavior as pre–automatic-default releases):\n\n```typescript\nconst ax = new Activix({\n  storageMode: 'database',\n  mongoUri: process.env.MONGO_URI!,\n  collection: 'my-service-activities',\n});\n```\n\nYou can pass a full config object instead of a string if you need custom primary keys, indexes, or field names:\n\n```typescript\nconst ax = new Activix({\n  mongoUri: process.env.MONGO_URI!,\n  collection: {\n    name: 'my-service-activities',\n    indexes: [\n      { keys: { 'runContext.jobId': 1 } },\n      { keys: { 'runContext.sessionId': 1 } }, // helps findRecordsByRunContext({ sessionId })\n    ],\n  },\n});\n```\n\n## Defaults (v6)\n\n| Item | Default |\n|------|---------|\n| Primary key field | `activityId` (values like `<primaryKeyPrefix><uuid>`; default `act-<uuid>`) |\n| `runContext` object | Field `runContext` (override with `runContextField`); pass **`sessionId`** / **`jobId`** when you have them (`runContext` or top-level `sessionId` — Activix warns if `sessionId` is missing) |\n| `outer` / `inner` | **Root fields** (no `structure` wrapper): **`outer`** requires `input`, `output` (may be `null` until complete), `metadata`, optional `cost`; optional **`inner`** is an array of step entries with `input`, `output`, `metadata`, optional `cost`, `startedAt`, `endedAt`, optional `durationMs` |\n| `autoCost` | Default **`false`**. When enabled, fills **`outer.cost`** from a valid cost on the row or from **`@x12i/ai-tools`** only when needed — see [Automatic cost](#automatic-cost-autocost) |\n| Status / times | `status`, `startTime`, `endTime`, `duration` — **numbers** (Unix ms for start/end); set only by Activix |\n| Mid-flight status | `statusValues.inProgress` default `'in_progress'` (`markInProgress`) |\n| Abandoned / stale | `statusValues.timeout` default `'timeout'`; TTL **`staleRecordTTL`** (ms) vs **`startTime`** (`reconcileAbandonedActivities` / `markStaleRecords`) |\n| Purge old rows | **`purgeOldRecords()`** — **soft-purges** (marks as `purgedAt` and hides) docs with `startTimeField` older than **`purgeRecordMaxAgeMs`** (default **7 days**); optional per-call **`olderThanMs`** |\n| Optional “last heard” | `progressAtField` — set on each `markInProgress` |\n\n`startRecord` **creates** the primary key, writes it to both the configured primary-key field and root **`activityId`**, persists the row, and returns **`activityId`**. Pass that **`activityId`** into **`completeRecord`**, **`failRecord`**, **`markInProgress`**, **`patchRecord`**, and **`getRecord`**. Deprecated **`recordId`** on the result object is the same string.\n\n## Record shape: where each value belongs\n\nUse this table before choosing field names in your service. Types and trace helpers live in **`@x12i/activix-contracts`** (re-exported from **`@x12i/activix`**).\n\n| Concept | Where it lives | Example | Notes |\n|---------|----------------|---------|-------|\n| **Collection name** | Constructor **`collection`** / **`collections[].name`** | `'ai-gateway-activities'` | Hard-coded in **source** (not `.env`). Optimixer **`activixCollection`** must match when sharing one Activix client. |\n| **`activityId`** | Root on every row | `'act-…'` | Assigned by Activix on **`startRecord`**. Join key for graph ↔ ai-tasks. **Not** stored in **`runContext`**. |\n| **`runContext`** | Root envelope, per write | `{ sessionId, jobId, graphId, nodeId }` | [`.docs/run-context-object.md`](./.docs/run-context-object.md) |\n| **`activityKind`** | IO / lifecycle tag | `'node:start'`, `'optimixer:prediction'` | Often `outer.input.kind` or `outer.metadata.kind`. Export: **`trace.activityKind`**. |\n| **`activityType`** | Domain label | `'synthesis'`, `'task'` | **`outer.metadata.type`** only — not legacy ActivityTracker routing. Export: **`trace.activityType`**. |\n| **Top-level `metadata`** | Root sibling of **`outer`** | `{ modelUsed, synthesisEnabled }` | Orchestrator observability; shallow-merged on updates; **not** hoisted into **`outer`**. |\n| **`outer.metadata`** | On **`outer`** | `{ phase, provider, model, kind }` | IO-tier / gateway mirror. |\n| **Top-level `config`** | Root routing mirror | `{ provider, model, maxTokens }` | Filled from **`outer.metadata`** on persist via **`materializeRecordRoutingAndBilling`**. |\n\n### `activityKind` vs `activityType`\n\nDo **not** use these interchangeably:\n\n- **`activityKind`** — *which phase or IO event?* (`graph:start`, `node:start`, `optimixer:prediction`). Activix resolves warnings/playground labels in order: top-level **`kind`** → **`metadata.kind`** → **`outer.metadata.kind`** → **`outer.input.kind`**.\n- **`activityType`** — *which domain bucket?* (`synthesis`, `task`, `import`). Canonical slot: **`outer.metadata.type`**.\n\n```typescript\nimport { activixOuterTier, activixActivityIo } from '@x12i/activix';\n\nawait ax.startRecord({\n  runContext: { sessionId: jobId, jobId, graphId: 'g1', nodeId: 'node-a' },\n  ...activixActivityIo(\n    activixOuterTier(\n      { kind: 'node:start', payload: {} },  // outer.input\n      null,\n      { type: 'task', kind: 'node:start' } // outer.metadata\n    )\n  ),\n  metadata: { modelUsed: 'openai/gpt-4o', synthesisEnabled: false },\n});\n```\n\n### Top-level `metadata`, `config`, and observability\n\n| Field | Typical use |\n|-------|-------------|\n| **`metadata.modelUsed`** | Model id for studio reports (diagnostics also read **`config.model`** / **`outer.metadata.model`**) |\n| **`metadata.synthesisEnabled`** | Explicit boolean for synthesis on/off |\n| **`metadata.*`** | Orchestrator keys (`narrixMode`, `inputStrategyKey`, …) — query `{ \"metadata.<key>\": value }` |\n| **`config`** | Routing/billing mirror (`provider`, `model`, `maxTokens`) — safe to patch on **`failRecord`** for gateway error paths |\n\nLegacy rows with only **`outer.metadata.type: 'synthesis'`** are treated as synthesis-enabled in export summaries when **`synthesisEnabled`** is absent.\n\nPure helpers: **`resolveRecordMetadata`**, **`mergeRecordMetadata`**, **`resolveRecordConfig`**, **`mergeRecordConfig`**, **`materializeRecordRoutingAndBilling`**, **`buildActivityTraceBlock`**, **`normalizeActivityTraceExport`**.\n\n### Graph runs and ai-tasks joins\n\nCorrelation stays in **`runContext`**; inherit upstream ids, extend with your scope:\n\n```typescript\n// Graph run (no nodeId) — graphRun in getJobActivities is the row with graphId and no nodeId\nrunContext: { sessionId: jobId, jobId, graphId: 'g1' }\n\n// Master skill scope (product-defined; often another row's activityId)\nrunContext: { sessionId: jobId, jobId, graphId: 'g1', masterSkillActivityId: 'act-master-9' }\n\n// ai-tasks child pointing at graph node\nmetadata: { runTask: { metadata: { activityId: 'act-node-abc' } } }\n```\n\n**Studio join:** graph node **`trace.join.activityId`** === ai-tasks **`trace.join.parentActivityId`**. Details: [`.docs/activity-trace-schema.md`](./.docs/activity-trace-schema.md).\n\n### Lifecycle: done, in-progress, failed, abandoned\n\n| Intent | API |\n|--------|-----|\n| Success (sets `completed`, `endTime`, `duration`) | `completeRecord(activityId, updates?)` |\n| Failure (sets `failed`, `error`, `endTime`, `duration`) | `failRecord(activityId, error, updates?)` |\n| Still running — “last we heard” (sets `in_progress`, optional touch field) | `markInProgress(activityId, updates?)` |\n| Arbitrary fields, **any** status (including after `completed` / `failed`) | `patchRecord(activityId, fields)` |\n\nOptional per collection: **`progressAtField`** (e.g. `lastHeardAt`) — on each **`markInProgress`**, Activix sets it to `Date.now()`. Override the mid-flight label with **`statusValues.inProgress`**.\n\n### Persistence warnings\n\nPass **`onPersistenceWarning`** when you want a metrics/logging hook for failed activity writes:\n\n```typescript\nconst ax = new Activix({\n  collection: 'my-service-activities',\n  mongoUri: process.env.MONGO_URI!,\n  onPersistenceWarning: (warning) => {\n    metrics.increment(warning.event, {\n      collection: warning.collection,\n      phase: warning.phase,\n    });\n  },\n});\n```\n\nActivix calls this hook before it rethrows or swallows a persistence error. Normal lifecycle writes (`startRecord`, `completeRecord`, `failRecord`, `markInProgress`) still reject after the warning. `patchRecord` keeps its historical non-fatal behavior by default, but **`strictPersistence: true`** makes it rethrow after warning so CI/audit-sensitive runs can fail fast.\n\nWarning events are **`activix.record.insert_failed`** and **`activix.record.update_failed`**. The payload includes `collection`, `operation`, `phase`, primary key, and an error summary. `phase` is resolved from top-level `kind`, then `outer.metadata.kind`, then `outer.input.kind`, else `activix:record`. When xronox-store reports clone diagnostics, Activix forwards the offending path/type summary under `warning.clone`.\n\n### Automatic cost (`autoCost`)\n\nOpt in with **`autoCost: true`** (or an options object) on `new Activix({ … })`. On **`completeRecord`**, **`failRecord`**, **`markInProgress`**, and **`patchRecord`**, Activix can populate **`outer.cost`** when it is missing or invalid:\n\n1. **Reuse a valid cost already on the row** — e.g. `outer.cost.usd`, `inner[].cost`, `outer.output.usage.total_cost` / `usage.cost`, or other nested cost objects (bounded scan). Integrator-provided **`outer.cost`** with a valid **`usd`** is never replaced unless you set **`overwriteOuterCost: true`**.\n2. **Only if no valid cost was found**, call **`@x12i/ai-tools`** (`CostCalculator.calculateFromRecord`) when token usage and a model can be extracted. Activix checks **`needsActivixCostCalculation(record)`** first so catalog pricing is skipped when unnecessary.\n\n**Model strings (ai-tools v5.1.0 / ai-profiles 4.4.x):** pricing accepts **`profile/choice`** keys (e.g. `cheap/default` → `google/gemma-3-4b-it`) or **concrete model ids** (e.g. `gpt-5.5`, `openai/gpt-4o`). Bare profiles (`cheap`), shortcuts (`standard`), and legacy shorthands (`gpt4o`) are **not** resolved — store the canonical form on activity rows.\n\nDefault catalog mode for Activix is **`bundledOnly: true`** (offline-friendly). Pass **`bundledOnly: false`** to allow live open-assets catalog refresh.\n\n```typescript\nconst ax = new Activix({\n  collection: 'my-service-activities',\n  mongoUri: process.env.MONGO_URI!,\n  autoCost: true,\n});\n\nawait ax.completeRecord(activityId, {\n  outer: {\n    output: {\n      usage: { prompt_tokens: 1200, completion_tokens: 400, total_cost: 0.008 },\n    },\n  },\n});\n// outer.cost.usd === 0.008 (from the response; ai-tools is not called)\n```\n\nStandalone helpers (same rules): **`applyActivixAutoCost`**, **`findValidActivixCostInRecord`**, **`needsActivixCostCalculation`**, **`resolveActivixCostForRecord`**, **`isValidActivixCost`**.\n\n### Abandoned activities (started but never finished)\n\nCall **`reconcileAbandonedActivities()`** on a timer (or from your job runner). It finds documents still in **`started`** whose **`startTime`** is older than a TTL and sets **`status`** to **`statusValues.timeout`** (default `'timeout'`). Default TTL is constructor **`staleRecordTTL`** (ms); override per run with `{ ttlMs }`. Same implementation as **`markStaleRecords()`** — use whichever name fits your docs.\n\n### Purging old records (soft purge)\n\nCall **`purgeOldRecords(options?)`** on a schedule to **soft-purge** documents whose **`startTime`** is older than a threshold (any **status**, including stuck or finished).\n\nActivix marks matching rows with `purgedAt = Date.now()` (or your **`purgeAtField`**). When Activix creates **`XronoxStore`**, it registers the same field as xronox-store **`visibility`**, so tombstoned rows are hidden from **`getByKey`** / **`readMany`** / **`updateMany`** (i.e. **`getRecord`**, **`findRecords`**, **`findRecordsByRunContext`**, stale reconciliation, and purge matching).\n\n- Default age: constructor **`purgeRecordMaxAgeMs`**, which defaults to **7 days** (`604800000` ms).\n- Override per run: **`purgeOldRecords({ olderThanMs: 24 * 60 * 60 * 1000 })`** (example: older than 1 day).\n- You can configure the marker field name per collection with `purgeAtField` (default: `purgedAt`).\n\n```typescript\nconst ax = new Activix({\n  mongoUri: process.env.MONGO_URI!,\n  purgeRecordMaxAgeMs: 7 * 24 * 60 * 60 * 1000, // default; omit to use 1 week\n});\n\nawait ax.init();\nconst purged = await ax.purgeOldRecords(); // or { collection: 'other-stream', olderThanMs: ... }\n```\n\n### Migrating from v1 (`recordId` / `rec-`)\n\nIf existing collections and indexes use `recordId`, set in config:\n\n`primaryKey: 'recordId', primaryKeyPrefix: 'rec-'`\n\n## Cache-first reads (primary key)\n\nWhen Activix creates the store, each collection’s cache is resolved with xronox-store **`resolveCacheConfig`** (defaults **`maxSize` 10000**, **`ttlMs` 0**) and your optional **`cache`** overrides. **Writes go to the cache first**, then Mongo. **`getRecord(id)`**, **`completeRecord`**, **`markInProgress`**, **`patchRecord`**, and **`failRecord`** use the store’s per-key cache when the key is hot.\n\n**`findRecords`** / **`findRecordsByRunContext`** use **`readMany`**. By default they do **not** merge the in-memory cache; pass **`{ mergeCache: true }`** (xronox-store **1.2+**) to union matching cached rows with DB results. After a write, **`getRecord(activityId)`** is still the simplest way to read the latest row for one id in-process.\n\n## Query by `sessionId` / `runContext` / `status`\n\nUse **`findRecordsByRunContext(criteria, { collection?, limit?, sort? })`** to load activities from the database by:\n\n- **`sessionId`** — matches `<runContextField>.sessionId` (default field path `runContext.sessionId`)\n- **`runContext`** — extra exact matches on nested run context, e.g. `{ tenant: 'acme' }` → `runContext.tenant`\n- **`status`** — exact match on your configured status field (e.g. `'started'`, `'completed'`)\n\nCriteria are combined with **AND**. You must pass at least one of: a non-empty `sessionId`, at least one `runContext` property, or a non-empty `status`. If top-level `sessionId` and `runContext.sessionId` both appear, they must be the same string or Activix throws.\n\n```typescript\n// All activities in a session\nconst rows = await ax.findRecordsByRunContext({ sessionId: '550e8400-e29b-41d4-a716-446655440000' });\n\n// Same, but only still-open ones\nconst open = await ax.findRecordsByRunContext({\n  sessionId: '550e8400-e29b-41d4-a716-446655440000',\n  status: 'started',\n});\n\n// By custom run-context fields (uses configured runContextField name, default `runContext`)\nconst forTenant = await ax.findRecordsByRunContext({\n  runContext: { tenant: 'acme', plan: 'pro' },\n  status: 'in_progress',\n});\n```\n\nFor ad hoc Mongo shapes, use **`findRecords(rawFilter, …)`** instead. Consider an index on `runContext.sessionId` (and other queried run-context keys) in **`indexes`** on the collection config.\n\nExported type: **`FindByRunContextCriteria`**.\n\n## Runtime observability query client\n\nActivix is the official owner of activity queryability for runtime observability. Packages that expose debug-only `runtimeObjects` should expose their package-owned Activix instance by reference as `runtimeObjects.activixClient`; they should not build local Mongo adapters, scrape playground files, or query xronox-store internals.\n\nUse **`getJobActivities(input)`** when a parent package, playground, or debug UI needs all Activix activity information for a runtime job:\n\n```typescript\nconst result = await ax.getJobActivities({\n  jobId: 'job-123',\n  graphId: 'graph-main',\n  nodeId: 'node-a',\n  limit: 500,\n});\n\nconsole.log(result.jobId, result.graphRun, result.activities);\n```\n\nShape:\n\n```typescript\ntype ActivixQueryableClient = {\n  getJobActivities(input: {\n    jobId: string;\n    graphId?: string;\n    nodeId?: string;\n    limit?: number;\n  }): Promise<{\n    jobId: string;\n    graphRun?: unknown;\n    activities: unknown[];\n  }>;\n};\n```\n\n`jobId` is required and is matched inside the configured **`runContextField`** (default **`runContext.jobId`**). Optional **`graphId`** and **`nodeId`** filter the same run-context object. Activix queries every collection configured on the instance, returns full activity rows, sorts them into timeline order, and applies `limit` after merging collections.\n\nThe configured store is the source of truth: MongoDB/xronox-store in **`database`** mode, or the playground/local store in **`local`** mode or automatic fallback. Activix passes **`mergeCache: true`** so hot in-process rows can be merged with the store result where supported, but the cache is only a freshness layer, not an in-memory-only backend.\n\nFull guide: [`.docs/runtime-observability-querying.md`](./.docs/runtime-observability-querying.md).\n\n**Graph-style writes** (indexes recommended on `runContext.jobId`, `runContext.graphId`, `runContext.nodeId`):\n\n```typescript\nawait ax.startRecord({\n  runContext: { sessionId: jobId, jobId, graphId: 'g1', nodeId: 'node-a' },\n  outer: {\n    input: { kind: 'node:start' },\n    output: null,\n    metadata: { type: 'task', kind: 'node:start' },\n  },\n});\n```\n\n`getJobActivities({ jobId, graphId })` returns **`graphRun`** (first matching graph-level row) plus **`activities`** sorted in timeline order.\n\n## Run context contract for gateway integrations\n\nThis is the same **runtime** **`runContext`** object described in [Run context at runtime (not Activix constructor config)](#run-context-at-runtime-not-activix-constructor-config); gateway docs spell out the envelope for AI-shaped stacks.\n\nFor teams integrating through `@athenices/ai-gateway`, use the shared run-context envelope in:\n\n- [`.docs/run-context-object.md`](./.docs/run-context-object.md) — what `runContext` is, layers, `instance`, examples, mistakes, v5 API, graphs/hooks appendix\n- [`.docs/session-id-usage.md`](./.docs/session-id-usage.md) — happy-path `sessionId` for a full run; nested layers should not replace an id they received; entry/direct-call behavior is product-defined\n- [`.docs/activity-structure.md`](./.docs/activity-structure.md) — root **`outer`** / **`inner[]`** I/O (including optional **`outer.cost`** / **`inner[].cost`**)\n\nRecommended shape for cross-service correlation (see the doc for hierarchy vs optional executor):\n\n```ts\nrunContext: {\n  sessionId: string,\n  // Work scope: add as you go deeper (examples — names are product-defined)\n  jobId?: string,\n  taskId?: string,\n  stepId?: string,\n  skillId?: string,\n  // Optional: which executor ran the work (agent / worker / replica)\n  instance?: {\n    instanceId: string,\n    type: string,\n  },\n}\n```\n\nActivix does **not** mint `sessionId` for you — pass it from the job/request upstream when you need correlation. Gateway-facing systems should preserve the full **`runContext`** object end-to-end.\n\n## Multiple collections\n\nUse this when one service writes to **several** activity collections (for example separate streams per domain). List each collection in `collections` and set **`defaultCollection`** to the primary stream name (explicit in source — there is no implicit “first item” default). For non-default streams, pass `collection` on the method call.\n\n```typescript\nconst ax = new Activix({\n  mongoUri: process.env.MONGO_URI!,\n  collections: [\n    { name: 'workflow-runs' },\n    { name: 'import-jobs' },\n  ],\n  defaultCollection: 'workflow-runs',\n});\n\nawait ax.startRecord({ step: 1 }); // uses workflow-runs\nawait ax.startRecord({ file: 'a.csv' }, { collection: 'import-jobs' });\n```\n\nCollection names always come from **your application code** (`collection` or `collections` in the constructor), so each app owns its own table names.\n\n## Jobs collection (job metadata)\n\nIf you want a dedicated collection for **job-level metadata** (separate from activity rows), you must **wire it in** when constructing `Activix` by adding it to the constructor’s **`collections`** array (recommended name: **`jobs`**) with **primary key `jobId`**, and set **`jobsCollection`** to that same name (or pass `{ collection: 'jobs' }` on every job helper call). Activix does not assume a default jobs collection name.\n\nThen use `startJob()` / `endJob()`:\n\n```typescript\nimport { Activix } from '@x12i/activix';\n\nconst ax = new Activix({\n  mongoUri: process.env.MONGO_URI!,\n  collections: [\n    { name: 'my-service-activities' }, // your activity stream(s)\n    { name: 'jobs', primaryKey: 'jobId' }, // job metadata\n  ],\n  defaultCollection: 'my-service-activities',\n  jobsCollection: 'jobs',\n});\n\nawait ax.init();\n\nawait ax.startJob({\n  jobId: 'job-123',\n  description: 'Import customers from CRM',\n  startedAt: Date.now(),\n  identityObject: {\n    source: {\n      sourceType: 'mongo',\n      identifier: { property: '_id', value: '66f0...' },\n      objectType: 'customer',\n    },\n  },\n  // optional correlation envelope (stored under the collection’s configured `runContextField`)\n  runContext: { sessionId: '...', jobId: 'job-123' },\n});\n\nawait ax.endJob({ jobId: 'job-123', endedAt: Date.now() });\n```\n\nFetch job metadata or list/search recent jobs:\n\n```typescript\nconst job = await ax.getJob('job-123'); // ActivixJobRecord | null\nconst jobs = await ax.listJobs({ limit: 50, searchText: 'customers' });\n```\n\nFetch job metadata + all activity rows for that job (across every configured activity collection):\n\n```typescript\nconst bundle = await ax.getJobBundle({ jobId: 'job-123' });\n// bundle.job uses constructor jobsCollection (or pass { jobsCollection: 'jobs' } here)\n// bundle.activities -> activity rows matched by runContext.jobId across all collections\n```\n\nTypes exported by this package:\n\n- `ActivixJobRecord` — `{ jobId, description, startedAt, endedAt?, status: 'in-progress' | 'ended', identityObject, runContext? }`\n- `ActivixJobStatus`\n\n## Collection legend / registry (`activix-collections`)\n\nWhen Activix **creates** the store (you do not pass a custom `store`), it registers **`activix-collections`** automatically if it is not already in your **`collections`** list (**primary key `collectionName`**). After **`await init()`**, it inserts **one legend document per configured collection** (including the registry collection itself) when a row is missing. Rows use **`diagnostics.owner`** (recommended: npm package id) or **`collectionRegistry.owner`** as the owner stamp and a short auto-generated **`about`** line (override the template via **`collectionRegistry.aboutTemplate`**; use **`{name}`** as the collection-name placeholder).\n\nSet **`collectionRegistry: false`** to disable both behaviors (used by the **`activix`** CLI). Custom **`store`** integrators must define the registry collection on the store and on Activix themselves if they want the same behavior.\n\nIf you need **rich** legend metadata (**`friendlyName`**, **`tags`**, custom **`about`**) for specific collections, list those names in **`collectionRegistry.skipAutoInsertForCollections`** and call **`initializeCollection(...)`** after **`init()`** for each — **`initializeCollection`** is insert-only and does nothing when a row already exists.\n\n```typescript\nconst ax = new Activix({\n  mongoUri: process.env.MONGO_URI!,\n  diagnostics: { owner: '@my-scope/my-service', component: 'worker' },\n  collections: [\n    { name: 'my-service-activities' },\n    { name: 'jobs', primaryKey: 'jobId' },\n  ],\n  defaultCollection: 'my-service-activities',\n  jobsCollection: 'jobs',\n  collectionRegistry: {\n    skipAutoInsertForCollections: ['jobs'],\n  },\n});\n\nawait ax.init();\n\nawait ax.initializeCollection({\n  collectionName: 'jobs',\n  friendlyName: 'Jobs',\n  tags: ['jobs'],\n  about: 'Job metadata records (one doc per jobId)',\n  owner: { package: '@my-scope/my-service', component: 'worker' },\n});\n```\n\nUse `tags` to control whether callers query **ALL** activity collections or just a subset:\n\n- **ALL (activities)**: tag every activity stream with `activities`, then use `listActivityCollections()` (this returns *only* legends tagged `activities`).\n- **Tag subsets**: add tags like `['activities','ai','gateway']` and filter by tags (still always constrained to `activities`).\n\nExample (Activities UI selects only activity streams, optionally narrowed):\n\n```typescript\nconst activityCollections = await ax.listActivityCollections();\n// Narrow to AI gateway activity streams only:\nconst gatewayCollections = await ax.listActivityCollections({ tags: ['gateway'] });\n// Or search by legend text:\nconst searched = await ax.listActivityCollections({ searchText: 'gateway' });\n```\n\nFetch legend data and configured collections:\n\n```typescript\nconst configured = ax.listConfiguredCollections(); // [{ name, primaryKey }, ...]\nconst legend = await ax.getCollectionLegend('jobs');\nconst legends = await ax.listCollectionLegends({ limit: 100, searchText: 'job', tags: ['jobs'] });\n```\n\nOne-time backfill for an existing database (creates missing legend rows only):\n\n```bash\nnpm run legend:backfill\n```\n\nTypes exported by this package:\n\n- `ActivixCollectionLegendRecord`\n- `ActivixCollectionLegendOwner`\n- `ActivixCollectionTrackingState` — `'track' | 'off'`\n\n### Collection tracking state — who saves what?\n\nEach row in **`activix-collections`** describes one MongoDB collection (name, owner, `about`, …) and may include **`state`**, which controls whether Activix **persists activity rows** for that collection.\n\n```\nIntegrator package                    Activix                         MongoDB\n─────────────────                    ───────                         ───────\nstartRecord / completeRecord /  →    reads legend.state (cached)  →  insert/update\nfailRecord / patchRecord / …         track → write                   (or skip when off)\n                                     off   → skip write, same API\n```\n\n#### Rule for integrator packages\n\n**Always call Activix** on every operation (`startRecord`, `completeRecord`, `failRecord`, `patchRecord`, `markInProgress`, `startJob`, `endJob`, …). **Do not** read `state` or branch in application code — let Activix decide whether the row reaches Mongo. When `state` is **`off`**, the same methods still run and return the same result shapes; only storage is skipped (in-memory for the current process).\n\n#### Legend `state` values\n\n| Value | Meaning |\n|-------|---------|\n| **`track`** (default) | Activix persists activity rows for that collection |\n| **`off`** | Activix skips database writes for that collection |\n\nNew legend rows get **`state: 'track'`** on insert when Activix creates them. **Legacy rows without `state`** in Mongo are treated as **`track`** (same as missing/`null`/unknown values).\n\n#### How Activix reads `state` (cache + TTL)\n\nBefore each write, Activix resolves the collection's legend **`state`**. Results are **cached per collection** so Activix does not query **`activix-collections`** on every `startRecord`. The cache is refreshed when:\n\n| Trigger | When it applies |\n|---------|-----------------|\n| **TTL expiry** | Default **600 s** since the last read for that collection |\n| **`setCollectionTrackingState()`** | Immediately after a programmatic toggle (updates DB + cache) |\n| **`refreshCollectionTrackingStates()`** | When you call it after an **external** change (Mongo UI, another service) |\n\nTTL resolution (first match wins):\n\n1. **`collectionTrackingStateRefreshIntervalSec`** — Activix constructor option (seconds)\n2. **`ACTIVIX_COLLECTION_TRACKING_STATE_TTL_SEC`** — environment (seconds)\n3. **`600`**\n\nSet TTL to **`0`** to re-read legend `state` on every write (no cache). Helper: `resolveActivixCollectionTrackingStateTtlSec()`.\n\n#### Changing `state`\n\n**Programmatic (recommended for ops / studio):**\n\n```typescript\nawait ax.setCollectionTrackingState('ai-activities', 'off');\n// Integrators keep calling startRecord / completeRecord — nothing is written to Mongo\nawait ax.setCollectionTrackingState('ai-activities', 'track');\n```\n\n**At registration** (insert-only; ignored if the legend row already exists):\n\n```typescript\nawait ax.initializeCollection({\n  collectionName: 'my-service-activities',\n  about: 'Workflow activity stream',\n  owner: { package: '@my-scope/my-service' },\n  state: 'track',\n});\n```\n\n**External edit** (Mongo UI, migration script, another Activix instance) — tell **this** instance to re-read:\n\n```typescript\n// One collection\nconst states = await ax.refreshCollectionTrackingStates({ collection: 'ai-activities' });\n// states['ai-activities'] === 'track' | 'off'\n\n// Every configured activity collection (excludes the legend registry itself)\nconst all = await ax.refreshCollectionTrackingStates();\n```\n\nWithout `refreshCollectionTrackingStates()`, external changes take effect only after the **TTL** (default 10 minutes) or process restart.\n\n#### Component-level manager (Graphs Studio / runtime objects)\n\nFor operator UIs that toggle tracking **per runtime package** before a graph run, use **`createActivixTrackingManager(activix)`** and expose it as **`runtimeObjects.activixTrackingManager`** (see [`.docs/runtime-observability-querying.md`](.docs/runtime-observability-querying.md)).\n\n```typescript\nimport { createActivixTrackingManager, composeActivixTrackingManagers } from '@x12i/activix';\n\nconst activixTrackingManager = createActivixTrackingManager(ax);\n\nconst targets = await activixTrackingManager.listTrackingTargets();\n// componentId from legend owner.component ?? owner.package\n\nawait activixTrackingManager.setTrackingState({\n  componentId: '@exellix/graph-engine',\n  state: 'off',\n});\n```\n\nParent packages compose child managers with **`composeActivixTrackingManagers([...])`** so each package keeps ownership of its collections. Types: **`ActivixTrackingManager`**, **`ActivixTrackingTarget`**, **`PackageRuntimeObjects`** (`@x12i/activix-contracts`).\n\n## Unique indexes and nulls\n\nMongoDB unique indexes treat **`null` like any other value**. If a field (e.g. `activityId`) is indexed unique, do not persist `null` for it. Activix now generates the key before insert and writes it to both the configured primary-key field and root `activityId` so writes do not reach Mongo with `activityId: null`. **`runContext.sessionId`** is set only when you pass it (in `runContext` or as top-level `sessionId`); otherwise it is omitted. Prefer **sparse** unique indexes for optional fields, or omit the field instead of setting `null`.\n\n## Database name\n\nWhen Activix creates the store for you, the MongoDB **database** name is resolved from environment only:\n\n1. `process.env.ACTIVIX_DB_NAME`\n2. `process.env.MONGO_AI_LOGS_DB`\n3. `process.env.MONGO_LOGS_DB`\n4. `process.env.MONGO_DB`\n5. the string `activitix`\n\nYou can use the same resolution in your own code with `resolveActivixLogsDatabaseName()` (exported from this package).\n\nCollection tracking **`state`** TTL uses **`ACTIVIX_COLLECTION_TRACKING_STATE_TTL_SEC`** (default **600**). See [Collection tracking state](#collection-tracking-state--who-saves-what).\n\n### MongoDB URI for connection tests and default (automatic) `init()`\n\nFor **`testActivixMongoConnection()`** and for the **automatic** path inside **`await init()`** when you omit `mongoUri`, the URI is resolved by **`resolveActivixMongoUriFromEnv()`**:\n\n1. `process.env.MONGO_LOGS_URI`  \n2. then `process.env.MONGO_URI`\n\nThere is no silent fallback to a default URI: if both are unset and you do not pass `mongoUri`, the health check returns **`{ ok: false, reason: '…' }`** and **automatic** / default **`init()`** falls back to **local playground** storage.\n\n## MongoDB connection check (single attempt)\n\nUse **`testActivixMongoConnection(options?)`** to verify connectivity **once** (no retry loop): open a client, **`ping`** the target database, close. Returns:\n\n- **`{ ok: true }`** if the ping succeeds  \n- **`{ ok: false, reason: string }`** if the URI is missing, the driver fails to load, or connect/ping throws  \n\nOptions (all optional):\n\n| Option | Role |\n|--------|------|\n| `mongoUri` | Connection string; else env via `resolveActivixMongoUriFromEnv()` |\n| `mongoDb` | Database name for `ping`; else `resolveActivixLogsDatabaseName()` |\n| `serverSelectionTimeoutMS` | Server selection / connect timeout for that single attempt (default **5000**) |\n\nThis package depends on the **`mongodb`** driver for this probe (also used indirectly by the xronox stack).\n\n```typescript\nimport {\n  testActivixMongoConnection,\n  resolveActivixMongoUriFromEnv,\n  resolveActivixLogsDatabaseName,\n} from '@x12i/activix';\n\nconst check = await testActivixMongoConnection({\n  mongoUri: process.env.MONGO_URI,\n  mongoDb: resolveActivixLogsDatabaseName(),\n});\n\nif (!check.ok) {\n  console.error('MongoDB not usable:', check.reason);\n}\n```\n\n## Activity persistence verification (no `mongodb` import in your app)\n\nFor smoke tests, CI, and operators, use Activix-owned helpers so gateway and application repos do not depend on the **`mongodb`** driver directly. Resolution matches Activix for URI via **`resolveActivixMongoUriFromEnv()`** and database via **`resolveActivixLogsDatabaseName()`**. **`resolveActivixPersistenceTarget`** and the snapshot helpers require a **`collection`** string in options (package-owned name in code). **`resolveActivixActivitiesCollectionName()`** is for CLI/smoke scripts only: it reads **`ACTIVIX_COLLECTION`** or **`MONGO_LOGS_COLLECTION`** and **throws** if neither is set (no default name).\n\nTo trace **live writes** through Activix → xronox-store → xronox, enable diagnostics **per layer** (separate env vars); see [Diagnostic logging down the stack](#diagnostic-logging-down-the-stack) and [`.docs/logging-stack.md`](./.docs/logging-stack.md).\n\n**API** (read-only; opens a short-lived client per call):\n\n| Export | Role |\n|--------|------|\n| **`countActivixActivitiesInMongo(options)`** | Document count ( **`options.collection`** required ) |\n| **`getActivixLatestActivitySummariesInMongo(limit, options)`** | Latest **`limit`** rows by **`startTime`** descending |\n| **`getActivixActivityPersistenceSnapshotInMongo(limit, options)`** | **`{ count, latest }`** in one connection |\n| **`summarizeActivixActivityForDiagnostics(doc, options?)`** | Pure helper: same summary shape from any in-memory / exported document |\n| **`resolveActivixPersistenceTarget(options)`** | Resolved URI, DB name, **`collection`**, and field names (**`collection`** required) |\n\nBy default, counts and queries **exclude** tombstoned rows (**`purgedAt`** non-null), consistent with typical Activix visibility. Pass **`{ purgeAtField: false }`** to include them.\n\nEach summary includes **`activityId`**, **`runContext.jobId`** when present, **`status`**, **`provider`**, **`model`** (prefers **`metadata.modelUsed`** → **`metadata.model`** → **`config.model`** → **`outer.metadata.model`**), **`maxTokens`**, token usage flags, **`costUsd`**, **`hasResponse`**, **`startTime`**, **`endTime`**. Override field names with the same options Activix uses (**`runContextField`**, **`primaryKeyField`**) if your collection config differs from defaults. Legacy rows with nested **`structure.outer`** are still summarized when **`outer`** is absent at the root.\n\nFor studio-oriented exports, use **`buildActivityTraceBlock`** / directory export (below) — same resolution rules, stable **`trace.observability`** shape.\n\n```typescript\nimport { getActivixActivityPersistenceSnapshotInMongo } from '@x12i/activix';\n\nconst { count, latest } = await getActivixActivityPersistenceSnapshotInMongo(5, {\n  collection: 'my-package-activities',\n});\nconsole.log({ count, latest });\n```\n\n**CLI** (after `npm install`; binary **`activix`**):\n\n```bash\nnpx activix verify --collection my-activities\nnpx activix verify --limit 10 --json --collection my-activities\n# Or set ACTIVIX_COLLECTION or MONGO_LOGS_COLLECTION instead of --collection\nnpx activix verify --mongo-uri \"$MONGO_URI\" --include-tombstoned --collection my-activities\n```\n\n## Directory export (studio / support bundles)\n\nWrite JSON snapshots under a folder (playground-style layout):\n\n```typescript\nconst { targetDir, totalRecords, byCollection } = await ax.exportAllRecordsToDirectory('./export-out');\n\n// Optional: only recent rows\nawait ax.exportRecordsWithinKeepLastHoursToDirectory('./export-recent', 24);\n```\n\nLayout:\n\n- **`export-manifest.json`** — counts, `exportedAt`, optional `keepLastHours`\n- **`collections/<collectionName>/records/<activityId>.json`** — one file per row\n\nBy default each file includes the **persisted document** plus a normalized **`trace`** block for reporting (does not change Mongo):\n\n```json\n{\n  \"activityId\": \"act-node-abc\",\n  \"runContext\": { \"jobId\": \"job-1\", \"graphId\": \"g1\", \"nodeId\": \"node-a\" },\n  \"outer\": { \"input\": {}, \"output\": {}, \"metadata\": { \"type\": \"task\" } },\n  \"trace\": {\n    \"activixCollection\": \"graph-engine-activities\",\n    \"activityKind\": \"node:start\",\n    \"activityType\": \"task\",\n    \"correlation\": { \"sessionId\": \"job-1\", \"jobId\": \"job-1\", \"graphId\": \"g1\", \"nodeId\": \"node-a\" },\n    \"join\": { \"activityId\": \"act-node-abc\" },\n    \"observability\": { \"modelUsed\": \"openai/gpt-4o\", \"synthesisEnabled\": false }\n  }\n}\n```\n\n- **`traceShape: false`** — raw rows only (no `trace` block)\n- **`mergeCache`**, **`includeHidden`** — same as **`findRecords`**\n\nSpec: [`.docs/activity-trace-schema.md`](./.docs/activity-trace-schema.md). CLI: `npx activix export …` (see `npx activix --help`).\n\n## Storage modes\n\nHow to set **`storageMode`** (all optional except you must pick a valid combination with **`store`**):\n\n| Value | When to use |\n|-------|-------------|\n| *(omit)* | **Context-aware default (v9+):** URI present (option or env) → **`database`**; no URI → **`local`** playground. No silent fallback when Mongo is configured but down. |\n| **`'automatic'`** | **Explicit dev/CI opt-in.** On **`await init()`**, run **`testActivixMongoConnection()`** once; Mongo reachable → **`XronoxStore`**; else → playground (**`'local'`**). **`storageBackend`** is **`'pending'`** until **`init()`** finishes. |\n| **`'database'`** | **Always MongoDB** — no probe; construct **`XronoxStore`** immediately. Same as omitting mode when a URI is available. |\n| **`'local'`** | **Always playground** folder — no MongoDB (see **`playground`** options). |\n\n**Custom `store`:** **`storageMode`** is ignored for picking the implementation; Activix uses your store. **`storageBackend`** is **`'local'`** for **`ActivixPlaygroundStore`** / **`ActivixMemoryStore`**, otherwise **`'database'`**. Do not pass **`storageMode: 'local'`** together with a custom **`store`**.\n\n| `storageBackend` | Meaning |\n|------------------|---------|\n| **`'pending'`** | Automatic mode, **`init()`** not completed yet. |\n| **`'database'`** | MongoDB (`XronoxStore` or compatible custom store). |\n| **`'local'`** | Playground folder or in-memory custom store. |\n\n### `Activix.create()` (construct + `init`)\n\n```typescript\nimport { Activix } from '@x12i/activix';\n\n// Same as: const ax = new Activix({ ... }); await ax.init(); return ax;\nconst ax = await Activix.create({\n  mongoUri: process.env.MONGO_URI,\n  collection: 'my-service-activities',\n  logger: console,\n  playground: { outputDir: 'playground', runId: 'my-run-id' },\n});\n// ax.storageBackend === 'database' or 'local' (never 'pending' here)\n```\n\n### Explicit `storageMode` examples\n\n```typescript\n// Dev / CI: probe once on init, fall back to playground when Mongo is down\nnew Activix({ storageMode: 'automatic', collection: 'activities', mongoUri: process.env.MONGO_URI });\n\n// Production: omit storageMode when mongoUri (or env URI) is set — same as database\nnew Activix({ collection: 'activities', mongoUri: process.env.MONGO_URI! });\n\n// Mongo only (explicit)\nnew Activix({ storageMode: 'database', collection: 'activities', mongoUri: process.env.MONGO_URI! });\n\n// Playground only\nnew Activix({ storageMode: 'local', collection: 'activities', playground: { outputDir: 'playground' } });\n```\n\n### Repeated Mongo init logs across packages\n\nInitialization is per **Activix instance**. In **`storageMode: 'automatic'`**, each instance performs:\n\n1. one Mongo connectivity probe (`testActivixMongoConnection`)\n2. one real store initialization (`store.init`)\n\nIf your architecture creates multiple Activix instances (for example different packages or workers), repeated probe/init logs are expected and do not mean one instance is double-initializing. Treat this as an optimization concern only when instance creation frequency becomes expensive or side effects appear.\n\nYou can pass optional diagnostics metadata to make logs self-identifying:\n\n```ts\nnew Activix({\n  collection: 'activities',\n  mongoUri: process.env.MONGO_URI,\n  diagnostics: {\n    owner: '@woroces/worox-graph',\n    component: 'ai-tasks-client',\n    instanceLabel: 'graph-executor',\n    workerId: process.pid.toString(),\n  },\n});\n```\n\n### Troubleshooting repeated init logs\n\n1. Enable Activix and store diagnostics (`ENABLE_ACTIVIX_LOGXER=true`, `ACTIVIX_LOGS_LEVEL=debug`, `XRONOX_STORE_LOG=1`).\n2. Group logs by `activixInstanceId`.\n3. Verify each instance shows one `activix.init.mongo_probe.start` + one `activix.init.store_init.start`.\n4. If repeated logs share the same `activixInstanceId` with rising `initCallCount`, inspect caller lifecycle.\n5. If repeated logs have different `activixInstanceId` values, behavior is expected for multi-instance architecture.\n\n### Local playground layout\n\nWith **`storageMode: 'local'`** (or after automatic fallback), Activix uses **`ActivixPlaygroundStore`** under **`playground.outputDir`** (default **`\"playground\"`**). Optional **`playground.runId`** appears in the Markdown header.\n\nTypical artifacts:\n\n- **`report.md`** — human-readable activity timeline (also written on **`close()`**)  \n- **`activities.jsonl`** — one JSON line per persisted mutation  \n- **`collections/<name>/records/<pk>.json`** — snapshot per primary key  \n- **`meta.json`** — metadata including dispatch sequence for numbered sidecars  \n- **`NN-<activityKey>-request.json` / `-response.json`** — when rows carry playground work shapes (`work:request` / `fullRequest`, `work:response` / `fullOutput`, etc.)\n\nHelpers on **`Activix`** when using built-in playground storage:\n\n- **`getPlaygroundStore()`** — `ActivixPlaygroundStore | null`  \n- **`getPlaygroundMarkdown()`** — current timeline as Markdown, or `null`  \n- **`writePlaygroundReport(targetPath?)`** — write **`report.md`** (default: under the playground root); returns absolute path or `null`  \n\nFor in-memory-only testing without the filesystem, you can still construct a custom **`ActivixMemoryStore`** and pass **`store`** (see [Pre-built store](#pre-built-store)).\n\n## Pre-built store\n\nIf you already have a `XronoxStore`, pass `store` (and usually `skipStoreInit: true` if it is already initialized). **Use the same `primaryKey` / `primaryKeyPrefix` in both the store’s `collections` and Activix’s `collection` / `collections` config** so inserts and reads agree.\n\nFor soft-purge behavior to match Activix, each store collection must set **`visibility`** with **`field`** equal to Activix’s **`purgeAtField`** (default **`purgedAt`**) and the same mode (default **`hiddenIfNonNull`**). Otherwise Activix will still write the purge timestamp, but **`getRecord` / `findRecords`** will not hide those rows unless the store applies visibility.\n\n## Documentation\n\n| Topic | Doc |\n|-------|-----|\n| **I/O tiers (`outer` / `inner`, metadata vs config)** | [`.docs/activity-structure.md`](./.docs/activity-structure.md) |\n| **Studio export, `trace` block, graph ↔ ai-tasks joins** | [`.docs/activity-trace-schema.md`](./.docs/activity-trace-schema.md) |\n| **`runContext` layers, `masterSkillActivityId`, graphs** | [`.docs/run-context-object.md`](./.docs/run-context-object.md) |\n| **`sessionId` ownership** | [`.docs/session-id-usage.md`](./.docs/session-id-usage.md) |\n| **Debug / `getJobActivities`** | [`.docs/runtime-observability-querying.md`](./.docs/runtime-observability-querying.md) |\n| **Contributor / CI** | [`.docs/README.md`](./.docs/README.md) |\n| **Full specification** | [`.docs/activix.spec.md`](./.docs/activix.spec.md) |\n| **Monorepo consumers (Activix 8 + Optimixer 2)** | [../../.docs/MIGRATION-CONSUMERS.md](../../.docs/MIGRATION-CONSUMERS.md) |\n| **Optimixer (runtime optimization)** | [../optimixer/README.md](../optimixer/README.md) |\n\n## Scripts\n\n- `npm run build` — ESM + CJS outputs  \n- `npm test` — main lifecycle integration tests (MongoDB + `.env`)  \n- `npm run test:single` — single-`collection` constructor mode  \n- `npm run test:options` — database name resolution and constructor validation (no MongoDB)  \n- `npm run test:local` — playground **`storageMode: 'local'`** (temp dir; no MongoDB)  \n- `npm run test:patch` / `test:stale` / `test:gaps` / `test:spy` / `test:purge` — focused integration suites  \n- `npm run test:all` — everything above  \n\nTests compile to **`.tests-out/`** as ESM and import **`dist/index.js`**. See [`.docs/build-and-test.md`](./.docs/build-and-test.md).\n\n## CI\n\nAfter this tree is the Git repo root, GitHub Actions runs [`.github/workflows/ci.yml`](./.github/workflows/ci.yml) (build; enable integration tests when `NODE_AUTH_TOKEN`, Mongo secrets, and a DB are configured).\n\n## License\n\nAthenix License\n","readmeFilename":"README.md"}