{"_id":"@4meta5/heartbeat","_rev":"2-b4178edc324b796e2d0b7cc0fe3efee1","name":"@4meta5/heartbeat","dist-tags":{"latest":"0.1.1"},"versions":{"0.1.0":{"name":"@4meta5/heartbeat","version":"0.1.0","license":"MIT","_id":"@4meta5/heartbeat@0.1.0","maintainers":[{"name":"4meta5","email":"orlandodowntownhome@gmail.com"}],"bin":{"heartbeat":"dist/cli.js"},"dist":{"shasum":"59b9c34468f97d2156e1a755f2047e3db851f63a","tarball":"https://registry.npmjs.org/@4meta5/heartbeat/-/heartbeat-0.1.0.tgz","fileCount":9,"integrity":"sha512-5cdap+p20IP0MtdtDAOFfY/DZKYn+P0MIC15Lg0/psH2GCwp/vx18dmn5SJqdyhseM0wFv7UI8yz6IFcPS3Tpw==","signatures":[{"sig":"MEQCIBnfoCdC1rOGqHUb8Y5MYDhAbcw6rgumITU5NJCB2Uj8AiBGumEV08w4ivN7WU2s2gJYFR5ZuSJ/tfTGP3Y3RyRRvw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":13189},"type":"module","gitHead":"0e67bfc52c416cff05dd846149d56793a8cb5adf","private":false,"scripts":{"dev":"npm run build && node dist/cli.js","test":"npm run build && node --test tests/**/*.test.mjs","build":"tsc -p tsconfig.json","prepublishOnly":"npm run build"},"_npmUser":{"name":"4meta5","email":"orlandodowntownhome@gmail.com"},"_npmVersion":"11.6.2","description":"Lean scheduler for Engram, Skills, and Scout with a predictable, low-noise cadence.","directories":{},"_nodeVersion":"25.2.1","_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.7.3","@types/node":"^22.10.2"},"_npmOperationalInternal":{"tmp":"tmp/heartbeat_0.1.0_1770065576268_0.8449113336289427","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@4meta5/heartbeat","version":"0.1.1","private":false,"license":"MIT","type":"module","bin":{"heartbeat":"dist/cli.js"},"scripts":{"build":"tsc -p tsconfig.json","prepublishOnly":"npm run build","test":"npm run build && node --test tests/**/*.test.mjs","dev":"npm run build && node dist/cli.js"},"devDependencies":{"@types/node":"^22.10.2","typescript":"^5.7.3"},"gitHead":"d7c7ac3841680d88d53343240eabb0a2ed7278e3","_id":"@4meta5/heartbeat@0.1.1","description":"Lean scheduler for a few predictable, low-noise tasks. It orchestrates external CLIs and stays out of their way.","_nodeVersion":"25.2.1","_npmVersion":"11.6.2","dist":{"integrity":"sha512-wXdDXwlDL/1Cj5QJm77WXP/1Lo+vqma0+NtwuMA4OEjcrxnMQ+OyCKNdBg6FEDf9s7cjHgZLTVkhL7OR8CWtgA==","shasum":"90b43ae8f141bb717a4744c72caf12c5049719bd","tarball":"https://registry.npmjs.org/@4meta5/heartbeat/-/heartbeat-0.1.1.tgz","fileCount":9,"unpackedSize":16620,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIB9z55QMklTNRITPM3RbLKnZa0Grj0nNIZGJlBBF+OF1AiAsfFMrqb7jQNDb51b1bkZVxtRyvOBYSkTEh2TVXS9ByA=="}]},"_npmUser":{"name":"4meta5","email":"orlandodowntownhome@gmail.com"},"directories":{},"maintainers":[{"name":"4meta5","email":"orlandodowntownhome@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/heartbeat_0.1.1_1770161119563_0.5790146302335775"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-02T20:52:56.195Z","modified":"2026-02-03T23:25:19.840Z","0.1.0":"2026-02-02T20:52:56.432Z","0.1.1":"2026-02-03T23:25:19.728Z"},"license":"MIT","description":"Lean scheduler for a few predictable, low-noise tasks. It orchestrates external CLIs and stays out of their way.","maintainers":[{"name":"4meta5","email":"orlandodowntownhome@gmail.com"}],"readme":"# Heartbeat\n\nLean scheduler for a few predictable, low-noise tasks. It orchestrates external CLIs and stays out of their way.\n\n## Design Principles\n\n- **Orchestration only** - Heartbeat schedules; tools run independently\n- **Lean by default** - Core config is intentionally small\n- **No complex pipelines** - Each task is self-contained\n- **Opt-in complexity** - Extended functionality via optional packs\n\n## Quick start\n\n```bash\nnpm install\nnpm run build\nnode dist/cli.js list --config configs/heartbeat.core.json\nnode dist/cli.js print-cron --config configs/heartbeat.core.json\nnode dist/cli.js run --dry-run --config configs/heartbeat.core.json\n```\n\n## Base Directory\n\nUse `baseDir` to anchor relative `cwd` and command paths.\n\n- `baseDir: \"auto\"` resolves to the config directory (same as `baseDir: \".\"`).\n- Set an explicit `baseDir` if your repos live elsewhere.\n\n## Configuration\n\n### Core Config (Recommended)\n\n`configs/heartbeat.core.json` - 3 essential tasks:\n\n| Task | Schedule | Purpose |\n|------|----------|---------|\n| `engram-ingest-engram` | Daily 18:00 | Fresh commit memory (adjust as needed) |\n| `skills-scan` | Mon 09:00 | Skill recommendations |\n| `skills-validate` | Mon 09:00 | Validate skill set |\n\nTo expand beyond the core, copy tasks from `configs/packs/engram.json` or create new tasks for your active repos.\n\n```bash\nnode dist/cli.js list --config configs/heartbeat.core.json\n```\n\n### Full Config (Legacy)\n\n`configs/heartbeat.full.json` - 20 tasks (everything, including Omni + full Scout pipeline).\n\n```bash\nnode dist/cli.js list --config configs/heartbeat.full.json\n```\n\n### Optional Packs\n\nExtended functionality by tool (in `configs/packs/`):\n\n| Pack | Tasks | Description |\n|------|-------|-------------|\n| `engram.json` | 4 | Daily ingest for multiple repos + batch ingest |\n| `skills.json` | 2 | Scan + validate |\n| `scout.json` | 1 | Simple watch (not full pipeline) |\n| `omni.json` | 4 | Builds, indexing, omni-export |\n\nPacks are reference configs for extending the core. Copy tasks as needed.\n\n### Default Config\n\n`heartbeat.config.json` is now the minimal core. Use packs to add more tasks.\n\n### Packs: Minimal Merge Example\n\nIf you want to extend the core, copy tasks from packs into a single config file.\n\nExample (`heartbeat.config.json` + `configs/packs/scout.json`):\n\n```json\n{\n  \"timezone\": \"local\",\n  \"baseDir\": \"auto\",\n  \"tasks\": [\n    {\n      \"id\": \"engram-ingest-engram\",\n      \"schedule\": { \"type\": \"daily\", \"time\": \"18:00\" },\n      \"cwd\": \"engram\",\n      \"command\": \"engram ingest-git --workspace . --days 7\"\n    },\n    {\n      \"id\": \"skills-scan\",\n      \"schedule\": { \"type\": \"weekly\", \"day\": \"mon\", \"time\": \"09:00\" },\n      \"cwd\": \"skills\",\n      \"command\": \"skills scan --all\"\n    },\n    {\n      \"id\": \"skills-validate\",\n      \"schedule\": { \"type\": \"weekly\", \"day\": \"mon\", \"time\": \"09:00\" },\n      \"cwd\": \"skills\",\n      \"command\": \"claude-skills-cli validate ~/.claude/skills --lenient\"\n    },\n    {\n      \"id\": \"scout-watch-engram\",\n      \"schedule\": { \"type\": \"weekly\", \"day\": \"fri\", \"time\": \"16:00\" },\n      \"cwd\": \".\",\n      \"command\": \"scout scan --root engram && scout discover --root engram\"\n    }\n  ]\n}\n```\n\n## Commands\n\n- `heartbeat list` - show tasks\n- `heartbeat print-cron` - emit cron lines for tasks\n- `heartbeat run` - run tasks due now\n\n## Related projects\n\n- Engram: [bobamatcha/engram](https://github.com/bobamatcha/engram)\n- Omni: [bobamatcha/omni](https://github.com/bobamatcha/omni)\n- Skills: [4meta5/skills](https://github.com/4meta5/skills)\n- Scout: [4meta5/scout](https://github.com/4meta5/scout)\n","readmeFilename":"README.md"}