feagi-core 2.2.0__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.
- {feagi_core-2.2.0 → feagi_core-2.2.2}/PKG-INFO +2 -2
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/__init__.py +1 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/bin/darwin-aarch64/feagi +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/bin/darwin-x86_64/feagi +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/bin/linux-aarch64/feagi +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/bin/linux-x86_64/feagi +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/bin/windows-x86_64/feagi.exe +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/connector_utils.py +2 -2
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/inputs/vision.py +6 -14
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/controller_logger.py +2 -3
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/formatters.py +0 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/logger.py +1 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/metrics.py +2 -3
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/monitor.py +1 -2
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/profiler.py +0 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/utils.py +0 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/transports/base.py +1 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/transports/websocket_relay.py +1 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/PKG-INFO +2 -2
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/requires.txt +1 -1
- {feagi_core-2.2.0 → feagi_core-2.2.2}/pyproject.toml +2 -2
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/bdu/test_neuroembryogenesis.py +6 -7
- {feagi_core-2.2.0 → feagi_core-2.2.2}/.pre-commit-config.yaml +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/.ruff.toml +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/LICENSE +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/MANIFEST.in +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/NOTICE +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/README.md +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/esp32_controller/esp32_controller_example.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/example_video_simple.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/genome_vs_connectome/example_genome_vs_connectome.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/mixed_transport_agent/mixed_transport_agent.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/observability/01_basic_metrics.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/observability/02_data_logging.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/observability/03_data_validation.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/observability/04_performance_profiling.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/observability/05_comprehensive_monitoring.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/observability/06_quick_start.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/servo_motor/example_servo_motor.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/simple_robot/example_simple_robot.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/video_streamer/example_rgbd_pair.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/video_streamer/example_rgbd_realsense.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/examples/video_streamer/example_video_simple.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/agent/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/agent/base.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/agent/bluetooth.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/agent/esp32.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/agent/video.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/cli/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/cli/bv.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/cli/bv_process.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/cli/feagi_process.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/cli/main.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/cli/process_utils.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/config.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/connectome/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/connectome/api.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/connectome/artifact.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/connectome/model.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/engine/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/engine/manager.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/genome/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/genome/api.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/genome/artifact.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/packaging/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/paths.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/brain_input.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/brain_output.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/client.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/health_monitor.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/inputs/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/inputs/base.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/inputs/numeric.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/inputs/smart_imu.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/inputs/text.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/observability/inspector.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/outputs/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/outputs/base.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/outputs/motor.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/outputs/numeric.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/outputs/text.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/pns/registration_manager.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/transports/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/transports/bluetooth_direct.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi/transports/websocket_client.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi-bv/feagi_bv/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi-bv/feagi_bv/runtime.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi-bv/setup.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/SOURCES.txt +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/dependency_links.txt +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/entry_points.txt +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/not-zip-safe +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/feagi_core.egg-info/top_level.txt +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/scripts/bump_version.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/scripts/migrate_capabilities_json.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/scripts/test_genome_import.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/setup.cfg +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/setup.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/src/api/routers/v1/inputs.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/src/evo/mapping_helper.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/src/inf/byte_processor.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/src/pns/vision.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_brain_artifact_options.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_bv_process_manager.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_config_and_bv.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_config_command.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_engine_manager_spawn.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_feagi_process_manager.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/cli/test_main_interrupt_handling.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/bdu/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/bdu/test_connectome_manager.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/bdu/test_synaptogenesis.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/npu/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/npu/test_optimized_integration.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/npu_bdu_integration.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cli_config_show.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cortical_area_expansion.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cortical_area_parameter_updates.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cortical_mapping_flow.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cortical_mapping_reconstruction.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cross_cortical_synaptic_propagation.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_debug_injection_issue.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_debug_power_area.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_essential_genome_power_injection.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_genome_burst_engine_auto_start.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_genome_connectome_sync.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_intelligent_expansion.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_morphology_dimension_sensitive.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_power_neuron_injection.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_real_world_synaptic_propagation.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_refractory_fire_ledger_api.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_ros_feagi_numeric_roundtrip.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_rust_fcl_workflow.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_rust_pns_visualization.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_sensory_fcl_pipeline.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_snapshot_restore_cortical_areas.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_video_agent.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_video_to_feagi.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/workflows/__init__.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/workflows/test_test_mode_integration.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_brain_input_helpers.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_brain_output_controller_api.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_client.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_connect_duplicate_registration.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_connectome_api.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_connectome_artifact.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_connectome_migration.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_connector_agent_register_callback.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_cortical_id_label.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_device_configuration_verification.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_device_registration_contract.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_engine_brain_artifacts.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_genome.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_genome_artifact.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_health_monitor.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_imu_sdk_helpers.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_motor_cortical_id_derivation.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_motor_decode_single_source_guardrail.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_motor_decoder_channel_span.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_motor_registration_tracking.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_recovery_config.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_rgbd_sdk_helpers.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_servo_motor.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_shm_cross_platform.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_smart_imu_input.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_text_token_stream.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tests/test_vision_segmentation.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tools/doc_helpers/convert_html_tables.py +0 -0
- {feagi_core-2.2.0 → feagi_core-2.2.2}/tools/doc_helpers/fix_broken_links.py +0 -0
- {feagi_core-2.2.0 → 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.
|
|
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.
|
|
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.
|
|
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).
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -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
|
-
|
|
239
|
-
|
|
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(
|
|
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(
|
|
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(
|
|
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(
|
|
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
|
|
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
|
-
|
|
88
|
+
'[%(asctime)s] %(message)s',
|
|
90
89
|
datefmt=self.timestamp_format
|
|
91
90
|
)
|
|
92
91
|
else:
|
|
@@ -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(
|
|
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(
|
|
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
|
|
10
|
-
from datetime import datetime
|
|
9
|
+
from typing import Any, Dict
|
|
11
10
|
|
|
12
11
|
logger = logging.getLogger("feagi.pns.observability.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
|
|
|
@@ -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(
|
|
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.
|
|
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.
|
|
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"
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "feagi-core"
|
|
7
|
-
version = "2.2.
|
|
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.
|
|
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
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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
|
-
|
|
251
|
-
|
|
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
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/examples/genome_vs_connectome/example_genome_vs_connectome.py
RENAMED
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/examples/mixed_transport_agent/mixed_transport_agent.py
RENAMED
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cortical_area_parameter_updates.py
RENAMED
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cortical_mapping_reconstruction.py
RENAMED
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_cross_cortical_synaptic_propagation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_essential_genome_power_injection.py
RENAMED
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_genome_burst_engine_auto_start.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_morphology_dimension_sensitive.py
RENAMED
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_real_world_synaptic_propagation.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/test_snapshot_restore_cortical_areas.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{feagi_core-2.2.0 → feagi_core-2.2.2}/tests/integration/workflows/test_test_mode_integration.py
RENAMED
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|