neonrp 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- neonrp-0.1.0/.env.example +34 -0
- neonrp-0.1.0/.gitattributes +25 -0
- neonrp-0.1.0/.githooks/pre-commit +11 -0
- neonrp-0.1.0/.github/workflows/release.yml +245 -0
- neonrp-0.1.0/.github/workflows/test.yml +41 -0
- neonrp-0.1.0/.gitignore +40 -0
- neonrp-0.1.0/CHANGELOG.md +154 -0
- neonrp-0.1.0/DEV_README.md +101 -0
- neonrp-0.1.0/PKG-INFO +278 -0
- neonrp-0.1.0/README.md +253 -0
- neonrp-0.1.0/VERSION.txt +1 -0
- neonrp-0.1.0/cards/chubai/main_august-baeb4d86fd8c_spec_v2.json +249 -0
- neonrp-0.1.0/cards/chubai/main_august-baeb4d86fd8c_spec_v2.png +0 -0
- neonrp-0.1.0/cards/sillytavern/The-Game-Master-aicharactercards.com_.png +0 -0
- neonrp-0.1.0/docs/ADRs/0000-template.md +22 -0
- neonrp-0.1.0/docs/ADRs/0001-cli-framework.md +34 -0
- neonrp-0.1.0/docs/ADRs/0002-event-storage-format.md +47 -0
- neonrp-0.1.0/docs/ADRs/0003-snapshot-and-branch-strategy.md +66 -0
- neonrp-0.1.0/docs/ADRs/0004-world-entity-conventions.md +67 -0
- neonrp-0.1.0/docs/ADRs/0005-indexing-strategy.md +71 -0
- neonrp-0.1.0/docs/ADRs/0006-agent-spec-and-permissions.md +33 -0
- neonrp-0.1.0/docs/ADRs/0007-proposal-format-plan-diff-apply.md +31 -0
- neonrp-0.1.0/docs/ADRs/0008-llm-adapter-and-config.md +24 -0
- neonrp-0.1.0/docs/ADRs/0009-skill-tool-registry-and-auditing.md +23 -0
- neonrp-0.1.0/docs/ADRs/0010-sillytavern-import-mapping.md +28 -0
- neonrp-0.1.0/docs/ADRs/0011-sandbox-branch-model.md +24 -0
- neonrp-0.1.0/docs/ADRs/0012-replay-and-determinism-contract.md +29 -0
- neonrp-0.1.0/docs/ADRs/0013-tui-framework-and-architecture.md +31 -0
- neonrp-0.1.0/docs/ADRs/0014-tui-interaction-model-and-keybindings.md +33 -0
- neonrp-0.1.0/docs/ADRs/0015-agentic-loop-and-tool-calling.md +88 -0
- neonrp-0.1.0/docs/ADRs/0016-session-log-and-context-window.md +82 -0
- neonrp-0.1.0/docs/ADRs/0017-agent-dispatcher-and-routing.md +96 -0
- neonrp-0.1.0/docs/ADRs/0018-llm-streaming-contract.md +88 -0
- neonrp-0.1.0/docs/ADRs/0019-llm-error-handling-and-retry.md +85 -0
- neonrp-0.1.0/docs/ADRs/0020-game-rules-engine-and-entity-schema.md +123 -0
- neonrp-0.1.0/docs/ADRs/0021-universal-tool-system.md +101 -0
- neonrp-0.1.0/docs/ADRs/0022-sub-agent-task-tool.md +139 -0
- neonrp-0.1.0/docs/ADRs/0023-per-agent-llm-configuration.md +160 -0
- neonrp-0.1.0/docs/ADRs/0024-mcp-integration-scope-and-compatibility.md +52 -0
- neonrp-0.1.0/docs/ADRs/0025-mcp-tool-router-and-permission-model.md +59 -0
- neonrp-0.1.0/docs/ADRs/0026-sub-agent-delegation-contract.md +220 -0
- neonrp-0.1.0/docs/ADRs/0027-deterministic-check-tools.md +306 -0
- neonrp-0.1.0/docs/ARCHITECTURE.md +471 -0
- neonrp-0.1.0/docs/CLI_REFERENCE.md +1056 -0
- neonrp-0.1.0/docs/ENGINE_DECOUPLING_REFACTOR_PLAN_2026-03-04.md +179 -0
- neonrp-0.1.0/docs/ISSUE_OLLAMA_TOOL_CALL_ARGS.md +95 -0
- neonrp-0.1.0/docs/ISSUE_SUB_AGENT_AUTO_EXIT.md +231 -0
- neonrp-0.1.0/docs/L14_AUTO_UPDATE_SCHEME.md +508 -0
- neonrp-0.1.0/docs/L14_UNIFIED_TUI_SPEC.md +319 -0
- neonrp-0.1.0/docs/M10_TASK_CARDS.md +248 -0
- neonrp-0.1.0/docs/M11_TASK_CARDS.md +222 -0
- neonrp-0.1.0/docs/M12_MIGRATION.md +44 -0
- neonrp-0.1.0/docs/M12_TASK_CARDS.md +353 -0
- neonrp-0.1.0/docs/M13_TASK_CARDS.md +1123 -0
- neonrp-0.1.0/docs/M14_TASK_CARDS.md +500 -0
- neonrp-0.1.0/docs/M15_TASK_CARDS.md +745 -0
- neonrp-0.1.0/docs/M1_TASK_CARDS.md +186 -0
- neonrp-0.1.0/docs/M1_VALIDATION_INDEX_DESIGN.md +165 -0
- neonrp-0.1.0/docs/M2_AGENTS_PLAN_DIFF_APPLY_DESIGN.md +260 -0
- neonrp-0.1.0/docs/M2_TASK_CARDS.md +227 -0
- neonrp-0.1.0/docs/M3_LLM_COMMANDS_SKILLS_IMPORT_DESIGN.md +239 -0
- neonrp-0.1.0/docs/M3_TASK_CARDS.md +340 -0
- neonrp-0.1.0/docs/M4_SANDBOX_REPLAY_DESIGN.md +200 -0
- neonrp-0.1.0/docs/M4_TASK_CARDS.md +293 -0
- neonrp-0.1.0/docs/M5_TASK_CARDS.md +219 -0
- neonrp-0.1.0/docs/M5_TUI_DESIGN.md +133 -0
- neonrp-0.1.0/docs/M6.5_TASK_CARDS.md +338 -0
- neonrp-0.1.0/docs/M6_TASK_CARDS.md +405 -0
- neonrp-0.1.0/docs/M7_TASK_CARDS.md +289 -0
- neonrp-0.1.0/docs/M8_TASK_CARDS.md +229 -0
- neonrp-0.1.0/docs/M9_TASK_CARDS.md +313 -0
- neonrp-0.1.0/docs/MAC_INSTALL.md +69 -0
- neonrp-0.1.0/docs/PLAY_MODE_PERFORMANCE_INVESTIGATION_2026-02-23.md +94 -0
- neonrp-0.1.0/docs/PROGRESS.md +928 -0
- neonrp-0.1.0/docs/QUALITY_GATES.md +117 -0
- neonrp-0.1.0/docs/REQUIREMENTS.md +167 -0
- neonrp-0.1.0/docs/ROADMAP.md +1242 -0
- neonrp-0.1.0/docs/TUI_GUIDE.md +306 -0
- neonrp-0.1.0/docs/TUTORIAL.md +404 -0
- neonrp-0.1.0/docs/compare/IMPLEMENTATION_PLAN.md +552 -0
- neonrp-0.1.0/docs/docs-worldlines/plan-mcp-tui.md +235 -0
- neonrp-0.1.0/docs/docs-worldlines/plan.md +352 -0
- neonrp-0.1.0/docs/releases.md +596 -0
- neonrp-0.1.0/examples/multi-agent/README.md +54 -0
- neonrp-0.1.0/examples/multi-agent/agents/narrator/agent.json +21 -0
- neonrp-0.1.0/examples/multi-agent/agents/narrator/system.md +60 -0
- neonrp-0.1.0/examples/multi-agent/agents/world-agent/agent.json +21 -0
- neonrp-0.1.0/examples/multi-agent/agents/world-agent/system.md +53 -0
- neonrp-0.1.0/examples/multi-agent/game/lore/example-lore.json +8 -0
- neonrp-0.1.0/examples/multi-agent/game/run_state/game-state.json +13 -0
- neonrp-0.1.0/examples/starter-world/README.md +91 -0
- neonrp-0.1.0/examples/starter-world/agents/narrator/agent.json +27 -0
- neonrp-0.1.0/examples/starter-world/agents/narrator/system.md +67 -0
- neonrp-0.1.0/examples/starter-world/game/item/energy-shield.json +15 -0
- neonrp-0.1.0/examples/starter-world/game/item/hacking-kit.json +15 -0
- neonrp-0.1.0/examples/starter-world/game/item/health-potion.json +15 -0
- neonrp-0.1.0/examples/starter-world/game/item/plasma-blade.json +15 -0
- neonrp-0.1.0/examples/starter-world/game/location/shadow-alley.json +10 -0
- neonrp-0.1.0/examples/starter-world/game/npc/info-broker-zara.json +19 -0
- neonrp-0.1.0/examples/starter-world/game/npc/merchant-kai.json +19 -0
- neonrp-0.1.0/examples/starter-world/game/player/player.json +24 -0
- neonrp-0.1.0/examples/starter-world/game/shop/cyber-market.json +36 -0
- neonrp-0.1.0/examples/starter-world/game/town/neon-city-plaza.json +21 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/character-agent.md +93 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/clock-keeper.md +49 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/combat-referee.md +136 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/dungeon-agent.md +106 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/notary-archivist.md +47 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/rules-referee.md +113 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/story-narrative.md +41 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/town-agent.md +124 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/world-agent.md +280 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/world-builder.md +39 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/agents/world-evolution.md +49 -0
- neonrp-0.1.0/examples/stoneford-cc/.claude/settings.json +9 -0
- neonrp-0.1.0/examples/stoneford-cc/CLAUDE.md +33 -0
- neonrp-0.1.0/examples/stoneford-cc/README.md +48 -0
- neonrp-0.1.0/examples/stoneford-cc/game/agents/contracts/contracts.md +34 -0
- neonrp-0.1.0/examples/stoneford-cc/game/agents/manifest.json +137 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/dungeon.json +17 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/encounter_tables.json +33 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/layout.json +54 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/loot_tables.json +30 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/rooms/D001_R001.json +13 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/rooms/D001_R002.json +13 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/rooms/D001_R003.json +14 -0
- neonrp-0.1.0/examples/stoneford-cc/game/dungeons/D001/rooms/D001_R004.json +13 -0
- neonrp-0.1.0/examples/stoneford-cc/game/lore/notes.md +14 -0
- neonrp-0.1.0/examples/stoneford-cc/game/lore/rumors.md +4 -0
- neonrp-0.1.0/examples/stoneford-cc/game/lore/story.md +7 -0
- neonrp-0.1.0/examples/stoneford-cc/game/meta/active-agent.json +7 -0
- neonrp-0.1.0/examples/stoneford-cc/game/meta/flag_aliases.json +47 -0
- neonrp-0.1.0/examples/stoneford-cc/game/meta/game-start.json +40 -0
- neonrp-0.1.0/examples/stoneford-cc/game/meta/run_state.json +78 -0
- neonrp-0.1.0/examples/stoneford-cc/game/meta/schedule.json +9 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/equipment.json +16 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/flags.json +37 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/inventory.json +61 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/journal.md +214 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/profile.json +6 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/stats.json +33 -0
- neonrp-0.1.0/examples/stoneford-cc/game/player/wallet.json +5 -0
- neonrp-0.1.0/examples/stoneford-cc/game/rules/combat_rules.md +21 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/facilities/guild.json +78 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/facilities/inn.json +17 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/facilities/shop_general.json +32 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/facilities/townhall.json +12 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/npcs.json +41 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/quests.json +54 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/town.json +29 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T001/town_map.json +107 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/facilities/appraiser.json +42 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/facilities/chapel.json +35 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/facilities/guild.json +59 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/facilities/herb_shop.json +68 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/facilities/shop_general.json +69 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/facilities/tavern.json +30 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/npcs.json +68 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/quests.json +49 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/town.json +34 -0
- neonrp-0.1.0/examples/stoneford-cc/game/towns/T004/town_map.json +97 -0
- neonrp-0.1.0/examples/stoneford-cc/game/world/world_map.json +240 -0
- neonrp-0.1.0/examples/stoneford-fast/README.md +43 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/combat-referee/agent.json +42 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/combat-referee/system.md +103 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/dungeon-agent/agent.json +48 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/dungeon-agent/system.md +102 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/orchestrator/agent.json +41 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/orchestrator/narrative.md +105 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/orchestrator/system.md +232 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/rules-referee/agent.json +28 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/rules-referee/system.md +161 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/town-agent/agent.json +38 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/town-agent/system.md +136 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/world-agent/agent.json +41 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/world-agent/narrative.md +105 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/world-agent/system.md +232 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/world-builder/agent.json +39 -0
- neonrp-0.1.0/examples/stoneford-fast/agents/world-builder/system.md +93 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/dungeon.json +17 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/encounter_tables.json +33 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/layout.json +54 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/loot_tables.json +30 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/rooms/D001_R001.json +13 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/rooms/D001_R002.json +13 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/rooms/D001_R003.json +14 -0
- neonrp-0.1.0/examples/stoneford-fast/game/dungeons/D001/rooms/D001_R004.json +13 -0
- neonrp-0.1.0/examples/stoneford-fast/game/lore/notes.md +8 -0
- neonrp-0.1.0/examples/stoneford-fast/game/lore/rumors.md +4 -0
- neonrp-0.1.0/examples/stoneford-fast/game/lore/story.md +7 -0
- neonrp-0.1.0/examples/stoneford-fast/game/meta/active-agent.json +7 -0
- neonrp-0.1.0/examples/stoneford-fast/game/meta/game-start.json +39 -0
- neonrp-0.1.0/examples/stoneford-fast/game/meta/run_state.json +16 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/equipment.json +20 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/flags.json +15 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/inventory.json +13 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/journal.md +4 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/profile.json +6 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/stats.json +33 -0
- neonrp-0.1.0/examples/stoneford-fast/game/player/wallet.json +5 -0
- neonrp-0.1.0/examples/stoneford-fast/game/rules/combat_rules.md +21 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/facilities/guild.json +63 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/facilities/inn.json +17 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/facilities/shop_general.json +32 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/facilities/townhall.json +12 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/npcs.json +41 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/quests.json +54 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/town.json +29 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T001/town_map.json +106 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/facilities/barracks.json +26 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/facilities/relay.json +26 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/facilities/smith.json +19 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/npcs.json +45 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/quests.json +70 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/town.json +28 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T002/town_map.json +68 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T003/facilities/command.json +19 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T003/facilities/field_hospital.json +15 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T003/npcs.json +29 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T003/quests.json +72 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T003/town.json +28 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T003/town_map.json +59 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/facilities/appraiser.json +13 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/facilities/chapel.json +15 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/facilities/guild.json +17 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/facilities/herb_shop.json +16 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/facilities/shop_general.json +17 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/facilities/tavern.json +17 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/npcs.json +69 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/quests.json +73 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/town.json +28 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T004/town_map.json +95 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/facilities/cathedral.json +19 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/facilities/governor_hall.json +20 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/facilities/market.json +21 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/facilities/port.json +18 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/facilities/prison.json +32 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/npcs.json +69 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/quests.json +84 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/town.json +28 -0
- neonrp-0.1.0/examples/stoneford-fast/game/towns/T005/town_map.json +94 -0
- neonrp-0.1.0/examples/stoneford-fast/game/world/world_map.json +97 -0
- neonrp-0.1.0/examples/stoneford-full/README.md +48 -0
- neonrp-0.1.0/examples/stoneford-full/agents/character-agent/agent.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/agents/character-agent/system.md +85 -0
- neonrp-0.1.0/examples/stoneford-full/agents/clock-keeper/agent.json +32 -0
- neonrp-0.1.0/examples/stoneford-full/agents/clock-keeper/system.md +41 -0
- neonrp-0.1.0/examples/stoneford-full/agents/combat-referee/agent.json +42 -0
- neonrp-0.1.0/examples/stoneford-full/agents/combat-referee/system.md +160 -0
- neonrp-0.1.0/examples/stoneford-full/agents/dungeon-agent/agent.json +47 -0
- neonrp-0.1.0/examples/stoneford-full/agents/dungeon-agent/system.md +155 -0
- neonrp-0.1.0/examples/stoneford-full/agents/rules-referee/agent.json +28 -0
- neonrp-0.1.0/examples/stoneford-full/agents/rules-referee/system.md +178 -0
- neonrp-0.1.0/examples/stoneford-full/agents/story-narrative/agent.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/agents/story-narrative/system.md +33 -0
- neonrp-0.1.0/examples/stoneford-full/agents/town-agent/agent.json +38 -0
- neonrp-0.1.0/examples/stoneford-full/agents/town-agent/system.md +189 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-agent/agent.json +41 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-agent/narrative.md +43 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-agent/system.md +347 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-builder/agent.json +37 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-builder/system.md +104 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-evolution/agent.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/agents/world-evolution/system.md +41 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/dungeon.json +20 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/encounter_tables.json +33 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/layout.json +54 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/loot_tables.json +30 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/rooms/D001_R001.json +13 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/rooms/D001_R002.json +13 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/rooms/D001_R003.json +14 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons/D001/rooms/D001_R004.json +13 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D001-mossbarrow.md +132 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D002-jadehollow-mines-l3.md +154 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D003-sunken-ward.md +160 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D004-brokenspine-watchtrail.md +168 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D005-olric-barrow.md +127 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D006-old-exchange-vault.md +138 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D007-fogmoor-hide.md +132 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D008-crosser-workshop.md +139 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/D009-second-sun-crag.md +144 -0
- neonrp-0.1.0/examples/stoneford-full/game/dungeons-design/N001-chasm-approach.md +341 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/beyond-the-world.md +83 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/foundation/colonial-history.md +634 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/foundation/eras-chronology.md +336 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/foundation/mythology.md +519 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/foundation/old-tongue.md +602 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/notes.md +14 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/rumors.md +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/lore/story.md +114 -0
- neonrp-0.1.0/examples/stoneford-full/game/meta/active-agent.json +10 -0
- neonrp-0.1.0/examples/stoneford-full/game/meta/flag_aliases.json +47 -0
- neonrp-0.1.0/examples/stoneford-full/game/meta/game-start.json +40 -0
- neonrp-0.1.0/examples/stoneford-full/game/meta/run_state.json +30 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/equipment.json +39 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/flags.json +19 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/inventory.json +13 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/journal.md +4 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/profile.json +6 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/stats.json +33 -0
- neonrp-0.1.0/examples/stoneford-full/game/player/wallet.json +5 -0
- neonrp-0.1.0/examples/stoneford-full/game/rules/combat_rules.md +21 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/apothecary.json +17 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/chapel.json +15 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/exchange_vault.json +24 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/guild.json +28 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/inn.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/port.json +17 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/shop_general.json +19 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/facilities/townhall.json +14 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/npcs.json +271 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/quests.json +284 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/town.json +60 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T001/town_map.json +205 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/barracks.json +36 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/chapel.json +20 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/envoy_quarters.json +20 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/guild_branch.json +23 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/inn.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/iron_forge.json +24 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/relay.json +38 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/scribe_rest.json +19 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/smith.json +22 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/facilities/stable.json +20 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/npcs.json +280 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/quests.json +146 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/town.json +43 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T002/town_map.json +139 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/cave_annex.json +31 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/cemetery.json +25 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/command.json +19 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/field_hospital.json +27 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/forbidden_shelf.json +34 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/inn.json +20 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/monastery_archive.json +30 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/monastery_chapel.json +33 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/monastery_library.json +36 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/pass_watch_guardhouse.json +27 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/facilities/wall_glyph.json +30 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/npcs.json +260 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/quests.json +158 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/town.json +58 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T003/town_map.json +219 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/appraiser.json +13 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/bram_cottage.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/chapel.json +15 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/envoy_house.json +25 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/guild.json +24 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/guild_tower.json +18 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/herb_shop.json +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/library.json +25 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/library_deep_archive.json +50 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/mine_office.json +21 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/shop_general.json +17 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/facilities/tavern.json +40 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/npcs.json +224 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/quests.json +162 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/town.json +41 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T004/town_map.json +189 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/cathedral_chapter.json +13 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/guild_citadel.json +23 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/market.json +27 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/royal_chambers_crown.json +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/royal_chambers_faith.json +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/royal_chambers_free_north.json +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/royal_chambers_union.json +17 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/sulas_ledger_room.json +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/summit_hall.json +25 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/sunken_ward.json +15 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/facilities/veyls_camp.json +16 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/npcs.json +404 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/quests.json +144 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/town.json +45 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/T005/town_map.json +191 -0
- neonrp-0.1.0/examples/stoneford-full/game/towns/_WAVE4_CHECKER_REPORT.md +191 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/cultures/crown.md +195 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/cultures/faith.md +180 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/cultures/fog.md +220 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/cultures/free-north.md +202 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/cultures/union.md +216 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/items.md +865 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/relics.md +825 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/species.md +666 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/world_map.CHANGELOG.md +61 -0
- neonrp-0.1.0/examples/stoneford-full/game/world/world_map.json +353 -0
- neonrp-0.1.0/examples/stoneford-orch/README.md +43 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/character-agent/agent.json +21 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/character-agent/system.md +85 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/clock-keeper/agent.json +32 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/clock-keeper/system.md +41 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/combat-referee/agent.json +42 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/combat-referee/system.md +160 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/dungeon-agent/agent.json +47 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/dungeon-agent/system.md +155 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/rules-referee/agent.json +28 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/rules-referee/system.md +178 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/story-narrative/agent.json +21 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/story-narrative/system.md +33 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/town-agent/agent.json +38 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/town-agent/system.md +189 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-agent/agent.json +41 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-agent/narrative.md +43 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-agent/system.md +347 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-builder/agent.json +37 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-builder/system.md +104 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-evolution/agent.json +21 -0
- neonrp-0.1.0/examples/stoneford-orch/agents/world-evolution/system.md +41 -0
- neonrp-0.1.0/examples/stoneford-orch/game/agents/contracts/contracts.md +34 -0
- neonrp-0.1.0/examples/stoneford-orch/game/agents/manifest.json +137 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/dungeon.json +17 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/encounter_tables.json +33 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/layout.json +54 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/loot_tables.json +30 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/rooms/D001_R001.json +13 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/rooms/D001_R002.json +13 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/rooms/D001_R003.json +14 -0
- neonrp-0.1.0/examples/stoneford-orch/game/dungeons/D001/rooms/D001_R004.json +13 -0
- neonrp-0.1.0/examples/stoneford-orch/game/lore/notes.md +14 -0
- neonrp-0.1.0/examples/stoneford-orch/game/lore/rumors.md +4 -0
- neonrp-0.1.0/examples/stoneford-orch/game/lore/story.md +7 -0
- neonrp-0.1.0/examples/stoneford-orch/game/meta/active-agent.json +7 -0
- neonrp-0.1.0/examples/stoneford-orch/game/meta/flag_aliases.json +47 -0
- neonrp-0.1.0/examples/stoneford-orch/game/meta/game-start.json +39 -0
- neonrp-0.1.0/examples/stoneford-orch/game/meta/run_state.json +16 -0
- neonrp-0.1.0/examples/stoneford-orch/game/meta/schedule.json +9 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/equipment.json +20 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/flags.json +15 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/inventory.json +13 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/journal.md +4 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/profile.json +6 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/stats.json +33 -0
- neonrp-0.1.0/examples/stoneford-orch/game/player/wallet.json +5 -0
- neonrp-0.1.0/examples/stoneford-orch/game/rules/combat_rules.md +21 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/facilities/guild.json +78 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/facilities/inn.json +17 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/facilities/shop_general.json +32 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/facilities/townhall.json +12 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/npcs.json +41 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/quests.json +54 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/town.json +29 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T001/town_map.json +107 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/facilities/appraiser.json +42 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/facilities/chapel.json +35 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/facilities/guild.json +59 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/facilities/herb_shop.json +68 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/facilities/shop_general.json +69 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/facilities/tavern.json +30 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/npcs.json +68 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/quests.json +49 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/town.json +34 -0
- neonrp-0.1.0/examples/stoneford-orch/game/towns/T004/town_map.json +97 -0
- neonrp-0.1.0/examples/stoneford-orch/game/world/world_map.json +240 -0
- neonrp-0.1.0/examples/stoneford-storylines/A-guild-buried-charter.md +201 -0
- neonrp-0.1.0/examples/stoneford-storylines/B-world-before-the-fog.md +604 -0
- neonrp-0.1.0/examples/stoneford-storylines/C-four-crown-intrigue.md +703 -0
- neonrp-0.1.0/examples/stoneford-storylines/D-iron-dragon-returns.md +631 -0
- neonrp-0.1.0/examples/stoneford-storylines/E-depth-walkers.md +706 -0
- neonrp-0.1.0/examples/stoneford-storylines/_CHECKER_REPORT.md +245 -0
- neonrp-0.1.0/examples/stoneford-storylines/_SHARED_BRIEF.md +121 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/A-guild-buried-charter.zh.md +203 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/B-world-before-the-fog.zh.md +420 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/C-four-crown-intrigue.zh.md +707 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/D-iron-dragon-returns.zh.md +298 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/E-depth-walkers.zh.md +684 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/_CHECKER_REPORT.zh.md +247 -0
- neonrp-0.1.0/examples/stoneford-storylines/zh/_SHARED_BRIEF.zh.md +125 -0
- neonrp-0.1.0/install.sh +77 -0
- neonrp-0.1.0/packaging/worldlines/README.md +15 -0
- neonrp-0.1.0/packaging/worldlines/pyproject.toml +33 -0
- neonrp-0.1.0/packaging/worldlines/worldlines_shim/__init__.py +8 -0
- neonrp-0.1.0/perf-smoke-play/agents/dungeon-agent/agent.json +48 -0
- neonrp-0.1.0/perf-smoke-play/agents/narrator/agent.json +52 -0
- neonrp-0.1.0/perf-smoke-play/agents/narrator/system.md +81 -0
- neonrp-0.1.0/perf-smoke-play/agents/town-agent/agent.json +48 -0
- neonrp-0.1.0/perf-smoke-play/game/dungeon/dark-cave.json +23 -0
- neonrp-0.1.0/perf-smoke-play/game/item/health-potion.json +16 -0
- neonrp-0.1.0/perf-smoke-play/game/item/iron-sword.json +13 -0
- neonrp-0.1.0/perf-smoke-play/game/location/forest-path.json +18 -0
- neonrp-0.1.0/perf-smoke-play/game/meta/active-agent.json +7 -0
- neonrp-0.1.0/perf-smoke-play/game/meta/game-start.json +33 -0
- neonrp-0.1.0/perf-smoke-play/game/meta/quest-the-sage-seal.json +26 -0
- neonrp-0.1.0/perf-smoke-play/game/npc/cave-goblin.json +20 -0
- neonrp-0.1.0/perf-smoke-play/game/npc/forest-goblin.json +20 -0
- neonrp-0.1.0/perf-smoke-play/game/npc/goblin-chief.json +27 -0
- neonrp-0.1.0/perf-smoke-play/game/npc/old-sage.json +16 -0
- neonrp-0.1.0/perf-smoke-play/game/player/player.json +17 -0
- neonrp-0.1.0/perf-smoke-play/game/town/start-town.json +30 -0
- neonrp-0.1.0/perf-smoke-play/rules/README.md +16 -0
- neonrp-0.1.0/perf-smoke-play/rules/domain_rules.sample.json +94 -0
- neonrp-0.1.0/perf-smoke-play/rules/game_entity.schema.json +199 -0
- neonrp-0.1.0/perf-smoke-play/skills/entity-authoring/SKILL.md +47 -0
- neonrp-0.1.0/prompts/code_review.md +70 -0
- neonrp-0.1.0/pyproject.toml +76 -0
- neonrp-0.1.0/reviews/M0_review_20260129.md +42 -0
- neonrp-0.1.0/reviews/M10_review_20260208.md +83 -0
- neonrp-0.1.0/reviews/M11_review_20260210.md +90 -0
- neonrp-0.1.0/reviews/M1_review_20260129.md +55 -0
- neonrp-0.1.0/reviews/M2_review_20260130.md +127 -0
- neonrp-0.1.0/reviews/M3_review_20260130.md +15 -0
- neonrp-0.1.0/reviews/M4_review_20260131.md +31 -0
- neonrp-0.1.0/reviews/M5_review_20260201.md +53 -0
- neonrp-0.1.0/reviews/M6.5_review_20260202.md +39 -0
- neonrp-0.1.0/reviews/M6_review_20260202.md +30 -0
- neonrp-0.1.0/reviews/M7_comprehensive_gap_analysis.md +585 -0
- neonrp-0.1.0/reviews/M7_review_20260202.md +24 -0
- neonrp-0.1.0/reviews/M8_comprehensive_review.md +308 -0
- neonrp-0.1.0/reviews/M8_hands_on_test_report.md +271 -0
- neonrp-0.1.0/reviews/M8_review_20260203.md +39 -0
- neonrp-0.1.0/reviews/M9_gap_assessment.md +121 -0
- neonrp-0.1.0/reviews/M9_review_20260207.md +81 -0
- neonrp-0.1.0/reviews/code_review_20260216.md +100 -0
- neonrp-0.1.0/reviews/coverage_report_20260209.md +78 -0
- neonrp-0.1.0/reviews/diagnostic_report.md +260 -0
- neonrp-0.1.0/scripts/qa.py +60 -0
- neonrp-0.1.0/skills/combat/SKILL.md +29 -0
- neonrp-0.1.0/skills/entity-authoring/SKILL.md +49 -0
- neonrp-0.1.0/skills/narrative/SKILL.md +27 -0
- neonrp-0.1.0/skills/sub-agent-orchestration/SKILL.md +45 -0
- neonrp-0.1.0/skills/tavern-game-import/SKILL.md +228 -0
- neonrp-0.1.0/skills/world-building/SKILL.md +28 -0
- neonrp-0.1.0/src/neonrp/__init__.py +3 -0
- neonrp-0.1.0/src/neonrp/__main__.py +6 -0
- neonrp-0.1.0/src/neonrp/bridges/__init__.py +20 -0
- neonrp-0.1.0/src/neonrp/bridges/discord_bridge.py +494 -0
- neonrp-0.1.0/src/neonrp/bridges/hub.py +220 -0
- neonrp-0.1.0/src/neonrp/bridges/tui.py +55 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/__init__.py +1 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/character-card-authoring/SKILL.md +149 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/combat/SKILL.md +28 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/discord-bootstrap/SKILL.md +83 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/entity-authoring/SKILL.md +48 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/narrative/SKILL.md +26 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/player-character-authoring/SKILL.md +145 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/sub-agent-orchestration/SKILL.md +45 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/tavern-game-import/SKILL.md +228 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/world-building/SKILL.md +27 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/world-card-authoring/SKILL.md +130 -0
- neonrp-0.1.0/src/neonrp/builtin_skills/world-game-authoring/SKILL.md +139 -0
- neonrp-0.1.0/src/neonrp/cli.py +781 -0
- neonrp-0.1.0/src/neonrp/commands/agent.py +670 -0
- neonrp-0.1.0/src/neonrp/commands/branch.py +211 -0
- neonrp-0.1.0/src/neonrp/commands/context.py +187 -0
- neonrp-0.1.0/src/neonrp/commands/export_world.py +58 -0
- neonrp-0.1.0/src/neonrp/commands/find.py +158 -0
- neonrp-0.1.0/src/neonrp/commands/game.py +282 -0
- neonrp-0.1.0/src/neonrp/commands/import_cmd.py +99 -0
- neonrp-0.1.0/src/neonrp/commands/index.py +107 -0
- neonrp-0.1.0/src/neonrp/commands/init.py +35 -0
- neonrp-0.1.0/src/neonrp/commands/mcp.py +206 -0
- neonrp-0.1.0/src/neonrp/commands/replay.py +140 -0
- neonrp-0.1.0/src/neonrp/commands/run.py +151 -0
- neonrp-0.1.0/src/neonrp/commands/sandbox.py +349 -0
- neonrp-0.1.0/src/neonrp/commands/save.py +273 -0
- neonrp-0.1.0/src/neonrp/commands/self_update.py +87 -0
- neonrp-0.1.0/src/neonrp/commands/tui.py +61 -0
- neonrp-0.1.0/src/neonrp/commands/validate.py +68 -0
- neonrp-0.1.0/src/neonrp/core/active_agent.py +166 -0
- neonrp-0.1.0/src/neonrp/core/agent_runner.py +1178 -0
- neonrp-0.1.0/src/neonrp/core/apply.py +335 -0
- neonrp-0.1.0/src/neonrp/core/checkpoint.py +262 -0
- neonrp-0.1.0/src/neonrp/core/config.py +688 -0
- neonrp-0.1.0/src/neonrp/core/conversation.py +3384 -0
- neonrp-0.1.0/src/neonrp/core/diffing.py +166 -0
- neonrp-0.1.0/src/neonrp/core/discord_config.py +152 -0
- neonrp-0.1.0/src/neonrp/core/dispatcher.py +270 -0
- neonrp-0.1.0/src/neonrp/core/embedding.py +302 -0
- neonrp-0.1.0/src/neonrp/core/event_log.py +70 -0
- neonrp-0.1.0/src/neonrp/core/hashing.py +76 -0
- neonrp-0.1.0/src/neonrp/core/importers/__init__.py +0 -0
- neonrp-0.1.0/src/neonrp/core/importers/png_extract.py +109 -0
- neonrp-0.1.0/src/neonrp/core/importers/sillytavern.py +218 -0
- neonrp-0.1.0/src/neonrp/core/indexing.py +297 -0
- neonrp-0.1.0/src/neonrp/core/llm.py +464 -0
- neonrp-0.1.0/src/neonrp/core/llm_anthropic.py +267 -0
- neonrp-0.1.0/src/neonrp/core/llm_errors.py +51 -0
- neonrp-0.1.0/src/neonrp/core/llm_openai.py +1077 -0
- neonrp-0.1.0/src/neonrp/core/llm_stub.py +269 -0
- neonrp-0.1.0/src/neonrp/core/manifest.py +59 -0
- neonrp-0.1.0/src/neonrp/core/mcp_client.py +246 -0
- neonrp-0.1.0/src/neonrp/core/mcp_pool.py +208 -0
- neonrp-0.1.0/src/neonrp/core/paths.py +89 -0
- neonrp-0.1.0/src/neonrp/core/permissions.py +279 -0
- neonrp-0.1.0/src/neonrp/core/prompts.py +299 -0
- neonrp-0.1.0/src/neonrp/core/proposal.py +169 -0
- neonrp-0.1.0/src/neonrp/core/replay.py +486 -0
- neonrp-0.1.0/src/neonrp/core/retrieval.py +295 -0
- neonrp-0.1.0/src/neonrp/core/rules.py +731 -0
- neonrp-0.1.0/src/neonrp/core/runtime_contract.py +393 -0
- neonrp-0.1.0/src/neonrp/core/semantic_events.py +258 -0
- neonrp-0.1.0/src/neonrp/core/session.py +322 -0
- neonrp-0.1.0/src/neonrp/core/skill_loader.py +218 -0
- neonrp-0.1.0/src/neonrp/core/skills.py +1565 -0
- neonrp-0.1.0/src/neonrp/core/state.py +88 -0
- neonrp-0.1.0/src/neonrp/core/storage.py +164 -0
- neonrp-0.1.0/src/neonrp/core/system_proposal.py +169 -0
- neonrp-0.1.0/src/neonrp/core/template_assets.py +528 -0
- neonrp-0.1.0/src/neonrp/core/todo.py +98 -0
- neonrp-0.1.0/src/neonrp/core/tool_router.py +374 -0
- neonrp-0.1.0/src/neonrp/core/updater.py +376 -0
- neonrp-0.1.0/src/neonrp/core/user_config.py +76 -0
- neonrp-0.1.0/src/neonrp/core/validation.py +213 -0
- neonrp-0.1.0/src/neonrp/core/world_export.py +178 -0
- neonrp-0.1.0/src/neonrp/kernel.py +142 -0
- neonrp-0.1.0/src/neonrp/mcp_server.py +381 -0
- neonrp-0.1.0/src/neonrp/players.py +330 -0
- neonrp-0.1.0/src/neonrp/presets.py +711 -0
- neonrp-0.1.0/src/neonrp/schema/__init__.py +1 -0
- neonrp-0.1.0/src/neonrp/schema/game_entity.schema.json +199 -0
- neonrp-0.1.0/src/neonrp/templates/__init__.py +2 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/agents/narrator/agent.json +55 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/agents/narrator/system.md +49 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/agents/puzzle-agent/agent.json +53 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/item/key-fragment.json +16 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/item/torn-ticket.json +16 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/carriage-1.json +30 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/carriage-2.json +33 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/carriage-3.json +31 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/carriage-4.json +33 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/carriage-5.json +31 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/carriage-6.json +34 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/location/connector-passage.json +28 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/meta/active-agent.json +10 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/meta/game-start.json +29 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/meta/quest-reach-carriage-1.json +20 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/npc/child-with-bear.json +23 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/npc/mysterious-conductor.json +22 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/npc/nervous-woman.json +22 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/npc/sleeping-old-man.json +22 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/game/player/player.json +20 -0
- neonrp-0.1.0/src/neonrp/templates/dark-train/runtime_contract.json +27 -0
- neonrp-0.1.0/src/neonrp/templates/default/agents/dungeon-agent/agent.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/default/agents/narrator/agent.json +55 -0
- neonrp-0.1.0/src/neonrp/templates/default/agents/narrator/system.md +46 -0
- neonrp-0.1.0/src/neonrp/templates/default/agents/town-agent/agent.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/dungeon/dark-cave.json +24 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/item/health-potion.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/item/iron-sword.json +14 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/location/forest-path.json +19 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/meta/active-agent.json +11 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/meta/game-start.json +33 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/meta/quest-the-sage-seal.json +26 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/npc/cave-goblin.json +20 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/npc/forest-goblin.json +20 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/npc/goblin-chief.json +27 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/npc/old-sage.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/player/player.json +18 -0
- neonrp-0.1.0/src/neonrp/templates/default/game/town/start-town.json +31 -0
- neonrp-0.1.0/src/neonrp/templates/default/runtime_contract.json +29 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/agents/dungeon-agent/agent.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/agents/narrator/agent.json +56 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/agents/narrator/system.md +51 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/agents/town-agent/agent.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/dungeon/first-dungeon.json +28 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/item/health-potion.json +16 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/item/starter-sword.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/meta/active-agent.json +10 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/meta/game-start.json +29 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/meta/quest-first-mission.json +25 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/npc/companion.json +21 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/npc/guild-master.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/npc/merchant.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/player/player.json +27 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/town/guild-hall.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/game/town/starter-village.json +32 -0
- neonrp-0.1.0/src/neonrp/templates/isekai/runtime_contract.json +28 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/character-agent.md +93 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/clock-keeper.md +49 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/combat-referee.md +136 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/dungeon-agent.md +106 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/notary-archivist.md +47 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/rules-referee.md +113 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/story-narrative.md +41 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/town-agent.md +124 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/world-agent.md +280 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/world-builder.md +39 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/.claude/agents/world-evolution.md +49 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/CLAUDE.md +33 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/README.md +43 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/character-agent/agent.json +36 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/character-agent/system.md +85 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/clock-keeper/agent.json +39 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/clock-keeper/system.md +41 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/combat-referee/agent.json +49 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/combat-referee/system.md +160 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/dungeon-agent/agent.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/dungeon-agent/system.md +155 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/rules-referee/agent.json +42 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/rules-referee/system.md +178 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/story-narrative/agent.json +35 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/story-narrative/system.md +33 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/town-agent/agent.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/town-agent/system.md +189 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-agent/agent.json +48 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-agent/narrative.md +43 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-agent/system.md +347 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-builder/agent.json +44 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-builder/system.md +104 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-evolution/agent.json +36 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/agents/world-evolution/system.md +41 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/agents/contracts/contracts.md +34 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/agents/manifest.json +137 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/dungeon.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/encounter_tables.json +33 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/layout.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/loot_tables.json +30 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/rooms/D001_R001.json +13 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/rooms/D001_R002.json +13 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/rooms/D001_R003.json +14 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/dungeons/D001/rooms/D001_R004.json +13 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/lore/notes.md +14 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/lore/rumors.md +4 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/lore/story.md +7 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/meta/active-agent.json +7 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/meta/flag_aliases.json +47 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/meta/game-start.json +39 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/meta/run_state.json +16 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/meta/schedule.json +9 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/equipment.json +20 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/flags.json +15 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/inventory.json +13 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/journal.md +4 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/profile.json +6 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/stats.json +33 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/player/wallet.json +5 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/rules/combat_rules.md +21 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/facilities/guild.json +78 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/facilities/inn.json +17 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/facilities/shop_general.json +32 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/facilities/townhall.json +12 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/npcs.json +41 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/quests.json +54 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/town.json +29 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T001/town_map.json +107 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/facilities/appraiser.json +42 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/facilities/chapel.json +35 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/facilities/guild.json +59 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/facilities/herb_shop.json +68 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/facilities/shop_general.json +69 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/facilities/tavern.json +30 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/npcs.json +68 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/quests.json +49 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/town.json +34 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/towns/T004/town_map.json +97 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/game/world/world_map.json +240 -0
- neonrp-0.1.0/src/neonrp/templates/stoneford-orch/runtime_contract.json +5 -0
- neonrp-0.1.0/src/neonrp/tui/__init__.py +1 -0
- neonrp-0.1.0/src/neonrp/tui/app.py +8839 -0
- neonrp-0.1.0/src/neonrp/tui/commands.py +313 -0
- neonrp-0.1.0/src/neonrp/tui/i18n.py +685 -0
- neonrp-0.1.0/src/neonrp/tui/palette.py +117 -0
- neonrp-0.1.0/src/neonrp/tui/panels/__init__.py +1 -0
- neonrp-0.1.0/src/neonrp/tui/panels/diff_view.py +97 -0
- neonrp-0.1.0/src/neonrp/tui/panels/file_viewer.py +108 -0
- neonrp-0.1.0/src/neonrp/tui/panels/logs.py +169 -0
- neonrp-0.1.0/src/neonrp/tui/settings_flow.py +666 -0
- neonrp-0.1.0/src/neonrp/tui/suggestions.py +177 -0
- neonrp-0.1.0/src/neonrp/worlds.py +126 -0
- neonrp-0.1.0/tests/fixtures/echo_mcp_server.py +35 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/agents/dungeon-agent/agent.json +12 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/agents/dungeon-agent/system.md +3 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/agents/narrator/agent.json +13 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/agents/narrator/system.md +3 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/agents/town-agent/agent.json +12 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/agents/town-agent/system.md +3 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/game/dungeon/moss-catacomb.json +5 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/game/meta/active-agent.json +9 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/game/meta/game-start.json +19 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/game/player/player.json +6 -0
- neonrp-0.1.0/tests/fixtures/m12/minimal-routing-world/game/town/start-town.json +5 -0
- neonrp-0.1.0/tests/test_active_agent.py +181 -0
- neonrp-0.1.0/tests/test_agent_cli.py +580 -0
- neonrp-0.1.0/tests/test_agent_runner.py +345 -0
- neonrp-0.1.0/tests/test_app.py +3371 -0
- neonrp-0.1.0/tests/test_apply.py +257 -0
- neonrp-0.1.0/tests/test_ask_user.py +327 -0
- neonrp-0.1.0/tests/test_checkpoint.py +351 -0
- neonrp-0.1.0/tests/test_cli_logging.py +86 -0
- neonrp-0.1.0/tests/test_cli_m1.py +212 -0
- neonrp-0.1.0/tests/test_config.py +624 -0
- neonrp-0.1.0/tests/test_conversation.py +936 -0
- neonrp-0.1.0/tests/test_conversation_edges.py +2403 -0
- neonrp-0.1.0/tests/test_conversation_subagent_routing.py +358 -0
- neonrp-0.1.0/tests/test_core.py +67 -0
- neonrp-0.1.0/tests/test_diffing.py +192 -0
- neonrp-0.1.0/tests/test_dispatcher.py +272 -0
- neonrp-0.1.0/tests/test_embedding.py +302 -0
- neonrp-0.1.0/tests/test_entity_schema.py +304 -0
- neonrp-0.1.0/tests/test_event_log.py +102 -0
- neonrp-0.1.0/tests/test_game_cli.py +233 -0
- neonrp-0.1.0/tests/test_hashing.py +132 -0
- neonrp-0.1.0/tests/test_import.py +431 -0
- neonrp-0.1.0/tests/test_indexing.py +272 -0
- neonrp-0.1.0/tests/test_llm.py +400 -0
- neonrp-0.1.0/tests/test_llm_anthropic.py +146 -0
- neonrp-0.1.0/tests/test_llm_e2e.py +257 -0
- neonrp-0.1.0/tests/test_llm_openai_extra.py +59 -0
- neonrp-0.1.0/tests/test_llm_real_endpoint.py +68 -0
- neonrp-0.1.0/tests/test_llm_retry.py +293 -0
- neonrp-0.1.0/tests/test_llm_streaming.py +358 -0
- neonrp-0.1.0/tests/test_m8_integration.py +658 -0
- neonrp-0.1.0/tests/test_mcp_cli.py +131 -0
- neonrp-0.1.0/tests/test_mcp_client.py +163 -0
- neonrp-0.1.0/tests/test_mcp_pool.py +193 -0
- neonrp-0.1.0/tests/test_per_agent_llm.py +387 -0
- neonrp-0.1.0/tests/test_permissions.py +178 -0
- neonrp-0.1.0/tests/test_png_extract.py +181 -0
- neonrp-0.1.0/tests/test_prompts.py +189 -0
- neonrp-0.1.0/tests/test_proposal.py +162 -0
- neonrp-0.1.0/tests/test_replay.py +314 -0
- neonrp-0.1.0/tests/test_retrieval.py +180 -0
- neonrp-0.1.0/tests/test_retrieval_fuzzy.py +258 -0
- neonrp-0.1.0/tests/test_rules.py +520 -0
- neonrp-0.1.0/tests/test_runtime_contract.py +168 -0
- neonrp-0.1.0/tests/test_sandbox.py +358 -0
- neonrp-0.1.0/tests/test_save.py +128 -0
- neonrp-0.1.0/tests/test_search_skills.py +350 -0
- neonrp-0.1.0/tests/test_semantic_events.py +90 -0
- neonrp-0.1.0/tests/test_session.py +324 -0
- neonrp-0.1.0/tests/test_skill_loader.py +215 -0
- neonrp-0.1.0/tests/test_skills.py +631 -0
- neonrp-0.1.0/tests/test_state.py +71 -0
- neonrp-0.1.0/tests/test_streaming.py +316 -0
- neonrp-0.1.0/tests/test_sub_agent.py +157 -0
- neonrp-0.1.0/tests/test_template_assets.py +72 -0
- neonrp-0.1.0/tests/test_todo.py +82 -0
- neonrp-0.1.0/tests/test_token_budget.py +165 -0
- neonrp-0.1.0/tests/test_tool_router.py +280 -0
- neonrp-0.1.0/tests/test_tool_validation.py +459 -0
- neonrp-0.1.0/tests/test_tui_cli.py +155 -0
- neonrp-0.1.0/tests/test_tui_commands.py +216 -0
- neonrp-0.1.0/tests/test_tui_suggestions.py +125 -0
- neonrp-0.1.0/tests/test_validation.py +161 -0
- neonrp-0.1.0/tests/test_worldlines_cli.py +87 -0
- neonrp-0.1.0/tests/test_write_skills.py +501 -0
- neonrp-0.1.0/uv.lock +2484 -0
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# NeonRP Environment Configuration Example
|
|
2
|
+
# Copy this file to .env and fill in your values
|
|
3
|
+
|
|
4
|
+
# =============================================================================
|
|
5
|
+
# GLM (Zhipu AI) Configuration
|
|
6
|
+
# =============================================================================
|
|
7
|
+
# Get your API key from: https://open.bigmodel.cn/
|
|
8
|
+
GLM_API_KEY=your_api_key_here
|
|
9
|
+
GLM_BASE_URL=https://open.bigmodel.cn/api/paas/v4
|
|
10
|
+
GLM_MODEL=glm-4-flashx-250414
|
|
11
|
+
|
|
12
|
+
# Optional GLM settings
|
|
13
|
+
GLM_TEMPERATURE=0.1
|
|
14
|
+
GLM_TOP_P=0.9
|
|
15
|
+
GLM_MAX_TOKENS=4096
|
|
16
|
+
GLM_RESPONSE_FORMAT=json_object
|
|
17
|
+
|
|
18
|
+
# =============================================================================
|
|
19
|
+
# OpenAI Configuration (alternative to GLM)
|
|
20
|
+
# =============================================================================
|
|
21
|
+
# OPENAI_API_KEY=sk-your-openai-key-here
|
|
22
|
+
# OPENAI_BASE_URL=https://api.openai.com/v1
|
|
23
|
+
# OPENAI_MODEL=gpt-4o
|
|
24
|
+
|
|
25
|
+
# =============================================================================
|
|
26
|
+
# E2E Testing
|
|
27
|
+
# =============================================================================
|
|
28
|
+
# Set to 1 to enable real LLM E2E tests (requires API key)
|
|
29
|
+
# NEONRP_E2E_LLM=1
|
|
30
|
+
|
|
31
|
+
# =============================================================================
|
|
32
|
+
# Other Settings
|
|
33
|
+
# =============================================================================
|
|
34
|
+
MAX_WORKERS=1
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Normalize text files to LF in repository and working tree.
|
|
2
|
+
* text=auto eol=lf
|
|
3
|
+
|
|
4
|
+
# Windows shell scripts keep CRLF for compatibility.
|
|
5
|
+
*.bat text eol=crlf
|
|
6
|
+
*.cmd text eol=crlf
|
|
7
|
+
|
|
8
|
+
# Common binary formats (never line-normalize).
|
|
9
|
+
*.png binary
|
|
10
|
+
*.jpg binary
|
|
11
|
+
*.jpeg binary
|
|
12
|
+
*.gif binary
|
|
13
|
+
*.bmp binary
|
|
14
|
+
*.ico binary
|
|
15
|
+
*.pdf binary
|
|
16
|
+
*.zip binary
|
|
17
|
+
*.gz binary
|
|
18
|
+
*.7z binary
|
|
19
|
+
*.tar binary
|
|
20
|
+
*.jar binary
|
|
21
|
+
*.dll binary
|
|
22
|
+
*.exe binary
|
|
23
|
+
*.pyd binary
|
|
24
|
+
*.so binary
|
|
25
|
+
*.dylib binary
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
#!/usr/bin/env bash
|
|
2
|
+
set -euo pipefail
|
|
3
|
+
|
|
4
|
+
# Normalize staged files according to .gitattributes before commit.
|
|
5
|
+
mapfile -d '' -t staged < <(git diff --cached --name-only -z --diff-filter=ACMR)
|
|
6
|
+
|
|
7
|
+
if [ "${#staged[@]}" -eq 0 ]; then
|
|
8
|
+
exit 0
|
|
9
|
+
fi
|
|
10
|
+
|
|
11
|
+
git add --renormalize -- "${staged[@]}"
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
name: release
|
|
2
|
+
|
|
3
|
+
# Publishes both `neonrp` and `worldlines` to PyPI via Trusted Publishing (OIDC).
|
|
4
|
+
#
|
|
5
|
+
# One-time PyPI setup required on the PyPI project page for EACH of the two
|
|
6
|
+
# projects (neonrp and worldlines), under "Publishing":
|
|
7
|
+
#
|
|
8
|
+
# - Owner: LudicDynamics
|
|
9
|
+
# Repo: NeonRP
|
|
10
|
+
# Workflow: release.yml
|
|
11
|
+
# Environment: pypi
|
|
12
|
+
#
|
|
13
|
+
# PyPI accepts OIDC tokens that match ANY configured trusted publisher; if
|
|
14
|
+
# this project later moves between orgs, register the new owner as another
|
|
15
|
+
# pending publisher before pushing the first tag from there. See
|
|
16
|
+
# `docs/releases.md → Owner handoff` for the full migration steps.
|
|
17
|
+
#
|
|
18
|
+
# Tag format: v0.3.4 → publishes neonrp==0.3.4 and worldlines==0.3.4
|
|
19
|
+
|
|
20
|
+
on:
|
|
21
|
+
push:
|
|
22
|
+
tags:
|
|
23
|
+
- "v*"
|
|
24
|
+
workflow_dispatch:
|
|
25
|
+
inputs:
|
|
26
|
+
dry_run:
|
|
27
|
+
description: "Build only; do not publish"
|
|
28
|
+
required: false
|
|
29
|
+
default: "false"
|
|
30
|
+
|
|
31
|
+
concurrency:
|
|
32
|
+
group: release-${{ github.ref }}
|
|
33
|
+
cancel-in-progress: false
|
|
34
|
+
|
|
35
|
+
jobs:
|
|
36
|
+
build:
|
|
37
|
+
runs-on: ubuntu-latest
|
|
38
|
+
outputs:
|
|
39
|
+
version: ${{ steps.version.outputs.version }}
|
|
40
|
+
steps:
|
|
41
|
+
- uses: actions/checkout@v4
|
|
42
|
+
|
|
43
|
+
- name: Install uv
|
|
44
|
+
uses: astral-sh/setup-uv@v3
|
|
45
|
+
with:
|
|
46
|
+
enable-cache: true
|
|
47
|
+
|
|
48
|
+
- name: Set up Python
|
|
49
|
+
run: uv python install 3.12
|
|
50
|
+
|
|
51
|
+
- name: Derive version from tag (or pyproject)
|
|
52
|
+
id: version
|
|
53
|
+
shell: bash
|
|
54
|
+
run: |
|
|
55
|
+
ref="${GITHUB_REF##*/}"
|
|
56
|
+
if [[ "${GITHUB_REF_TYPE}" == "tag" && "${ref}" =~ ^v ]]; then
|
|
57
|
+
version="${ref#v}"
|
|
58
|
+
else
|
|
59
|
+
version=$(awk -F'"' '/^version *=/{print $2; exit}' pyproject.toml)
|
|
60
|
+
fi
|
|
61
|
+
echo "version=${version}" >> "$GITHUB_OUTPUT"
|
|
62
|
+
echo "Using version: ${version}"
|
|
63
|
+
|
|
64
|
+
- name: Sync version into pyproject.toml files
|
|
65
|
+
shell: bash
|
|
66
|
+
run: |
|
|
67
|
+
version="${{ steps.version.outputs.version }}"
|
|
68
|
+
# neonrp
|
|
69
|
+
sed -i -E "s/^version *= *\".*\"/version = \"${version}\"/" pyproject.toml
|
|
70
|
+
# worldlines shim + pinned neonrp dependency
|
|
71
|
+
sed -i -E "s/^version *= *\".*\"/version = \"${version}\"/" packaging/worldlines/pyproject.toml
|
|
72
|
+
sed -i -E "s/\"neonrp==[^\"]*\"/\"neonrp==${version}\"/" packaging/worldlines/pyproject.toml
|
|
73
|
+
grep -E "^version" pyproject.toml packaging/worldlines/pyproject.toml
|
|
74
|
+
|
|
75
|
+
- name: Build neonrp distribution
|
|
76
|
+
run: |
|
|
77
|
+
uv build --out-dir dist/neonrp
|
|
78
|
+
|
|
79
|
+
- name: Build worldlines distribution
|
|
80
|
+
working-directory: packaging/worldlines
|
|
81
|
+
run: |
|
|
82
|
+
uv build --out-dir ../../dist/worldlines
|
|
83
|
+
|
|
84
|
+
- name: Upload artifacts
|
|
85
|
+
uses: actions/upload-artifact@v4
|
|
86
|
+
with:
|
|
87
|
+
name: dist
|
|
88
|
+
path: dist/
|
|
89
|
+
retention-days: 7
|
|
90
|
+
|
|
91
|
+
publish-neonrp:
|
|
92
|
+
needs: build
|
|
93
|
+
if: ${{ github.event_name == 'push' || github.event.inputs.dry_run != 'true' }}
|
|
94
|
+
runs-on: ubuntu-latest
|
|
95
|
+
environment:
|
|
96
|
+
# Per-project environment: PyPI's pending-publisher table is unique
|
|
97
|
+
# by (owner, repo, workflow, environment) — even across different
|
|
98
|
+
# project names — so the two PyPI projects need two distinct
|
|
99
|
+
# environment names to register side-by-side.
|
|
100
|
+
name: pypi-neonrp
|
|
101
|
+
url: https://pypi.org/p/neonrp
|
|
102
|
+
permissions:
|
|
103
|
+
id-token: write # required for OIDC trusted publishing
|
|
104
|
+
steps:
|
|
105
|
+
- name: Download artifacts
|
|
106
|
+
uses: actions/download-artifact@v4
|
|
107
|
+
with:
|
|
108
|
+
name: dist
|
|
109
|
+
path: dist/
|
|
110
|
+
|
|
111
|
+
- name: Publish neonrp to PyPI
|
|
112
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
113
|
+
with:
|
|
114
|
+
packages-dir: dist/neonrp
|
|
115
|
+
|
|
116
|
+
publish-worldlines:
|
|
117
|
+
needs: [build, publish-neonrp]
|
|
118
|
+
if: ${{ github.event_name == 'push' || github.event.inputs.dry_run != 'true' }}
|
|
119
|
+
runs-on: ubuntu-latest
|
|
120
|
+
environment:
|
|
121
|
+
name: pypi-worldlines
|
|
122
|
+
url: https://pypi.org/p/worldlines
|
|
123
|
+
permissions:
|
|
124
|
+
id-token: write
|
|
125
|
+
steps:
|
|
126
|
+
- name: Download artifacts
|
|
127
|
+
uses: actions/download-artifact@v4
|
|
128
|
+
with:
|
|
129
|
+
name: dist
|
|
130
|
+
path: dist/
|
|
131
|
+
|
|
132
|
+
- name: Publish worldlines to PyPI
|
|
133
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
134
|
+
with:
|
|
135
|
+
packages-dir: dist/worldlines
|
|
136
|
+
|
|
137
|
+
publish-release-manifest:
|
|
138
|
+
# Dual-host releases.json + install.sh so users have a fallback path:
|
|
139
|
+
#
|
|
140
|
+
# Primary: S3 bucket (fronted by worldlines.gg via Cloudflare)
|
|
141
|
+
# Fallback: LudicDynamics/WorldLines GitHub Release assets
|
|
142
|
+
#
|
|
143
|
+
# Both are uploaded fresh on every tag. S3 upload uses OIDC to assume
|
|
144
|
+
# an AWS IAM role (no long-lived AWS keys in secrets). GitHub Release
|
|
145
|
+
# creation uses the cross-repo PAT since the source repo is private.
|
|
146
|
+
#
|
|
147
|
+
# Required:
|
|
148
|
+
# secrets.WORLDLINES_RELEASE_TOKEN — fine-grained PAT scoped to
|
|
149
|
+
# LudicDynamics/WorldLines with Contents: read/write.
|
|
150
|
+
#
|
|
151
|
+
# Optional (skip cleanly if unset):
|
|
152
|
+
# vars.S3_RELEASE_ROLE_ARN — IAM role the OIDC token will assume
|
|
153
|
+
# vars.S3_RELEASE_BUCKET — target bucket (e.g. worldlines-releases)
|
|
154
|
+
# vars.S3_RELEASE_REGION — AWS region (e.g. ap-northeast-1)
|
|
155
|
+
#
|
|
156
|
+
# When the S3 vars are missing the S3 upload step short-circuits and
|
|
157
|
+
# only the GitHub Release is created — useful during initial bootstrap.
|
|
158
|
+
needs: [publish-neonrp, publish-worldlines]
|
|
159
|
+
if: ${{ github.event_name == 'push' }}
|
|
160
|
+
runs-on: ubuntu-latest
|
|
161
|
+
permissions:
|
|
162
|
+
id-token: write # required for AWS OIDC trust exchange
|
|
163
|
+
contents: read
|
|
164
|
+
steps:
|
|
165
|
+
- uses: actions/checkout@v4
|
|
166
|
+
|
|
167
|
+
- name: Build releases.json
|
|
168
|
+
id: manifest
|
|
169
|
+
shell: bash
|
|
170
|
+
run: |
|
|
171
|
+
version="${GITHUB_REF##*/v}"
|
|
172
|
+
cat > releases.json <<EOF
|
|
173
|
+
{
|
|
174
|
+
"product": "neonrp",
|
|
175
|
+
"latest": { "stable": "${version}" },
|
|
176
|
+
"releases": {
|
|
177
|
+
"${version}": {
|
|
178
|
+
"channel": "stable",
|
|
179
|
+
"published_at": "$(date -u +%Y-%m-%dT%H:%M:%SZ)",
|
|
180
|
+
"notes_url": "https://github.com/LudicDynamics/WorldLines/releases/tag/v${version}",
|
|
181
|
+
"artifacts": {
|
|
182
|
+
"python-wheel": {
|
|
183
|
+
"kind": "pypi",
|
|
184
|
+
"version": "${version}",
|
|
185
|
+
"packages": ["neonrp", "worldlines"]
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
EOF
|
|
192
|
+
|
|
193
|
+
- name: Publish release on LudicDynamics/WorldLines with assets
|
|
194
|
+
uses: softprops/action-gh-release@v2
|
|
195
|
+
with:
|
|
196
|
+
repository: LudicDynamics/WorldLines
|
|
197
|
+
token: ${{ secrets.WORLDLINES_RELEASE_TOKEN }}
|
|
198
|
+
tag_name: ${{ github.ref_name }}
|
|
199
|
+
# Creates the tag on WorldLines' default branch (its HEAD at the
|
|
200
|
+
# time this job runs). `target_commitish` is optional; omitting
|
|
201
|
+
# it uses the default branch, which matches what we want for
|
|
202
|
+
# docs-only repos.
|
|
203
|
+
name: ${{ github.ref_name }}
|
|
204
|
+
generate_release_notes: false
|
|
205
|
+
files: |
|
|
206
|
+
releases.json
|
|
207
|
+
install.sh
|
|
208
|
+
|
|
209
|
+
# --- S3 primary (OIDC, best-effort) -----------------------------
|
|
210
|
+
# Skip cleanly if the S3 vars aren't configured yet — GitHub
|
|
211
|
+
# Release above is sufficient for a first release.
|
|
212
|
+
|
|
213
|
+
- name: Configure AWS credentials via OIDC
|
|
214
|
+
id: aws-auth
|
|
215
|
+
if: ${{ vars.S3_RELEASE_ROLE_ARN != '' }}
|
|
216
|
+
continue-on-error: true
|
|
217
|
+
uses: aws-actions/configure-aws-credentials@v4
|
|
218
|
+
with:
|
|
219
|
+
role-to-assume: ${{ vars.S3_RELEASE_ROLE_ARN }}
|
|
220
|
+
aws-region: ${{ vars.S3_RELEASE_REGION || 'ap-northeast-1' }}
|
|
221
|
+
audience: sts.amazonaws.com
|
|
222
|
+
|
|
223
|
+
- name: Upload releases.json + install.sh to S3
|
|
224
|
+
if: ${{ steps.aws-auth.outcome == 'success' }}
|
|
225
|
+
continue-on-error: true
|
|
226
|
+
shell: bash
|
|
227
|
+
env:
|
|
228
|
+
BUCKET: ${{ vars.S3_RELEASE_BUCKET }}
|
|
229
|
+
run: |
|
|
230
|
+
# Short TTL on releases.json so auto-update picks up new versions
|
|
231
|
+
# within ~5 min; longer on install.sh because it rarely changes
|
|
232
|
+
# and is also embedded in onboarding docs.
|
|
233
|
+
aws s3 cp releases.json "s3://${BUCKET}/releases.json" \
|
|
234
|
+
--cache-control "public, max-age=300" \
|
|
235
|
+
--content-type "application/json"
|
|
236
|
+
|
|
237
|
+
aws s3 cp install.sh "s3://${BUCKET}/install.sh" \
|
|
238
|
+
--cache-control "public, max-age=3600" \
|
|
239
|
+
--content-type "text/x-shellscript"
|
|
240
|
+
|
|
241
|
+
# Also drop a version-pinned copy so downgrade / pin-in-CI is easy.
|
|
242
|
+
version="${GITHUB_REF##*/v}"
|
|
243
|
+
aws s3 cp releases.json "s3://${BUCKET}/v${version}/releases.json" \
|
|
244
|
+
--cache-control "public, max-age=31536000, immutable" \
|
|
245
|
+
--content-type "application/json"
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
name: test
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, worldlines-dev]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
concurrency:
|
|
9
|
+
group: test-${{ github.ref }}
|
|
10
|
+
cancel-in-progress: true
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
lint-and-test:
|
|
14
|
+
runs-on: ${{ matrix.os }}
|
|
15
|
+
strategy:
|
|
16
|
+
fail-fast: false
|
|
17
|
+
matrix:
|
|
18
|
+
os: [ubuntu-latest, macos-latest, windows-latest]
|
|
19
|
+
python-version: ["3.10", "3.11", "3.12"]
|
|
20
|
+
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v4
|
|
23
|
+
|
|
24
|
+
- name: Install uv
|
|
25
|
+
uses: astral-sh/setup-uv@v3
|
|
26
|
+
with:
|
|
27
|
+
enable-cache: true
|
|
28
|
+
|
|
29
|
+
- name: Set up Python
|
|
30
|
+
run: uv python install ${{ matrix.python-version }}
|
|
31
|
+
|
|
32
|
+
- name: Sync dependencies
|
|
33
|
+
run: uv sync --all-extras --dev
|
|
34
|
+
|
|
35
|
+
- name: Lint (ruff)
|
|
36
|
+
run: uv run ruff check src tests
|
|
37
|
+
|
|
38
|
+
- name: Run tests
|
|
39
|
+
run: uv run pytest -q
|
|
40
|
+
env:
|
|
41
|
+
NEONRP_E2E_LLM: "0"
|
neonrp-0.1.0/.gitignore
ADDED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Environment & secrets
|
|
2
|
+
.env
|
|
3
|
+
.env.*
|
|
4
|
+
!.env.example
|
|
5
|
+
|
|
6
|
+
# Python
|
|
7
|
+
__pycache__/
|
|
8
|
+
*.py[cod]
|
|
9
|
+
*$py.class
|
|
10
|
+
*.so
|
|
11
|
+
*.egg-info/
|
|
12
|
+
dist/
|
|
13
|
+
build/
|
|
14
|
+
*.egg
|
|
15
|
+
|
|
16
|
+
# Virtual environments
|
|
17
|
+
.venv/
|
|
18
|
+
venv/
|
|
19
|
+
ENV/
|
|
20
|
+
|
|
21
|
+
# IDE
|
|
22
|
+
.vscode/
|
|
23
|
+
.idea/
|
|
24
|
+
*.swp
|
|
25
|
+
*.swo
|
|
26
|
+
*~
|
|
27
|
+
|
|
28
|
+
# OS
|
|
29
|
+
.DS_Store
|
|
30
|
+
Thumbs.db
|
|
31
|
+
|
|
32
|
+
# Testing
|
|
33
|
+
.pytest_cache/
|
|
34
|
+
.coverage
|
|
35
|
+
htmlcov/
|
|
36
|
+
|
|
37
|
+
# Local runtime / sandbox data (keep local, do not track)
|
|
38
|
+
/.neonrp/
|
|
39
|
+
.neonrp/
|
|
40
|
+
/my-rpg/
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
# Changelog (docs pack)
|
|
2
|
+
|
|
3
|
+
## v0.9.3 (2026-03-29)
|
|
4
|
+
- TUI build mode now works immediately after `neonrp init` in fresh directories, without requiring local agent scaffolding first.
|
|
5
|
+
- Added packaged builtin skills under `src/neonrp/builtin_skills/` and project-level skill loading now falls back to those builtin skills automatically.
|
|
6
|
+
- Added TUI Tavern import entry points:
|
|
7
|
+
- `neonrp tui --import-card <file> [--import-id <id>]`
|
|
8
|
+
- `/import sillytavern-card <file> [--id <id>]`
|
|
9
|
+
- Improved SillyTavern import ergonomics:
|
|
10
|
+
- PNG/JSON import tool is exposed to build-mode agents as `import_sillytavern_card(...)`
|
|
11
|
+
- non-ASCII card names now derive stable ASCII entity IDs instead of collapsing to `unnamed`
|
|
12
|
+
- agent tool can set destination path and visible name explicitly.
|
|
13
|
+
- Fixed Tavern "convert into full game" workflow:
|
|
14
|
+
- added `ensure_playable_scaffold(...)` to copy missing play agents/runtime scaffold
|
|
15
|
+
- normalized `game/meta/active-agent.json` to the canonical top-level `active_agent` protocol
|
|
16
|
+
- updated Tavern import skill/prompt guidance so generated worlds only claim playability after scaffold exists.
|
|
17
|
+
|
|
18
|
+
## v0.9.2 (2026-02-16)
|
|
19
|
+
- Added optional embedding-based retrieval pipeline:
|
|
20
|
+
- new `src/neonrp/core/embedding.py` (adapters + vector index persistence)
|
|
21
|
+
- hybrid fuzzy + vector ranking in `read_context` / `context`
|
|
22
|
+
- automatic fuzzy-only fallback when embedding is unavailable.
|
|
23
|
+
- `index build` now precomputes embeddings by default when `embedding.enabled=true`.
|
|
24
|
+
- Simplified embedding config workflow:
|
|
25
|
+
- supports minimal config with `embedding.enabled + embedding.model_ref`
|
|
26
|
+
- inherits provider/model/auth/base_url from `models[model_ref]`.
|
|
27
|
+
- Applied fixes from `reviews/code_review_20260216.md` across apply/save-load/permissions/CLI consistency paths.
|
|
28
|
+
- Added regression coverage for embedding and fuzzy retrieval:
|
|
29
|
+
- `tests/test_embedding.py`
|
|
30
|
+
- `tests/test_retrieval_fuzzy.py`
|
|
31
|
+
|
|
32
|
+
## v0.9.1 (2026-02-10)
|
|
33
|
+
- Added provider-specific request passthrough via model-level `extra` config (`models.<name>.extra`), including OpenRouter reasoning payloads.
|
|
34
|
+
- Fixed OpenAI-compatible extra parameter compatibility:
|
|
35
|
+
- unknown extra fields are now routed through `extra_body` instead of top-level kwargs
|
|
36
|
+
- avoids SDK errors like `unexpected keyword argument 'reasoning'`.
|
|
37
|
+
- Improved retry behavior for transient streaming failures:
|
|
38
|
+
- conversation loop now retries with fixed backoff `2s -> 7s -> 15s -> 30s`, then stops.
|
|
39
|
+
- streaming/network errors are now classified as retryable and propagated correctly.
|
|
40
|
+
- Improved `ask_user` UX in TUI:
|
|
41
|
+
- selected answer is shown inline in the conversation as a user-visible message
|
|
42
|
+
- restored sessions re-render historical `ask_user` selections
|
|
43
|
+
- tool card detail now shows `selected: ...` for `ask_user`.
|
|
44
|
+
- Test coverage updates for new behavior:
|
|
45
|
+
- added `tests/test_llm_openai_extra.py`
|
|
46
|
+
- expanded coverage in `test_conversation.py`, `test_conversation_edges.py`, `test_app_v2.py`, `test_llm_retry.py`, `test_llm_streaming.py`, `test_config.py`, `test_per_agent_llm.py`.
|
|
47
|
+
|
|
48
|
+
## v0.9
|
|
49
|
+
- **M10.1 delivered**: TUI/Conversation reliability and operability upgrades.
|
|
50
|
+
- Added **ESC interrupt** for in-flight LLM turns in conversational TUI.
|
|
51
|
+
- Added configurable per-turn tool-call ceiling via `tui.max_tool_rounds` in config.
|
|
52
|
+
- Added **incremental session history saving** (Claude Code-style persistence behavior).
|
|
53
|
+
- Added startup/session controls:
|
|
54
|
+
- `neonrp tui --continue` / `--new` / `--verbose`
|
|
55
|
+
- `/sessions` picker modal + `/continue` + `/new`
|
|
56
|
+
- `/verbose on|off|status` with debug JSONL logs.
|
|
57
|
+
- Improved TUI telemetry and lifecycle:
|
|
58
|
+
- real-time local token estimation in status bar
|
|
59
|
+
- safer quit path (`Ctrl+Q`) while requests are running.
|
|
60
|
+
- Todo workflow compatibility fixes:
|
|
61
|
+
- TodoWrite prompt now includes a **minimal valid example**
|
|
62
|
+
- todo validation aligned to mainstream UX (`<=1 in_progress`, `activeForm` optional, `done` alias accepted)
|
|
63
|
+
- todo rendering stabilized with literal markers ``[x]`` / ``[>]`` / ``[ ]``
|
|
64
|
+
- `/continue` now restores todo list from tool history.
|
|
65
|
+
- Documentation refresh:
|
|
66
|
+
- synced `README.md`, `DEV_README.md`, `docs/TUTORIAL.md`, `docs/ROADMAP.md` with latest TUI/session behavior.
|
|
67
|
+
|
|
68
|
+
## v0.8
|
|
69
|
+
- **M9 + M10 stabilization delivered** (conversation-first TUI, ask_user modal, markdown transcript, slash suggestion UX)
|
|
70
|
+
- Added coverage补测 wave focused on real runtime paths (not stub-only):
|
|
71
|
+
- `tests/test_conversation_edges.py`
|
|
72
|
+
- `tests/test_retrieval.py`
|
|
73
|
+
- `tests/test_tui_suggestions.py`
|
|
74
|
+
- `tests/test_llm_real_endpoint.py` (real endpoint e2e via `~/.neonrp/config.json`)
|
|
75
|
+
- Coverage report updated (`reviews/coverage_report_20260209.md`):
|
|
76
|
+
- Total coverage: **63% → 65%**
|
|
77
|
+
- `core/conversation.py`: 80% → 99%
|
|
78
|
+
- `core/retrieval.py`: 33% → 95%
|
|
79
|
+
- `tui/suggestions.py`: 0% → 99%
|
|
80
|
+
- Regression status updated: `803 passed, 7 skipped`
|
|
81
|
+
|
|
82
|
+
## v0.7
|
|
83
|
+
- **M4 Implementation**: Sandbox + Replay milestone complete (290 tests)
|
|
84
|
+
- **Pre-M4 Housekeeping**:
|
|
85
|
+
- H7: Fixed `load` command crash-safety (atomic rename strategy)
|
|
86
|
+
- H8: Fixed deprecated `datetime.utcnow()` → `datetime.now(timezone.utc)`
|
|
87
|
+
- H9: Added PNG character card import (pure Python tEXt chunk reader, no Pillow)
|
|
88
|
+
- Added `neonrp sandbox new|list|switch|drop` CLI commands
|
|
89
|
+
- Added `neonrp replay verify|checkout` CLI commands
|
|
90
|
+
- Added `core/hashing.py` — deterministic world tree hash utility
|
|
91
|
+
- Added `core/replay.py` — replay engine (staging-based, non-destructive)
|
|
92
|
+
- Added `core/system_proposal.py` — system proposal factory for import/game commands
|
|
93
|
+
- Added `core/paths.py:validate_branch_name()` — path traversal protection
|
|
94
|
+
- Extended `BranchMetadata` with `kind`/`parent`/`fork_event`/`base_save` for sandbox support
|
|
95
|
+
- Save now includes `meta.json` (game_hash, head_event, branch) and `events.jsonl` copy
|
|
96
|
+
- Atomic `events.jsonl` copy via temp file + `os.replace`
|
|
97
|
+
- Import and `game new` now generate system proposals through apply pipeline
|
|
98
|
+
- Sandbox switch invalidates `manifest.entities` with `index build` prompt
|
|
99
|
+
- Bumped manifest.version to `"0.3"`
|
|
100
|
+
- ADR 0011 (sandbox branch model), ADR 0012 (replay and determinism contract)
|
|
101
|
+
|
|
102
|
+
## v0.6
|
|
103
|
+
- **M3 Implementation**: LLM Integration + Skills + Import milestone complete (219 tests)
|
|
104
|
+
- **Pre-M3 Housekeeping**:
|
|
105
|
+
- H3: Fixed `agent.py:393` active_branch bug
|
|
106
|
+
- H4: Atomic world/ directory replacement in `apply.py`
|
|
107
|
+
- H5: Empty index warning in `retrieval.py`
|
|
108
|
+
- H6: Standardized delete hunk header in `diffing.py`
|
|
109
|
+
- Added LLM adapter Protocol (`core/llm.py`) with stub, OpenAI, and GLM providers
|
|
110
|
+
- Added skill tool registry (`core/skills.py`) with per-file deny-first permissions and JSONL audit logging
|
|
111
|
+
- Added `neonrp agent run <id> --query "..." [--provider] [--apply] [--json]` LLM-driven agent execution
|
|
112
|
+
- Added `neonrp import sillytavern-card` with v1/v2 JSON card support, ID conflict resolution, raw payload preservation
|
|
113
|
+
- Added `neonrp game new` scaffolding command with `--force`/`--json`
|
|
114
|
+
- Added project config `.neonrp/config.json` with provider/model/CLI defaults
|
|
115
|
+
- Added `.env` file loader for API key management
|
|
116
|
+
- ADR 0008 (LLM adapter), ADR 0009 (skill registry), ADR 0010 (SillyTavern import)
|
|
117
|
+
|
|
118
|
+
## v0.5
|
|
119
|
+
- **M2 Implementation**: Agents + Plan/Diff/Apply milestone complete (110 tests)
|
|
120
|
+
- Added `neonrp agent new|list|show|path` CLI commands with template generation
|
|
121
|
+
- Added `core/proposal.py` — Proposal/Op models with path validation
|
|
122
|
+
- Added `core/permissions.py` — deny-first glob matching permission engine
|
|
123
|
+
- Added `core/diffing.py` — stable unified diff generation
|
|
124
|
+
- Added `core/apply.py` — staging + validate + atomic swap apply pipeline
|
|
125
|
+
- Added `core/retrieval.py` — agent-scoped context retrieval
|
|
126
|
+
- Added `neonrp agent run --proposal --apply` and `neonrp agent logs` commands
|
|
127
|
+
- GameEvent model extended with `actor` field for agent attribution
|
|
128
|
+
- ADR 0006 (agent spec and permissions), ADR 0007 (proposal format)
|
|
129
|
+
|
|
130
|
+
## v0.4
|
|
131
|
+
- **M1 Implementation**: Validation + Indexing milestone complete (41 tests)
|
|
132
|
+
- Added `neonrp validate` CLI with `--json` support and exit codes 0/1/2
|
|
133
|
+
- Added `neonrp index build|update` CLI for entity indexing
|
|
134
|
+
- Added `neonrp find` CLI with --id/--tag/--kind/keyword search
|
|
135
|
+
- Added `neonrp context` CLI with explainable scoring and snippets
|
|
136
|
+
- Fixed `scan_entities()` to handle partial failures (index valid, skip invalid)
|
|
137
|
+
- Migrated to Pydantic v2 patterns (`ConfigDict`, `datetime.now(UTC)`)
|
|
138
|
+
- Bumped manifest.version to `"0.2"`
|
|
139
|
+
|
|
140
|
+
## v0.3
|
|
141
|
+
- **M0 Implementation**: Skeleton + Core Lifecycle milestone complete
|
|
142
|
+
- ARCHITECTURE: added write atomicity & crash recovery strategy; defined manifest.json minimal structure
|
|
143
|
+
- QUALITY_GATES: added three-layer test strategy (unit/integration/E2E); added code review process
|
|
144
|
+
- Replaced scripts/qa.sh with cross-platform scripts/qa.py
|
|
145
|
+
|
|
146
|
+
## v0.2
|
|
147
|
+
- Added ADRs: CLI framework (click), event storage format (NDJSON), snapshot & branch strategy
|
|
148
|
+
- ROADMAP: split T4 into T4a (undo/redo) + T4b (branch); added R-number cross-references
|
|
149
|
+
- QUALITY_GATES: added code review unrecoverable failure policy
|
|
150
|
+
|
|
151
|
+
## v0.1
|
|
152
|
+
- Initial documentation set: requirements, architecture, roadmap, progress, quality gates
|
|
153
|
+
- Added opencode review gate and code review prompt
|
|
154
|
+
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Developer Guide
|
|
2
|
+
|
|
3
|
+
Welcome to the NeonRP development documentation.
|
|
4
|
+
|
|
5
|
+
## Documentation Structure
|
|
6
|
+
|
|
7
|
+
Detailed documentation is located in the `docs/` directory:
|
|
8
|
+
|
|
9
|
+
- **[REQUIREMENTS.md](docs/REQUIREMENTS.md)**: Product requirements (Source of Truth).
|
|
10
|
+
- **[ROADMAP.md](docs/ROADMAP.md)**: Milestones, task lists, and acceptance criteria. **Check this first to see what to build.**
|
|
11
|
+
- **[ARCHITECTURE.md](docs/ARCHITECTURE.md)**: System design, layers, invariants, event model, and on-disk layout.
|
|
12
|
+
- **[QUALITY_GATES.md](docs/QUALITY_GATES.md)**: Definition of Done, testing strategy, and code review process.
|
|
13
|
+
- **[PROGRESS.md](docs/PROGRESS.md)**: Execution log. Update this after every completed task.
|
|
14
|
+
- **[ADRs/](docs/ADRs/)**: Architecture Decision Records (0001–0023).
|
|
15
|
+
- **Per-milestone design docs**: `M1_*` through `M10_*` design specs and task cards.
|
|
16
|
+
|
|
17
|
+
## Quick Start (Development)
|
|
18
|
+
|
|
19
|
+
1. **Setup Environment**:
|
|
20
|
+
```pwsh
|
|
21
|
+
# using uv (recommended)
|
|
22
|
+
uv sync
|
|
23
|
+
# or using pip
|
|
24
|
+
pip install -e ".[dev]"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
2. **Run Tests**:
|
|
28
|
+
```pwsh
|
|
29
|
+
uv run pytest
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
3. **Run Coverage (required for coverage-related work)**:
|
|
33
|
+
```pwsh
|
|
34
|
+
uv run pytest --cov=neonrp --cov-report=term-missing -q
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. **Lint & Format**:
|
|
38
|
+
```pwsh
|
|
39
|
+
uv run ruff format .
|
|
40
|
+
uv run ruff check .
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
5. **Verify Process**:
|
|
44
|
+
Use the QA script to run gates and get next steps:
|
|
45
|
+
```pwsh
|
|
46
|
+
python scripts/qa.py
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Workflow
|
|
50
|
+
|
|
51
|
+
1. Pick a task from `docs/ROADMAP.md`.
|
|
52
|
+
2. Implement and test.
|
|
53
|
+
3. Run `python scripts/qa.py`.
|
|
54
|
+
4. Perform code review via `opencode`.
|
|
55
|
+
5. Update `docs/PROGRESS.md` and checklists.
|
|
56
|
+
|
|
57
|
+
## Task Plan Writing Guide
|
|
58
|
+
|
|
59
|
+
Use this as a lightweight guide when writing a task plan. Keep it practical; don't over-specify.
|
|
60
|
+
|
|
61
|
+
1. Define outcome first:
|
|
62
|
+
- One clear goal sentence (what changes for users or developers).
|
|
63
|
+
- In/out of scope boundaries.
|
|
64
|
+
2. List deliverables:
|
|
65
|
+
- Files/modules expected to change.
|
|
66
|
+
- Observable outputs (CLI behavior, UI behavior, docs, tests).
|
|
67
|
+
3. Add acceptance criteria:
|
|
68
|
+
- Use behavior-level checks ("when X, then Y"), not only internal implementation details.
|
|
69
|
+
- Include at least one end-to-end path for user-critical flows.
|
|
70
|
+
4. Add test strategy in the plan:
|
|
71
|
+
- Unit tests for core logic and edge cases.
|
|
72
|
+
- Integration tests for framework boundaries (e.g., TUI input -> worker -> session send).
|
|
73
|
+
- For bug fixes, add a regression test that fails before the fix.
|
|
74
|
+
5. Coverage requirement (recommended baseline):
|
|
75
|
+
- `src/` overall coverage >= 80%.
|
|
76
|
+
- Changed files coverage >= 85%.
|
|
77
|
+
- Critical modules (state, storage, conversation, dispatch, TUI event paths) should target >= 90%.
|
|
78
|
+
- Command example:
|
|
79
|
+
```pwsh
|
|
80
|
+
uv run pytest --cov=neonrp --cov-report=term-missing -q
|
|
81
|
+
```
|
|
82
|
+
6. Real-endpoint E2E requirement (for LLM integration changes):
|
|
83
|
+
- Use user config endpoint in `~/.neonrp/config.json` when available.
|
|
84
|
+
- Gate with env var to avoid CI cost:
|
|
85
|
+
```pwsh
|
|
86
|
+
$env:NEONRP_E2E_LLM='1'
|
|
87
|
+
uv run pytest tests/test_llm_real_endpoint.py -q
|
|
88
|
+
```
|
|
89
|
+
7. Code review requirement:
|
|
90
|
+
- Run an `opencode` review before merge.
|
|
91
|
+
- Save report under `reviews/` with date/task context.
|
|
92
|
+
- Fix must-fix findings, then rerun tests.
|
|
93
|
+
- Example:
|
|
94
|
+
```pwsh
|
|
95
|
+
opencode run "Using prompts/code_review.md, review src/ changes against docs/REQUIREMENTS.md. Save report to reviews/REVIEW_YYYYMMDD.md"
|
|
96
|
+
```
|
|
97
|
+
8. Update records:
|
|
98
|
+
- Check off task items in `docs/ROADMAP.md`.
|
|
99
|
+
- Add a concise entry in `docs/PROGRESS.md` (what changed, tests, review result).
|
|
100
|
+
- If user-facing behavior changed (especially TUI), update `README.md`, `docs/TUTORIAL.md`, and `CHANGELOG.md` in the same PR.
|
|
101
|
+
- If coverage work was done, update `reviews/coverage_report_YYYYMMDD.md` with latest numbers and remaining gaps.
|