feagi-core 2.2.1__tar.gz → 2.2.2__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 (175) hide show
  1. {feagi_core-2.2.1 → feagi_core-2.2.2}/PKG-INFO +2 -2
  2. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/__init__.py +1 -1
  3. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/bin/darwin-aarch64/feagi +0 -0
  4. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/bin/darwin-x86_64/feagi +0 -0
  5. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/bin/linux-aarch64/feagi +0 -0
  6. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/bin/linux-x86_64/feagi +0 -0
  7. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/bin/windows-x86_64/feagi.exe +0 -0
  8. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/connector_utils.py +2 -2
  9. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/inputs/vision.py +6 -14
  10. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/controller_logger.py +2 -3
  11. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/formatters.py +0 -1
  12. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/logger.py +1 -1
  13. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/metrics.py +2 -3
  14. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/monitor.py +1 -2
  15. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/profiler.py +0 -1
  16. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/utils.py +0 -1
  17. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/transports/base.py +1 -1
  18. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/transports/websocket_relay.py +1 -1
  19. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/PKG-INFO +2 -2
  20. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/requires.txt +1 -1
  21. {feagi_core-2.2.1 → feagi_core-2.2.2}/pyproject.toml +2 -2
  22. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/bdu/test_neuroembryogenesis.py +6 -7
  23. {feagi_core-2.2.1 → feagi_core-2.2.2}/.pre-commit-config.yaml +0 -0
  24. {feagi_core-2.2.1 → feagi_core-2.2.2}/.ruff.toml +0 -0
  25. {feagi_core-2.2.1 → feagi_core-2.2.2}/LICENSE +0 -0
  26. {feagi_core-2.2.1 → feagi_core-2.2.2}/MANIFEST.in +0 -0
  27. {feagi_core-2.2.1 → feagi_core-2.2.2}/NOTICE +0 -0
  28. {feagi_core-2.2.1 → feagi_core-2.2.2}/README.md +0 -0
  29. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/esp32_controller/esp32_controller_example.py +0 -0
  30. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/example_video_simple.py +0 -0
  31. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/genome_vs_connectome/example_genome_vs_connectome.py +0 -0
  32. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/mixed_transport_agent/mixed_transport_agent.py +0 -0
  33. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/observability/01_basic_metrics.py +0 -0
  34. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/observability/02_data_logging.py +0 -0
  35. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/observability/03_data_validation.py +0 -0
  36. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/observability/04_performance_profiling.py +0 -0
  37. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/observability/05_comprehensive_monitoring.py +0 -0
  38. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/observability/06_quick_start.py +0 -0
  39. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/servo_motor/example_servo_motor.py +0 -0
  40. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/simple_robot/example_simple_robot.py +0 -0
  41. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/video_streamer/example_rgbd_pair.py +0 -0
  42. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/video_streamer/example_rgbd_realsense.py +0 -0
  43. {feagi_core-2.2.1 → feagi_core-2.2.2}/examples/video_streamer/example_video_simple.py +0 -0
  44. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/agent/__init__.py +0 -0
  45. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/agent/base.py +0 -0
  46. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/agent/bluetooth.py +0 -0
  47. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/agent/esp32.py +0 -0
  48. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/agent/video.py +0 -0
  49. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/cli/__init__.py +0 -0
  50. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/cli/bv.py +0 -0
  51. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/cli/bv_process.py +0 -0
  52. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/cli/feagi_process.py +0 -0
  53. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/cli/main.py +0 -0
  54. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/cli/process_utils.py +0 -0
  55. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/config.py +0 -0
  56. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/connectome/__init__.py +0 -0
  57. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/connectome/api.py +0 -0
  58. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/connectome/artifact.py +0 -0
  59. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/connectome/model.py +0 -0
  60. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/engine/__init__.py +0 -0
  61. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/engine/manager.py +0 -0
  62. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/genome/__init__.py +0 -0
  63. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/genome/api.py +0 -0
  64. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/genome/artifact.py +0 -0
  65. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/packaging/__init__.py +0 -0
  66. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/paths.py +0 -0
  67. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/__init__.py +0 -0
  68. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/brain_input.py +0 -0
  69. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/brain_output.py +0 -0
  70. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/client.py +0 -0
  71. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/health_monitor.py +0 -0
  72. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/inputs/__init__.py +0 -0
  73. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/inputs/base.py +0 -0
  74. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/inputs/numeric.py +0 -0
  75. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/inputs/smart_imu.py +0 -0
  76. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/inputs/text.py +0 -0
  77. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/__init__.py +0 -0
  78. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/observability/inspector.py +0 -0
  79. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/outputs/__init__.py +0 -0
  80. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/outputs/base.py +0 -0
  81. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/outputs/motor.py +0 -0
  82. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/outputs/numeric.py +0 -0
  83. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/outputs/text.py +0 -0
  84. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/pns/registration_manager.py +0 -0
  85. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/transports/__init__.py +0 -0
  86. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/transports/bluetooth_direct.py +0 -0
  87. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi/transports/websocket_client.py +0 -0
  88. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi-bv/feagi_bv/__init__.py +0 -0
  89. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi-bv/feagi_bv/runtime.py +0 -0
  90. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi-bv/setup.py +0 -0
  91. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/SOURCES.txt +0 -0
  92. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/dependency_links.txt +0 -0
  93. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/entry_points.txt +0 -0
  94. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/not-zip-safe +0 -0
  95. {feagi_core-2.2.1 → feagi_core-2.2.2}/feagi_core.egg-info/top_level.txt +0 -0
  96. {feagi_core-2.2.1 → feagi_core-2.2.2}/scripts/bump_version.py +0 -0
  97. {feagi_core-2.2.1 → feagi_core-2.2.2}/scripts/migrate_capabilities_json.py +0 -0
  98. {feagi_core-2.2.1 → feagi_core-2.2.2}/scripts/test_genome_import.py +0 -0
  99. {feagi_core-2.2.1 → feagi_core-2.2.2}/setup.cfg +0 -0
  100. {feagi_core-2.2.1 → feagi_core-2.2.2}/setup.py +0 -0
  101. {feagi_core-2.2.1 → feagi_core-2.2.2}/src/api/routers/v1/inputs.py +0 -0
  102. {feagi_core-2.2.1 → feagi_core-2.2.2}/src/evo/mapping_helper.py +0 -0
  103. {feagi_core-2.2.1 → feagi_core-2.2.2}/src/inf/byte_processor.py +0 -0
  104. {feagi_core-2.2.1 → feagi_core-2.2.2}/src/pns/vision.py +0 -0
  105. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/__init__.py +0 -0
  106. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/__init__.py +0 -0
  107. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_brain_artifact_options.py +0 -0
  108. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_bv_process_manager.py +0 -0
  109. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_config_and_bv.py +0 -0
  110. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_config_command.py +0 -0
  111. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_engine_manager_spawn.py +0 -0
  112. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_feagi_process_manager.py +0 -0
  113. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/cli/test_main_interrupt_handling.py +0 -0
  114. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/__init__.py +0 -0
  115. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/bdu/__init__.py +0 -0
  116. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/bdu/test_connectome_manager.py +0 -0
  117. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/bdu/test_synaptogenesis.py +0 -0
  118. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/npu/__init__.py +0 -0
  119. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/npu/test_optimized_integration.py +0 -0
  120. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/npu_bdu_integration.py +0 -0
  121. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_cli_config_show.py +0 -0
  122. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_cortical_area_expansion.py +0 -0
  123. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_cortical_area_parameter_updates.py +0 -0
  124. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_cortical_mapping_flow.py +0 -0
  125. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_cortical_mapping_reconstruction.py +0 -0
  126. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_cross_cortical_synaptic_propagation.py +0 -0
  127. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_debug_injection_issue.py +0 -0
  128. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_debug_power_area.py +0 -0
  129. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_essential_genome_power_injection.py +0 -0
  130. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_genome_burst_engine_auto_start.py +0 -0
  131. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_genome_connectome_sync.py +0 -0
  132. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_intelligent_expansion.py +0 -0
  133. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_morphology_dimension_sensitive.py +0 -0
  134. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_power_neuron_injection.py +0 -0
  135. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_real_world_synaptic_propagation.py +0 -0
  136. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_refractory_fire_ledger_api.py +0 -0
  137. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_ros_feagi_numeric_roundtrip.py +0 -0
  138. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_rust_fcl_workflow.py +0 -0
  139. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_rust_pns_visualization.py +0 -0
  140. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_sensory_fcl_pipeline.py +0 -0
  141. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_snapshot_restore_cortical_areas.py +0 -0
  142. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_video_agent.py +0 -0
  143. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/test_video_to_feagi.py +0 -0
  144. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/workflows/__init__.py +0 -0
  145. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/integration/workflows/test_test_mode_integration.py +0 -0
  146. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_brain_input_helpers.py +0 -0
  147. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_brain_output_controller_api.py +0 -0
  148. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_client.py +0 -0
  149. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_connect_duplicate_registration.py +0 -0
  150. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_connectome_api.py +0 -0
  151. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_connectome_artifact.py +0 -0
  152. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_connectome_migration.py +0 -0
  153. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_connector_agent_register_callback.py +0 -0
  154. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_cortical_id_label.py +0 -0
  155. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_device_configuration_verification.py +0 -0
  156. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_device_registration_contract.py +0 -0
  157. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_engine_brain_artifacts.py +0 -0
  158. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_genome.py +0 -0
  159. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_genome_artifact.py +0 -0
  160. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_health_monitor.py +0 -0
  161. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_imu_sdk_helpers.py +0 -0
  162. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_motor_cortical_id_derivation.py +0 -0
  163. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_motor_decode_single_source_guardrail.py +0 -0
  164. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_motor_decoder_channel_span.py +0 -0
  165. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_motor_registration_tracking.py +0 -0
  166. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_recovery_config.py +0 -0
  167. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_rgbd_sdk_helpers.py +0 -0
  168. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_servo_motor.py +0 -0
  169. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_shm_cross_platform.py +0 -0
  170. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_smart_imu_input.py +0 -0
  171. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_text_token_stream.py +0 -0
  172. {feagi_core-2.2.1 → feagi_core-2.2.2}/tests/test_vision_segmentation.py +0 -0
  173. {feagi_core-2.2.1 → feagi_core-2.2.2}/tools/doc_helpers/convert_html_tables.py +0 -0
  174. {feagi_core-2.2.1 → feagi_core-2.2.2}/tools/doc_helpers/fix_broken_links.py +0 -0
  175. {feagi_core-2.2.1 → feagi_core-2.2.2}/tools/doc_helpers/fix_html_tables.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: feagi-core
