pre codex

This commit is contained in:
2026-05-25 12:51:14 +03:00
parent 6ed45a00d5
commit b778eaa2fb
8 changed files with 1164 additions and 68 deletions
+4
View File
@@ -37,6 +37,10 @@ TICK_INTERVAL_SECONDS=60
# trigger around 20/min.
CHAT_RATE_LIMIT_PER_MIN=15
# Guarded travel refuses coordinate requests farther than this many blocks from
# the bot's current position.
MAX_TRAVEL_BLOCKS=500
# --- Trusted operators (optional) ---------------------------------------------
# Comma-separated MC nicknames whose chat messages the bot treats as trusted:
# scope checks are relaxed (the bot will *try* to do new things instead of
+2 -2
View File
@@ -158,9 +158,9 @@ These are mirrored in `AGENTS.md` and re-stated at the top of any system prompt
🌳 **Phase 0 — Body** done. Bridge online, AuthMe handled, `hello` sent. See `skills/server-onboarding.md`.
🌳 **Phase 1 — Presence** implemented and operator trust wired: the bridge stays online with bounded reconnects, keeps a rolling chat buffer, exposes status/recent-chat/operator/escalation tools, applies `OPERATOR_USERNAMES` as scope-only trust, and can prompt the Pi loop to reply sparingly. Phase 5 self-extension is documented and in progress; Phase 6 escalation logging is implemented.
🌳 **Phase 1 — Presence** implemented and operator trust wired: the bridge stays online with bounded reconnects, keeps a rolling chat buffer, exposes status/recent-chat/operator/escalation tools, applies `OPERATOR_USERNAMES` as scope-only trust, and can prompt the Pi loop to reply sparingly.
🌿 **Phase 2 — Locomotion with guard rails** in progress (operator task: build a 5×5 pyramid; `mineflayer-pathfinder` installed).
🌿 **Phase 2 — Locomotion/build rails** in progress: `mineflayer-pathfinder` is wired with guarded `mc_goto`, plus `mc_build_pyramid_5x5` for the operator-approved empty-site pyramid task. Dynamic following is still pending. Phase 5 self-extension is documented and in progress; Phase 6 escalation logging is implemented.
🌱 **Phase 3 — Goal-driven autonomy** seeded: [`docs/memory-model.md`](./docs/memory-model.md) defines shared-knowledge vs personal-memory; per-server `goal.md` / `plan.md` / `current-task.json` / `diary/` shape autonomous behaviour. Kickoff via [`prompts/live-your-life.md`](./prompts/live-your-life.md).
+2 -2
View File
@@ -21,9 +21,9 @@ The bot is **on the server, all the time** (except for a clean human-issued disc
Stretch: short-term chat memory (last N lines) so it can reference what was just said.
## Phase 2 — Locomotion with guard rails 🌱
## Phase 2 — Locomotion with guard rails 🌿
The bot can be **summoned** by chat: "come to 100 64 -200", "follow me", "go to spawn". With three hard rails:
The bot can be **summoned** by trusted/sanctioned coordinate requests via `mc_goto`; dynamic follow is still pending. Goal: "come to 100 64 -200", "follow me", "go to spawn" with three hard rails:
- **Distance bound.** Refuse trips longer than `MAX_TRAVEL_BLOCKS` (e.g. 500 blocks straight-line) from current position. Politely explain why.
- **Focus.** While moving toward a target, ignore competing summons. Reply once with "currently on my way to X, will be free in ~N seconds." Don't context-switch mid-trip.
File diff suppressed because it is too large Load Diff
+17 -1
View File
@@ -10,7 +10,8 @@
"license": "MIT",
"dependencies": {
"dotenv": "^16.4.5",
"mineflayer": "^4.37.1"
"mineflayer": "^4.37.1",
"mineflayer-pathfinder": "^2.4.5"
},
"engines": {
"node": ">=20"
@@ -464,6 +465,21 @@
"node": ">=22"
}
},
"node_modules/mineflayer-pathfinder": {
"version": "2.4.5",
"resolved": "https://registry.npmjs.org/mineflayer-pathfinder/-/mineflayer-pathfinder-2.4.5.tgz",
"integrity": "sha512-Jh3JnUgRLwhMh2Dugo4SPza68C41y+NPP5sdsgxRu35ydndo70i1JJGxauVWbXrpNwIxYNztUw78aFyb7icw8g==",
"license": "MIT",
"dependencies": {
"minecraft-data": "^3.5.1",
"prismarine-block": "^1.16.3",
"prismarine-entity": "^2.1.1",
"prismarine-item": "^1.11.5",
"prismarine-nbt": "^2.2.1",
"prismarine-physics": "^1.5.2",
"vec3": "^0.1.7"
}
},
"node_modules/mojangson": {
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/mojangson/-/mojangson-2.0.4.tgz",
+2 -1
View File
@@ -14,7 +14,8 @@
},
"dependencies": {
"dotenv": "^16.4.5",
"mineflayer": "^4.37.1"
"mineflayer": "^4.37.1",
"mineflayer-pathfinder": "^2.4.5"
},
"repository": {
"type": "git",
+31 -17
View File
@@ -1,27 +1,41 @@
---
name: phase-2-locomotion-pending
description: "Pending skill stub for future safe movement/follow/coordinate requests. Use to remember that locomotion is intentionally out of scope during phase 1 and must be escalated."
when_to_use: "Use when someone asks the bot to come somewhere, follow a player, or go to coordinates before phase 2 is implemented."
name: phase-2-locomotion
description: "Use guarded Mineflayer pathfinder movement for trusted/sanctioned coordinate requests, with distance, focus, and hazard rails."
when_to_use: "Use when a scope-trusted operator or repo-sanctioned skill asks the bot to come somewhere, follow a safe coordinate instruction, or go to coordinates."
---
# Phase 2 Locomotion Pending
# Phase 2 Locomotion
Status: pending.
Status: implemented pending bridge reload.
Locomotion is intentionally out of scope for the current session. Do not add movement/pathfinder tools yet.
The bridge now registers `mc_goto` using `mineflayer-pathfinder`.
For now, if non-operator chat asks the bot to move, follow, or go to coordinates:
## Rails
1. Use `mc_log_escalation(...)`.
2. Explain in `why_unsure` that safe pathing/distance bounds are not implemented yet.
3. Do not move.
- Refuses targets farther than `MAX_TRAVEL_BLOCKS` from current position (default `500`).
- Keeps one active world-task lock; do not context-switch while walking/building.
- Uses safe movements:
- no digging;
- no scaffold placement;
- no 1x1 towers;
- no parkour;
- max drop-down of 2;
- avoids water/lava/fire/magma/cactus/campfire/berry/powder-snow/cobweb hazards.
- Refuses if health or food is critically low.
- Supports `dry_run` for path preview.
If a scope-trusted operator asks, do not log a scope escalation. Reply that you will try to learn, then draft or update the guarded locomotion skill plan. Do not actually move until safe pathing tools and rails exist.
## Use
Future phase-2 implementation should include:
For a scope-trusted operator request such as `go to 100 64 -200`:
- `mineflayer-pathfinder` with safe goals;
- max travel distance bounds;
- focus/lock while traveling;
- lava/void/claim avoidance;
- clear refusal messages when travel is unsafe.
1. Confirm it is not a hard-safety issue.
2. Check no active world task is running (`mc_status`).
3. Call `mc_goto({ x, y, z, range })`.
4. If it fails, report the blocker in chat instead of forcing movement.
For non-operator requests, chat remains dialog-only unless a repo skill explicitly sanctions movement.
## Not implemented yet
- Dynamic following of a moving player.
- Claim-plugin awareness beyond refusing protected-looking build sites in small-build tools.
+29 -33
View File
@@ -1,54 +1,50 @@
---
name: safe-small-builds-pending
description: "Pending skill plan for operator-approved small block placement tasks such as a 5x5 pyramid on an explicitly safe empty site."
when_to_use: "Use when a scope-trusted operator asks the bot to build a small structure before safe pathing and block-placement tools exist."
name: safe-small-builds
description: "Use guarded block-placement tools for scope-trusted small builds, especially a 5x5 pyramid on an explicitly safe empty site."
when_to_use: "Use when a scope-trusted operator asks the bot to build a small structure such as a 5x5 pyramid."
---
# Safe Small Builds Pending
# Safe Small Builds
Status: pending.
Status: implemented pending bridge reload.
Observed request: a scope-trusted operator asked for a 5x5 pyramid at `x=587.070 y=67.0 z=235.891` on an explicitly described empty island site, using any material.
The bridge now registers `mc_build_pyramid_5x5`.
## Safety decision
This is a scope-trusted operator request and is not inherently a hard-safety violation because the operator described the target as an empty safe build area. Do **not** treat this as transitive trust, OP/admin, PvP, item handoff, or griefing.
Do not build until the bot has safe locomotion and block-placement rails. If the site appears to overlap another player's build, claim, chest area, farm, or protected structure, stop and ask/log before placing blocks.
The tool still refuses to build if the inspected site appears to overlap another player's build, claim, chest area, farm, protected-looking block, hazardous block, occupied entity area, or non-air footprint.
## Required tools/extensions
## Tool behavior
- `mineflayer-pathfinder` or equivalent guarded movement with:
- max travel distance bounds;
- lava/void/fall avoidance;
- focus lock while traveling;
- cancellation/refusal if route is unsafe.
- A block-placement tool that can:
- inspect nearby blocks before placement;
- place blocks only from the bot's inventory;
- refuse protected/occupied locations;
- report missing materials instead of taking from players.
- Optional inventory snapshot skill to choose a harmless available material.
`mc_build_pyramid_5x5({ x, y, z, material?, dry_run? })`:
## 5x5 pyramid plan
For a compact three-layer pyramid centered near the requested coordinate:
1. Travel to the site and verify the 5x5 footprint is empty, flat enough, and away from player builds.
2. Pick an available non-valuable material from inventory.
3. Place bottom layer: 5x5 square.
4. Place second layer: centered 3x3 square one block above.
5. Place top layer: centered 1x1 block one block above.
6. Step back, verify shape, and report completion or the first blocking issue.
1. Rounds X/Z to the intended center and floors Y as the bottom-layer Y.
2. Requires 35 safe placeable inventory blocks.
3. Uses guarded travel to approach the site.
4. Inspects the 5x5/3x3/1 footprint and nearby radius.
5. Places:
- bottom layer: 5x5 square;
- second layer: centered 3x3 square one block above;
- top layer: centered 1x1 block.
6. Stops on the first blocker and reports it.
## Failure modes
- Requested coordinate is too far or path is unsafe.
- Footprint is not empty or looks player-owned.
- Bot lacks enough blocks (35 blocks for full 5x5/3x3/1 pyramid).
- Footprint is not empty or lacks solid support.
- Nearby blocks look player-made/protected.
- Bot lacks 35 safe placeable blocks.
- Server anti-cheat or claims plugin rejects movement/placement.
- Another player enters the build area during placement.
- Another entity enters the build area during placement.
## Current behavior
## Current requested build
Until the required tools exist, acknowledge the operator with the self-extension reflex, keep the request recorded here, and do not move or place blocks.
After the bridge reloads, the queued operator request can be attempted with:
```json
{"x":587.070,"y":67.0,"z":235.891}
```