agent-framework-lib 0.8.1.post8__tar.gz → 0.8.2.post2__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.
- {agent_framework_lib-0.8.1.post8/agent_framework_lib.egg-info → agent_framework_lib-0.8.2.post2}/PKG-INFO +47 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/README.md +44 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/__init__.py +49 -68
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/base.py +4 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +62 -30
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +18 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/sse_wrapper.py +6 -14
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/translation_layer.py +17 -8
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/models.py +10 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/providers/__init__.py +2 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/providers/elasticsearch_provider.py +11 -10
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/providers/postgres_provider.py +2 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/capabilities/resolver.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/activity_formatter.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/agent_interface.py +0 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/agent_provider.py +3 -8
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/base_agent.py +17 -15
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/context_budget.py +67 -58
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/context_summarizer.py +31 -24
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/implementation_validator.py +135 -118
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/knowledge_state.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/loop_detector.py +8 -20
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/model_clients.py +325 -294
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/model_config.py +221 -202
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/model_router.py +4 -4
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/scratchpad_compressor.py +55 -39
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/state_manager.py +104 -83
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/step_display_config.py +3 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/implementations/budget_aware_agent.py +10 -16
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/implementations/llamaindex_agent.py +64 -33
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/implementations/llamaindex_memory_adapter.py +177 -155
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/implementations/microsoft_agent.py +78 -73
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/__init__.py +4 -10
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/agent_mixin.py +43 -45
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/base.py +36 -43
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/manager.py +86 -117
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/personalization.py +4 -12
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/providers/__init__.py +2 -2
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/providers/graphiti_provider.py +8 -8
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/providers/memori_provider.py +45 -62
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/tools.py +11 -20
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +41 -48
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/elasticsearch_logging.py +105 -96
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/error_handling.py +268 -222
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/error_logging.py +184 -179
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/llm_auto_instrumentor.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/observability_manager.py +1 -2
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/otel_logging_handler.py +10 -15
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/otel_metrics_recorder.py +13 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/performance_monitor.py +251 -213
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/progress_tracker.py +128 -111
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/resource_manager.py +143 -91
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/streaming_latency_tracer.py +5 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/token_counter.py +4 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/processing/ai_content_management.py +402 -381
- agent_framework_lib-0.8.2.post2/agent_framework/processing/markdown_converter.py +1165 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/processing/multimodal_integration.py +183 -161
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/session/elasticsearch_session_storage.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/agent_mixin.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/base.py +1 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/scripts/create_and_register.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/scripts/register_to_storage.py +24 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/code_format/format_python.py +3 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/csv/create_csv.py +1 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/csv/read_csv.py +3 -7
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/csv/transform_csv.py +7 -17
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +2 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +2 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/excel/create_excel.py +4 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file/create_file.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file/list_files.py +8 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file/read_file.py +4 -10
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file_access/download_to_local.py +9 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/image_gen/create_image.py +33 -49
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +25 -15
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +5 -12
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +30 -52
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/table/table_to_image.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/word/create_word.py +20 -17
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/custom_skill_manager.py +5 -4
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/discovery_prompt.py +19 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/markdown_loader.py +11 -11
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/storage/__init__.py +16 -16
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/storage/file_storages.py +21 -10
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/storage/file_system_management.py +1146 -940
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/storage/storage_optimizer.py +158 -151
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/subagents/executor.py +55 -43
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/subagents/retrigger.py +12 -12
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/subagents/spawn_tool.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/base.py +24 -23
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/html_content_analyzer.py +3 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/multimodal_tools.py +212 -165
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/shell_tool.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/web_search_tool.py +6 -4
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/utils/__init__.py +12 -12
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/utils/path_utils.py +83 -73
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/utils/session_title_generator.py +1 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/utils/special_blocks.py +31 -27
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/admin_models.py +1 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/admin_services.py +1 -3
- agent_framework_lib-0.8.2.post2/agent_framework/web/docs/GITNEXUS_USER_GUIDE.md +386 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/README.md +44 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/agent_example_multi_skills.py +2 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/agent_with_file_storage.py +30 -35
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2/agent_framework/web/docs}/examples/agent_with_mcp.py +42 -52
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/agent_with_memory.py +70 -85
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/agent_with_memory_hybrid.py +2 -4
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2/agent_framework/web/docs}/examples/custom_framework_agent.py +315 -320
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/documentation_generator.py +129 -139
- agent_framework_lib-0.8.2.post2/agent_framework/web/gitnexus_client.py +345 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/helper_agent.py +674 -45
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/otel_tracing_middleware.py +20 -14
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/server.py +128 -29
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/skills_router.py +2 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/artefacts.py +7 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/client.py +49 -14
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/context.py +3 -9
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/cursor.py +4 -4
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/poller.py +16 -5
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/router.py +76 -34
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/session.py +15 -12
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2/agent_framework_lib.egg-info}/PKG-INFO +47 -6
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework_lib.egg-info/SOURCES.txt +3 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework_lib.egg-info/requires.txt +3 -0
- agent_framework_lib-0.8.2.post2/docs/GITNEXUS_USER_GUIDE.md +386 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_example_multi_skills.py +2 -3
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_exemple_test.py +5 -7
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_training_with_apo.py +67 -75
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_with_file_storage.py +30 -35
- {agent_framework_lib-0.8.1.post8/agent_framework/web/docs → agent_framework_lib-0.8.2.post2}/examples/agent_with_mcp.py +42 -52
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_with_memory_hybrid.py +2 -4
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/biagenttest.py +55 -45
- {agent_framework_lib-0.8.1.post8/agent_framework/web/docs → agent_framework_lib-0.8.2.post2}/examples/custom_framework_agent.py +315 -320
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/workspace_test_agent.py +1 -1
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/pyproject.toml +6 -1
- agent_framework_lib-0.8.1.post8/agent_framework/chart_generation/llm_refinement_loop.py +0 -425
- agent_framework_lib-0.8.1.post8/agent_framework/processing/markdown_converter.py +0 -978
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/ARCHITECTURE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/LICENSE +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/MANIFEST.in +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/a2a_router.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/endpoints/models_jsonrpc.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/capabilities/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/elasticsearch_config_provider.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/models.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/provider_calibration.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/core/streaming_parts_accumulator.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/implementations/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/memory/config.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/api_timing_tracker.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/llm_metrics.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/metrics_aggregator.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/metrics_config.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/otel_instrumentor.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/otel_setup.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/timing_tracker.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/monitoring/tracing_context.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/notifications/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/notifications/hub.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/processing/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/processing/rich_content_validation.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/py.typed +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/session/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/session/session_storage.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/chart/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/csv/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/drawio/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/excel/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/table/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/web_news_search/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/web_news_search/web_news_search.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/builtin/skills/word/SKILL.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/skills/tools.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/subagents/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/subagents/message_injector.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/subagents/message_queue.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/activity_callback.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/adaptive_pdf_css.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/pdf_image_scaler.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/sizing_config.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/tools/web_fetch_tool.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/utils/post_install.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/utils/source_detector.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/admin_auth.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/admin_router.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/api_timing_middleware.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/Dockerfile +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/docker-compose.yml +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/helper_ui.html +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/modern_ui.html +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/web/test_app.html +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/__init__.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/config.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/memory.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/models.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/preferences.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/workspace/subscription.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework_lib.egg-info/entry_points.txt +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework_lib.egg-info/top_level.txt +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/ACTIVITY_OUTPUT_PART.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/ARCHITECTURE_DIAGRAM.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/FILE_DOWNLOAD_LINKS.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/FILE_STORAGE_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/HISTORY_MESSAGE_FORMAT.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/MODIFICATIONS_CONCURRENCE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/MULTIMODAL_TOOLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/OBSERVABILITY_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/PYPI_PUBLISHING.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/QA_STREAMING_LATENCY.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/SCREENSHOTS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/SSE_NOTIFICATIONS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/framework_audit_remarques.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/index.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/README.md +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_context_budget_test.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_with_custom_tools_file_storage.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/agent_with_personalization.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/dependencies/docker-compose.yaml +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/pyproject.toml +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/setup.cfg +0 -0
- {agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-framework-lib
|
|
3
|
-
Version: 0.8.
|
|
3
|
+
Version: 0.8.2.post2
|
|
4
4
|
Summary: A comprehensive Python framework for building and serving conversational AI agents with FastAPI
|
|
5
5
|
Author-email: Sebastian Pavel <sebastian@cinco.ai>, Elliott Girard <elliott.girard@icloud.com>
|
|
6
6
|
Maintainer-email: Sebastian Pavel <sebastian@cinco.ai>
|
|
@@ -89,6 +89,8 @@ Provides-Extra: excel
|
|
|
89
89
|
Requires-Dist: openpyxl>=3.1.0; extra == "excel"
|
|
90
90
|
Provides-Extra: drawio
|
|
91
91
|
Requires-Dist: drawpyo>=0.1.0; extra == "drawio"
|
|
92
|
+
Provides-Extra: gitnexus
|
|
93
|
+
Requires-Dist: httpx>=0.27.0; extra == "gitnexus"
|
|
92
94
|
Provides-Extra: dev
|
|
93
95
|
Requires-Dist: pytest>=8.4.0; extra == "dev"
|
|
94
96
|
Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
|
|
@@ -186,7 +188,7 @@ uv add agent-framework-lib[llamaindex,mcp]
|
|
|
186
188
|
uv add agent-framework-lib[all]
|
|
187
189
|
```
|
|
188
190
|
|
|
189
|
-
**Available extras:** `llamaindex`, `mcp`, `mongodb`, `elasticsearch`, `postgresql`, `s3`, `minio`, `gcp`, `multimodal`, `memory`, `memori`, `graphiti`, `graphiti-falkordb`, `graphiti-neo4j`, `graphiti-all`, `observability`, `monitoring`, `websearch`, `dev`, `all`
|
|
191
|
+
**Available extras:** `llamaindex`, `mcp`, `gitnexus`, `mongodb`, `elasticsearch`, `postgresql`, `s3`, `minio`, `gcp`, `multimodal`, `memory`, `memori`, `graphiti`, `graphiti-falkordb`, `graphiti-neo4j`, `graphiti-all`, `observability`, `monitoring`, `websearch`, `dev`, `all`
|
|
190
192
|
|
|
191
193
|
**Optional: System Dependencies**
|
|
192
194
|
|
|
@@ -245,35 +247,74 @@ The framework includes a built-in AI assistant that helps you create agents! Acc
|
|
|
245
247
|
|
|
246
248
|
**Features:**
|
|
247
249
|
- 🧠 Deep knowledge of framework documentation, examples, and source code
|
|
248
|
-
- 🔍
|
|
250
|
+
- 🔍 **GitNexus-powered code intelligence** - 12937 symbols, 36668 relationships, 300 execution flows
|
|
249
251
|
- 💡 Code generation assistance
|
|
250
252
|
- 📚 Indexed knowledge base (30+ files)
|
|
251
253
|
- 🗄️ Persistent knowledge graph (FalkorDB) - survives server restarts
|
|
254
|
+
- 🔎 Hybrid search (semantic + structural + text fallback)
|
|
252
255
|
|
|
253
256
|
**Access:** `http://localhost:8000/helper`
|
|
254
257
|
|
|
258
|
+
### GitNexus Setup (Recommended)
|
|
259
|
+
|
|
260
|
+
For the best experience, install and run GitNexus to enable semantic code search:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# 1. Install and index the codebase
|
|
264
|
+
./scripts/setup_gitnexus.sh
|
|
265
|
+
|
|
266
|
+
# 2. Start the GitNexus server
|
|
267
|
+
./scripts/start_gitnexus_server.sh
|
|
268
|
+
|
|
269
|
+
# 3. Verify it's running
|
|
270
|
+
curl http://localhost:4747/health
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
The helper agent will automatically use GitNexus if available, with graceful fallback to text search if not running.
|
|
274
|
+
|
|
275
|
+
**What GitNexus enables:**
|
|
276
|
+
- Semantic code search across the entire framework
|
|
277
|
+
- Full symbol context (callers, callees, imports, dependencies)
|
|
278
|
+
- Execution flow tracing (300 end-to-end code paths)
|
|
279
|
+
- Impact analysis and relationship queries
|
|
280
|
+
|
|
281
|
+
📖 **[User Guide](docs/GITNEXUS_USER_GUIDE.md)** - Complete guide for using GitNexus features with the Helper Agent
|
|
282
|
+
|
|
283
|
+
**Optional dependencies:**
|
|
284
|
+
```bash
|
|
285
|
+
# Install GitNexus support
|
|
286
|
+
uv add agent-framework-lib[gitnexus]
|
|
287
|
+
```
|
|
288
|
+
|
|
255
289
|
The helper agent indexes:
|
|
256
290
|
- All documentation (`docs/*.md`)
|
|
257
291
|
- All examples (`examples/*.py`)
|
|
292
|
+
- All builtin skills (`agent_framework/skills/builtin/skills/*/SKILL.md`)
|
|
258
293
|
- Core framework source (tools, storage, memory, session management)
|
|
259
294
|
|
|
260
295
|
**Re-indexing:** If you update documentation or examples, trigger a re-index:
|
|
261
296
|
```bash
|
|
297
|
+
# Re-index knowledge base
|
|
262
298
|
curl -X POST http://localhost:8000/helper/reindex
|
|
299
|
+
|
|
300
|
+
# Re-index GitNexus (after code changes)
|
|
301
|
+
npx gitnexus analyze --embeddings
|
|
263
302
|
```
|
|
264
303
|
|
|
265
304
|
**Model Configuration:**
|
|
266
305
|
|
|
267
|
-
By default, the helper agent uses Claude (if `ANTHROPIC_API_KEY` is set) or GPT-5.
|
|
306
|
+
By default, the helper agent uses Claude (if `ANTHROPIC_API_KEY` is set) or GPT-5.4 (if `OPENAI_API_KEY` is set). You can override this with:
|
|
268
307
|
|
|
269
308
|
```env
|
|
270
309
|
# Force a specific model (useful if your Anthropic key has reached its limit)
|
|
271
|
-
HELPER_AGENT_MODEL=gpt-5.
|
|
310
|
+
HELPER_AGENT_MODEL=gpt-5.4
|
|
272
311
|
```
|
|
273
312
|
|
|
274
313
|
**Example questions:**
|
|
275
314
|
- "How do I create an agent with memory?"
|
|
276
|
-
- "Show me
|
|
315
|
+
- "Show me the execution flow for skill loading"
|
|
316
|
+
- "What calls the MemoryProvider class?"
|
|
317
|
+
- "Find all code related to authentication"
|
|
277
318
|
- "What's the difference between Memori and Graphiti?"
|
|
278
319
|
- "How do I configure S3 storage?"
|
|
279
320
|
- "Search the web for LlamaIndex best practices"
|
|
@@ -36,7 +36,7 @@ uv add agent-framework-lib[llamaindex,mcp]
|
|
|
36
36
|
uv add agent-framework-lib[all]
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
**Available extras:** `llamaindex`, `mcp`, `mongodb`, `elasticsearch`, `postgresql`, `s3`, `minio`, `gcp`, `multimodal`, `memory`, `memori`, `graphiti`, `graphiti-falkordb`, `graphiti-neo4j`, `graphiti-all`, `observability`, `monitoring`, `websearch`, `dev`, `all`
|
|
39
|
+
**Available extras:** `llamaindex`, `mcp`, `gitnexus`, `mongodb`, `elasticsearch`, `postgresql`, `s3`, `minio`, `gcp`, `multimodal`, `memory`, `memori`, `graphiti`, `graphiti-falkordb`, `graphiti-neo4j`, `graphiti-all`, `observability`, `monitoring`, `websearch`, `dev`, `all`
|
|
40
40
|
|
|
41
41
|
**Optional: System Dependencies**
|
|
42
42
|
|
|
@@ -95,35 +95,74 @@ The framework includes a built-in AI assistant that helps you create agents! Acc
|
|
|
95
95
|
|
|
96
96
|
**Features:**
|
|
97
97
|
- 🧠 Deep knowledge of framework documentation, examples, and source code
|
|
98
|
-
- 🔍
|
|
98
|
+
- 🔍 **GitNexus-powered code intelligence** - 12937 symbols, 36668 relationships, 300 execution flows
|
|
99
99
|
- 💡 Code generation assistance
|
|
100
100
|
- 📚 Indexed knowledge base (30+ files)
|
|
101
101
|
- 🗄️ Persistent knowledge graph (FalkorDB) - survives server restarts
|
|
102
|
+
- 🔎 Hybrid search (semantic + structural + text fallback)
|
|
102
103
|
|
|
103
104
|
**Access:** `http://localhost:8000/helper`
|
|
104
105
|
|
|
106
|
+
### GitNexus Setup (Recommended)
|
|
107
|
+
|
|
108
|
+
For the best experience, install and run GitNexus to enable semantic code search:
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# 1. Install and index the codebase
|
|
112
|
+
./scripts/setup_gitnexus.sh
|
|
113
|
+
|
|
114
|
+
# 2. Start the GitNexus server
|
|
115
|
+
./scripts/start_gitnexus_server.sh
|
|
116
|
+
|
|
117
|
+
# 3. Verify it's running
|
|
118
|
+
curl http://localhost:4747/health
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
The helper agent will automatically use GitNexus if available, with graceful fallback to text search if not running.
|
|
122
|
+
|
|
123
|
+
**What GitNexus enables:**
|
|
124
|
+
- Semantic code search across the entire framework
|
|
125
|
+
- Full symbol context (callers, callees, imports, dependencies)
|
|
126
|
+
- Execution flow tracing (300 end-to-end code paths)
|
|
127
|
+
- Impact analysis and relationship queries
|
|
128
|
+
|
|
129
|
+
📖 **[User Guide](docs/GITNEXUS_USER_GUIDE.md)** - Complete guide for using GitNexus features with the Helper Agent
|
|
130
|
+
|
|
131
|
+
**Optional dependencies:**
|
|
132
|
+
```bash
|
|
133
|
+
# Install GitNexus support
|
|
134
|
+
uv add agent-framework-lib[gitnexus]
|
|
135
|
+
```
|
|
136
|
+
|
|
105
137
|
The helper agent indexes:
|
|
106
138
|
- All documentation (`docs/*.md`)
|
|
107
139
|
- All examples (`examples/*.py`)
|
|
140
|
+
- All builtin skills (`agent_framework/skills/builtin/skills/*/SKILL.md`)
|
|
108
141
|
- Core framework source (tools, storage, memory, session management)
|
|
109
142
|
|
|
110
143
|
**Re-indexing:** If you update documentation or examples, trigger a re-index:
|
|
111
144
|
```bash
|
|
145
|
+
# Re-index knowledge base
|
|
112
146
|
curl -X POST http://localhost:8000/helper/reindex
|
|
147
|
+
|
|
148
|
+
# Re-index GitNexus (after code changes)
|
|
149
|
+
npx gitnexus analyze --embeddings
|
|
113
150
|
```
|
|
114
151
|
|
|
115
152
|
**Model Configuration:**
|
|
116
153
|
|
|
117
|
-
By default, the helper agent uses Claude (if `ANTHROPIC_API_KEY` is set) or GPT-5.
|
|
154
|
+
By default, the helper agent uses Claude (if `ANTHROPIC_API_KEY` is set) or GPT-5.4 (if `OPENAI_API_KEY` is set). You can override this with:
|
|
118
155
|
|
|
119
156
|
```env
|
|
120
157
|
# Force a specific model (useful if your Anthropic key has reached its limit)
|
|
121
|
-
HELPER_AGENT_MODEL=gpt-5.
|
|
158
|
+
HELPER_AGENT_MODEL=gpt-5.4
|
|
122
159
|
```
|
|
123
160
|
|
|
124
161
|
**Example questions:**
|
|
125
162
|
- "How do I create an agent with memory?"
|
|
126
|
-
- "Show me
|
|
163
|
+
- "Show me the execution flow for skill loading"
|
|
164
|
+
- "What calls the MemoryProvider class?"
|
|
165
|
+
- "Find all code related to authentication"
|
|
127
166
|
- "What's the difference between Memori and Graphiti?"
|
|
128
167
|
- "How do I configure S3 storage?"
|
|
129
168
|
- "Search the web for LlamaIndex best practices"
|
{agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/__init__.py
RENAMED
|
@@ -23,16 +23,16 @@ Key Components:
|
|
|
23
23
|
Example Usage:
|
|
24
24
|
```python
|
|
25
25
|
from agent_framework import AgentInterface, create_basic_agent_server
|
|
26
|
-
|
|
26
|
+
|
|
27
27
|
class MyAgent(AgentInterface):
|
|
28
28
|
async def handle_message(self, session_id: str, agent_input):
|
|
29
29
|
return StructuredAgentOutput(response_text="Hello!")
|
|
30
|
-
|
|
30
|
+
|
|
31
31
|
# Start server
|
|
32
32
|
create_basic_agent_server(MyAgent, port=8000)
|
|
33
33
|
```
|
|
34
34
|
|
|
35
|
-
Version: 0.8.
|
|
35
|
+
Version: 0.8.2
|
|
36
36
|
Author: Cinco AI Team
|
|
37
37
|
License: MIT
|
|
38
38
|
"""
|
|
@@ -48,29 +48,29 @@ logger = logging.getLogger(__name__)
|
|
|
48
48
|
def _auto_setup_dependencies() -> None:
|
|
49
49
|
"""
|
|
50
50
|
Automatically check and install required dependencies at import time.
|
|
51
|
-
|
|
51
|
+
|
|
52
52
|
This runs synchronously when the package is first imported, ensuring
|
|
53
53
|
Playwright browsers and Deno are available before any async tools try to use them.
|
|
54
|
-
|
|
54
|
+
|
|
55
55
|
Set AGENT_FRAMEWORK_SKIP_AUTO_SETUP=1 to disable this behavior.
|
|
56
56
|
"""
|
|
57
57
|
if os.environ.get("AGENT_FRAMEWORK_SKIP_AUTO_SETUP", "").lower() in ("1", "true", "yes"):
|
|
58
58
|
return
|
|
59
|
-
|
|
59
|
+
|
|
60
60
|
# Only run once per process
|
|
61
61
|
global _AUTO_SETUP_DONE
|
|
62
62
|
if "_AUTO_SETUP_DONE" in globals() and _AUTO_SETUP_DONE:
|
|
63
63
|
return
|
|
64
64
|
_AUTO_SETUP_DONE = True
|
|
65
|
-
|
|
65
|
+
|
|
66
66
|
try:
|
|
67
67
|
from .utils.post_install import ensure_playwright_browsers, ensure_deno
|
|
68
|
-
|
|
68
|
+
|
|
69
69
|
# Check/install Playwright (silent if already installed)
|
|
70
70
|
success, error = ensure_playwright_browsers()
|
|
71
71
|
if not success and error:
|
|
72
72
|
logger.warning(f"Playwright setup: {error}")
|
|
73
|
-
|
|
73
|
+
|
|
74
74
|
# Check/install Deno (silent if already installed)
|
|
75
75
|
success, message, deno_path = ensure_deno()
|
|
76
76
|
if not success and message:
|
|
@@ -79,7 +79,7 @@ def _auto_setup_dependencies() -> None:
|
|
|
79
79
|
# Success but with PATH instructions
|
|
80
80
|
logger.info(f"Deno: {message}")
|
|
81
81
|
logger.info(f"Deno will be available via: {deno_path}")
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
except Exception as e:
|
|
84
84
|
# Don't fail the import if setup fails - tools will show errors when used
|
|
85
85
|
logger.debug(f"Auto-setup skipped: {e}")
|
|
@@ -88,7 +88,7 @@ def _auto_setup_dependencies() -> None:
|
|
|
88
88
|
# Track if auto-setup has been done
|
|
89
89
|
_AUTO_SETUP_DONE = False
|
|
90
90
|
|
|
91
|
-
__version__ = "0.8.
|
|
91
|
+
__version__ = "0.8.2"
|
|
92
92
|
__author__ = "Cinco AI Team"
|
|
93
93
|
__license__ = "MIT"
|
|
94
94
|
__email__ = "sebastian@cinco.ai"
|
|
@@ -157,19 +157,19 @@ from .session.session_storage import (
|
|
|
157
157
|
|
|
158
158
|
# File system management (consolidated)
|
|
159
159
|
from .storage.file_system_management import (
|
|
160
|
-
FileStorageManager,
|
|
161
|
-
FileStorageFactory,
|
|
160
|
+
FileStorageManager,
|
|
161
|
+
FileStorageFactory,
|
|
162
162
|
process_file_inputs,
|
|
163
163
|
process_response_file_links,
|
|
164
164
|
get_download_url,
|
|
165
|
-
get_file_processing_summary,
|
|
166
|
-
FileInputMixin
|
|
165
|
+
get_file_processing_summary,
|
|
166
|
+
FileInputMixin,
|
|
167
167
|
)
|
|
168
168
|
from .storage.file_storages import (
|
|
169
169
|
FileStorageInterface,
|
|
170
170
|
MetadataStorageInterface,
|
|
171
|
-
FileMetadata,
|
|
172
|
-
LocalFileStorage
|
|
171
|
+
FileMetadata,
|
|
172
|
+
LocalFileStorage,
|
|
173
173
|
)
|
|
174
174
|
|
|
175
175
|
# Optional file storage backends (only available if dependencies are installed)
|
|
@@ -196,13 +196,11 @@ __all__ = [
|
|
|
196
196
|
# Version info
|
|
197
197
|
"__version__",
|
|
198
198
|
"__author__",
|
|
199
|
-
|
|
200
199
|
# Core interfaces
|
|
201
200
|
"AgentInterface",
|
|
202
|
-
"StructuredAgentInput",
|
|
201
|
+
"StructuredAgentInput",
|
|
203
202
|
"StructuredAgentOutput",
|
|
204
203
|
"AgentConfig",
|
|
205
|
-
|
|
206
204
|
# Base implementations
|
|
207
205
|
"BaseAgent",
|
|
208
206
|
"LlamaIndexAgent",
|
|
@@ -210,16 +208,15 @@ __all__ = [
|
|
|
210
208
|
"StateManager",
|
|
211
209
|
"AgentIdentity",
|
|
212
210
|
"AgentManager",
|
|
213
|
-
|
|
214
211
|
# Input/Output types
|
|
215
212
|
"TextInputPart",
|
|
216
|
-
"ImageUrlInputPart",
|
|
213
|
+
"ImageUrlInputPart",
|
|
217
214
|
"FileDataInputPart",
|
|
218
215
|
"AgentInputPartUnion",
|
|
219
216
|
"TextOutputPart",
|
|
220
217
|
"TextOutputStreamPart",
|
|
221
218
|
"JsonOutputPart",
|
|
222
|
-
"YamlOutputPart",
|
|
219
|
+
"YamlOutputPart",
|
|
223
220
|
"FileContentOutputPart",
|
|
224
221
|
"FileReferenceInputPart",
|
|
225
222
|
"FileReferenceOutputPart",
|
|
@@ -231,87 +228,77 @@ __all__ = [
|
|
|
231
228
|
"FileDownloadLinkOutputPart",
|
|
232
229
|
"ImageOutputPart",
|
|
233
230
|
"AgentOutputPartUnion",
|
|
234
|
-
|
|
235
231
|
# Utility functions
|
|
236
232
|
"consolidate_text_parts",
|
|
237
233
|
"strip_technical_details",
|
|
238
|
-
|
|
239
234
|
# Model configuration
|
|
240
235
|
"ModelConfigManager",
|
|
241
|
-
"ModelProvider",
|
|
236
|
+
"ModelProvider",
|
|
242
237
|
"model_config",
|
|
243
238
|
"ModelClientFactory",
|
|
244
239
|
"client_factory",
|
|
245
|
-
|
|
246
240
|
# Session storage
|
|
247
241
|
"SessionStorageInterface",
|
|
248
242
|
"SessionStorageFactory",
|
|
249
243
|
"SessionData",
|
|
250
244
|
"MessageData",
|
|
251
|
-
"MessageInsight",
|
|
245
|
+
"MessageInsight",
|
|
252
246
|
"MessageMetadata",
|
|
253
247
|
"AgentLifecycleData",
|
|
254
248
|
"MemorySessionStorage",
|
|
255
249
|
"MongoDBSessionStorage",
|
|
256
250
|
"history_message_to_message_data",
|
|
257
251
|
"message_data_to_history_message",
|
|
258
|
-
|
|
259
252
|
# File storage implementations (consolidated)
|
|
260
253
|
"FileStorageInterface",
|
|
261
254
|
"MetadataStorageInterface",
|
|
262
|
-
"FileMetadata",
|
|
255
|
+
"FileMetadata",
|
|
263
256
|
"LocalFileStorage",
|
|
264
257
|
"S3FileStorage",
|
|
265
258
|
"MinIOFileStorage",
|
|
266
259
|
"S3_AVAILABLE",
|
|
267
260
|
"MINIO_AVAILABLE",
|
|
268
|
-
|
|
269
261
|
# File system management (consolidated)
|
|
270
262
|
"FileStorageManager",
|
|
271
|
-
"FileStorageFactory",
|
|
263
|
+
"FileStorageFactory",
|
|
272
264
|
"process_file_inputs",
|
|
273
265
|
"get_file_processing_summary",
|
|
274
266
|
"FileInputMixin",
|
|
275
|
-
|
|
276
267
|
# Server
|
|
277
268
|
"app",
|
|
278
269
|
"start_server",
|
|
279
|
-
|
|
280
270
|
# Utilities
|
|
281
271
|
"get_deno_command",
|
|
282
|
-
|
|
283
272
|
# Convenience functions
|
|
284
273
|
"create_basic_agent_server",
|
|
285
274
|
]
|
|
286
275
|
|
|
276
|
+
|
|
287
277
|
# Quick start function for convenience
|
|
288
278
|
def create_basic_agent_server(
|
|
289
|
-
agent_class: type[AgentInterface],
|
|
290
|
-
host: str = "0.0.0.0",
|
|
291
|
-
port: int = 8000,
|
|
292
|
-
reload: bool = False
|
|
279
|
+
agent_class: type[AgentInterface], host: str = "0.0.0.0", port: int = 8000, reload: bool = False
|
|
293
280
|
) -> None:
|
|
294
281
|
"""
|
|
295
282
|
Quick start function to create and run an agent server.
|
|
296
|
-
|
|
283
|
+
|
|
297
284
|
This function allows external projects to quickly start an agent server
|
|
298
285
|
without needing to create their own server.py file or set environment variables.
|
|
299
|
-
|
|
286
|
+
|
|
300
287
|
Args:
|
|
301
288
|
agent_class: The agent class that implements AgentInterface
|
|
302
289
|
host: Host to bind the server to (default: "0.0.0.0")
|
|
303
290
|
port: Port to run the server on (default: 8000)
|
|
304
291
|
reload: Whether to enable auto-reload for development (default: False)
|
|
305
|
-
Note: When reload=True, the agent class is temporarily stored in an
|
|
292
|
+
Note: When reload=True, the agent class is temporarily stored in an
|
|
306
293
|
environment variable to survive module reloads.
|
|
307
|
-
|
|
294
|
+
|
|
308
295
|
Returns:
|
|
309
296
|
None (starts the server and blocks)
|
|
310
|
-
|
|
297
|
+
|
|
311
298
|
Raises:
|
|
312
299
|
ImportError: If uvicorn is not available
|
|
313
300
|
ValueError: If agent_class does not implement AgentInterface
|
|
314
|
-
|
|
301
|
+
|
|
315
302
|
Example:
|
|
316
303
|
>>> from agent_framework import create_basic_agent_server, AgentInterface
|
|
317
304
|
>>> from my_agent import MyAgent
|
|
@@ -323,17 +310,16 @@ def create_basic_agent_server(
|
|
|
323
310
|
raise ImportError(
|
|
324
311
|
"uvicorn is required to run the server. Install it with: uv add uvicorn"
|
|
325
312
|
) from e
|
|
326
|
-
|
|
313
|
+
|
|
327
314
|
# Validate that agent_class implements AgentInterface
|
|
328
315
|
if not issubclass(agent_class, AgentInterface):
|
|
329
|
-
raise ValueError(
|
|
330
|
-
|
|
331
|
-
)
|
|
332
|
-
|
|
316
|
+
raise ValueError(f"agent_class must implement AgentInterface, got {agent_class.__name__}")
|
|
317
|
+
|
|
333
318
|
# Store the agent class globally for immediate use
|
|
334
319
|
from .web import server
|
|
320
|
+
|
|
335
321
|
server._GLOBAL_AGENT_CLASS = agent_class
|
|
336
|
-
|
|
322
|
+
|
|
337
323
|
# If reload is enabled, also store in environment variable to survive reloads
|
|
338
324
|
# We use the class's module and name to recreate the import path
|
|
339
325
|
if reload:
|
|
@@ -341,37 +327,32 @@ def create_basic_agent_server(
|
|
|
341
327
|
class_name = agent_class.__name__
|
|
342
328
|
agent_class_path = f"{module_name}:{class_name}"
|
|
343
329
|
os.environ["AGENT_CLASS_PATH"] = agent_class_path
|
|
344
|
-
logger.info(
|
|
345
|
-
|
|
346
|
-
|
|
330
|
+
logger.info(
|
|
331
|
+
f"[create_basic_agent_server] Reload enabled. Set AGENT_CLASS_PATH={agent_class_path}"
|
|
332
|
+
)
|
|
333
|
+
|
|
334
|
+
logger.info(
|
|
335
|
+
f"[create_basic_agent_server] Starting server for {agent_class.__name__} on {host}:{port}"
|
|
336
|
+
)
|
|
347
337
|
logger.info(f"[create_basic_agent_server] Reload: {reload}")
|
|
348
338
|
|
|
349
339
|
# Ensure AGENT_HOST and AGENT_PORT are in the environment so that
|
|
350
340
|
# subprocesses (e.g. skill scripts via ShellTool) can reach this server.
|
|
351
341
|
os.environ["AGENT_HOST"] = host
|
|
352
342
|
os.environ["AGENT_PORT"] = str(port)
|
|
353
|
-
|
|
343
|
+
|
|
354
344
|
# When reload=True, uvicorn requires an import string, not the app object directly
|
|
355
345
|
if reload:
|
|
356
346
|
# Use the agent_framework.web.server:app import string for reload mode
|
|
357
|
-
uvicorn.run(
|
|
358
|
-
"agent_framework.web.server:app",
|
|
359
|
-
host=host,
|
|
360
|
-
port=port,
|
|
361
|
-
reload=reload
|
|
362
|
-
)
|
|
347
|
+
uvicorn.run("agent_framework.web.server:app", host=host, port=port, reload=reload)
|
|
363
348
|
else:
|
|
364
349
|
# Import the app after setting the global variable for non-reload mode
|
|
365
350
|
from .web.server import app
|
|
351
|
+
|
|
366
352
|
# For non-reload mode, we can pass the app object directly
|
|
367
|
-
uvicorn.run(
|
|
368
|
-
app,
|
|
369
|
-
host=host,
|
|
370
|
-
port=port,
|
|
371
|
-
reload=reload
|
|
372
|
-
)
|
|
353
|
+
uvicorn.run(app, host=host, port=port, reload=reload)
|
|
373
354
|
|
|
374
355
|
|
|
375
356
|
# Run auto-setup when package is imported
|
|
376
357
|
# This ensures Playwright browsers and Deno are installed before any async tools need them
|
|
377
|
-
_auto_setup_dependencies()
|
|
358
|
+
_auto_setup_dependencies()
|
{agent_framework_lib-0.8.1.post8 → agent_framework_lib-0.8.2.post2}/agent_framework/a2a/base.py
RENAMED
|
@@ -11,6 +11,7 @@ logger = logging.getLogger(__name__)
|
|
|
11
11
|
|
|
12
12
|
class A2ATaskProviderError(Exception):
|
|
13
13
|
"""Base exception for task provider errors."""
|
|
14
|
+
|
|
14
15
|
def __init__(self, message: str, code: int = -32603):
|
|
15
16
|
super().__init__(message)
|
|
16
17
|
self.code = code
|
|
@@ -18,6 +19,7 @@ class A2ATaskProviderError(Exception):
|
|
|
18
19
|
|
|
19
20
|
class TaskNotFoundError(A2ATaskProviderError):
|
|
20
21
|
"""Raised when a task ID is not found."""
|
|
22
|
+
|
|
21
23
|
def __init__(self, task_id: str):
|
|
22
24
|
super().__init__(f"Task not found: {task_id}", code=-32001)
|
|
23
25
|
self.task_id = task_id
|
|
@@ -25,6 +27,7 @@ class TaskNotFoundError(A2ATaskProviderError):
|
|
|
25
27
|
|
|
26
28
|
class TaskNotCancelableError(A2ATaskProviderError):
|
|
27
29
|
"""Raised when trying to cancel a task in a terminal state."""
|
|
30
|
+
|
|
28
31
|
def __init__(self, task_id: str, current_state: str):
|
|
29
32
|
super().__init__(
|
|
30
33
|
f"Task {task_id} is in terminal state '{current_state}' and cannot be canceled",
|
|
@@ -36,6 +39,7 @@ class TaskNotCancelableError(A2ATaskProviderError):
|
|
|
36
39
|
|
|
37
40
|
class TaskTerminalStateError(A2ATaskProviderError):
|
|
38
41
|
"""Raised when trying to update a task already in a terminal state."""
|
|
42
|
+
|
|
39
43
|
def __init__(self, task_id: str, current_state: str):
|
|
40
44
|
super().__init__(
|
|
41
45
|
f"Task {task_id} is in terminal state '{current_state}' and cannot be modified",
|
|
@@ -9,12 +9,42 @@ from typing import Any
|
|
|
9
9
|
|
|
10
10
|
logger = logging.getLogger(__name__)
|
|
11
11
|
|
|
12
|
-
_STOP_WORDS = frozenset(
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
12
|
+
_STOP_WORDS = frozenset(
|
|
13
|
+
{
|
|
14
|
+
"the",
|
|
15
|
+
"and",
|
|
16
|
+
"for",
|
|
17
|
+
"with",
|
|
18
|
+
"from",
|
|
19
|
+
"that",
|
|
20
|
+
"this",
|
|
21
|
+
"are",
|
|
22
|
+
"was",
|
|
23
|
+
"will",
|
|
24
|
+
"can",
|
|
25
|
+
"has",
|
|
26
|
+
"have",
|
|
27
|
+
"been",
|
|
28
|
+
"not",
|
|
29
|
+
"but",
|
|
30
|
+
"all",
|
|
31
|
+
"any",
|
|
32
|
+
"each",
|
|
33
|
+
"more",
|
|
34
|
+
"also",
|
|
35
|
+
"into",
|
|
36
|
+
"over",
|
|
37
|
+
"such",
|
|
38
|
+
"than",
|
|
39
|
+
"its",
|
|
40
|
+
"about",
|
|
41
|
+
"between",
|
|
42
|
+
"through",
|
|
43
|
+
"during",
|
|
44
|
+
"before",
|
|
45
|
+
"after",
|
|
46
|
+
}
|
|
47
|
+
)
|
|
18
48
|
|
|
19
49
|
|
|
20
50
|
class AgentCardSkillBuilder:
|
|
@@ -85,12 +115,14 @@ class AgentCardSkillBuilder:
|
|
|
85
115
|
joined = "; ".join(descriptions)
|
|
86
116
|
description = self._truncate_description(joined, len(framework_skills))
|
|
87
117
|
|
|
88
|
-
return [
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
118
|
+
return [
|
|
119
|
+
{
|
|
120
|
+
"id": "framework-capabilities",
|
|
121
|
+
"name": "Framework Capabilities",
|
|
122
|
+
"description": description,
|
|
123
|
+
"tags": names,
|
|
124
|
+
}
|
|
125
|
+
]
|
|
94
126
|
except Exception:
|
|
95
127
|
logger.warning("Failed to build framework skill from registry")
|
|
96
128
|
return [self._make_default_framework_skill()]
|
|
@@ -108,12 +140,14 @@ class AgentCardSkillBuilder:
|
|
|
108
140
|
|
|
109
141
|
result = []
|
|
110
142
|
for server_key in mcp_params:
|
|
111
|
-
result.append(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
143
|
+
result.append(
|
|
144
|
+
{
|
|
145
|
+
"id": f"mcp-{server_key}",
|
|
146
|
+
"name": f"MCP: {server_key}",
|
|
147
|
+
"description": f"MCP server: {server_key}",
|
|
148
|
+
"tags": ["mcp", server_key],
|
|
149
|
+
}
|
|
150
|
+
)
|
|
117
151
|
return result
|
|
118
152
|
|
|
119
153
|
def _build_tool_skills(self, agent_instance: Any) -> list[dict]:
|
|
@@ -128,16 +162,16 @@ class AgentCardSkillBuilder:
|
|
|
128
162
|
for tool in agent_tools:
|
|
129
163
|
try:
|
|
130
164
|
tool_name = (
|
|
131
|
-
getattr(tool, "__name__", None)
|
|
132
|
-
|
|
133
|
-
|
|
165
|
+
getattr(tool, "__name__", None) or getattr(tool, "name", None) or str(tool)
|
|
166
|
+
)
|
|
167
|
+
result.append(
|
|
168
|
+
{
|
|
169
|
+
"id": f"tool-{tool_name}",
|
|
170
|
+
"name": tool_name,
|
|
171
|
+
"description": f"Tool: {tool_name}",
|
|
172
|
+
"tags": ["tool", tool_name],
|
|
173
|
+
}
|
|
134
174
|
)
|
|
135
|
-
result.append({
|
|
136
|
-
"id": f"tool-{tool_name}",
|
|
137
|
-
"name": tool_name,
|
|
138
|
-
"description": f"Tool: {tool_name}",
|
|
139
|
-
"tags": ["tool", tool_name],
|
|
140
|
-
})
|
|
141
175
|
except Exception:
|
|
142
176
|
logger.warning("Failed to build skill for tool %s", tool)
|
|
143
177
|
return result
|
|
@@ -192,9 +226,7 @@ class AgentCardSkillBuilder:
|
|
|
192
226
|
break
|
|
193
227
|
return tags
|
|
194
228
|
|
|
195
|
-
def _truncate_description(
|
|
196
|
-
self, description: str, total_skills: int = 0
|
|
197
|
-
) -> str:
|
|
229
|
+
def _truncate_description(self, description: str, total_skills: int = 0) -> str:
|
|
198
230
|
"""Truncates description to MAX_FRAMEWORK_DESC_LENGTH with suffix.
|
|
199
231
|
|
|
200
232
|
Args:
|