agent-framework-lib 0.8.8.post3__tar.gz → 0.8.8.post5__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.8.post3/agent_framework_lib.egg-info → agent_framework_lib-0.8.8.post5}/PKG-INFO +1 -1
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/providers/graphiti_provider.py +23 -13
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/authz.py +13 -12
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/scripts/create_and_register.py +40 -22
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/chart/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/csv/SKILL.md +21 -5
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/drawio/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/excel/SKILL.md +7 -7
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file/SKILL.md +8 -2
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +8 -9
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +8 -9
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/table/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/word/SKILL.md +7 -18
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/shell_tool.py +23 -12
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5/agent_framework_lib.egg-info}/PKG-INFO +1 -1
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/OPENSHELL_GATEWAY_HOST_SETUP.md +10 -2
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/pyproject.toml +1 -1
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/ARCHITECTURE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/LICENSE +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/MANIFEST.in +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/README.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/base.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/a2a_router.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/models_jsonrpc.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/sse_wrapper.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/endpoints/translation_layer.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/models.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/providers/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/providers/elasticsearch_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/a2a/providers/postgres_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/capabilities/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/capabilities/resolver.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/audit.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/crypto.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/git_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/herdr_client.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/models.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/orchestrator.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/store.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/code_delivery/tools.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/activity_formatter.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/agent_interface.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/agent_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/base_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/context_budget.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/context_summarizer.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/elasticsearch_config_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/execution_controller.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/implementation_validator.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/interruption_message.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/knowledge_state.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/loop_detector.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/model_clients.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/model_config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/model_router.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/models.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/prompt_builder.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/provider_calibration.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/scratchpad_compressor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/scratchpad_serializer.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/state_manager.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/step_display_config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/core/streaming_parts_accumulator.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/implementations/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/implementations/budget_aware_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/implementations/llamaindex_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/implementations/llamaindex_memory_adapter.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/implementations/microsoft_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/agent_mixin.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/base.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/hypothesis_engine.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/implicit_feedback.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/manager.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/personalization.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/providers/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/providers/memori_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/response_lessons.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/tools.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/memory/work_patterns.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/api_timing_tracker.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/elasticsearch_logging.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/error_handling.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/error_logging.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/llm_auto_instrumentor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/llm_metrics.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/metrics_aggregator.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/metrics_config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/observability_manager.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/otel_instrumentor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/otel_logging_handler.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/otel_metrics_recorder.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/otel_setup.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/performance_monitor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/progress_tracker.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/resource_manager.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/streaming_latency_tracer.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/timing_tracker.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/token_counter.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/monitoring/tracing_context.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/notifications/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/notifications/hub.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/notifications/webhook_notifier.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/processing/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/processing/ai_content_management.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/processing/markdown_converter.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/processing/multimodal_integration.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/processing/rich_content_validation.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/py.typed +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/file_view_token.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/input_guard.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/openshell_policy.yaml +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/pii_redactor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/sandbox.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/sandbox_provider.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/secret_redactor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/shell_env.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/security/upload_token.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/session/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/session/elasticsearch_session_storage.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/session/session_storage.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/agent_mixin.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/base.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/scripts/register_to_storage.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/chart/vendor_chart.umd.min.js +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/code_delivery/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/code_format/format_python.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/csv/create_csv.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/csv/read_csv.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/csv/transform_csv.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/excel/create_excel.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file/create_file.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file/list_files.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file/read_file.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file_access/download_to_local.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/image_gen/create_image.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/mermaid/vendor_mermaid.umd.min.js +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/templates/Big Data Infographics.pptx +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/templates/Executive Design Pitch Deck.pptx +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/templates/Management Consulting Toolkit.pptx +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/templates/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/powerpoint/templates/generate_templates.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/skill_creator/skill_api.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/table/table_to_image.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/web_news_search/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/web_news_search/web_news_search.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/builtin/skills/word/create_word.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/custom_skill_manager.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/discovery_prompt.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/markdown_loader.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/skills/tools.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/storage/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/storage/file_storages.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/storage/file_system_management.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/storage/storage_optimizer.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/subagents/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/subagents/executor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/subagents/message_injector.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/subagents/message_queue.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/subagents/retrigger.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/subagents/spawn_tool.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/activity_callback.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/adaptive_pdf_css.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/base.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/html_content_analyzer.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/multimodal_tools.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/pdf_image_scaler.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/sizing_config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/web_fetch_tool.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/tools/web_search_tool.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/utils/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/utils/path_utils.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/utils/post_install.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/utils/session_title_generator.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/utils/source_detector.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/utils/special_blocks.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/admin_auth.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/admin_models.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/admin_router.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/admin_services.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/api_timing_middleware.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/Dockerfile +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/GITNEXUS_USER_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/README.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/docker-compose.yml +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_example_multi_skills.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_with_file_storage.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_with_mcp.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_with_memory.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_with_memory_hybrid.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/custom_framework_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/documentation_generator.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/gitnexus_client.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/helper_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/helper_ui.html +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/modern_ui.html +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/otel_tracing_middleware.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/server.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/skills_router.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/web/test_app.html +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/artefacts.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/client.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/config.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/context.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/cursor.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/memory.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/models.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/poller.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/preferences.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/router.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/session.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework/workspace/subscription.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework_lib.egg-info/SOURCES.txt +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework_lib.egg-info/entry_points.txt +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework_lib.egg-info/requires.txt +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/agent_framework_lib.egg-info/top_level.txt +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/ACTIVITY_OUTPUT_PART.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/ARCHITECTURE_DIAGRAM.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/CANCEL_AND_INTERRUPT_FRONTEND.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/DEEPEVAL_TEST_REPORT.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/DIAGNOSTIC_SANDBOX_SKILLS.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/FILE_DOWNLOAD_LINKS.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/FILE_STORAGE_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/GITNEXUS_USER_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/HISTORY_MESSAGE_FORMAT.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/MODIFICATIONS_CONCURRENCE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/MULTIMODAL_TOOLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/OBSERVABILITY_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/PYPI_PUBLISHING.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/QA_STREAMING_LATENCY.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/SCREENSHOTS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/SECRETS_MANAGEMENT.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/SECURITY_HARDENING.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/SSE_NOTIFICATIONS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/framework_audit_remarques.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/helper_agent.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/index.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/README.md +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_context_budget_test.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_example_multi_skills.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_exemple_test.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_training_with_apo.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_custom_tools_file_storage.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_file_storage.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_mcp.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_memory_hybrid.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/agent_with_personalization.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/biagenttest.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/custom_framework_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/dependencies/docker-compose.yaml +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/pyproject.toml +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/test_work_patterns_live.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/examples/workspace_test_agent.py +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/setup.cfg +0 -0
- {agent_framework_lib-0.8.8.post3 → agent_framework_lib-0.8.8.post5}/setup.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-framework-lib
|
|
3
|
-
Version: 0.8.8.
|
|
3
|
+
Version: 0.8.8.post5
|
|
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>
|
|
@@ -335,7 +335,6 @@ class GraphitiProvider(MemoryProviderInterface):
|
|
|
335
335
|
"""
|
|
336
336
|
import os
|
|
337
337
|
|
|
338
|
-
from graphiti_core.driver.driver import GraphDriver
|
|
339
338
|
from graphiti_core.driver.neo4j_driver import Neo4jDriver
|
|
340
339
|
from neo4j import AsyncGraphDatabase
|
|
341
340
|
|
|
@@ -351,9 +350,16 @@ class GraphitiProvider(MemoryProviderInterface):
|
|
|
351
350
|
|
|
352
351
|
class _FailFastNeo4jDriver(Neo4jDriver):
|
|
353
352
|
def __init__(self, uri: str, user, password, database: str = "neo4j") -> None:
|
|
354
|
-
#
|
|
355
|
-
#
|
|
356
|
-
|
|
353
|
+
# Run the REAL Neo4jDriver.__init__ so every version-specific
|
|
354
|
+
# attribute exists (graphiti>=0.29 instantiates its Neo4j*Operations
|
|
355
|
+
# objects there — the previous bypass crashed at runtime with
|
|
356
|
+
# AttributeError: '_entity_node_ops'). The two stock behaviors we
|
|
357
|
+
# need to tame are handled differently: the UNTUNED client it
|
|
358
|
+
# builds is swapped for a tuned one right after, and the
|
|
359
|
+
# unconditional index scheduling is neutered via the
|
|
360
|
+
# build_indices_and_constraints override below.
|
|
361
|
+
super().__init__(uri, user, password, database)
|
|
362
|
+
untuned = self.client
|
|
357
363
|
self.client = AsyncGraphDatabase.driver(
|
|
358
364
|
uri=uri,
|
|
359
365
|
auth=(user or "", password or ""),
|
|
@@ -361,15 +367,19 @@ class GraphitiProvider(MemoryProviderInterface):
|
|
|
361
367
|
connection_acquisition_timeout=_f("NEO4J_CONN_ACQ_TIMEOUT", 5.0),
|
|
362
368
|
connection_timeout=conn_timeout,
|
|
363
369
|
)
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
370
|
+
import asyncio
|
|
371
|
+
import contextlib
|
|
372
|
+
|
|
373
|
+
with contextlib.suppress(RuntimeError):
|
|
374
|
+
asyncio.get_running_loop().create_task(untuned.close())
|
|
375
|
+
|
|
376
|
+
async def build_indices_and_constraints(self, delete_existing: bool = False):
|
|
377
|
+
# Scheduled unconditionally by Neo4jDriver.__init__ (the source of
|
|
378
|
+
# the CREATE INDEX boot storm); honor skip_index_creation here.
|
|
379
|
+
# When it does run, it uses self.client — already the tuned one.
|
|
380
|
+
if skip_indices:
|
|
381
|
+
return None
|
|
382
|
+
return await super().build_indices_and_constraints(delete_existing)
|
|
373
383
|
|
|
374
384
|
driver = _FailFastNeo4jDriver(
|
|
375
385
|
self.config.neo4j_uri,
|
|
@@ -58,19 +58,20 @@ def auth_required() -> bool:
|
|
|
58
58
|
def trust_client_user_id() -> bool:
|
|
59
59
|
"""Le déployeur fait confiance au client pour fournir le ``user_id``.
|
|
60
60
|
|
|
61
|
-
|
|
62
|
-
confiance authentifié par API key (un portail) qui
|
|
63
|
-
end-users et passe leur ``user_id`` en paramètre. Quand
|
|
64
|
-
HONORE le ``user_id`` client (au lieu de le forcer au
|
|
65
|
-
et ``is_owner`` autorise ce principal de confiance
|
|
66
|
-
l'auth (API key) reste exigée, mais le contrôle par
|
|
67
|
-
portail.
|
|
68
|
-
|
|
69
|
-
⚠️
|
|
70
|
-
|
|
71
|
-
|
|
61
|
+
Piloté par ``AUTH_TRUST_CLIENT_USER_ID`` (défaut ``true``). Cas d'usage
|
|
62
|
+
nominal : un backend de confiance authentifié par API key (un portail) qui
|
|
63
|
+
multiplexe plusieurs end-users et passe leur ``user_id`` en paramètre. Quand
|
|
64
|
+
actif, le serveur HONORE le ``user_id`` client (au lieu de le forcer au
|
|
65
|
+
principal authentifié), et ``is_owner`` autorise ce principal de confiance
|
|
66
|
+
sur toute ressource — l'auth (API key) reste exigée, mais le contrôle par
|
|
67
|
+
end-user est délégué au portail.
|
|
68
|
+
|
|
69
|
+
⚠️ Tout détenteur d'une clé valide peut alors agir pour n'importe quel
|
|
70
|
+
``user_id``. Pour un déploiement multi-tenant strict où les clients ne sont
|
|
71
|
+
PAS de confiance, mettre ``AUTH_TRUST_CLIENT_USER_ID=false`` (le serveur lie
|
|
72
|
+
alors chaque requête au principal authentifié, anti-usurpation).
|
|
72
73
|
"""
|
|
73
|
-
return
|
|
74
|
+
return os.environ.get("AUTH_TRUST_CLIENT_USER_ID", "true").strip().lower() == "true"
|
|
74
75
|
|
|
75
76
|
|
|
76
77
|
def resolve_effective_user_id(current_user: str, requested_user_id: str | None) -> str:
|
|
@@ -164,12 +164,16 @@ def main() -> None:
|
|
|
164
164
|
|
|
165
165
|
skill, filename, output_dir, extra_args = _parse_args(sys.argv[1:])
|
|
166
166
|
|
|
167
|
-
#
|
|
168
|
-
#
|
|
169
|
-
#
|
|
170
|
-
#
|
|
171
|
-
|
|
172
|
-
|
|
167
|
+
# Always write the generated file INTO AGENT_OUTPUT_DIR when it is set (the
|
|
168
|
+
# per-command directory the ShellTool parent finalizer collects). We strip any
|
|
169
|
+
# directory from --filename and override a caller-supplied --output-dir so a
|
|
170
|
+
# generated file can NEVER land somewhere the finalizer does not look (e.g.
|
|
171
|
+
# /tmp). Outside a finalizer context (AGENT_OUTPUT_DIR unset) the caller's
|
|
172
|
+
# --output-dir is honored as before.
|
|
173
|
+
agent_output_dir = os.environ.get("AGENT_OUTPUT_DIR")
|
|
174
|
+
if agent_output_dir:
|
|
175
|
+
output_dir = agent_output_dir
|
|
176
|
+
filename = os.path.basename(filename)
|
|
173
177
|
|
|
174
178
|
module = SKILL_MODULE_MAP.get(skill)
|
|
175
179
|
if module is None:
|
|
@@ -179,23 +183,26 @@ def main() -> None:
|
|
|
179
183
|
|
|
180
184
|
_verify_file(filepath)
|
|
181
185
|
|
|
182
|
-
#
|
|
183
|
-
#
|
|
184
|
-
#
|
|
185
|
-
#
|
|
186
|
-
#
|
|
187
|
-
|
|
188
|
-
upload_result =
|
|
189
|
-
|
|
190
|
-
#
|
|
191
|
-
#
|
|
192
|
-
#
|
|
186
|
+
# Delivery is the ShellTool parent finalizer's job (it has network + creds; the
|
|
187
|
+
# sandbox does not). The in-shell HTTP upload is OFF by default and never runs
|
|
188
|
+
# in the sandbox: it derails the agent (401 on an unreachable target) and a
|
|
189
|
+
# printed file_id makes the finalizer skip the file. Opt in explicitly with
|
|
190
|
+
# AGENT_SKILL_HTTP_UPLOAD=1 for legacy/local non-finalizer flows only.
|
|
191
|
+
do_upload = os.environ.get("AGENT_SKILL_HTTP_UPLOAD", "").lower() in ("1", "true", "yes")
|
|
192
|
+
upload_result = _upload_file(filepath) if do_upload else {}
|
|
193
|
+
|
|
194
|
+
# Keep the local file unless an explicit upload happened AND cleanup is asked:
|
|
195
|
+
# the finalizer needs the file on disk to deliver it. Never delete on the
|
|
196
|
+
# default (no-upload) path, or there would be nothing left to register.
|
|
193
197
|
local_cleaned = False
|
|
194
|
-
if
|
|
198
|
+
if (
|
|
199
|
+
do_upload
|
|
200
|
+
and upload_result
|
|
201
|
+
and os.environ.get("AGENT_CLEANUP_LOCAL", "").lower() in ("1", "true", "yes")
|
|
202
|
+
):
|
|
195
203
|
local_cleaned = _cleanup(filepath)
|
|
196
204
|
|
|
197
205
|
mime = _guess_mime(filepath)
|
|
198
|
-
size_bytes = upload_result.get("size_bytes", 0)
|
|
199
206
|
|
|
200
207
|
output = {
|
|
201
208
|
"status": "success",
|
|
@@ -203,13 +210,24 @@ def main() -> None:
|
|
|
203
210
|
# table, image_gen) so callers can embed the local PNG when needed.
|
|
204
211
|
# Empty if local was cleaned up.
|
|
205
212
|
"file": "" if local_cleaned else filepath,
|
|
206
|
-
"file_id": upload_result.get("file_id", ""),
|
|
207
|
-
"download_url": upload_result.get("download_url", ""),
|
|
208
213
|
"filename": os.path.basename(filepath),
|
|
209
|
-
"size_bytes": size_bytes,
|
|
210
214
|
"mime_type": mime,
|
|
211
215
|
"local_cleaned": local_cleaned,
|
|
216
|
+
# The file is created; the framework delivers it to storage automatically
|
|
217
|
+
# and appends the download link to this command's result. The agent must
|
|
218
|
+
# NOT try to upload or authenticate.
|
|
219
|
+
"delivery": "automatic",
|
|
220
|
+
"message": (
|
|
221
|
+
f"File '{os.path.basename(filepath)}' created successfully and is being "
|
|
222
|
+
"delivered to storage automatically — the download link appears in this "
|
|
223
|
+
"command's result. Do not upload or authenticate."
|
|
224
|
+
),
|
|
212
225
|
}
|
|
226
|
+
# Surface storage fields ONLY when an explicit upload actually happened.
|
|
227
|
+
if upload_result:
|
|
228
|
+
output["file_id"] = upload_result.get("file_id", "")
|
|
229
|
+
output["download_url"] = upload_result.get("download_url", "")
|
|
230
|
+
output["size_bytes"] = upload_result.get("size_bytes", 0)
|
|
213
231
|
print(json.dumps(output))
|
|
214
232
|
|
|
215
233
|
|
|
@@ -224,13 +224,17 @@ echo '{
|
|
|
224
224
|
|
|
225
225
|
### Output Format (stdout)
|
|
226
226
|
|
|
227
|
-
On success, the script prints a JSON object
|
|
227
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
228
228
|
|
|
229
229
|
```json
|
|
230
|
-
{"status": "success", "
|
|
230
|
+
{"status": "success", "filename": "monthly_sales.png", "mime_type": "image/png", "delivery": "automatic", "message": "File 'monthly_sales.png' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
231
231
|
```
|
|
232
232
|
|
|
233
|
-
|
|
233
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
234
|
+
upload, register, or authenticate anything. The download link
|
|
235
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
236
|
+
user as `[monthly_sales.png](/files/<uuid>/download)`. Do not improvise an upload or
|
|
237
|
+
write the file elsewhere — just run the command above and read the link from the result.
|
|
234
238
|
|
|
235
239
|
### ⚠️ Generating MULTIPLE images — read this carefully
|
|
236
240
|
|
|
@@ -92,14 +92,15 @@ Widget C,39.99,200
|
|
|
92
92
|
|
|
93
93
|
### Output Format (stdout)
|
|
94
94
|
|
|
95
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
96
|
+
|
|
95
97
|
```json
|
|
96
98
|
{
|
|
97
99
|
"status": "success",
|
|
98
|
-
"file_id": "uuid",
|
|
99
|
-
"download_url": "/files/uuid/download",
|
|
100
100
|
"filename": "products.csv",
|
|
101
|
-
"size_bytes": 124,
|
|
102
101
|
"mime_type": "text/csv",
|
|
102
|
+
"delivery": "automatic",
|
|
103
|
+
"message": "File 'products.csv' created successfully and is being delivered to storage automatically — the download link appears in this command's result.",
|
|
103
104
|
"metadata": {
|
|
104
105
|
"rows": 3,
|
|
105
106
|
"columns": 3,
|
|
@@ -108,6 +109,12 @@ Widget C,39.99,200
|
|
|
108
109
|
}
|
|
109
110
|
```
|
|
110
111
|
|
|
112
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
113
|
+
upload, register, or authenticate anything. The download link
|
|
114
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
115
|
+
user as `[products.csv](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
116
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
117
|
+
|
|
111
118
|
---
|
|
112
119
|
|
|
113
120
|
## Operation 2: Read CSV to JSON
|
|
@@ -276,12 +283,15 @@ uv run python agent_framework/skills/builtin/skills/csv/transform_csv.py \
|
|
|
276
283
|
|
|
277
284
|
### Output Format (stdout)
|
|
278
285
|
|
|
286
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
287
|
+
|
|
279
288
|
```json
|
|
280
289
|
{
|
|
281
290
|
"status": "success",
|
|
282
|
-
"file_id": "uuid",
|
|
283
|
-
"download_url": "/files/uuid/download",
|
|
284
291
|
"filename": "filtered.csv",
|
|
292
|
+
"mime_type": "text/csv",
|
|
293
|
+
"delivery": "automatic",
|
|
294
|
+
"message": "File 'filtered.csv' created successfully and is being delivered to storage automatically — the download link appears in this command's result.",
|
|
285
295
|
"metadata": {
|
|
286
296
|
"input_rows": 100,
|
|
287
297
|
"output_rows": 25,
|
|
@@ -290,6 +300,12 @@ uv run python agent_framework/skills/builtin/skills/csv/transform_csv.py \
|
|
|
290
300
|
}
|
|
291
301
|
```
|
|
292
302
|
|
|
303
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
304
|
+
upload, register, or authenticate anything. The download link
|
|
305
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
306
|
+
user as `[filtered.csv](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
307
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
308
|
+
|
|
293
309
|
---
|
|
294
310
|
|
|
295
311
|
## Error Handling (stderr)
|
|
@@ -79,13 +79,17 @@ uv run python -m agent_framework.skills.builtin.scripts.create_and_register --sk
|
|
|
79
79
|
|
|
80
80
|
### Output Format (stdout)
|
|
81
81
|
|
|
82
|
-
On success, the script prints a JSON object
|
|
82
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
83
83
|
|
|
84
84
|
```json
|
|
85
|
-
{"status": "success", "
|
|
85
|
+
{"status": "success", "filename": "order_flow.drawio", "mime_type": "application/xml", "delivery": "automatic", "message": "File 'order_flow.drawio' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
86
86
|
```
|
|
87
87
|
|
|
88
|
-
|
|
88
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
89
|
+
upload, register, or authenticate anything. The download link
|
|
90
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
91
|
+
user as `[order_flow.drawio](/files/<uuid>/download)`. Do not improvise an upload or
|
|
92
|
+
write the file elsewhere — just run the command above and read the link from the result.
|
|
89
93
|
|
|
90
94
|
### Error Handling (stderr)
|
|
91
95
|
|
|
@@ -74,17 +74,17 @@ echo '[
|
|
|
74
74
|
|
|
75
75
|
### Output Format (stdout)
|
|
76
76
|
|
|
77
|
-
On success, the script prints a JSON object
|
|
77
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
78
78
|
|
|
79
79
|
```json
|
|
80
|
-
{"status": "success", "
|
|
80
|
+
{"status": "success", "filename": "sales_report.xlsx", "mime_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "delivery": "automatic", "message": "File 'sales_report.xlsx' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
81
81
|
```
|
|
82
82
|
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
[sales_report.xlsx](/files
|
|
87
|
-
|
|
83
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
84
|
+
upload, register, or authenticate anything. The download link
|
|
85
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
86
|
+
user as `[sales_report.xlsx](/files/<uuid>/download)`. Do not improvise an upload or
|
|
87
|
+
write the file elsewhere — just run the command above and read the link from the result.
|
|
88
88
|
|
|
89
89
|
### Error Handling (stderr)
|
|
90
90
|
|
|
@@ -76,11 +76,17 @@ echo "Hello, world!" | uv run python -m agent_framework.skills.builtin.scripts.c
|
|
|
76
76
|
|
|
77
77
|
#### Output Format (stdout)
|
|
78
78
|
|
|
79
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
80
|
+
|
|
79
81
|
```json
|
|
80
|
-
{"status": "success", "
|
|
82
|
+
{"status": "success", "filename": "report.txt", "mime_type": "text/plain", "delivery": "automatic", "message": "File 'report.txt' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
81
83
|
```
|
|
82
84
|
|
|
83
|
-
|
|
85
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
86
|
+
upload, register, or authenticate anything. The download link
|
|
87
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
88
|
+
user as `[report.txt](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
89
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
84
90
|
|
|
85
91
|
#### Error Handling (stderr)
|
|
86
92
|
|
|
@@ -192,17 +192,15 @@ To use DALL-E 3 instead, set `"model": "dall-e-3"` (with `quality` `standard`/`h
|
|
|
192
192
|
|
|
193
193
|
## Output Format (stdout)
|
|
194
194
|
|
|
195
|
-
On success, the script prints a JSON object
|
|
195
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
196
196
|
|
|
197
197
|
```json
|
|
198
198
|
{
|
|
199
199
|
"status": "success",
|
|
200
|
-
"file_id": "uuid",
|
|
201
|
-
"download_url": "/files/uuid/download",
|
|
202
200
|
"filename": "mountain_landscape.png",
|
|
203
|
-
"size_bytes": 234567,
|
|
204
201
|
"mime_type": "image/png",
|
|
205
|
-
"
|
|
202
|
+
"delivery": "automatic",
|
|
203
|
+
"message": "File 'mountain_landscape.png' created successfully and is being delivered to storage automatically — the download link appears in this command's result.",
|
|
206
204
|
"metadata": {
|
|
207
205
|
"model": "gpt-image-1",
|
|
208
206
|
"size": "1536x1024",
|
|
@@ -214,10 +212,11 @@ On success, the script prints a JSON object with download information:
|
|
|
214
212
|
|
|
215
213
|
**Note**: The `revised_prompt` field (when provided by the model) shows how OpenAI interpreted and enhanced your original prompt.
|
|
216
214
|
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
215
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
216
|
+
upload, register, or authenticate anything. The download link
|
|
217
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
218
|
+
user as `[mountain_landscape.png](/files/<uuid>/download)`. Do not improvise an upload or
|
|
219
|
+
write the file elsewhere — just run the command above and read the link from the result.
|
|
221
220
|
|
|
222
221
|
---
|
|
223
222
|
|
|
@@ -145,13 +145,17 @@ echo 'sequenceDiagram
|
|
|
145
145
|
|
|
146
146
|
### Output Format (stdout)
|
|
147
147
|
|
|
148
|
-
On success, the script prints a JSON object
|
|
148
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
149
149
|
|
|
150
150
|
```json
|
|
151
|
-
{"status": "success", "
|
|
151
|
+
{"status": "success", "filename": "diagram.png", "mime_type": "image/png", "delivery": "automatic", "message": "File 'diagram.png' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
152
152
|
```
|
|
153
153
|
|
|
154
|
-
|
|
154
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
155
|
+
upload, register, or authenticate anything. The download link
|
|
156
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
157
|
+
user as `[diagram.png](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
158
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
155
159
|
|
|
156
160
|
### Error Handling (stderr)
|
|
157
161
|
|
|
@@ -770,17 +770,15 @@ echo '{
|
|
|
770
770
|
|
|
771
771
|
## Output Format (stdout)
|
|
772
772
|
|
|
773
|
-
On success, the script prints a JSON object
|
|
773
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
774
774
|
|
|
775
775
|
```json
|
|
776
776
|
{
|
|
777
777
|
"status": "success",
|
|
778
|
-
"file_id": "uuid",
|
|
779
|
-
"download_url": "/files/uuid/download",
|
|
780
778
|
"filename": "Q4_review.pptx",
|
|
781
|
-
"size_bytes": 45678,
|
|
782
779
|
"mime_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation",
|
|
783
|
-
"
|
|
780
|
+
"delivery": "automatic",
|
|
781
|
+
"message": "File 'Q4_review.pptx' created successfully and is being delivered to storage automatically — the download link appears in this command's result.",
|
|
784
782
|
"metadata": {
|
|
785
783
|
"slide_count": 12,
|
|
786
784
|
"theme": "consulting",
|
|
@@ -805,10 +803,11 @@ On success, the script prints a JSON object with download information:
|
|
|
805
803
|
| `assets_generated` | int | Number of assets generated via external skills |
|
|
806
804
|
| `suggested_structure` | array or null | Slide structure plan (deck strategy mode only) |
|
|
807
805
|
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
806
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
807
|
+
upload, register, or authenticate anything. The download link
|
|
808
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
809
|
+
user as `[Q4_review.pptx](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
810
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
812
811
|
|
|
813
812
|
---
|
|
814
813
|
|
|
@@ -156,13 +156,17 @@ echo '{
|
|
|
156
156
|
|
|
157
157
|
### Output Format (stdout)
|
|
158
158
|
|
|
159
|
-
On success, the script prints a JSON object
|
|
159
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
160
160
|
|
|
161
161
|
```json
|
|
162
|
-
{"status": "success", "
|
|
162
|
+
{"status": "success", "filename": "sales_table.png", "mime_type": "image/png", "delivery": "automatic", "message": "File 'sales_table.png' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
166
|
+
upload, register, or authenticate anything. The download link
|
|
167
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
168
|
+
user as `[sales_table.png](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
169
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
166
170
|
|
|
167
171
|
### Error Handling (stderr)
|
|
168
172
|
|
|
@@ -156,13 +156,17 @@ echo '<h1>Meeting Notes</h1>
|
|
|
156
156
|
|
|
157
157
|
### Output Format (stdout)
|
|
158
158
|
|
|
159
|
-
On success, the script prints a JSON object
|
|
159
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
160
160
|
|
|
161
161
|
```json
|
|
162
|
-
{"status": "success", "
|
|
162
|
+
{"status": "success", "filename": "report.pdf", "mime_type": "application/pdf", "delivery": "automatic", "message": "File 'report.pdf' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
163
163
|
```
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
166
|
+
upload, register, or authenticate anything. The download link
|
|
167
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
168
|
+
user as `[report.pdf](/files/<uuid>/download)`. Do not improvise an upload or write
|
|
169
|
+
the file elsewhere — just run the command above and read the link from the result.
|
|
166
170
|
|
|
167
171
|
### Error Handling (stderr)
|
|
168
172
|
|
|
@@ -335,28 +335,17 @@ echo '{
|
|
|
335
335
|
|
|
336
336
|
## Output Format (stdout)
|
|
337
337
|
|
|
338
|
-
On success, the script prints a JSON object
|
|
338
|
+
On success, the script prints a JSON object confirming the file was created:
|
|
339
339
|
|
|
340
340
|
```json
|
|
341
|
-
{
|
|
342
|
-
"status": "success",
|
|
343
|
-
"file_id": "uuid",
|
|
344
|
-
"download_url": "/files/uuid/download",
|
|
345
|
-
"filename": "Q4_2024_Report.docx",
|
|
346
|
-
"size_bytes": 78456,
|
|
347
|
-
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
|
|
348
|
-
"local_cleaned": true,
|
|
349
|
-
"metadata": {
|
|
350
|
-
"section_count": 10,
|
|
351
|
-
"page_count": 3
|
|
352
|
-
}
|
|
353
|
-
}
|
|
341
|
+
{"status": "success", "filename": "Q4_2024_Report.docx", "mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document", "delivery": "automatic", "message": "File 'Q4_2024_Report.docx' created successfully and is being delivered to storage automatically — the download link appears in this command's result."}
|
|
354
342
|
```
|
|
355
343
|
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
344
|
+
The file is delivered to storage **automatically** by the framework — you do NOT
|
|
345
|
+
upload, register, or authenticate anything. The download link
|
|
346
|
+
(`/files/<uuid>/download`) is appended to this command's result; present it to the
|
|
347
|
+
user as `[Q4_2024_Report.docx](/files/<uuid>/download)`. Do not improvise an upload or
|
|
348
|
+
write the file elsewhere — just run the command above and read the link from the result.
|
|
360
349
|
|
|
361
350
|
---
|
|
362
351
|
|
|
@@ -175,6 +175,10 @@ class ShellTool(AgentTool):
|
|
|
175
175
|
# Avoids rescanning os.environ + rebuilding the redactor on every command.
|
|
176
176
|
self._redactor: SecretRedactor | None = None
|
|
177
177
|
self._redactor_env_values: list[str] | None = None
|
|
178
|
+
# Per-command ephemeral secrets (e.g. the minted AGENT_SESSION_TOKEN). These
|
|
179
|
+
# never live in os.environ, so the env-scan redactor would miss them — they
|
|
180
|
+
# are registered here at mint time so they are masked in shell output.
|
|
181
|
+
self._ephemeral_secret_values: set[str] = set()
|
|
178
182
|
|
|
179
183
|
def set_skill_env_provider(self, provider: Callable[[], Iterable[str]] | None) -> None:
|
|
180
184
|
"""Set the callback that lists env vars required by loaded skills.
|
|
@@ -250,7 +254,11 @@ class ShellTool(AgentTool):
|
|
|
250
254
|
|
|
251
255
|
if self._redactor_env_values is None:
|
|
252
256
|
self._redactor_env_values = sensitive_env_values(os.environ)
|
|
253
|
-
values = [
|
|
257
|
+
values = [
|
|
258
|
+
*self._redactor_env_values,
|
|
259
|
+
*self._workspace_secrets.values(),
|
|
260
|
+
*self._ephemeral_secret_values,
|
|
261
|
+
]
|
|
254
262
|
self._redactor = SecretRedactor(values)
|
|
255
263
|
return self._redactor
|
|
256
264
|
|
|
@@ -347,9 +355,15 @@ class ShellTool(AgentTool):
|
|
|
347
355
|
from agent_framework.security.upload_token import sign_upload_token
|
|
348
356
|
|
|
349
357
|
ttl = _env_int("SHELL_SESSION_TOKEN_TTL", 1800)
|
|
350
|
-
|
|
358
|
+
token = sign_upload_token(
|
|
351
359
|
self.current_user_id, self.current_session_id, ttl=ttl
|
|
352
360
|
)
|
|
361
|
+
env["AGENT_SESSION_TOKEN"] = token
|
|
362
|
+
# Register the ephemeral token so it is masked in shell output
|
|
363
|
+
# (it is never in os.environ → the env-scan redactor would miss it,
|
|
364
|
+
# e.g. a leak via `env` in the shell). Invalidate the cached redactor.
|
|
365
|
+
self._ephemeral_secret_values.add(token)
|
|
366
|
+
self._redactor = None
|
|
353
367
|
except Exception as e: # noqa: BLE001 — never let token minting break the shell
|
|
354
368
|
logger.warning("ShellTool: session token minting failed: %s", e)
|
|
355
369
|
# Ensure server connection info is available
|
|
@@ -754,15 +768,6 @@ class ShellTool(AgentTool):
|
|
|
754
768
|
)
|
|
755
769
|
env["AGENT_HOST"] = callback_host
|
|
756
770
|
env["AGENT_PORT"] = str(callback_port)
|
|
757
|
-
# In the per-session sandbox the in-shell HTTP upload is the WRONG path:
|
|
758
|
-
# the sandbox is a sibling container with no reliable route back to the
|
|
759
|
-
# agent (in Coolify the agent port is not published — host.docker.internal
|
|
760
|
-
# :8000 is NOT the agent → 401/wrong server). The skill therefore only
|
|
761
|
-
# WRITES its file to AGENT_OUTPUT_DIR; the parent ShellTool finalizer pulls
|
|
762
|
-
# it out via the gateway (collect_out) and registers it to the agent itself
|
|
763
|
-
# (localhost) with the session token. Forcing skip also prevents the skill
|
|
764
|
-
# from printing a file_id that would make the finalizer skip the file.
|
|
765
|
-
env["AGENT_SKILL_SKIP_HTTP_UPLOAD"] = "true"
|
|
766
771
|
# Tell upload scripts whether to authenticate.
|
|
767
772
|
env["REQUIRE_AUTH"] = os.environ.get("REQUIRE_AUTH", "false")
|
|
768
773
|
# Scoped, short-lived session token (HMAC, user/session) so the sandbox
|
|
@@ -772,9 +777,15 @@ class ShellTool(AgentTool):
|
|
|
772
777
|
from agent_framework.security.upload_token import sign_upload_token
|
|
773
778
|
|
|
774
779
|
ttl = _env_int("SHELL_SESSION_TOKEN_TTL", 1800)
|
|
775
|
-
|
|
780
|
+
token = sign_upload_token(
|
|
776
781
|
self.current_user_id, self.current_session_id, ttl=ttl
|
|
777
782
|
)
|
|
783
|
+
env["AGENT_SESSION_TOKEN"] = token
|
|
784
|
+
# Register the ephemeral token so it is masked in shell output
|
|
785
|
+
# (it is never in os.environ → the env-scan redactor would miss it,
|
|
786
|
+
# e.g. a leak via `env` in the shell). Invalidate the cached redactor.
|
|
787
|
+
self._ephemeral_secret_values.add(token)
|
|
788
|
+
self._redactor = None
|
|
778
789
|
except Exception as e: # noqa: BLE001 — never let token minting break the shell
|
|
779
790
|
logger.warning("ShellTool: sandbox session token minting failed: %s", e)
|
|
780
791
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agent-framework-lib
|
|
3
|
-
Version: 0.8.8.
|
|
3
|
+
Version: 0.8.8.post5
|
|
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>
|