3
- Version: 2.2.1
3
+ Version: 2.2.2
4
4
  Summary: Core SDK for building FEAGI agents, controlling the neural engine, and creating marketplace packages (without Brain Visualizer)
5
5
  Author-email: "Neuraville Inc." <feagi@neuraville.com>
6
6
  License: Apache-2.0
@@ -25,7 +25,7 @@ Requires-Dist: numpy>=1.20.0
25
25
  Requires-Dist: aiohttp>=3.9.0
26
26
  Requires-Dist: toml>=0.10.2
27
27
  Requires-Dist: requests>=2.31.0
28
- Requires-Dist: feagi-rust-py-libs>=0.0.113
28
+ Requires-Dist: feagi-rust-py-libs>=0.0.114
29
29
  Requires-Dist: pyserial>=3.5
30
30
  Provides-Extra: bv
31
31
  Requires-Dist: feagi-bv<3.0.0,>=2.5.0; extra == "bv"
@@ -18,7 +18,7 @@ Main modules:
18
18
  - feagi.cli: Command-line tools
19
19
  """
20
20
 
21
- __version__ = "2.2.1"
21
+ __version__ = "2.2.2"
22
22
 
23
23
  # Import key classes for convenience, but keep optional dependencies lazy so
24
24
  # `import feagi` does not require platform-specific extras (e.g., pyserial).
@@ -74,7 +74,7 @@ def load_capabilities_from_file(agent: 'PyConnectorAgent', filepath: Union[str,
74
74
  f" --input {filepath} \\\n"
75
75
  f" --output {filepath.parent / 'capabilities_new.json'}\n"
76
76
  )
77
- except:
77
+ except Exception:
78
78
  pass
79
79
 
80
80
  raise
@@ -139,6 +139,6 @@ def _is_old_format(data: dict) -> bool:
139
139
  return True
140
140
 
141
141
  return False
142
- except:
142
+ except Exception:
143
143
  return False
144
144
 
@@ -235,8 +235,8 @@ class Camera(BaseInput):
235
235
  if method_name is None:
236
236
  raise AttributeError(
237
237
  "ConnectorAgent missing segmented vision registration method.\n"
238
- f"The simple_vision registration method is not exposed in rust-py-libs.\n"
239
- f"Using segmented_vision_register as alternative."
238
+ "The simple_vision registration method is not exposed in rust-py-libs.\n"
239
+ "Using segmented_vision_register as alternative."
240
240
  )
241
241
 
242
242
  import feagi_rust_py_libs as frpl
@@ -391,33 +391,30 @@ class Camera(BaseInput):
391
391
  logger.info(f" Stage {self._segmentator_stage_index}: ImageFrameSegmentatorStage")
392
392
  except Exception as e:
393
393
  logger.warning(f"[WARN] Could not add processing stages: {e}")
394
- logger.warning(f" Segmented vision will work without processing stages")
394
+ logger.warning(" Segmented vision will work without processing stages")
395
395
 
396
396
  # Log registration details
397
397
  # NOTE: Segmented vision creates 9 cortical IDs (one per segment) with Absolute encoding
398
398
  # FEAGI's registration endpoint will auto-create all 9 areas when it detects segmented_vision
399
399
  logger.info(f"[OK] Registered segmented vision for group_id={group_id} (encoding={self.encoding}, position={self.position})")
400
400
  logger.info(f" FrameChangeHandling: {frame_change_handling} (will generate 9 cortical IDs for segments)")
401
- logger.info(f" FEAGI will auto-create all required cortical areas during agent registration")
401
+ logger.info(" FEAGI will auto-create all required cortical areas during agent registration")
402
402
 
403
403
  def _write_to_cache(self, cache):
404
404
  """Write current frame to Rust IOCache"""
405
405
  import logging
406
- import time
407
406
  logger = logging.getLogger(__name__)
408
407
 
409
408
  if self._current_frame is None:
410
409
  logger.debug("[WARN] [CAMERA] No frame to write yet (_current_frame is None)")
411
410
  return # No frame to write yet
412
411
 
413
- t_total_start = time.perf_counter()
414
412
  try:
415
413
  import feagi_rust_py_libs as frpl
416
414
 
417
415
  # Convert NumPy to Rust ImageFrame (optimized for performance)
418
416
  # NumPy arrays are in (height, width, channels) format
419
417
  # This is a zero-copy operation where possible (Rust borrows NumPy memory)
420
- t_convert_start = time.perf_counter()
421
418
  frame = frpl.connector_core.data_types.ImageFrame.new_from_array(
422
419
  self._current_frame,
423
420
  # Camera frames are typically sRGB/gamma-encoded u8 values.
@@ -425,20 +422,17 @@ class Camera(BaseInput):
425
422
  frpl.connector_core.data_types.descriptors.ColorSpace.Gamma,
426
423
  frpl.connector_core.data_types.descriptors.MemoryOrderLayout.HeightsWidthsChannels
427
424
  )
428
- t_convert = (time.perf_counter() - t_convert_start) * 1000
429
425
 
430
426
  # Use sensor_segmented_vision_write (registered during setup)
431
427
  method_name = "sensor_segmented_vision_write"
432
428
  write_method = getattr(cache, method_name)
433
429
 
434
430
  # Write frame to Rust cache (all processing happens in Rust)
435
- t_write_start = time.perf_counter()
436
431
  write_method(
437
432
  group=self.group_id,
438
433
  channel_index=self.channel,
439
434
  data=frame
440
435
  )
441
- t_write = (time.perf_counter() - t_write_start) * 1000
442
436
 
443
437
  # Performance logging removed for hot path
444
438
  except ImportError as e:
@@ -461,7 +455,6 @@ class Camera(BaseInput):
461
455
  import feagi_rust_py_libs as frpl
462
456
  from feagi.pns import brain_input
463
457
  cc_data_types = frpl.connector_core.data_types
464
- cc_desc = frpl.connector_core.data_types.descriptors
465
458
  stage_props = frpl.connector_core.data_pipeline.stage_properties
466
459
 
467
460
  # Validate ranges
@@ -535,7 +528,7 @@ class Camera(BaseInput):
535
528
  )
536
529
  logger.info(f"[OK] [CAMERA] Updated gaze: eccentricity=({eccentricity_x:.2f}, {eccentricity_y:.2f}), modulation={modulation:.2f}")
537
530
  else:
538
- logger.warning(f"[WARN] [CAMERA] Gaze update methods not available. Update methods may need to be enabled in rust-py-libs.")
531
+ logger.warning("[WARN] [CAMERA] Gaze update methods not available. Update methods may need to be enabled in rust-py-libs.")
539
532
  except Exception as e:
540
533
  logger.error(f"[FAIL] [CAMERA] Error updating gaze: {e}", exc_info=True)
541
534
  # Don't raise - allow streaming to continue even if gaze update fails
@@ -551,7 +544,6 @@ class Camera(BaseInput):
551
544
  import feagi_rust_py_libs as frpl
552
545
  from feagi.pns import brain_input
553
546
  cc_data_types = frpl.connector_core.data_types
554
- cc_desc = frpl.connector_core.data_types.descriptors
555
547
  stage_props = frpl.connector_core.data_pipeline.stage_properties
556
548
 
557
549
  # Validate range
@@ -613,7 +605,7 @@ class Camera(BaseInput):
613
605
  )
614
606
  logger.info(f"[OK] [CAMERA] Updated diff threshold: {threshold}")
615
607
  else:
616
- logger.warning(f"[WARN] [CAMERA] Diff threshold update methods not available.")
608
+ logger.warning("[WARN] [CAMERA] Diff threshold update methods not available.")
617
609
  except Exception as e:
618
610
  logger.error(f"[FAIL] [CAMERA] Error updating diff threshold: {e}", exc_info=True)
619
611
  # Don't raise - allow streaming to continue even if diff threshold update fails
@@ -7,8 +7,7 @@ Integrates with FEAGI PNS observability framework.
7
7
 
8
8
  import logging
9
9
  import sys
10
- from typing import Any, Dict, Optional
11
- from datetime import datetime
10
+ from typing import Any, Dict
12
11
 
13
12
  from feagi.pns.observability.monitor import Monitor
14
13
 
@@ -86,7 +85,7 @@ class ControllerLogger(Monitor):
86
85
  # Set formatter based on timestamp preference
87
86
  if self.show_timestamps:
88
87
  formatter = logging.Formatter(
89
- f'[%(asctime)s] %(message)s',
88
+ '[%(asctime)s] %(message)s',
90
89
  datefmt=self.timestamp_format
91
90
  )
92
91
  else:
@@ -7,7 +7,6 @@ Formatters for displaying observability data in various formats.
7
7
  import json
8
8
  import csv
9
9
  from typing import Dict, Any, List
10
- from datetime import datetime
11
10
  from pathlib import Path
12
11
 
13
12
 
@@ -6,7 +6,7 @@ Structured logging of sensory and motor data packets.
6
6
 
7
7
  import json
8
8
  import csv
9
- from typing import Dict, Any, Optional, List
9
+ from typing import Dict, Any, List
10
10
  from datetime import datetime
11
11
  from pathlib import Path
12
12
 
@@ -4,7 +4,6 @@ Metrics Collection
4
4
  Collects and aggregates statistics on data flow through brain_input and brain_output.
5
5
  """
