feagi-core 2.2.4__tar.gz → 2.2.5__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.4 → feagi_core-2.2.5}/PKG-INFO +14 -12
  2. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/__init__.py +1 -1
  3. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/bin/darwin-aarch64/feagi +0 -0
  4. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/bin/darwin-x86_64/feagi +0 -0
  5. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/bin/linux-aarch64/feagi +0 -0
  6. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/bin/linux-x86_64/feagi +0 -0
  7. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/bin/windows-x86_64/feagi.exe +0 -0
  8. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/cli/bv.py +16 -2
  9. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/cli/main.py +11 -1
  10. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/PKG-INFO +14 -12
  11. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/requires.txt +19 -13
  12. {feagi_core-2.2.4 → feagi_core-2.2.5}/pyproject.toml +14 -12
  13. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_config_and_bv.py +63 -0
  14. {feagi_core-2.2.4 → feagi_core-2.2.5}/.pre-commit-config.yaml +0 -0
  15. {feagi_core-2.2.4 → feagi_core-2.2.5}/.ruff.toml +0 -0
  16. {feagi_core-2.2.4 → feagi_core-2.2.5}/LICENSE +0 -0
  17. {feagi_core-2.2.4 → feagi_core-2.2.5}/MANIFEST.in +0 -0
  18. {feagi_core-2.2.4 → feagi_core-2.2.5}/NOTICE +0 -0
  19. {feagi_core-2.2.4 → feagi_core-2.2.5}/README.md +0 -0
  20. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/esp32_controller/esp32_controller_example.py +0 -0
  21. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/example_video_simple.py +0 -0
  22. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/genome_vs_connectome/example_genome_vs_connectome.py +0 -0
  23. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/mixed_transport_agent/mixed_transport_agent.py +0 -0
  24. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/observability/01_basic_metrics.py +0 -0
  25. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/observability/02_data_logging.py +0 -0
  26. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/observability/03_data_validation.py +0 -0
  27. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/observability/04_performance_profiling.py +0 -0
  28. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/observability/05_comprehensive_monitoring.py +0 -0
  29. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/observability/06_quick_start.py +0 -0
  30. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/servo_motor/example_servo_motor.py +0 -0
  31. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/simple_robot/example_simple_robot.py +0 -0
  32. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/video_streamer/example_rgbd_pair.py +0 -0
  33. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/video_streamer/example_rgbd_realsense.py +0 -0
  34. {feagi_core-2.2.4 → feagi_core-2.2.5}/examples/video_streamer/example_video_simple.py +0 -0
  35. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/agent/__init__.py +0 -0
  36. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/agent/base.py +0 -0
  37. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/agent/bluetooth.py +0 -0
  38. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/agent/esp32.py +0 -0
  39. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/agent/video.py +0 -0
  40. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/cli/__init__.py +0 -0
  41. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/cli/bv_process.py +0 -0
  42. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/cli/feagi_process.py +0 -0
  43. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/cli/process_utils.py +0 -0
  44. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/config.py +0 -0
  45. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/connectome/__init__.py +0 -0
  46. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/connectome/api.py +0 -0
  47. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/connectome/artifact.py +0 -0
  48. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/connectome/model.py +0 -0
  49. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/engine/__init__.py +0 -0
  50. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/engine/manager.py +0 -0
  51. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/genome/__init__.py +0 -0
  52. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/genome/api.py +0 -0
  53. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/genome/artifact.py +0 -0
  54. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/packaging/__init__.py +0 -0
  55. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/paths.py +0 -0
  56. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/__init__.py +0 -0
  57. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/brain_input.py +0 -0
  58. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/brain_output.py +0 -0
  59. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/client.py +0 -0
  60. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/connector_utils.py +0 -0
  61. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/health_monitor.py +0 -0
  62. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/inputs/__init__.py +0 -0
  63. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/inputs/base.py +0 -0
  64. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/inputs/numeric.py +0 -0
  65. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/inputs/smart_imu.py +0 -0
  66. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/inputs/text.py +0 -0
  67. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/inputs/vision.py +0 -0
  68. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/__init__.py +0 -0
  69. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/controller_logger.py +0 -0
  70. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/formatters.py +0 -0
  71. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/inspector.py +0 -0
  72. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/logger.py +0 -0
  73. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/metrics.py +0 -0
  74. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/monitor.py +0 -0
  75. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/profiler.py +0 -0
  76. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/observability/utils.py +0 -0
  77. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/outputs/__init__.py +0 -0
  78. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/outputs/base.py +0 -0
  79. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/outputs/motor.py +0 -0
  80. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/outputs/numeric.py +0 -0
  81. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/outputs/text.py +0 -0
  82. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/pns/registration_manager.py +0 -0
  83. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/transports/__init__.py +0 -0
  84. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/transports/base.py +0 -0
  85. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/transports/bluetooth_direct.py +0 -0
  86. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/transports/websocket_client.py +0 -0
  87. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi/transports/websocket_relay.py +0 -0
  88. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi-bv/feagi_bv/__init__.py +0 -0
  89. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi-bv/feagi_bv/runtime.py +0 -0
  90. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi-bv/setup.py +0 -0
  91. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/SOURCES.txt +0 -0
  92. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/dependency_links.txt +0 -0
  93. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/entry_points.txt +0 -0
  94. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/not-zip-safe +0 -0
  95. {feagi_core-2.2.4 → feagi_core-2.2.5}/feagi_core.egg-info/top_level.txt +0 -0
  96. {feagi_core-2.2.4 → feagi_core-2.2.5}/scripts/bump_version.py +0 -0
  97. {feagi_core-2.2.4 → feagi_core-2.2.5}/scripts/migrate_capabilities_json.py +0 -0
  98. {feagi_core-2.2.4 → feagi_core-2.2.5}/scripts/test_genome_import.py +0 -0
  99. {feagi_core-2.2.4 → feagi_core-2.2.5}/setup.cfg +0 -0
  100. {feagi_core-2.2.4 → feagi_core-2.2.5}/setup.py +0 -0
  101. {feagi_core-2.2.4 → feagi_core-2.2.5}/src/api/routers/v1/inputs.py +0 -0
  102. {feagi_core-2.2.4 → feagi_core-2.2.5}/src/evo/mapping_helper.py +0 -0
  103. {feagi_core-2.2.4 → feagi_core-2.2.5}/src/inf/byte_processor.py +0 -0
  104. {feagi_core-2.2.4 → feagi_core-2.2.5}/src/pns/vision.py +0 -0
  105. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/__init__.py +0 -0
  106. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/__init__.py +0 -0
  107. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_brain_artifact_options.py +0 -0
  108. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_bv_process_manager.py +0 -0
  109. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_config_command.py +0 -0
  110. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_engine_manager_spawn.py +0 -0
  111. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_feagi_process_manager.py +0 -0
  112. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/cli/test_main_interrupt_handling.py +0 -0
  113. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/__init__.py +0 -0
  114. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/bdu/__init__.py +0 -0
  115. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/bdu/test_connectome_manager.py +0 -0
  116. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/bdu/test_neuroembryogenesis.py +0 -0
  117. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/bdu/test_synaptogenesis.py +0 -0
  118. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/npu/__init__.py +0 -0
  119. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/npu/test_optimized_integration.py +0 -0
  120. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/npu_bdu_integration.py +0 -0
  121. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_cli_config_show.py +0 -0
  122. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_cortical_area_expansion.py +0 -0
  123. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_cortical_area_parameter_updates.py +0 -0
  124. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_cortical_mapping_flow.py +0 -0
  125. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_cortical_mapping_reconstruction.py +0 -0
  126. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_cross_cortical_synaptic_propagation.py +0 -0
  127. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_debug_injection_issue.py +0 -0
  128. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_debug_power_area.py +0 -0
  129. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_essential_genome_power_injection.py +0 -0
  130. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_genome_burst_engine_auto_start.py +0 -0
  131. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_genome_connectome_sync.py +0 -0
  132. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_intelligent_expansion.py +0 -0
  133. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_morphology_dimension_sensitive.py +0 -0
  134. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_power_neuron_injection.py +0 -0
  135. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_real_world_synaptic_propagation.py +0 -0
  136. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_refractory_fire_ledger_api.py +0 -0
  137. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_ros_feagi_numeric_roundtrip.py +0 -0
  138. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_rust_fcl_workflow.py +0 -0
  139. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_rust_pns_visualization.py +0 -0
  140. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_sensory_fcl_pipeline.py +0 -0
  141. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_video_agent.py +0 -0
  142. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/test_video_to_feagi.py +0 -0
  143. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/workflows/__init__.py +0 -0
  144. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/integration/workflows/test_test_mode_integration.py +0 -0
  145. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_brain_input_helpers.py +0 -0
  146. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_brain_output_controller_api.py +0 -0
  147. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_client.py +0 -0
  148. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_connect_duplicate_registration.py +0 -0
  149. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_connectome_api.py +0 -0
  150. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_connectome_artifact.py +0 -0
  151. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_connectome_migration.py +0 -0
  152. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_connector_agent_register_callback.py +0 -0
  153. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_cortical_id_label.py +0 -0
  154. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_device_configuration_verification.py +0 -0
  155. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_device_registration_contract.py +0 -0
  156. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_engine_brain_artifacts.py +0 -0
  157. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_genome.py +0 -0
  158. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_genome_artifact.py +0 -0
  159. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_health_monitor.py +0 -0
  160. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_imu_sdk_helpers.py +0 -0
  161. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_motor_cortical_id_derivation.py +0 -0
  162. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_motor_decode_single_source_guardrail.py +0 -0
  163. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_motor_decoder_channel_span.py +0 -0
  164. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_motor_registration_tracking.py +0 -0
  165. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_recovery_config.py +0 -0
  166. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_rgbd_sdk_helpers.py +0 -0
  167. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_sensorimotor_area_registration.py +0 -0
  168. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_servo_motor.py +0 -0
  169. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_shm_cross_platform.py +0 -0
  170. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_smart_imu_input.py +0 -0
  171. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_text_token_stream.py +0 -0
  172. {feagi_core-2.2.4 → feagi_core-2.2.5}/tests/test_vision_segmentation.py +0 -0
  173. {feagi_core-2.2.4 → feagi_core-2.2.5}/tools/doc_helpers/convert_html_tables.py +0 -0
  174. {feagi_core-2.2.4 → feagi_core-2.2.5}/tools/doc_helpers/fix_broken_links.py +0 -0
  175. {feagi_core-2.2.4 → feagi_core-2.2.5}/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.4
