aether-robotics 3.2.4__tar.gz → 3.2.6__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.
Files changed (89) hide show
  1. {aether_robotics-3.2.4/aether_robotics.egg-info → aether_robotics-3.2.6}/PKG-INFO +1 -1
  2. aether_robotics-3.2.6/VERSION +1 -0
  3. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/__init__.py +1 -1
  4. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/tool_builder.py +55 -5
  5. {aether_robotics-3.2.4 → aether_robotics-3.2.6/aether_robotics.egg-info}/PKG-INFO +1 -1
  6. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/pyproject.toml +1 -1
  7. aether_robotics-3.2.4/VERSION +0 -1
  8. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/LICENSE +0 -0
  9. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/MANIFEST.in +0 -0
  10. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/README.md +0 -0
  11. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/__main__.py +0 -0
  12. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/actions/__init__.py +0 -0
  13. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/actions/abstract_actions.py +0 -0
  14. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/adapters/__init__.py +0 -0
  15. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/adapters/base_adapter.py +0 -0
  16. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/adapters/drone_adapter.py +0 -0
  17. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/adapters/rover_adapter.py +0 -0
  18. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/adapters/universal_adapter.py +0 -0
  19. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/__init__.py +0 -0
  20. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/adaptation_agent.py +0 -0
  21. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/camera_agent.py +0 -0
  22. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/correction_agent.py +0 -0
  23. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/execution_agent.py +0 -0
  24. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/fault_agent.py +0 -0
  25. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/memory_agent.py +0 -0
  26. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/movement_agent.py +0 -0
  27. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/navigation_agent.py +0 -0
  28. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/perception_agent.py +0 -0
  29. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/planner_agent.py +0 -0
  30. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/power_agent.py +0 -0
  31. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/task_manager.py +0 -0
  32. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/agents/thermal_agent.py +0 -0
  33. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/app.py +0 -0
  34. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/capabilities/__init__.py +0 -0
  35. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/capabilities/capability_loader.py +0 -0
  36. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/__init__.py +0 -0
  37. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/auto_installer.py +0 -0
  38. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/auto_updater.py +0 -0
  39. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/banner.py +0 -0
  40. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/calibration.py +0 -0
  41. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/executor.py +0 -0
  42. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/feedback.py +0 -0
  43. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/goal_parser.py +0 -0
  44. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/llm_planner.py +0 -0
  45. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/mapper.py +0 -0
  46. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/memory.py +0 -0
  47. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/message_bus.py +0 -0
  48. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/metrics.py +0 -0
  49. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/navigation_engine.py +0 -0
  50. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/planner.py +0 -0
  51. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/task_scheduler.py +0 -0
  52. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/tool_discovery.py +0 -0
  53. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/tool_registry.py +0 -0
  54. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/core/visualizer.py +0 -0
  55. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/faults/__init__.py +0 -0
  56. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/faults/fault_detector.py +0 -0
  57. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/faults/fault_injector.py +0 -0
  58. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/simulation/__init__.py +0 -0
  59. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/simulation/environment.py +0 -0
  60. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/simulation/real_perception.py +0 -0
  61. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether/simulation/scenarios.py +0 -0
  62. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether_robotics.egg-info/SOURCES.txt +0 -0
  63. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether_robotics.egg-info/dependency_links.txt +0 -0
  64. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether_robotics.egg-info/entry_points.txt +0 -0
  65. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether_robotics.egg-info/requires.txt +0 -0
  66. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/aether_robotics.egg-info/top_level.txt +0 -0
  67. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/configs/calibrated_camera_only_20260331_121709.json +0 -0
  68. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/configs/calibrated_camera_only_20260331_122446.json +0 -0
  69. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/configs/calibrated_camera_only_20260401_094544.json +0 -0
  70. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/configs/calibrated_camera_only_20260401_094554.json +0 -0
  71. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/configs/drone_v1.json +0 -0
  72. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/configs/rover_v1.json +0 -0
  73. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/context/aether_definitions.txt +0 -0
  74. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/install.sh +0 -0
  75. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/main.py +0 -0
  76. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/requirements.txt +0 -0
  77. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/setup.cfg +0 -0
  78. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_auto_updater.py +0 -0
  79. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_calibration.py +0 -0
  80. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_calibration_unit.py +0 -0
  81. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_chaos.py +0 -0
  82. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_mapper.py +0 -0
  83. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_navigation_engine.py +0 -0
  84. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_persistent_memory.py +0 -0
  85. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_security.py +0 -0
  86. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_task_scheduler.py +0 -0
  87. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_tool_builder.py +0 -0
  88. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_tool_discovery.py +0 -0
  89. {aether_robotics-3.2.4 → aether_robotics-3.2.6}/tests/test_yolo_integration.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aether-robotics
