{"_id":"@animalabs/heartbeat-mcpl","_rev":"4-fdd617e712d1ede146ffb03dbbb1306a","name":"@animalabs/heartbeat-mcpl","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.1":{"name":"@animalabs/heartbeat-mcpl","version":"0.1.1","_id":"@animalabs/heartbeat-mcpl@0.1.1","maintainers":[{"name":"antra_tessera","email":"antra@animalabs.ai"},{"name":"luxiasl","email":"mail.luxia@gmail.com"},{"name":"antra-tessera","email":"antra@tesserae.cc"},{"name":"tengro","email":"tengro@gmail.com"},{"name":"anarchid","email":"annarhiid@proton.me"}],"homepage":"https://github.com/anima-research/heartbeat-mcpl#readme","bugs":{"url":"https://github.com/anima-research/heartbeat-mcpl/issues"},"bin":{"heartbeat-mcpl":"dist/src/index.js"},"dist":{"shasum":"1e074146daf7432117ca1fe9ffa1a92c046a1b3f","tarball":"https://registry.npmjs.org/@animalabs/heartbeat-mcpl/-/heartbeat-mcpl-0.1.1.tgz","fileCount":11,"integrity":"sha512-4M/S0DSjt5gZdAw3Dj28XMSpdGYkt8+0TixKL/tTI2Se3wFW8zgakZAxHv+pv8kLZWztv/E6BS8MeoB3ECEpiA==","signatures":[{"sig":"MEYCIQCXpYilhKj8LNPOBg8LM9asWxjJLKXUiwGvPYAs312dwgIhAPrnm20RwjZPVpMr8f0ypcg6vR0zuKglFsG8NCvZZ6y7","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":83558},"main":"./dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"1931db15cef3868ca8eff1713fa301d26f6639b2","scripts":{"test":"npm run build && ../mcpl-harness/node_modules/.bin/tsx test/reminders.harness.mjs","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"antra_tessera","email":"antra@animalabs.ai"},"repository":{"url":"git+https://github.com/anima-research/heartbeat-mcpl.git","type":"git"},"_npmVersion":"10.8.2","description":"Periodic self-wake MCPL server for Connectome agents.","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@animalabs/mcpl-core":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/heartbeat-mcpl_0.1.1_1783957358326_0.5531763239277367","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@animalabs/heartbeat-mcpl","version":"0.1.2","_id":"@animalabs/heartbeat-mcpl@0.1.2","maintainers":[{"name":"antra_tessera","email":"antra@animalabs.ai"},{"name":"luxiasl","email":"mail.luxia@gmail.com"},{"name":"antra-tessera","email":"antra@tesserae.cc"},{"name":"tengro","email":"tengro@gmail.com"},{"name":"anarchid","email":"annarhiid@proton.me"}],"homepage":"https://github.com/anima-research/heartbeat-mcpl#readme","bugs":{"url":"https://github.com/anima-research/heartbeat-mcpl/issues"},"bin":{"heartbeat-mcpl":"dist/src/index.js"},"dist":{"shasum":"78ae91bacb01353def808447ab6df620f234237a","tarball":"https://registry.npmjs.org/@animalabs/heartbeat-mcpl/-/heartbeat-mcpl-0.1.2.tgz","fileCount":11,"integrity":"sha512-tvCJNkeTsA+T1qJZ3ow14quAU6B37m3UWsRtf2ru60QBJbUh33ZMCgUCQzwqzLriXLfQc/jUL4HRtQ4eKiZKmg==","signatures":[{"sig":"MEUCIEYzRWQgMPI4Ohkf0P9h5mgw0sLhp0i0fyCMkqeRJ8tiAiEAqYDfO1MUzlt1sOmbDQOx78UvrwGDwUDEtM+Mrdk3PdI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@animalabs%2fheartbeat-mcpl@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":83186},"main":"./dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"7fae36abfb32129ff9fe6a1af38bfa24c0c1ebbb","scripts":{"test":"npm run build","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58dd87ac-d3cc-43d5-8a52-e9d33942955b"}},"repository":{"url":"git+https://github.com/anima-research/heartbeat-mcpl.git","type":"git"},"_npmVersion":"11.16.0","description":"Periodic self-wake MCPL server for Connectome agents.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@animalabs/mcpl-core":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/heartbeat-mcpl_0.1.2_1783995287769_0.3780864081346922","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@animalabs/heartbeat-mcpl","version":"0.1.3","_id":"@animalabs/heartbeat-mcpl@0.1.3","maintainers":[{"name":"antra_tessera","email":"antra@animalabs.ai"},{"name":"luxiasl","email":"mail.luxia@gmail.com"},{"name":"antra-tessera","email":"antra@tesserae.cc"},{"name":"tengro","email":"tengro@gmail.com"},{"name":"anarchid","email":"annarhiid@proton.me"}],"homepage":"https://github.com/anima-research/heartbeat-mcpl#readme","bugs":{"url":"https://github.com/anima-research/heartbeat-mcpl/issues"},"bin":{"heartbeat-mcpl":"dist/src/index.js"},"dist":{"shasum":"9cad470787114a298f8e394b6e72e77224cddc29","tarball":"https://registry.npmjs.org/@animalabs/heartbeat-mcpl/-/heartbeat-mcpl-0.1.3.tgz","fileCount":16,"integrity":"sha512-n3i00jzX01WWqzcLQotnZN4t4BAavpq1/vzOUiOmK9zvrEsIT9rTTw1i/dFoZ4CNDAFvRoDkhhW6lgzyLDPiig==","signatures":[{"sig":"MEYCIQDu6W8yMBoFGc/4yKlW6zHD49/iZKmiSjIdnSH4phUyCAIhAJZ7fIUNdMneUIwwPLUJsQIjeoul2SHizbtnLEj3JL0F","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@animalabs%2fheartbeat-mcpl@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":93805},"main":"./dist/src/index.js","type":"module","types":"./dist/src/index.d.ts","engines":{"node":">=20.0.0"},"gitHead":"0b0ad185b1cac94742d5971d156d0a96d143acb5","scripts":{"test":"npm run build && node --import tsx --test test/timezone.test.ts && node --import tsx test/reminders.harness.mjs","build":"tsc","clean":"rm -rf dist"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:58dd87ac-d3cc-43d5-8a52-e9d33942955b"}},"repository":{"url":"git+https://github.com/anima-research/heartbeat-mcpl.git","type":"git"},"_npmVersion":"11.16.0","description":"Periodic self-wake MCPL server for Connectome agents.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"@animalabs/mcpl-core":"^0.2.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.7.0","typescript":"^5.5.0","@types/node":"^20.0.0"},"_npmOperationalInternal":{"tmp":"tmp/heartbeat-mcpl_0.1.3_1784005744615_0.1621653314739031","host":"s3://npm-registry-packages-npm-production"}}},"time":{"created":"2026-07-13T15:42:38.136Z","modified":"2026-08-26T22:21:58.449Z","0.1.1":"2026-07-13T15:42:38.467Z","0.1.2":"2026-07-14T02:14:47.932Z","0.1.3":"2026-07-14T05:09:04.799Z"},"bugs":{"url":"https://github.com/anima-research/heartbeat-mcpl/issues"},"homepage":"https://github.com/anima-research/heartbeat-mcpl#readme","repository":{"url":"git+https://github.com/anima-research/heartbeat-mcpl.git","type":"git"},"description":"Periodic self-wake MCPL server for Connectome agents.","maintainers":[{"email":"antra@animalabs.ai","name":"antra_tessera"},{"email":"mail.luxia@gmail.com","name":"luxiasl"},{"email":"antra@tesserae.cc","name":"antra-tessera"},{"email":"tengro@gmail.com","name":"tengro"},{"email":"annarhiid@proton.me","name":"anarchid"},{"email":"aster@tesserae.cc","name":"meganeuridae"}],"readme":"# @connectome/heartbeat-mcpl\n\nPeriodic self-wake MCPL server for Connectome agents.\n\nOn a configurable interval, sends a `push/event` (featureSet `heartbeat`,\n`origin.source: heartbeat`) to wake the agent for a self-check-in. The agent\nitself configures its own schedule via three MCP tools:\n\n- `heartbeat_status` — show current interval, paused state, time-to-next, message\n- `heartbeat_configure` — set `intervalSeconds | intervalMinutes | intervalHours`, `paused`, `message`; persists across restarts\n- `heartbeat_trigger` — fire one heartbeat now (test/debug)\n\nSchedule is persisted to `${HEARTBEAT_CONFIG_FILE:-./heartbeat-config.json}`.\n\n## Recipe wiring\n\n```jsonc\n{\n  \"mcpServers\": {\n    \"heartbeat\": {\n      \"command\": \"node\",\n      \"args\": [\"/path/to/heartbeat-mcpl/dist/src/index.js\", \"--stdio\"],\n      \"env\": { \"HEARTBEAT_CONFIG_FILE\": \"/path/to/install/data/heartbeat-config.json\" },\n      \"enabledFeatureSets\": [\"heartbeat\"]\n    }\n  },\n  \"modules\": {\n    \"wake\": {\n      \"policies\": [\n        { \"name\": \"heartbeat-wake\",\n          \"match\": { \"scope\": [\"mcpl:push-event\"], \"source\": \"heartbeat\" },\n          \"behavior\": \"always\" }\n        // ... your other policies after\n      ]\n    }\n  }\n}\n```\n\nThe wake policy MUST come before any policy that would skip `mcpl:push-event`s\n(e.g. a `discord-ambient` skip rule), since the gate is first-match-wins.\n","readmeFilename":"README.md"}