3
+ Version: 2.2.5
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,14 +25,15 @@ 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.115
28
+ Requires-Dist: feagi-rust-py-libs>=0.0.116
29
29
  Requires-Dist: pyserial>=3.5
30
30
  Provides-Extra: bv
31
- Requires-Dist: feagi-bv<3.0.0,>=2.6.3; extra == "bv"
32
- Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.3; sys_platform == "linux" and extra == "bv"
33
- Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "bv"
34
- Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "bv"
35
- Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.3; sys_platform == "win32" and extra == "bv"
31
+ Requires-Dist: feagi-bv<3.0.0,>=2.6.6; extra == "bv"
32
+ Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "bv"
33
+ Requires-Dist: feagi-bv-linux-arm64<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "bv"
34
+ Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "bv"
35
+ Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "bv"
36
+ Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.6; sys_platform == "win32" and extra == "bv"
36
37
  Provides-Extra: video
37
38
  Requires-Dist: opencv-python>=4.9.0; extra == "video"
38
39
  Provides-Extra: bluetooth
@@ -60,11 +61,12 @@ Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
60
61
  Requires-Dist: mkdocstrings>=0.20.0; extra == "docs"
61
62
  Requires-Dist: mkdocstrings-python>=1.0.0; extra == "docs"
62
63
  Provides-Extra: full
63
- Requires-Dist: feagi-bv<3.0.0,>=2.6.3; extra == "full"
64
- Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.3; sys_platform == "linux" and extra == "full"
65
- Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "full"
66
- Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "full"
67
- Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.3; sys_platform == "win32" and extra == "full"
64
+ Requires-Dist: feagi-bv<3.0.0,>=2.6.6; extra == "full"
65
+ Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "full"
66
+ Requires-Dist: feagi-bv-linux-arm64<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "full"
67
+ Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "full"
68
+ Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "full"
69
+ Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.6; sys_platform == "win32" and extra == "full"
68
70
  Requires-Dist: opencv-python>=4.9.0; extra == "full"
