feat(robot-mcp): add robot inspection MCP server and CouchDB asset profiles#370
Open
AnandMayank wants to merge 3 commits into
Open
feat(robot-mcp): add robot inspection MCP server and CouchDB asset profiles#370AnandMayank wants to merge 3 commits into
AnandMayank wants to merge 3 commits into
Conversation
…ofiles
CouchDB profile layer (src/couchdb/):
- New profile:{asset_id} documents in the iot DB for 4 assets
(Chiller 6, Metro Pump 1, Hydraulic Pump 1, Motor 01)
- 9 robot-specific fields per profile; docs omit asset_id so existing
IoT Mango queries are completely unaffected
- seed_robot_profiles.py with --dry-run / --verify flags
- schema_robot_fields.json field reference and gauge_value constraint doc
Robot MCP server (src/servers/robot/):
- 8 tools: navigate_to, safety_gate_check, open_panel, read_gauge,
check_human_presence, commit_reading, check_wo_similarity, detect_anomaly
- PhysicalStateSimulator: seeded (seed=42), deterministic, state in memory
- MultiReadingVerifier: score = 0.35*C + 0.35*A + 0.30*H, N>=3 hard gate,
sensor-freeze gate, sensor-physical and historical outlier annotations
- historical_outlier uses 3-level severity spectrum (60% mild / 25% medium /
15% severe) with gap-based formulas guaranteeing H range by construction
- gauge_value never returned to agent; enforced by double-guard confirmed
by test_gauge_value_protection.py (10 checks)
- robot-mcp-server entry point added to pyproject.toml
- "robot" key added to DEFAULT_SERVER_PATHS in src/agent/runner.py
Tests: 66 robot tests pass; pre-existing IoT tests unaffected.
Signed-off-by: AnandMayank <anandmayank698@gmail.com>
Collaborator
|
@AnandMayank We will review in two days and give you feedback. |
…sumer - Delete PhysicalStateSimulator, MultiReadingVerifier, test_verifier.py - open_panel() is now deterministic: reads panel_stuck bool from CouchDB profile - read_gauge() uses inline noise from reading_consistency profile field - commit_reading() simplified to N>=3 gate only, no scoring logic - Remove check_human_presence() and detect_anomaly() tools (6 tools remain) - Profile schema: 8 fields — gauge_path + panel_stuck replace real_gauge_images / panel_stuck_prob / human_present - Fix autouse conftest fixture to reset _rng (not deleted _simulator._rng) - Update FastMCP instructions string to reflect current tool set Signed-off-by: AnandMayank <anandmayank698@gmail.com>
Author
|
@DhavalRepo18 I have made some of the changes now it should be good for review ! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR adds a robot inspection extension to AssetOpsBench, enabling agents to
physically verify industrial assets before committing maintenance decisions.
CouchDB profile layer (
src/couchdb/):profile:{asset_id}documents in theiotDB for each known asset, with8 robot-specific fields:
physical_location,gauge_value(hidden groundtruth),
gauge_range,gauge_path,never_read,reading_consistency,sensor_physical_gap,panel_stuckasset_id— existing IoT Mango queries are unaffectedseed_robot_profiles.py— idempotent seeding (--dry-run/--verify)schema_robot_fields.json— field reference withgauge_valueconstraintRobot MCP server (
src/servers/robot/):navigate_to,safety_gate_check,open_panel,read_gauge,commit_reading,check_wo_similarityopen_panel()readspanel_stuck: boolfrom CouchDB profile (deterministic)read_gauge()applies Gaussian noise scaled byreading_consistencyfromprofile;
gauge_valueis used internally and never returned to the agentcommit_reading()enforces a minimum of 3 readings before committingCritical invariant:
gauge_valueis never exposed in any tool response —confirmed by
test_gauge_value_protection.py(7 checks across all 6 tools).Tests: 35 passed (live-DB integration tests), 0 failed.