agent-framework-lib 0.8.8.post2__tar.gz → 0.8.8.post4__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.post2/agent_framework_lib.egg-info → agent_framework_lib-0.8.8.post4}/PKG-INFO +1 -1
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/authz.py +36 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/sandbox_provider.py +14 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/scripts/create_and_register.py +40 -22
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/chart/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/csv/SKILL.md +21 -5
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/drawio/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/excel/SKILL.md +7 -7
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file/SKILL.md +8 -2
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/image_gen/SKILL.md +8 -9
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/mermaid/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/SKILL.md +8 -9
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/table/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/unified_pdf/SKILL.md +7 -3
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/word/SKILL.md +7 -18
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/shell_tool.py +36 -4
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/server.py +18 -17
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4/agent_framework_lib.egg-info}/PKG-INFO +1 -1
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework_lib.egg-info/SOURCES.txt +1 -0
- agent_framework_lib-0.8.8.post4/docs/OPENSHELL_GATEWAY_HOST_SETUP.md +195 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/pyproject.toml +1 -1
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/ARCHITECTURE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/LICENSE +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/MANIFEST.in +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/README.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/base.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/a2a_router.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/agent_card_builder.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/agent_card_skill_builder.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/jsonrpc_dispatcher.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/models_jsonrpc.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/sse_wrapper.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/endpoints/translation_layer.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/models.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/providers/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/providers/elasticsearch_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/a2a/providers/postgres_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/capabilities/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/capabilities/resolver.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/audit.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/crypto.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/git_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/herdr_client.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/models.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/orchestrator.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/store.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/code_delivery/tools.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/activity_formatter.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/agent_interface.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/agent_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/base_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/context_budget.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/context_summarizer.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/elasticsearch_config_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/execution_controller.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/implementation_validator.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/interruption_message.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/knowledge_state.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/loop_detector.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/model_clients.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/model_config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/model_router.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/models.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/prompt_builder.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/provider_calibration.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/scratchpad_compressor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/scratchpad_serializer.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/state_manager.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/step_display_config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/core/streaming_parts_accumulator.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/implementations/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/implementations/budget_aware_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/implementations/llamaindex_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/implementations/llamaindex_memory_adapter.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/implementations/microsoft_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/agent_mixin.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/base.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/hypothesis_engine.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/implicit_feedback.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/manager.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/personalization.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/providers/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/providers/graphiti_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/providers/memori_provider.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/response_lessons.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/tools.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/memory/work_patterns.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/api_timing_tracker.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/elasticsearch_circuit_breaker.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/elasticsearch_logging.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/error_handling.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/error_logging.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/llm_auto_instrumentor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/llm_metrics.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/llm_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/llm_metrics_extractor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/metrics_aggregator.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/metrics_config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/observability_manager.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/otel_instrumentor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/otel_logging_handler.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/otel_metrics_recorder.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/otel_setup.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/performance_monitor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/progress_tracker.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/resource_manager.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/resource_metrics_collector.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/streaming_latency_tracer.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/timing_tracker.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/token_counter.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/monitoring/tracing_context.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/notifications/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/notifications/hub.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/notifications/webhook_notifier.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/processing/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/processing/ai_content_management.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/processing/markdown_converter.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/processing/multimodal_integration.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/processing/rich_content_validation.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/py.typed +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/file_view_token.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/input_guard.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/openshell_policy.yaml +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/pii_redactor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/sandbox.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/secret_redactor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/shell_env.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/security/upload_token.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/session/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/session/elasticsearch_session_storage.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/session/session_storage.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/agent_mixin.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/base.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/scripts/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/scripts/register_to_storage.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/chart/chart_to_image.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/chart/vendor_chart.umd.min.js +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/code_delivery/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/code_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/code_format/format_python.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/csv/create_csv.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/csv/read_csv.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/csv/transform_csv.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/data_format/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/data_format/json_to_yaml.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/data_format/yaml_to_json.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/drawio/create_drawio.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/email_template/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/excel/create_excel.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file/create_file.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file/list_files.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file/read_file.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file_access/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file_access/download_to_local.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/file_access/get_file_path.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/form/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/image_display/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/image_gen/create_image.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/image_gen/generate_image.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/mermaid/mermaid_to_image.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/mermaid/vendor_mermaid.umd.min.js +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/multimodal/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/optionsblock/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/create_powerpoint.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/templates/Big Data Infographics.pptx +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/templates/Executive Design Pitch Deck.pptx +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/templates/Management Consulting Toolkit.pptx +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/templates/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/powerpoint/templates/generate_templates.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/skill_creator/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/skill_creator/skill_api.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/table/table_to_image.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/unified_pdf/create_pdf.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/web_news_search/SKILL.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/web_news_search/web_news_search.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/builtin/skills/word/create_word.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/custom_skill_manager.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/discovery_prompt.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/markdown_loader.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/skills/tools.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/storage/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/storage/file_storages.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/storage/file_system_management.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/storage/storage_optimizer.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/subagents/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/subagents/executor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/subagents/message_injector.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/subagents/message_queue.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/subagents/retrigger.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/subagents/spawn_tool.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/activity_callback.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/adaptive_pdf_css.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/base.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/html_content_analyzer.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/multimodal_tools.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/pdf_image_scaler.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/sizing_config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/web_fetch_tool.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/tools/web_search_tool.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/utils/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/utils/path_utils.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/utils/post_install.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/utils/session_title_generator.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/utils/source_detector.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/utils/special_blocks.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/admin_auth.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/admin_models.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/admin_router.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/admin_services.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/api_timing_middleware.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/Dockerfile +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/GITNEXUS_USER_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/README.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/docker-compose.yml +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_example_multi_skills.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_with_file_storage.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_with_mcp.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_with_memory.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_with_memory_hybrid.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/custom_framework_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/documentation_generator.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/gitnexus_client.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/helper_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/helper_ui.html +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/modern_ui.html +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/observability/kibana-llm-dashboard-setup.json +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/observability/kibana-resource-metrics-dashboard.json +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/otel_tracing_middleware.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/skills_router.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/web/test_app.html +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/__init__.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/artefacts.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/client.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/config.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/context.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/cursor.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/memory.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/models.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/poller.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/preferences.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/router.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/session.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework/workspace/subscription.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework_lib.egg-info/dependency_links.txt +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework_lib.egg-info/entry_points.txt +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework_lib.egg-info/requires.txt +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/agent_framework_lib.egg-info/top_level.txt +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/A2A_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/ACTIVITY_OUTPUT_PART.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/ARCHITECTURE_DIAGRAM.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/BUILTIN_SKILLS_REFERENCE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/CANCEL_AND_INTERRUPT_FRONTEND.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/CONCURRENCE_VS_PARALLELISME_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/CREATING_AGENTS.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/CUSTOM_SKILLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/DEEPEVAL_TEST_REPORT.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/DIAGNOSTIC_SANDBOX_SKILLS.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/DOCKER_SETUP.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/ELASTICSEARCH_DATA_STRUCTURES.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/FILE_DOWNLOAD_LINKS.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/FILE_STORAGE_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/GETTING_STARTED.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/GITNEXUS_USER_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/HISTORY_MESSAGE_FORMAT.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/IMPLEMENTATION_GUIDE_NEW_AGENT.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/MEMORY_INSTALLATION.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/MODIFICATIONS_CONCURRENCE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/MULTIMODAL_TOOLS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/OBSERVABILITY_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/PYPI_PUBLISHING.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/QA_STREAMING_LATENCY.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/SCREENSHOTS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/SECRETS_MANAGEMENT.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/SECURITY_HARDENING.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/SPEC_CROSS_MODEL_HISTORY_CONVERSION.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/SSE_NOTIFICATIONS_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/STREAMING_EVENTS_FRONTEND.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/TOOLS_AND_MCP_GUIDE.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/WORKSPACE_INTEGRATION.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/api-reference.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/configuration.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/framework_audit_remarques.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/helper_agent.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/index.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/docs/installation-guide.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/README.md +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_context_budget_test.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_example_multi_skills.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_exemple_test.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_training_with_apo.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_custom_tools_file_storage.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_file_storage.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_mcp.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_memory_graphiti.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_memory_hybrid.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_memory_simple.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/agent_with_personalization.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/biagenttest.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/custom_framework_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/dependencies/docker-compose.yaml +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/pyproject.toml +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/simple_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/skills_demo_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/test_work_patterns_live.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/examples/workspace_test_agent.py +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/setup.cfg +0 -0
- {agent_framework_lib-0.8.8.post2 → agent_framework_lib-0.8.8.post4}/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.post4
|
|
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>
|
|
@@ -55,6 +55,36 @@ def auth_required() -> bool:
|
|
|
55
55
|
return not dev_mode_enabled()
|
|
56
56
|
|
|
57
57
|
|
|
58
|
+
def trust_client_user_id() -> bool:
|
|
59
|
+
"""Le déployeur fait confiance au client pour fournir le ``user_id``.
|
|
60
|
+
|
|
61
|
+
Activé via ``AUTH_TRUST_CLIENT_USER_ID``. Cas d'usage : un backend de
|
|
62
|
+
confiance authentifié par API key (un portail) qui multiplexe plusieurs
|
|
63
|
+
end-users et passe leur ``user_id`` en paramètre. Quand actif, le serveur
|
|
64
|
+
HONORE le ``user_id`` client (au lieu de le forcer au principal authentifié),
|
|
65
|
+
et ``is_owner`` autorise ce principal de confiance sur toute ressource —
|
|
66
|
+
l'auth (API key) reste exigée, mais le contrôle par end-user est délégué au
|
|
67
|
+
portail.
|
|
68
|
+
|
|
69
|
+
⚠️ N'activer QUE si le client est de confiance et applique lui-même le
|
|
70
|
+
contrôle d'accès par end-user — sinon tout détenteur de la clé peut réclamer
|
|
71
|
+
n'importe quel ``user_id``.
|
|
72
|
+
"""
|
|
73
|
+
return _env_flag("AUTH_TRUST_CLIENT_USER_ID")
|
|
74
|
+
|
|
75
|
+
|
|
76
|
+
def resolve_effective_user_id(current_user: str, requested_user_id: str | None) -> str:
|
|
77
|
+
"""Identité effective pour scoper sessions/fichiers.
|
|
78
|
+
|
|
79
|
+
Honore le ``user_id`` client quand l'auth est désactivée (dev mode) OU que le
|
|
80
|
+
déployeur fait confiance au client (``AUTH_TRUST_CLIENT_USER_ID``). Sinon, lie
|
|
81
|
+
au principal authentifié (anti-usurpation multi-tenant).
|
|
82
|
+
"""
|
|
83
|
+
if requested_user_id and (not auth_required() or trust_client_user_id()):
|
|
84
|
+
return requested_user_id
|
|
85
|
+
return current_user
|
|
86
|
+
|
|
87
|
+
|
|
58
88
|
def is_owner(resource_user_id: str | None, principal: str) -> bool:
|
|
59
89
|
"""Vérifie que ``principal`` possède la ressource.
|
|
60
90
|
|
|
@@ -64,14 +94,17 @@ def is_owner(resource_user_id: str | None, principal: str) -> bool:
|
|
|
64
94
|
principal: Identité authentifiée demandant l'accès.
|
|
65
95
|
|
|
66
96
|
Returns:
|
|
67
|
-
``True`` si le principal possède la ressource,
|
|
68
|
-
|
|
69
|
-
(
|
|
97
|
+
``True`` si le principal possède la ressource, si le mode développement
|
|
98
|
+
est actif et que le principal est ``"anonymous"`` (compat mono-utilisateur),
|
|
99
|
+
ou si le client est de confiance (``AUTH_TRUST_CLIENT_USER_ID`` — le portail
|
|
100
|
+
de confiance peut accéder aux ressources de n'importe quel end-user).
|
|
70
101
|
"""
|
|
71
102
|
if resource_user_id is not None and resource_user_id == principal:
|
|
72
103
|
return True
|
|
73
104
|
if dev_mode_enabled() and principal == ANONYMOUS_PRINCIPAL:
|
|
74
105
|
return True
|
|
106
|
+
if trust_client_user_id():
|
|
107
|
+
return True
|
|
75
108
|
return False
|
|
76
109
|
|
|
77
110
|
|
|
@@ -474,12 +474,23 @@ class OpenShellProvider(SandboxProvider):
|
|
|
474
474
|
src = f"{SANDBOX_OUTPUT}/{_safe_name(out_subdir)}" if out_subdir else SANDBOX_OUTPUT
|
|
475
475
|
# Source dir may not exist if the command wrote nothing — tolerate failure.
|
|
476
476
|
proc = self._run_cli(["sandbox", "download", name, src, dest_dir], timeout=120)
|
|
477
|
+
# Visibility: this PULL is the only file-delivery path in the sandboxed
|
|
478
|
+
# topology, so its outcome must be observable (was DEBUG → silent file loss).
|
|
479
|
+
try:
|
|
480
|
+
pulled = sum(len(files) for _, _, files in os.walk(dest_dir))
|
|
481
|
+
except OSError:
|
|
482
|
+
pulled = -1
|
|
477
483
|
if proc.returncode != 0:
|
|
478
|
-
logger.
|
|
479
|
-
"
|
|
484
|
+
logger.warning(
|
|
485
|
+
"[sandbox] download failed for %s (src=%s) rc=%s — generated files "
|
|
486
|
+
"may be lost: %s",
|
|
480
487
|
name,
|
|
481
|
-
|
|
488
|
+
src,
|
|
489
|
+
proc.returncode,
|
|
490
|
+
(proc.stdout + proc.stderr).strip()[:300],
|
|
482
491
|
)
|
|
492
|
+
else:
|
|
493
|
+
logger.info("[sandbox] pulled %d file(s) from %s for %s", pulled, src, name)
|
|
483
494
|
# Best-effort: remove the per-command subdir so a long-lived session does
|
|
484
495
|
# not accumulate output slices in /sandbox/output.
|
|
485
496
|
if out_subdir:
|
|
@@ -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
|
|
@@ -763,9 +777,15 @@ class ShellTool(AgentTool):
|
|
|
763
777
|
from agent_framework.security.upload_token import sign_upload_token
|
|
764
778
|
|
|
765
779
|
ttl = _env_int("SHELL_SESSION_TOKEN_TTL", 1800)
|
|
766
|
-
|
|
780
|
+
token = sign_upload_token(
|
|
767
781
|
self.current_user_id, self.current_session_id, ttl=ttl
|
|
768
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
|
|
769
789
|
except Exception as e: # noqa: BLE001 — never let token minting break the shell
|
|
770
790
|
logger.warning("ShellTool: sandbox session token minting failed: %s", e)
|
|
771
791
|
|
|
@@ -846,8 +866,20 @@ class ShellTool(AgentTool):
|
|
|
846
866
|
)
|
|
847
867
|
return out
|
|
848
868
|
|
|
849
|
-
|
|
869
|
+
# Pull the files the sandbox produced out via the gateway. This is the
|
|
870
|
+
# ONLY delivery path in the sandboxed topology (the sandbox itself has
|
|
871
|
+
# no route to register them). Failures here = lost files, so they MUST
|
|
872
|
+
# be visible (previously swallowed silently → undiagnosable file loss).
|
|
873
|
+
try:
|
|
850
874
|
provider.collect_out(session_id, collect_dir, out_subdir=out_subdir)
|
|
875
|
+
except Exception as e: # noqa: BLE001 — never raise into the agent
|
|
876
|
+
logger.warning(
|
|
877
|
+
"[ShellTool] collect_out failed (session=%s, out_subdir=%s) — "
|
|
878
|
+
"generated files may not be delivered: %s",
|
|
879
|
+
session_id,
|
|
880
|
+
out_subdir,
|
|
881
|
+
e,
|
|
882
|
+
)
|
|
851
883
|
|
|
852
884
|
stdout = result.stdout or ""
|
|
853
885
|
stderr = result.stderr or ""
|