69
71
  Requires-Dist: bleak>=0.21.0; extra == "full"
70
72
  Requires-Dist: websockets>=12.0; extra == "full"
@@ -18,7 +18,7 @@ Main modules:
18
18
  - feagi.cli: Command-line tools
19
19
  """
20
20
 
21
- __version__ = "2.2.4"
21
+ __version__ = "2.2.5"
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).
@@ -97,7 +97,14 @@ def _resolve_bv_binary() -> Tuple[Path, Path]:
97
97
 
98
98
  # Determine platform-specific package name
99
99
  if system.startswith("linux"):
100
- package_name = "feagi_bv_linux"
100
+ if machine in ("arm64", "aarch64"):
101
+ package_name = "feagi_bv_linux_arm64"
102
+ elif machine in ("x86_64", "amd64"):
103
+ package_name = "feagi_bv_linux"
104
+ else:
105
+ raise BrainVisualizerLaunchError(
106
+ f"Unsupported Linux architecture: {machine}"
107
+ )
101
108
  elif system == "darwin":
102
109
  if machine in ("arm64", "aarch64"):
103
110
  package_name = "feagi_bv_macos_arm64"
@@ -165,7 +172,14 @@ def _resolve_bv_binary() -> Tuple[Path, Path]:
165
172
  working_dir = binary.parent
166
173
  pck_file = None
167
174
  elif system.startswith("linux"):
168
- binary_names = ("BrainVisualizer", "BrainVisualizer-Remote")
175
+ binary_names = (
176
+ "BrainVisualizer",
177
+ "BrainVisualizer-Remote",
178
+ "BrainVisualizer.x86_64",
179
+ "BrainVisualizer.arm64",
180
+ "BrainVisualizer-Remote.x86_64",
181
+ "BrainVisualizer-Remote.arm64",
182
+ )
169
183
  candidates = _candidate_paths(bin_dir, binary_names, ("", "linux"))
170
184
  binary = _first_existing_path(candidates)
171
185
  if binary is None:
@@ -849,9 +849,19 @@ def main(argv: list[str] | None = None) -> int:
849
849
  except Exception:
850
850
  pass
851
851
  elif system.startswith("linux"):
852
+ machine = platform.machine().lower()
853
+ if machine in ("aarch64", "arm64"):
854
+ bv_package = "feagi-bv-linux-arm64"
855
+ elif machine in ("x86_64", "amd64"):
856
+ bv_package = "feagi-bv-linux"
857
+ else:
858
+ bv_package = None
852
859
  try:
853
- bv_version = version("feagi-bv-linux")
860
+ if bv_package is not None:
861
+ bv_version = version(bv_package)
854
862
  except Exception:
863
+ bv_version = None
864
+ if not bv_version:
855
865
  try:
856
866
  bv_version = version("feagi-bv")
857
867
  except Exception:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: feagi-core
3
- Version: 2.2.4
3
+ Version: 2.2.5
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,14 +25,15 @@ 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.115
28
+ Requires-Dist: feagi-rust-py-libs>=0.0.116
29
29
  Requires-Dist: pyserial>=3.5
30
30
  Provides-Extra: bv
31
- Requires-Dist: feagi-bv<3.0.0,>=2.6.3; extra == "bv"
32
- Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.3; sys_platform == "linux" and extra == "bv"
33
- Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "bv"
34
- Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "bv"
35
- Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.3; sys_platform == "win32" and extra == "bv"
31
+ Requires-Dist: feagi-bv<3.0.0,>=2.6.6; extra == "bv"
32
+ Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "bv"
33
+ Requires-Dist: feagi-bv-linux-arm64<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "bv"
34
+ Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "bv"
35
+ Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "bv"
36
+ Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.6; sys_platform == "win32" and extra == "bv"
36
37
  Provides-Extra: video
37
38
  Requires-Dist: opencv-python>=4.9.0; extra == "video"
38
39
  Provides-Extra: bluetooth
@@ -60,11 +61,12 @@ Requires-Dist: mkdocs-material>=9.0.0; extra == "docs"
60
61
  Requires-Dist: mkdocstrings>=0.20.0; extra == "docs"
61
62
  Requires-Dist: mkdocstrings-python>=1.0.0; extra == "docs"
62
63
  Provides-Extra: full
63
- Requires-Dist: feagi-bv<3.0.0,>=2.6.3; extra == "full"
64
- Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.3; sys_platform == "linux" and extra == "full"
65
- Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "full"
66
- Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.3; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "full"
67
- Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.3; sys_platform == "win32" and extra == "full"
64
+ Requires-Dist: feagi-bv<3.0.0,>=2.6.6; extra == "full"
65
+ Requires-Dist: feagi-bv-linux<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "x86_64") and extra == "full"
66
+ Requires-Dist: feagi-bv-linux-arm64<3.0.0,>=2.6.6; (sys_platform == "linux" and platform_machine == "aarch64") and extra == "full"
67
+ Requires-Dist: feagi-bv-macos-arm64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "arm64") and extra == "full"
68
+ Requires-Dist: feagi-bv-macos-x86_64<3.0.0,>=2.6.6; (sys_platform == "darwin" and platform_machine == "x86_64") and extra == "full"
69
+ Requires-Dist: feagi-bv-windows<3.0.0,>=2.6.6; sys_platform == "win32" and extra == "full"
68
70
  Requires-Dist: opencv-python>=4.9.0; extra == "full"
69
71
  Requires-Dist: bleak>=0.21.0; extra == "full"
70
72
  Requires-Dist: websockets>=12.0; extra == "full"
@@ -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.115
5
+ feagi-rust-py-libs>=0.0.116
6
6
  pyserial>=3.5
7
7
 
8
8
  [bluetooth]
@@ -10,19 +10,22 @@ bleak>=0.21.0
10
10
  websockets>=12.0
11
11
 
12
12
  [bv]
13
- feagi-bv<3.0.0,>=2.6.3
13
+ feagi-bv<3.0.0,>=2.6.6
14
14
 
15
15
  [bv:sys_platform == "darwin" and platform_machine == "arm64"]
16
- feagi-bv-macos-arm64<3.0.0,>=2.6.3
16
+ feagi-bv-macos-arm64<3.0.0,>=2.6.6
17
17
 
18
18
  [bv:sys_platform == "darwin" and platform_machine == "x86_64"]
19
- feagi-bv-macos-x86_64<3.0.0,>=2.6.3
19
+ feagi-bv-macos-x86_64<3.0.0,>=2.6.6
20
20
 
21
- [bv:sys_platform == "linux"]
22
- feagi-bv-linux<3.0.0,>=2.6.3
21
+ [bv:sys_platform == "linux" and platform_machine == "aarch64"]
22
+ feagi-bv-linux-arm64<3.0.0,>=2.6.6
23
+
24
+ [bv:sys_platform == "linux" and platform_machine == "x86_64"]
25
+ feagi-bv-linux<3.0.0,>=2.6.6
23
26
 
24
27
  [bv:sys_platform == "win32"]
25
- feagi-bv-windows<3.0.0,>=2.6.3
28
+ feagi-bv-windows<3.0.0,>=2.6.6
26
29
 
27
30
  [dev]
28
31
  pytest>=7.0.0
@@ -42,22 +45,25 @@ mkdocstrings>=0.20.0
42
45
  mkdocstrings-python>=1.0.0
43
46
 
44
47
  [full]
45
- feagi-bv<3.0.0,>=2.6.3
48
+ feagi-bv<3.0.0,>=2.6.6
46
49
  opencv-python>=4.9.0
47
50
  bleak>=0.21.0
48
51
  websockets>=12.0
49
52
 
50
53
  [full:sys_platform == "darwin" and platform_machine == "arm64"]
51
- feagi-bv-macos-arm64<3.0.0,>=2.6.3
54
+ feagi-bv-macos-arm64<3.0.0,>=2.6.6
52
55
 
53
56
  [full:sys_platform == "darwin" and platform_machine == "x86_64"]
54
- feagi-bv-macos-x86_64<3.0.0,>=2.6.3
57
+ feagi-bv-macos-x86_64<3.0.0,>=2.6.6
58
+
59
+ [full:sys_platform == "linux" and platform_machine == "aarch64"]
60
+ feagi-bv-linux-arm64<3.0.0,>=2.6.6
55
61
 
56
- [full:sys_platform == "linux"]
57
- feagi-bv-linux<3.0.0,>=2.6.3
62
+ [full:sys_platform == "linux" and platform_machine == "x86_64"]
63
+ feagi-bv-linux<3.0.0,>=2.6.6
58
64
 
59
65
  [full:sys_platform == "win32"]
60
- feagi-bv-windows<3.0.0,>=2.6.3
66
+ feagi-bv-windows<3.0.0,>=2.6.6
61
67
 
62
68
  [test]
63
69
  pytest>=7.0.0
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "feagi-core"
7
- version = "2.2.4"
7
+ version = "2.2.5"
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,17 +28,18 @@ 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.115",
31
+ "feagi-rust-py-libs>=0.0.116",
32
32
  "pyserial>=3.5", # For ESP32 serial communication
33
33
  ]
34
34
 
35
35
  [project.optional-dependencies]
36
36
  bv = [
37
- "feagi-bv>=2.6.3,<3.0.0",
38
- "feagi-bv-linux>=2.6.3,<3.0.0 ; sys_platform == 'linux'",
39
- "feagi-bv-macos-arm64>=2.6.3,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'arm64'",
40
- "feagi-bv-macos-x86_64>=2.6.3,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'x86_64'",
41
- "feagi-bv-windows>=2.6.3,<3.0.0 ; sys_platform == 'win32'",
37
+ "feagi-bv>=2.6.6,<3.0.0",
38
+ "feagi-bv-linux>=2.6.6,<3.0.0 ; sys_platform == 'linux' and platform_machine == 'x86_64'",
39
+ "feagi-bv-linux-arm64>=2.6.6,<3.0.0 ; sys_platform == 'linux' and platform_machine == 'aarch64'",
40
+ "feagi-bv-macos-arm64>=2.6.6,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'arm64'",
41
+ "feagi-bv-macos-x86_64>=2.6.6,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'x86_64'",
42
+ "feagi-bv-windows>=2.6.6,<3.0.0 ; sys_platform == 'win32'",
42
43
  ]
43
44
  video = [
44
45
  "opencv-python>=4.9.0",
@@ -72,11 +73,12 @@ docs = [
72
73
  "mkdocstrings-python>=1.0.0",
73
74
  ]
74
75
  full = [
75
- "feagi-bv>=2.6.3,<3.0.0",
76
- "feagi-bv-linux>=2.6.3,<3.0.0 ; sys_platform == 'linux'",
77
- "feagi-bv-macos-arm64>=2.6.3,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'arm64'",
78
- "feagi-bv-macos-x86_64>=2.6.3,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'x86_64'",
79
- "feagi-bv-windows>=2.6.3,<3.0.0 ; sys_platform == 'win32'",
76
+ "feagi-bv>=2.6.6,<3.0.0",
77
+ "feagi-bv-linux>=2.6.6,<3.0.0 ; sys_platform == 'linux' and platform_machine == 'x86_64'",
78
+ "feagi-bv-linux-arm64>=2.6.6,<3.0.0 ; sys_platform == 'linux' and platform_machine == 'aarch64'",
79
+ "feagi-bv-macos-arm64>=2.6.6,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'arm64'",
80
+ "feagi-bv-macos-x86_64>=2.6.6,<3.0.0 ; sys_platform == 'darwin' and platform_machine == 'x86_64'",
81
+ "feagi-bv-windows>=2.6.6,<3.0.0 ; sys_platform == 'win32'",
80
82
  "opencv-python>=4.9.0",
81
83
  "bleak>=0.21.0",
82
84
  "websockets>=12.0",
@@ -321,3 +321,66 @@ class TestWindowsBVBinaryResolution:
321
321
  "feagi.cli.bv.importlib.util.find_spec", return_value=spec
322
322
  ), pytest.raises(BrainVisualizerLaunchError, match="BV Windows runtime not found"):
323
323
  _resolve_bv_binary()
324
+
325
+
326
+ class TestLinuxBVBinaryResolution:
327
+ """Test Linux Brain Visualizer package and binary selection."""
328
+
329
+ def test_resolves_x86_64_remote_binary(self, tmp_path):
330
+ """x86_64 Linux loads feagi_bv_linux and the x86_64 export."""
331
+ package_dir = tmp_path / "feagi_bv_linux"
332
+ bin_dir = package_dir / "bin"
333
+ bin_dir.mkdir(parents=True)
334
+ binary_path = bin_dir / "BrainVisualizer-Remote.x86_64"
335
+ binary_path.write_text("")
336
+
337
+ spec = SimpleNamespace(submodule_search_locations=[str(package_dir)])
338
+ with patch("feagi.cli.bv.platform.system", return_value="Linux"), patch(
339
+ "feagi.cli.bv.platform.machine", return_value="x86_64"
340
+ ), patch("feagi.cli.bv.importlib.util.find_spec", return_value=spec):
341
+ binary, working_dir = _resolve_bv_binary()
342
+
343
+ assert binary == binary_path
344
+ assert working_dir == bin_dir
345
+
346
+ def test_resolves_aarch64_remote_binary(self, tmp_path):
347
+ """aarch64 Linux loads feagi_bv_linux_arm64 and the arm64 export."""
348
+ package_dir = tmp_path / "feagi_bv_linux_arm64"
349
+ bin_dir = package_dir / "bin"
350
+ bin_dir.mkdir(parents=True)
351
+ binary_path = bin_dir / "BrainVisualizer-Remote.arm64"
352
+ binary_path.write_text("")
353
+
354
+ spec = SimpleNamespace(submodule_search_locations=[str(package_dir)])
355
+ with patch("feagi.cli.bv.platform.system", return_value="Linux"), patch(
356
+ "feagi.cli.bv.platform.machine", return_value="aarch64"
357
+ ), patch("feagi.cli.bv.importlib.util.find_spec", return_value=spec):
358
+ binary, working_dir = _resolve_bv_binary()
359
+
360
+ assert binary == binary_path
361
+ assert working_dir == bin_dir
362
+
363
+ def test_arm64_machine_name_uses_arm64_package(self, tmp_path):
364
+ """arm64 is the same CPU as aarch64 and selects the ARM64 package."""
365
+ package_dir = tmp_path / "feagi_bv_linux_arm64"
366
+ bin_dir = package_dir / "bin"
367
+ bin_dir.mkdir(parents=True)
368
+ binary_path = bin_dir / "BrainVisualizer-Remote.arm64"
369
+ binary_path.write_text("")
370
+
371
+ spec = SimpleNamespace(submodule_search_locations=[str(package_dir)])
372
+ with patch("feagi.cli.bv.platform.system", return_value="Linux"), patch(
373
+ "feagi.cli.bv.platform.machine", return_value="arm64"
374
+ ), patch("feagi.cli.bv.importlib.util.find_spec", return_value=spec):
375
+ binary, _working_dir = _resolve_bv_binary()
376
+
377
+ assert binary == binary_path
378
+
379
+ def test_rejects_unknown_linux_architecture(self):
380
+ """An unrecognized Linux CPU does not select a package."""
381
+ with patch("feagi.cli.bv.platform.system", return_value="Linux"), patch(
382
+ "feagi.cli.bv.platform.machine", return_value="riscv64"
383
+ ), pytest.raises(
384
+ BrainVisualizerLaunchError, match="Unsupported Linux architecture"
385
+ ):
386
+ _resolve_bv_binary()
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