- README.md: add summary paragraph covering 92 endpoints, screenshot/camera,
event daemon, Mod+Python+AI architecture
- skills/oni_agent.md: complete rewrite from 42 to 480 lines:
- Gameplay overview (survival priorities, world rules)
- All 92 API endpoints organized in 12 categories
- Each command annotated with: what player action it maps to,
what AI uses it for, example output
- Coordinate positioning methods (4 strategies)
- Common scenario query paths (suffocating, power, research, pipes)
- Quick reference for emergency operations
New endpoints (total now 65+):
- clear: clear debris/POI (bottom toolbar button)
- rotate: rotate building during placement
- copy_settings: copy building config to another building
- overlay: switch overlay view (power/temp/gas/liquid/automation/rooms/decor/light/germs/materials/suits/crops/radiation/priority)
- dupe_personal_priority: set per-duplicate task priority sliders
- battery_charge: set smart battery high/low charge limits
- valve_flow: set liquid/gas valve flow rate
- vent_pressure: set vent overpressure limit
- incubator_setting: set incubator egg priority
- fridge_temp: set refrigerator temperature
- GET /api/state/overlay: current overlay + available overlays list
CLI: clear, rotate, copy_settings, overlay, dupe_personal_priority,
battery_charge, valve_flow, vent_pressure, incubator_setting, fridge_temp
New state endpoints:
- GET /api/state/sensors: list all automation sensors with thresholds
New action endpoints (10 total):
- dupe_move: move duplicant to coordinates
- dupe_cancel_task: cancel a dupe's current chore
- critter_wrangle: catch and relocate a critter
- plant_uproot: dig up a plant
- storage_filter: set what a storage bin accepts
- door_open: manually open/close a door
- sensor_threshold: set automation sensor value
- sweep: mark resources for sweeping pickup
- disinfect: disinfect a cell/building
CLI: dupe_move, dupe_cancel_task, critter_wrangle, plant_uproot,
storage_filter, door_open, sensors, sensor_threshold, sweep, disinfect
Total API endpoints: 50+ covering all ONI player interactions
Printing Pod:
- GET /api/state/printing_pod: check if ready, options available, cycles remaining
- POST /api/action/printing_pod_select {index}: select option 0/1/2
Research completion tracking:
- Automatic detection of newly completed techs on each state poll
- Events pushed to stream: 'research_complete' with unlocked buildings list
- Events pushed when Printing Pod becomes ready
Event daemon enhanced:
- Classifies 'research complete' events with actionable next steps
- Classifies 'printing pod' events with option viewing instructions
CLI: printing_pod, printing_pod_select <0|1|2>
Research system:
- GET /api/state/research/detail: station status, active tech, research points
- POST /api/action/research_cancel [techId]: cancel specific or all active research
- Improved research queueing with proper prerequisite checks
Building detail/interaction:
- GET /api/state/building_detail?x=&y=: full single-building detail
(health, automation, storage contents, materials, power, recipes)
- POST /api/action/set_building_priority: set priority 1-9 per building
- POST /api/action/set_automation: enable/disable automation input
- Enhanced building list with health/damage info
CLI: research_detail, research_cancel, building_detail,
set_building_priority, set_automation
New endpoints:
- GET /api/state/buildable: buildings filtered by completed research (unlocked/locked)
- POST /api/action/toggle: toggle building on/off (save power, control workflow)
- POST /api/action/set_recipe: set building recipe (e.g. Rock Crusher mode)
- POST /api/action/empty: empty building storage (drop all contents)
- POST /api/action/cancel_errand: cancel all errands at a building
Improved research: proper prerequisite validation, tech queueing, research station check
CLI: buildable [filter], toggle, set_recipe, empty, cancel_errand
Updated SKILL.md with new endpoint docs
- All api_get/api_post calls now auto-pause game before executing
- AUTO_PAUSE_ENABLED flag to disable for event daemon polling
- Event daemon explicitly disables auto-pause (frequent light polling)
- Iron rules updated:
Rule 1: AI must pause BEFORE any reasoning/decision
Rule 2: Tools auto-pause on state data fetch
Rule 3: AI must pause before asking user questions
Rule 4: AI must ensure paused when exiting response state
Rule 5: Save before major operations
- Rule 1: Pause before asking user questions
- Rule 2: Pause when exiting response state (game must not run unattended)
- Rule 3: Pause before every write operation
- Rule 4: Save before major operations, load for rollback
Complete rewrite of SKILL.md with a comprehensive AI operating protocol:
- Core Operating Loop: 5-step cycle (context → plan → protect → execute → verify)
- Standard Operating Procedure (SOP): 0-6 step-by-step for every operation
- Decision Framework: how to analyze, locate, choose, and execute
- 7 Standard Playbooks:
A: Initial base setup (Cycle 1-20)
B: CO2 crisis handling
C: Power overload recovery
D: Oxygen crisis emergency
E: SPOM construction
F: Pipe/wire crossing (with bridge detection)
G: Electrical wiring (connect building to grid)
- Error Recovery Table: every error code with specific recovery steps
- Coordinate Location Methods: 4 strategies for finding build positions
- Event Auto-Response Rules: what to do for each event type
- Consolidated pause/speed reference
New endpoints:
- POST /api/action/screenshot: capture screenshot to file
- GET /api/screenshot/latest: serve PNG binary
- POST /api/action/camera: move camera to (x,y) + set zoom
- GET /api/state/camera: get current camera position/zoom
Pipe/Wire crossing intelligence:
- build_pipe/build_wire now detect existing pipes/wires at each cell
- mode='line' (default): new pipe merges with existing
- mode='cross': auto-places bridges at intersections to avoid connection
- mode='single': one segment
CLI: snapshot [file.png], camera <x> <y> [zoom], camera_status
All high-level commands: auto pause, execute, resume
New Mod endpoints:
- POST /api/action/build_pipe: build gas/liquid pipe path (x1,y1)->(x2,y2) with bridge option
- POST /api/action/build_wire: build wire path with types: regular, heavy, conductive, heavy_conductive
New Python tool: tools/oni_commander.py
High-level commands that combine multiple low-level API calls:
- diagnose: full diagnostic (power, CO2, temp, diseases, pipes)
- fix_co2: auto-detect CO2 pockets and dig vent shafts
- fix_overload: detect overloaded circuits with fix suggestions
- emergency_o2: auto-check O2 and build OxygenDiffuser/Electrolyzer
- expand_base: dig + build walls/floors in one command (one-click room expansion)
- build_pipe_line: simplified CLI for pipe path building
- build_wire_line: simplified CLI for wire path building
All high-level commands auto-pause/resume the game.
CLI: build_pipe_line, build_wire_line added to oni_api.py
- POST /api/action/pause - pause game (AI must call before operations)
- POST /api/action/unpause - resume game at desired speed
- POST /api/action/speed - set game speed (1x/2x/3x)
- Game state now includes isPaused and gameSpeed
- AI pause protocol documented in SKILL.md: pause before every operation
- Introduces cell.isDiggable flag that filters neutronium properly
- pause/unpause/speed CLI commands added to oni_api.py
- Priority system: GET /api/state/priorities, POST /api/action/priority_global, POST /api/action/priority_type
- Batch system: POST /api/action/batch with per-action result tracking
- Enhanced action feedback with error codes and AI suggestions:
cell_occupied, cell_solid, cell_occupied_by_dupe, material_shortage, etc.
- Event stream: GET /api/state/events?since=&limit= for incremental polling
- Event daemon: scripts/event_daemon.py continuously polls events,
classifies by severity, auto-triggers analysis on critical events
- Games state now reports suffocating/starving/stressed counts
- Cell data includes isDiggable and isSafeForDupe flags
- Added 'events', 'queue', 'batch', 'priority_global', 'priority_type' CLI commands
- Added sample batch plan file