6
6
 
7
- import time
8
7
  import json
9
8
  import csv
10
9
  from typing import Dict, Any, Optional
@@ -271,7 +270,7 @@ class MetricsCollector(Monitor):
271
270
 
272
271
  print(f"\n📊 Uptime: {stats.uptime_seconds:.2f} seconds")
273
272
 
274
- print(f"\n📥 Sensory Input:")
273
+ print("\n📥 Sensory Input:")
275
274
  print(f" Total packets sent: {stats.input.total_packets}")
276
275
  print(f" Total bytes sent: {stats.input.total_bytes:,}")
277
276
  print(f" Total neurons sent: {stats.input.total_neurons:,}")
@@ -281,7 +280,7 @@ class MetricsCollector(Monitor):
281
280
  print(f" Packets/sec: {stats.input.packets_per_sec:.2f}")
282
281
  print(f" Avg send duration: {stats.input.avg_duration_ms:.2f} ms")
283
282
 
284
- print(f"\n📤 Motor Output:")
283
+ print("\n📤 Motor Output:")
285
284
  print(f" Total receives: {stats.output.total_receives}")
286
285
  print(f" Total commands: {stats.output.total_commands}")
287
286
  print(f" Avg commands/receive: {stats.output.avg_commands_per_receive:.2f}")
