feat(runtime): hybrid script reflex + Ink TUI + Pi-on-demand escalation (#4)
* fix(mindcraft-skills): hard timeout on every skill call mc_avoid_enemies (and 7 other tools) wrapped only in safeCall without a withTimeout. When mindcraft's underlying pathfinder/pvp goal couldn't be satisfied, the call never resolved — the Pi tick loop blocked forever. Observed live: mc_avoid_enemies pending >10 minutes after one mc_observe. safeCall now takes timeoutMs (default 30s) and wraps withTimeout itself, so every tool gets a hard ceiling. Per-tool overrides: - goToPosition / goToNearestBlock: 120s / 90s (unchanged from before) - defendSelf / avoidEnemies: 45s - stay: secs*1000 + 10s - craft / consume / pickup / place: 30s - equip: 15s collectBlock still uses its bespoke per-iter 75s loop. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> * feat(runtime): script-driven reflex daemon + Ink TUI dashboard Pure-Pi runtime had three failure modes in practice: - slow: 20-60s per decision because LLM was in the hot path - expensive: every tick (defend, eat, idle) paid for a reasoning pass - invisible: required tmux capture-pane to know what the bot was doing New runtime/ layer is a long-running Node daemon that owns the MC connection, ticks a priority-ordered reflex chain (defend > eat > sleep > idle) with NO LLM in the hot path, and exposes status + commands over a Unix-socket IPC. tui/ is an Ink dashboard that attaches over IPC and can detach freely — multiple TUI clients can connect at once. Pi/Codex are still available, but as on-demand escalation: TUI hotkey 'a' spawns `pi -p "<prompt>"` as a subprocess and streams stdout into the dashboard. The self-improvement loop (proposals → operator approval → Pi-driven patch → hot reload) is documented in docs/runtime.md but not yet wired. Reflex bodies are stubs today — they log decisions but don't drive Mineflayer actions yet. The priority chain, IPC contract, and TUI are fully working; subsequent commits will fill in defend/eat/sleep bodies and wire automatic escalation. Run with `npm run bot` + `npm run tui`. Pi-only fallback stays at `npm run agent`. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Yuriy Mayatnikov <mayatnikov@me.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit was merged in pull request #4.
This commit is contained in:
+11
-2
@@ -10,10 +10,14 @@
|
||||
},
|
||||
"scripts": {
|
||||
"agent": "pi",
|
||||
"agent:resume": "pi -c"
|
||||
"agent:resume": "pi -c",
|
||||
"bot": "node runtime/bot.js",
|
||||
"tui": "tsx tui/tui.tsx"
|
||||
},
|
||||
"dependencies": {
|
||||
"dotenv": "^16.4.5",
|
||||
"ink": "^7.0.4",
|
||||
"ink-text-input": "^6.0.0",
|
||||
"minecraft-data": "^3.110.2",
|
||||
"mineflayer": "^4.37.1",
|
||||
"mineflayer-armor-manager": "^2.0.1",
|
||||
@@ -23,6 +27,7 @@
|
||||
"mineflayer-pvp": "^1.3.2",
|
||||
"mineflayer-tool": "^1.2.0",
|
||||
"prismarine-item": "^1.18.0",
|
||||
"react": "^19.2.6",
|
||||
"vec3": "^0.2.0"
|
||||
},
|
||||
"repository": {
|
||||
@@ -32,5 +37,9 @@
|
||||
"bugs": {
|
||||
"url": "https://github.com/xmatic-squad/pepa-pi-bot/issues"
|
||||
},
|
||||
"homepage": "https://github.com/xmatic-squad/pepa-pi-bot#readme"
|
||||
"homepage": "https://github.com/xmatic-squad/pepa-pi-bot#readme",
|
||||
"devDependencies": {
|
||||
"@types/react": "^19.2.15",
|
||||
"tsx": "^4.22.3"
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user