* feat: add packages/dispatcher — dual-loop OGraph projection watcher + OC scheduler Adds a new Node.js daemon that: - Loop A (ProjectionWatcher): polls OGraph projections, diffs against snapshot, merges changes into a pending queue. - Idle: 30s poll interval; active (changes detected): 5s - Loop B (OcScheduler): polls OC session-status, pushes pending queue when OC has available slots (>= minAvailable). - Idle (no pending): 60s; active (pending): 5s - Cooldown of 60s after each push to avoid spam Tech: - TypeScript + esbuild (zero runtime external deps) - Graceful error handling: each poll is independent try-catch, errors logged but never crash the process - Config from ~/.config/ograph/dispatcher.json + env-var overrides - OGRAPH_CONFIG_FILE env var for config path override - Push via /tmp/ograph-dispatch.json + openclaw message send (best-effort) Build: npm run build → dist/index.js Run: node dist/index.js * fix: address PR #17 review — package name, tests, shell safety, first-run --------- Co-authored-by: 小墨 <xiaomooo@shazhou.work>
19 lines
359 B
JSON
19 lines
359 B
JSON
{
|
|
"name": "ograph",
|
|
"private": true,
|
|
"workspaces": [
|
|
"packages/engine",
|
|
"packages/cli",
|
|
"packages/dispatcher"
|
|
],
|
|
"scripts": {
|
|
"test": "npm run test --workspaces",
|
|
"lint": "eslint packages/*/src/",
|
|
"lint:fix": "eslint packages/*/src/ --fix"
|
|
},
|
|
"devDependencies": {
|
|
"eslint": "^9.0.0",
|
|
"typescript": "^6.0.2"
|
|
}
|
|
}
|