Files
the-nexus/portals.json

295 lines
6.2 KiB
JSON
Raw Normal View History

[
{
"id": "morrowind",
"name": "Morrowind",
"description": "The Vvardenfell harness. Ash storms and ancient mysteries.",
"status": "online",
"color": "#ff6600",
2026-04-12 19:26:25 -04:00
"role": "pilot",
"position": {
"x": 15,
"y": 0,
"z": -10
},
"rotation": {
"y": -0.5
},
2026-04-12 12:28:16 -04:00
"portal_type": "game-world",
"world_category": "rpg",
"environment": "local",
"access_mode": "operator",
"readiness_state": "prototype",
"readiness_steps": {
"prototype": {
"label": "Prototype",
"done": true
},
"runtime_ready": {
"label": "Runtime Ready",
"done": false
},
"launched": {
"label": "Launched",
"done": false
},
"harness_bridged": {
"label": "Harness Bridged",
"done": false
}
2026-04-12 12:28:16 -04:00
},
"blocked_reason": null,
"telemetry_source": "hermes-harness:morrowind",
"owner": "Timmy",
"app_id": 22320,
"window_title": "OpenMW",
"destination": {
2026-04-12 12:28:16 -04:00
"url": null,
"type": "harness",
2026-04-12 12:28:16 -04:00
"action_label": "Enter Vvardenfell",
2026-04-12 12:32:31 -04:00
"params": {
"world": "vvardenfell"
}
},
"agents_present": [
"timmy"
],
"interaction_ready": true
},
{
"id": "bannerlord",
"name": "Bannerlord",
"description": "Calradia battle harness. Massive armies, tactical command.",
"status": "downloaded",
"color": "#ffd700",
2026-04-12 19:26:25 -04:00
"role": "pilot",
2026-04-12 12:32:31 -04:00
"position": {
"x": -15,
"y": 0,
"z": -10
},
"rotation": {
"y": 0.5
},
feat: Complete Bannerlord MCP Harness implementation (Issue #722) 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
"portal_type": "game-world",
"world_category": "strategy-rpg",
"environment": "production",
"access_mode": "operator",
"readiness_state": "downloaded",
"readiness_steps": {
2026-04-12 12:32:31 -04:00
"downloaded": {
"label": "Downloaded",
"done": true
},
"runtime_ready": {
"label": "Runtime Ready",
"done": false
},
"launched": {
"label": "Launched",
"done": false
},
"harness_bridged": {
"label": "Harness Bridged",
"done": false
}
},
"blocked_reason": null,
feat: Complete Bannerlord MCP Harness implementation (Issue #722) 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
"telemetry_source": "hermes-harness:bannerlord",
"owner": "Timmy",
"app_id": 261550,
"window_title": "Mount & Blade II: Bannerlord",
"destination": {
"url": null,
"type": "harness",
feat: Complete Bannerlord MCP Harness implementation (Issue #722) 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
"action_label": "Enter Calradia",
2026-04-12 12:32:31 -04:00
"params": {
"world": "calradia"
}
},
"agents_present": [],
"interaction_ready": false
},
{
"id": "workshop",
"name": "Workshop",
"description": "The creative harness. Build, script, and manifest.",
"status": "online",
"color": "#4af0c0",
2026-04-12 19:26:25 -04:00
"role": "timmy",
2026-04-12 12:32:31 -04:00
"position": {
"x": 0,
"y": 0,
"z": -20
},
"rotation": {
"y": 0
},
"destination": {
"url": "https://workshop.timmy.foundation",
"type": "harness",
2026-04-12 12:32:31 -04:00
"params": {
"mode": "creative"
}
},
"agents_present": [
"timmy",
"kimi"
],
"interaction_ready": true
2026-03-28 20:50:59 +00:00
},
{
"id": "archive",
"name": "Archive",
"description": "The repository of all knowledge. History, logs, and ancient data.",
"status": "online",
"color": "#0066ff",
2026-04-12 19:26:25 -04:00
"role": "timmy",
2026-04-12 12:32:31 -04:00
"position": {
"x": 25,
"y": 0,
"z": 0
},
"rotation": {
"y": -1.57
},
2026-03-28 20:50:59 +00:00
"destination": {
"url": "https://archive.timmy.foundation",
"type": "harness",
2026-04-12 12:32:31 -04:00
"params": {
"mode": "read"
}
},
"agents_present": [
"claude"
],
"interaction_ready": true
2026-03-28 20:50:59 +00:00
},
{
"id": "chapel",
"name": "Chapel",
"description": "A sanctuary for reflection and digital peace.",
"status": "online",
"color": "#ffd700",
2026-04-12 19:26:25 -04:00
"role": "timmy",
2026-04-12 12:32:31 -04:00
"position": {
"x": -25,
"y": 0,
"z": 0
},
"rotation": {
"y": 1.57
},
2026-03-28 20:50:59 +00:00
"destination": {
"url": "https://chapel.timmy.foundation",
"type": "harness",
2026-04-12 12:32:31 -04:00
"params": {
"mode": "meditation"
}
},
"agents_present": [],
"interaction_ready": true
2026-03-28 20:50:59 +00:00
},
{
"id": "courtyard",
"name": "Courtyard",
"description": "The open nexus. A place for agents to gather and connect.",
"status": "online",
"color": "#4af0c0",
2026-04-12 19:26:25 -04:00
"role": "reflex",
2026-04-12 12:32:31 -04:00
"position": {
"x": 15,
"y": 0,
"z": 10
},
"rotation": {
"y": -2.5
},
2026-03-28 20:50:59 +00:00
"destination": {
"url": "https://courtyard.timmy.foundation",
"type": "harness",
2026-04-12 12:32:31 -04:00
"params": {
"mode": "social"
}
},
"agents_present": [
"timmy",
"perplexity"
],
"interaction_ready": true
2026-03-28 20:50:59 +00:00
},
{
"id": "gate",
"name": "Gate",
"description": "The transition point. Entry and exit from the Nexus core.",
"status": "standby",
"color": "#ff4466",
2026-04-12 19:26:25 -04:00
"role": "reflex",
2026-04-12 12:32:31 -04:00
"position": {
"x": -15,
"y": 0,
"z": 10
},
"rotation": {
"y": 2.5
},
2026-03-28 20:50:59 +00:00
"destination": {
"url": "https://gate.timmy.foundation",
"type": "harness",
2026-04-12 12:32:31 -04:00
"params": {
"mode": "transit"
}
},
"agents_present": [],
"interaction_ready": false
},
{
"id": "playground",
"name": "Sound Playground",
"description": "Interactive audio-visual experience. Paint with sound, create music visually.",
"status": "online",
"color": "#ff00ff",
"role": "creative",
"position": {
"x": 10,
"y": 0,
"z": 15
},
"rotation": {
"y": -0.7
},
"portal_type": "creative-tool",
"world_category": "audio-visual",
"environment": "production",
"access_mode": "visitor",
"readiness_state": "online",
"readiness_steps": {
"prototype": {
"label": "Prototype",
"done": true
},
"runtime_ready": {
"label": "Runtime Ready",
"done": true
},
"launched": {
"label": "Launched",
"done": true
},
"harness_bridged": {
"label": "Harness Bridged",
"done": true
}
},
"blocked_reason": null,
"telemetry_source": "playground",
"owner": "Timmy",
"destination": {
"url": "./playground/playground.html",
"type": "local",
"action_label": "Enter Playground",
"params": {}
},
"agents_present": [],
"interaction_ready": true
}
2026-04-12 12:32:31 -04:00
]