3
- Version: 3.2.4
3
+ Version: 3.2.6
4
4
  Summary: Autonomous multi-agent robotics system with DRL-First Hybrid FDIR
5
5
  Author: Chahel Paatur
6
6
  License: MIT
@@ -0,0 +1 @@
1
+ 3.2.6
@@ -1,2 +1,2 @@
1
- __version__ = "3.2.4"
1
+ __version__ = "3.2.6"
2
2
  __author__ = "Chahel Paatur"
@@ -777,10 +777,7 @@ class YOLOTool:
777
777
 
778
778
  return _ok({
779
779
  "finger_count": finger_count,
780
- "raw_response": raw,
781
- "image_path": result["result"].get("image_path", image_path),
782
- "backend": "anthropic_vision",
783
- "model": "claude-sonnet-4-20250514",
780
+ "raw_response": str(finger_count),
784
781
  })
785
782
 
786
783
 
@@ -1694,7 +1691,40 @@ class OLEDTool:
1694
1691
  return self.clear()
1695
1692
 
1696
1693
  def display_text(self, text: str = "", font_size: int = 12,
1697
- x: int = 0, y: int = 0, clear: bool = True) -> Dict:
1694
+ x: int = 0, y: int = 0, clear: bool = True, **kwargs) -> Dict:
1695
+ # Parse string-repr dict or extract from dict
1696
+ if isinstance(text, str) and text.strip().startswith('{'):
1697
+ try:
1698
+ import ast
1699
+ text = ast.literal_eval(text)
1700
+ except:
1701
+ pass
1702
+ if isinstance(text, dict):
1703
+ # Try clean text fields first
1704
+ extracted = (text.get('content') or text.get('body') or
1705
+ text.get('description') or text.get('result') or
1706
+ text.get('summary') or text.get('text'))
1707
+ if extracted:
1708
+ text = str(extracted)
1709
+ else:
1710
+ # Build human readable from weather-like dicts
1711
+ parts = []
1712
+ GOOD_KEYS = {'temp_C','temp_F','FeelsLikeC','FeelsLikeF',
1713
+ 'weatherDesc','humidity','windspeedKmph','observation_time'}
1714
+ def extract_readable(d, depth=0):
1715
+ if depth > 3: return
1716
+ if isinstance(d, dict):
1717
+ for k, v in d.items():
1718
+ if k in GOOD_KEYS and isinstance(v, (str,int,float)):
1719
+ parts.append(f"{k}:{v}")
1720
+ elif isinstance(v, (dict,list)):
1721
+ extract_readable(v, depth+1)
1722
+ elif isinstance(d, list):
1723
+ for item in d[:2]:
1724
+ extract_readable(item, depth+1)
1725
+ extract_readable(text)
1726
+ text = ' '.join(parts[:6]) if parts else str(text)[:80]
1727
+ text = str(text)[:120]
1698
1728
  if self._Image is None:
1699
1729
  return _err("PIL not available")
1700
1730
  img = self._new_image() if clear else self._new_image()
@@ -1869,6 +1899,26 @@ class OLEDTool:
1869
1899
 
1870
1900
  def show_value(self, label: str = "", value: Any = "",
1871
1901
  unit: str = "") -> Dict:
1902
+ # Extract clean value from dict or string-repr of dict
1903
+ if isinstance(value, str) and value.startswith('{'):
1904
+ try:
1905
+ import ast
1906
+ value = ast.literal_eval(value)
1907
+ except:
1908
+ pass
1909
+ if isinstance(value, dict):
1910
+ SKIP = {'image_path','filepath','path','file','raw_response','backend','tag','mode','resolution','timestamp'}
1911
+ for key in ('finger_count','count','cpu_temp_c','cpu_percent','ram_percent','brightness','percentage','total','result'):
1912
+ if key in value:
1913
+ value = value[key]
1914
+ break
1915
+ else:
1916
+ for k, v in value.items():
1917
+ if k not in SKIP and isinstance(v, (int, float)):
1918
+ value = v
1919
+ break
1920
+ else:
1921
+ value = '?'
1872
1922
  if self._Image is None:
1873
1923
  return _err("PIL not available")
1874
1924
  img = self._new_image()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: aether-robotics
3
- Version: 3.2.4
3
+ Version: 3.2.6
4
4
  Summary: Autonomous multi-agent robotics system with DRL-First Hybrid FDIR
5
5
  Author: Chahel Paatur
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "aether-robotics"
7
- version = "3.2.4"
7
+ version = "3.2.6"
8
8
  description = "Autonomous multi-agent robotics system with DRL-First Hybrid FDIR"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -1 +0,0 @@
1
- 3.2.4
File without changes
File without changes