@@ -6,8 +6,7 @@ Provides the foundation for all observability monitors using the Observer patter
6
6
 
7
7
  import logging
8
8
  from abc import ABC, abstractmethod
9
- from typing import Any, Dict, Optional
10
- from datetime import datetime
9
+ from typing import Any, Dict
11
10
 
12
11
  logger = logging.getLogger("feagi.pns.observability.monitor")
13
12
 
@@ -7,7 +7,6 @@ Profiles performance of sensory/motor data operations.
7
7
  import time
8
8
  from typing import Dict, Any, List, Optional
9
9
  from dataclasses import dataclass, field
10
- from collections import defaultdict
11
10
 
12
11
  from feagi.pns.observability.monitor import Monitor
13
12
 
@@ -8,7 +8,6 @@ import logging
8
8
  from typing import Optional, Any
9
9
  from contextlib import contextmanager
10
10
 
11
- from feagi.pns.observability.monitor import InputMonitor, OutputMonitor
12
11
  from feagi.pns.observability.metrics import MetricsCollector
13
12
  from feagi.pns.observability.logger import DataLogger
14
13
 
@@ -5,7 +5,7 @@ Abstract base class for all transport mechanisms.
5
5
  """
6
6
 
7
7
  from abc import ABC, abstractmethod
8
- from typing import Optional, Callable, Any
8
+ from typing import Optional, Callable
9
9
 
10
10
 
11
11
  class BaseTransport(ABC):
@@ -80,7 +80,7 @@ class WebSocketTransport(BaseTransport):
80
80
  # Start WebSocket server
81
81
  self.server = await serve(self._handle_client, self.host, self.port)
82
82
 
83
- logger.info(f"WebSocket server started, waiting for browser connection...")
83
+ logger.info("WebSocket server started, waiting for browser connection...")
84
84
  self.connected = True
85
85
 
86
86
  async def disconnect(self) -> None:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: feagi-core
3
- Version: 2.2.1
3
+ Version: 2.2.2
4
4
  Summary: Core SDK for building FEAGI agents, controlling the neural engine, and creating marketplace packages (without Brain Visualizer)
5
5
  Author-email: "Neuraville Inc." <feagi@neuraville.com>
6
6
  License: Apache-2.0
@@ -25,7 +25,7 @@ Requires-Dist: numpy>=1.20.0
25
25
  Requires-Dist: aiohttp>=3.9.0
26
26
  Requires-Dist: toml>=0.10.2
27
27
  Requires-Dist: requests>=2.31.0
28
- Requires-Dist: feagi-rust-py-libs>=0.0.113
28
+ Requires-Dist: feagi-rust-py-libs>=0.0.114
29
29
  Requires-Dist: pyserial>=3.5
30
30
  Provides-Extra: bv
31
31
  Requires-Dist: feagi-bv<3.0.0,>=2.5.0; extra == "bv"
@@ -2,7 +2,7 @@ numpy>=1.20.0
2
2
  aiohttp>=3.9.0
3
3
  toml>=0.10.2
4
4
  requests>=2.31.0
5
- feagi-rust-py-libs>=0.0.113
5
+ feagi-rust-py-libs>=0.0.114
6
6
  pyserial>=3.5
7
7
 
8
8
  [bluetooth]
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "feagi-core"
7
- version = "2.2.1"
7
+ version = "2.2.2"
8
8
  description = "Core SDK for building FEAGI agents, controlling the neural engine, and creating marketplace packages (without Brain Visualizer)"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -28,7 +28,7 @@ dependencies = [
28
28
  "aiohttp>=3.9.0",
29
29
  "toml>=0.10.2",
30
30
  "requests>=2.31.0",
31
- "feagi-rust-py-libs>=0.0.113",
31
+ "feagi-rust-py-libs>=0.0.114",
32
32
  "pyserial>=3.5", # For ESP32 serial communication
33
33
  ]
34
34
 
@@ -236,19 +236,18 @@ def test_synaptogenesis(embryo, genome_file):
236
236
 
237
237
  # Check for mappings in the genome blueprint directly
238
238
  blueprint = embryo.genome.get("blueprint", {})
239
- has_mappings = False
240
-
241
- # Look for cortical mapping keys: "_____10c-{cortical_id}-cx-dstmap-d"
242
- for gene_key, gene_value in blueprint.items():
239
+ cortical_mappings = [
240
+ gene_key
241
+ for gene_key, gene_value in blueprint.items()
243
242
  if (
244
243
  isinstance(gene_key, str)
245
244
  and gene_key.startswith("_____10c-")
246
245
  and gene_key.endswith("-cx-dstmap-d")
247
246
  and isinstance(gene_value, dict)
248
247
  and gene_value
249
- ):
250
- has_mappings = True
251
- break
248
+ )
249
+ ]
250
+ has_mappings = bool(cortical_mappings)
252
251
 
253
252
  mappings_end = time.time()
254
253
  print(f"Mapping check time: {mappings_end - mappings_start:.3f} seconds")
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes