Phase 7 of plans/autonomous-survival-bot-prd.md. Five small modules
that close the recurring "shared state" and "version-pinned list"
failure modes the PRD flags in §7 and §5.4.
New:
- runtime/movement-profiles.js: named profiles (GATHER, TRAVEL, FLEE,
BUILD, RETURN_TO_BASE) as pure descriptors via PROFILE_DEFAULTS,
plus applyProfile(profile, bot) that hands a fresh Movements to
pathfinder. Avoids the "flee left canDig=false on the shared
Movements, next chop got stuck in canopy" regression.
- runtime/owned-blocks.js: JSONL ledger of blocks this bot placed/
removed (state/<host>/owned-blocks.jsonl); isOwned({x,y,z}) for
O(1) lookups; ensureDir() makes the parent dir lazily.
- runtime/claim-avoidance.js: classifyArea({blocks, isOwned}) returns
player_build / natural_or_owned / insufficient_data based on
man-made block density vs ownership ratio; shouldAvoid(area) helper.
Designed for gather/place skills to call before touching contested
area.
- runtime/skills/compat.test.js: runs runtime/skills/groups.js against
real minecraft-data registries for 1.18.2, 1.20.4, 1.21.5; spot-
checks that pale_oak_log only appears on 1.21+ etc.
- runtime/compat.test.js: 10 tests covering movement descriptors,
isManMadeBlockName, classifyArea, owned-blocks markPlaced/dedup/
isOwned/markRemoved.
npm test now 79/79.
Co-authored-by: Yuriy Mayatnikov <mayatnikov@me.com>
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
50 lines
1.5 KiB
JSON
50 lines
1.5 KiB
JSON
{
|
|
"name": "pepa-pi-bot",
|
|
"version": "0.0.1",
|
|
"private": true,
|
|
"description": "An autonomous, self-extending Minecraft player powered by Pi and Mineflayer.",
|
|
"license": "MIT",
|
|
"type": "module",
|
|
"engines": {
|
|
"node": ">=20"
|
|
},
|
|
"scripts": {
|
|
"agent": "pi",
|
|
"agent:resume": "pi -c",
|
|
"bot": "node runtime/supervisor.js",
|
|
"bot:bare": "node runtime/bot.js",
|
|
"tui": "tsx tui/tui.tsx",
|
|
"propose:apply": "node scripts/propose-apply.js",
|
|
"stop": "bash scripts/stop.sh",
|
|
"test": "node --test runtime/skills/contract.test.js runtime/skills/groups.test.js runtime/skills/compat.test.js runtime/curriculum.test.js runtime/social/social.test.js runtime/stuck-incident.test.js runtime/compat.test.js"
|
|
},
|
|
"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",
|
|
"mineflayer-auto-eat": "^5.0.3",
|
|
"mineflayer-collectblock": "^1.6.0",
|
|
"mineflayer-pathfinder": "^2.4.5",
|
|
"mineflayer-pvp": "^1.3.2",
|
|
"mineflayer-tool": "^1.2.0",
|
|
"prismarine-item": "^1.18.0",
|
|
"react": "^19.2.6",
|
|
"vec3": "^0.2.0"
|
|
},
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/xmatic-squad/pepa-pi-bot.git"
|
|
},
|
|
"bugs": {
|
|
"url": "https://github.com/xmatic-squad/pepa-pi-bot/issues"
|
|
},
|
|
"homepage": "https://github.com/xmatic-squad/pepa-pi-bot#readme",
|
|
"devDependencies": {
|
|
"@types/react": "^19.2.15",
|
|
"tsx": "^4.22.3"
|
|
}
|
|
}
|