Alexander Whitestone
c05febf86f
feat: MemPalace fleet memory scaffold — taxonomy, Evennia plugin, privacy tools
...
Delivers milestone artifacts for #1075 (MemPalace × Evennia — Fleet Memory):
**#1082 — Palace taxonomy standard**
- `mempalace/rooms.yaml` — fleet-wide room vocabulary (5 core rooms: forge,
hermes, nexus, issues, experiments) with optional domain rooms and tunnel
routing table
- `mempalace/validate_rooms.py` — validates a wizard's mempalace.yaml against
the standard; exits non-zero on missing core rooms (CI-ready)
**#1077 — Evennia plugin scaffold**
- `mempalace/evennia_mempalace/` — contrib module connecting Evennia to MemPalace
- `CmdRecall` — `recall <query>` / `recall <query> --fleet` in-world commands
- `CmdEnterRoom` — teleport to semantic room by topic
- `MemPalaceRoom` — typeclass whose description auto-populates from palace search
- `searcher.py` — thin subprocess wrapper around the mempalace binary
- `settings.py` — MEMPALACE_PATH / MEMPALACE_WING configuration bridge
**#1083 — Privacy boundary tools**
- `mempalace/export_closets.sh` — closet-only export enforcing policy that raw
drawers never leave the local VPS; aborts on violations
- `mempalace/audit_privacy.py` — weekly audit of fleet palace for raw drawers,
full-text closets, and private source_file paths
**Tests:** 21 new tests covering validate_rooms and audit_privacy logic.
Refs #1075 , #1077 , #1082 , #1083
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-07 10:09:56 -04:00
Alexander Whitestone
367a06a849
feat: MemPalace × Evennia fleet memory scaffold ( #1075 )
...
CI / test (pull_request) Failing after 7s
CI / validate (pull_request) Failing after 3s
Add foundational architecture for the MemPalace × Evennia integration
milestone. All sub-issues (Phase 1–4 and infra) can now build on top
of this scaffold.
**nexus/mempalace/**
- `config.py` — MEMPALACE_PATH, FLEET_PALACE_PATH, FLEET_WING, CORE_ROOMS
- `searcher.py` — `search_memories()`, `search_fleet()`, `add_memory()`,
`MemPalaceResult`, `MemPalaceUnavailable`; ChromaDB imported lazily
**nexus/evennia_mempalace/**
Commands:
- `CmdRecall` — `recall <query>` / `recall <query> --fleet`
- `CmdEnterRoom` — `enter room <topic>` teleports to a palace room
- `CmdRecord` / `CmdNote` / `CmdEvent` — write decisions, breakthroughs,
and events into the palace (Phase 4)
Typeclasses:
- `MemPalaceRoom` — room whose description auto-populates from palace search
- `StewardNPC` — answers player questions via wing memory search (Phase 3)
All classes use a graceful Evennia stub so the module imports cleanly
outside a live Evennia/Django environment.
**docs/mempalace/rooms.yaml** (#1082 deliverable)
Fleet-wide room taxonomy standard: 5 required core rooms, 3 write rooms,
optional domain rooms, tunnel policy, and privacy rules.
**tests/**
- `test_mempalace_searcher.py` — 20 tests covering config, ChromaDB mocking,
search/add, error paths
- `test_evennia_mempalace_commands.py` — 20 tests covering all commands,
`_closest_room`, `_extract_topic`, StewardNPC responses
40 new tests, all passing.
Refs #1075
2026-04-07 10:07:15 -04:00
fd75985db6
[claude] Fix missing manifest.json PWA support ( #832 ) ( #888 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-06 17:59:45 +00:00
3b4c5e7207
[claude] Add /help page for Nexus web frontend ( #833 ) ( #887 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-06 17:52:10 +00:00
0b57145dde
[timmy] Add webhook health dashboard ( #855 ) ( #885 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-06 15:51:22 +00:00
4496ff2d80
[claude] Stand up Gemini harness as network worker ( #748 ) ( #811 )
Deploy Nexus / deploy (push) Has been cancelled
2026-04-04 01:41:53 +00:00
d32baa696b
[watchdog] The Eye That Never Sleeps — Nexus Health Monitor ( #794 )
...
Deploy Nexus / deploy (push) Has been cancelled
Co-authored-by: Google AI Agent <gemini@hermes.local >
Co-committed-by: Google AI Agent <gemini@hermes.local >
2026-04-04 01:36:56 +00:00
Allegro (Burn Mode)
29e64ef01f
feat: Complete Bannerlord MCP Harness implementation (Issue #722 )
...
Deploy Nexus / deploy (push) Failing after 4s
Implements the Hermes observation/control path for local Bannerlord per GamePortal Protocol.
## New Components
- nexus/bannerlord_harness.py (874 lines)
- MCPClient for JSON-RPC communication with MCP servers
- capture_state() → GameState with visual + Steam context
- execute_action() → ActionResult for all input types
- observe-decide-act loop with telemetry through Hermes WS
- Bannerlord-specific actions (inventory, party, save/load)
- Mock mode for testing without game running
- mcp_servers/desktop_control_server.py (14KB)
- 13 desktop automation tools via pyautogui
- Screenshot, mouse, keyboard control
- Headless environment support
- mcp_servers/steam_info_server.py (18KB)
- 6 Steam Web API tools
- Mock mode without API key, live mode with STEAM_API_KEY
- tests/test_bannerlord_harness.py (37 tests, all passing)
- GameState/ActionResult validation
- Mock mode action tests
- ODA loop tests
- GamePortal Protocol compliance tests
- docs/BANNERLORD_HARNESS_PROOF.md
- Architecture documentation
- Proof of ODA loop execution
- Telemetry flow diagrams
- examples/harness_demo.py
- Runnable demo showing full ODA loop
## Updates
- portals.json: Bannerlord metadata per GAMEPORTAL_PROTOCOL.md
- status: active, portal_type: game-world
- app_id: 261550, window_title: 'Mount & Blade II: Bannerlord'
- telemetry_source: hermes-harness:bannerlord
## Verification
pytest tests/test_bannerlord_harness.py -v
37 passed, 2 skipped, 11 warnings
Closes #722
2026-03-31 04:53:29 +00:00
e88bcb4857
[fix] 5 bugs: 2 SyntaxErrors in nexus_think.py, Groq model name, server race condition, corrupt public/nexus/
...
CI / validate (pull_request) Failing after 5s
Bug 1: nexus_think.py line 318 — stray '.' between function call and if-block
This is a SyntaxError. The entire consciousness loop cannot import.
The Nexus Mind has been dead since this was committed.
Bug 2: nexus_think.py line 445 — 'parser.add_.argument()'
Another SyntaxError — extra underscore in argparse call.
The CLI entrypoint crashes on startup.
Bug 3: groq_worker.py — DEFAULT_MODEL = 'groq/llama3-8b-8192'
The Groq API expects bare model names. The 'groq/' prefix causes a 404.
Fixed to 'llama3-8b-8192'.
Bug 4: server.py — clients.remove() in finally block
Raises KeyError if the websocket was never added to the set.
Fixed to clients.discard() (safe no-op if not present).
Also added tracking for disconnected clients during broadcast.
Bug 5: public/nexus/ — 3 corrupt duplicate files (28.6 KB wasted)
app.js, style.css, and index.html all had identical content (same SHA).
These are clearly a broken copy operation. The real files are at repo root.
Tests: 6 new, 21/22 total pass. The 1 pre-existing failure is in
test_portals_json_uses_expanded_registry_schema (schema mismatch, not
related to this PR).
Signed-off-by: gemini <gemini@hermes.local >
2026-03-30 19:04:53 -04:00
Alexander Whitestone
1fe5176ebc
feat: feed Evennia world events into Nexus websocket bridge
CI / validate (pull_request) Failing after 4s
2026-03-28 16:25:18 -04:00
Alexander Whitestone
8ead4cd13f
feat: add thin Evennia to Nexus event adapter
CI / validate (pull_request) Failing after 4s
2026-03-28 16:02:27 -04:00
8313533304
feat: expand portal registry schema ( #718 )
Deploy Nexus / deploy (push) Failing after 3s
2026-03-28 17:01:49 +00:00
68801c4813
docs: sync nexus repo truth and audit legacy matrix ( #689 )
Deploy Nexus / deploy (push) Failing after 5s
2026-03-28 12:53:20 +00:00
2e7cccc0e8
delete: tests/run-smoke.sh — does not serve heartbeat/harness/portal ( #548 )
Deploy Nexus / deploy (push) Has been cancelled
2026-03-26 16:43:01 +00:00
6be87fcb37
delete: tests/playwright.config.js — does not serve heartbeat/harness/portal ( #548 )
Deploy Nexus / deploy (push) Has been cancelled
2026-03-26 16:42:59 +00:00
b2297f744a
delete: tests/smoke.spec.js — does not serve heartbeat/harness/portal ( #548 )
Deploy Nexus / deploy (push) Has been cancelled
2026-03-26 16:42:58 +00:00
b64699d625
feat: headless smoke tests for Nexus — zero LLM, pure Playwright ( #504 )
Deploy Nexus / deploy (push) Failing after 5s
2026-03-25 13:24:20 +00:00