agent-engine-runner-shared 0.11.13__tar.gz → 0.11.14__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_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/CHANGELOG.md +6 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/PKG-INFO +3 -3
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/pyproject.toml +3 -3
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tracing/setup.py +26 -19
- agent_engine_runner_shared-0.11.14/tests/unit/test_platform_trace_payload_parity.py +124 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_platform_tracing_exporter.py +68 -21
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/Dockerfile +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/LICENSE +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/Makefile +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/README.md +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/docs/api.md +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/pydoc-markdown.yml +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/pyrightconfig.json +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/scripts/agentic-vendored-wheel-check.sh +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/__main__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/a2a.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/a2a_auth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/agent_config.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/async_utils.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/caller_trace.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/README.md +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/bundle.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/create_tool.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/definitions.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/executor.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/README.md +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/authoring.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/catalog.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/modes.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/naming.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/parameters.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/security.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/generate/spec.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/materialize.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/connectors/runtime.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/custom_events.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/db_config.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/db_naming.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/error_reporting.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/execution.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/guardrails_evaluator/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/guardrails_evaluator/core.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/guardrails_evaluator/regex.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/hooks.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/http_path.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/launcher.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/mcp_oauth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/mcp_oauth_cache_lock.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/mcp_oauth_cache_name.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/mcp_oauth_cli.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/mcp_oauth_secret.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/mcp_tools.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/memory.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/memory_appbound.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/metrics.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/models.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/node_logger.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/owner_callback.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/progress.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/py.typed +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/runtime.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/secure_llm_proxy.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/secure_wrapper.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/aer.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/atlas_dns.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/auth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/base.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/call_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/callback_delivery.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/chunk_types.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/cors.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/drain.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/graph_warm.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/http_retry.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/metadata.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/oe_url.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/owner_url.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/query.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/server/tool.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/span_kinds.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/span_names.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/startup_state.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/structured_logging.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tls_client.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tool_api_error.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tool_memory_ownership.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/toolpod_handlers.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tracing/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tracing/conversation.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/tracing/exporters.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/types.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/utils.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/activity.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/attempt.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/cancelled_history.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/client.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/heartbeat.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/memory.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/protojson.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/src/agent_engine_runner_shared/workflow/settlement.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/conftest.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/corpus/.gitignore +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/corpus/README.md +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/corpus/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/corpus/fetch_corpus.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/corpus/manifest.json +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/corpus/test_api_corpus.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/mock_embedder.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/test_a2a_trace_propagation.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/test_runtime.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/test_secure_async.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/test_secure_sync.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/integration/test_tracing_otlp_wire_format.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/pact/conftest.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/pact/test_oe_provider_verification.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/fixtures/auth_cases.yaml +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/fixtures/jira.tool_defs.yaml +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/test_auth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/test_bundle.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/test_core.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/test_create_tool.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/test_generate.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/connectors/test_materialize.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_a2a.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_a2a_auth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_a2a_registration.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_build_agent_span.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_cancelled_turn.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_capability_advertise.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_chunk_delivery_reliability.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_chunk_emission.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_durable_attempt.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_llm_invocation_signal.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_metadata_payload.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_policy_denied.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_session_finish.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_timeout_signal.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_trace_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_aer_workspace_scope.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_agent_config.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_async_utils.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_atlas_dns.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_call_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_call_interrupt_contract.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_cors.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_create_memory_client_headers.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_custom_headers_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_custom_headers_models.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_db_naming.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_debug_hook.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_drain.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_drain_contract.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_durable_guardrail_review.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_durable_oauth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_durable_proxies.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_emit_custom_event.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_emit_progress.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_error_reporting.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_execution.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_extract_turn_messages.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_format_llm_error.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_graph_warm.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_guardrails_protocol.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_hitl_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_hooks.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_http_path.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_http_retry.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_launcher.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_launcher_reports.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_listen_host.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_llm_credential_classification.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_llm_routing.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_mcp_era_compat.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_mcp_oauth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_mcp_oauth_cli.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_mcp_oauth_secret.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_mcp_tools.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_memory_appbound.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_memory_search_metadata.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_memory_writer_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_metadata.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_metrics.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_models.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_no_lc_imports.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_node_logger.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_oe_url.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_owner_callback.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_owner_url.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_payload_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_query_routes.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_request_id_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_resume_payload.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_runtime_build_context_from_sources.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_runtime_checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_runtime_custom_memory.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_runtime_memory_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_runtime_models.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_runtime_register_tool.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_secure_llm_proxy.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_secure_wrapper.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_server_auth.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_server_health.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_server_shutdown.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_server_startup_failures.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_session_filesystem_isolation.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_session_finish_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_shared_client.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_structured_logging.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_thinking_tokens.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tls_client.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tls_client_integration.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_token_capture.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_api_error.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_authorization.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_cancellation_boundary.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_deserialization.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_log_redaction.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_memory_ownership.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_server_startup.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tool_trace_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_toolpod_handlers.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_trace_conversation.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tracing_exporter.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/test_tracing_retry.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_activity.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_attempt.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_cancelled_history.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_client.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_context.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_heartbeat.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_memory.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_protojson.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_protojson_helpers.py +0 -0
- {agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/tests/unit/workflow/test_settlement.py +0 -0
|
@@ -8,6 +8,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
10
|
### Changed
|
|
11
|
+
- Spans go to the platform trace endpoint (`POST /internal/traces`) by default
|
|
12
|
+
whenever `OE_URL` is set, so the OE can redact PII in them. `AGENTIC_TRACE_EXPORTER`
|
|
13
|
+
no longer needs to be `1`; set it to `0` or `false` to keep the direct MongoDB
|
|
14
|
+
path, which stores spans without redaction. `0.11.14` is the Python floor
|
|
15
|
+
for span redaction. Earlier releases write spans straight to MongoDB unless
|
|
16
|
+
`AGENTIC_TRACE_EXPORTER=1`, and the platform cannot detect this.
|
|
11
17
|
- **Breaking:** the connector `tool.yaml` `auth` block no longer takes `type`.
|
|
12
18
|
It names exactly one credential: `bearer: <secret>`, `basic: {username,
|
|
13
19
|
password}`, `api_keys: [{env, location, name, prefix}]`, or
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agent-engine-runner-shared
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.14
|
|
4
4
|
Summary: Runner SDK - Framework-agnostic agent runtime
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
License-File: LICENSE
|
|
7
7
|
Requires-Python: >=3.11
|
|
8
|
-
Requires-Dist: agent-engine-sdk-memory==0.11.
|
|
9
|
-
Requires-Dist: agent-engine-sdk==0.11.
|
|
8
|
+
Requires-Dist: agent-engine-sdk-memory==0.11.14
|
|
9
|
+
Requires-Dist: agent-engine-sdk==0.11.14
|
|
10
10
|
Requires-Dist: fastapi>=0.141.1
|
|
11
11
|
Requires-Dist: filelock>=3.0.0
|
|
12
12
|
Requires-Dist: httpx-sse>=0.4.0
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agent-engine-runner-shared"
|
|
3
|
-
version = "0.11.
|
|
3
|
+
version = "0.11.14"
|
|
4
4
|
description = "Runner SDK - Framework-agnostic agent runtime"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "Apache-2.0"}
|
|
@@ -27,9 +27,9 @@ dependencies = [
|
|
|
27
27
|
"jsonschema>=4.26.0",
|
|
28
28
|
"sentry-sdk>=2.27.0",
|
|
29
29
|
# BaseAgent protocol and AgentInput/AgentEvent models
|
|
30
|
-
"agent-engine-sdk==0.11.
|
|
30
|
+
"agent-engine-sdk==0.11.14",
|
|
31
31
|
# Memory models and the MemoryClient HTTP client
|
|
32
|
-
"agent-engine-sdk-memory==0.11.
|
|
32
|
+
"agent-engine-sdk-memory==0.11.14",
|
|
33
33
|
# Required for checkpoint message decoding (query/sessions endpoints)
|
|
34
34
|
"msgpack>=1.0.0",
|
|
35
35
|
# Required by guardrails_evaluator/regex.py for advanced regex matching
|
|
@@ -63,16 +63,17 @@ _retry_thread: Optional[threading.Thread] = None
|
|
|
63
63
|
# clients.
|
|
64
64
|
_tracing_mongo_client: Optional["MongoClient"] = None
|
|
65
65
|
|
|
66
|
-
# Platform trace-exporter state. The exporter is
|
|
67
|
-
#
|
|
68
|
-
#
|
|
69
|
-
#
|
|
70
|
-
#
|
|
66
|
+
# Platform trace-exporter state. The exporter is on whenever OE_URL is set; the
|
|
67
|
+
# flag named by `_PLATFORM_TRACE_EXPORTER_ENV` only turns it off. When on, the
|
|
68
|
+
# guest sends spans to the OE instead of writing MongoDB directly.
|
|
69
|
+
# `_platform_exporter` is retained so /health can report its recent export
|
|
70
|
+
# results and shutdown can reset it.
|
|
71
71
|
_platform_exporter: Optional[PlatformSpanExporter] = None
|
|
72
72
|
_platform_exporter_attached: bool = False
|
|
73
73
|
|
|
74
|
-
#
|
|
75
|
-
#
|
|
74
|
+
# Opt-out for routing runner spans to the OE platform trace endpoint. Unset
|
|
75
|
+
# means on. Setting it to "0" or "false" keeps the MongoDB trace-store path: the
|
|
76
|
+
# OE never sees those spans, so PII redaction cannot apply to them. Deliberately
|
|
76
77
|
# avoids the reserved tenant-secret prefix, which a workspace secret cannot use
|
|
77
78
|
# (pkg/tenantsecrets), so a workspace can set this one directly.
|
|
78
79
|
_PLATFORM_TRACE_EXPORTER_ENV = "AGENTIC_TRACE_EXPORTER"
|
|
@@ -146,13 +147,12 @@ def _otlp_endpoint_configured() -> bool:
|
|
|
146
147
|
def platform_trace_exporter_enabled() -> bool:
|
|
147
148
|
"""Whether the OE platform trace exporter is enabled.
|
|
148
149
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
where to send spans.
|
|
150
|
+
On unless the env var named by ``_PLATFORM_TRACE_EXPORTER_ENV`` is ``0`` or
|
|
151
|
+
``false``. Any other value, including an unrecognized one, keeps it on so a
|
|
152
|
+
typo cannot silently route spans past the OE. It is only half the
|
|
153
|
+
condition — the exporter also needs ``OE_URL`` to know where to send spans.
|
|
154
154
|
"""
|
|
155
|
-
return os.getenv(_PLATFORM_TRACE_EXPORTER_ENV, "").strip().lower() in ("
|
|
155
|
+
return os.getenv(_PLATFORM_TRACE_EXPORTER_ENV, "").strip().lower() not in ("0", "false")
|
|
156
156
|
|
|
157
157
|
|
|
158
158
|
class ExecutionContextSpanProcessor(SpanProcessor):
|
|
@@ -237,13 +237,20 @@ def setup_tracing(
|
|
|
237
237
|
|
|
238
238
|
provider.add_span_processor(ExecutionContextSpanProcessor())
|
|
239
239
|
|
|
240
|
-
# Destination: the OE platform trace endpoint
|
|
241
|
-
#
|
|
242
|
-
#
|
|
243
|
-
#
|
|
240
|
+
# Destination: the OE platform trace endpoint whenever OE_URL is set,
|
|
241
|
+
# otherwise the caller-supplied MongoDB collection. The OE is the platform
|
|
242
|
+
# trace path and takes precedence — a guest with both must not keep writing
|
|
243
|
+
# MongoDB directly.
|
|
244
244
|
oe_url = os.getenv("OE_URL", "").strip()
|
|
245
245
|
otlp_configured = _otlp_endpoint_configured()
|
|
246
|
-
|
|
246
|
+
use_platform = bool(oe_url) and platform_trace_exporter_enabled()
|
|
247
|
+
if oe_url and not use_platform:
|
|
248
|
+
logger.warning(
|
|
249
|
+
"Tracing: %s disables the platform trace exporter; spans go to the "
|
|
250
|
+
"trace store without PII redaction",
|
|
251
|
+
_PLATFORM_TRACE_EXPORTER_ENV,
|
|
252
|
+
)
|
|
253
|
+
if use_platform:
|
|
247
254
|
_attach_platform_exporter(provider, oe_url)
|
|
248
255
|
elif mongodb_collection is not None:
|
|
249
256
|
provider.add_span_processor(BatchSpanProcessor(MongoDBSpanExporter(mongodb_collection)))
|
|
@@ -399,7 +406,7 @@ def tracing_status() -> dict[str, str]:
|
|
|
399
406
|
|
|
400
407
|
``platform_exporter`` is ``attached`` (spans are sent to the OE),
|
|
401
408
|
``degraded`` (the most recent export did not fully succeed), or
|
|
402
|
-
``disabled`` (the
|
|
409
|
+
``disabled`` (the opt-out is set or OE_URL unset; OTLP may still be
|
|
403
410
|
configured).
|
|
404
411
|
"""
|
|
405
412
|
if _platform_exporter_attached:
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"""The Python platform exporter sends the payload the TypeScript one sends.
|
|
2
|
+
|
|
3
|
+
Both runner test suites decode their own request and compare it with the shared
|
|
4
|
+
fixture, so a field one runner drops or renames fails here instead of in the OE.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import json
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
|
|
12
|
+
from opentelemetry.proto.collector.trace.v1.trace_service_pb2 import ExportTraceServiceRequest
|
|
13
|
+
from opentelemetry.proto.trace.v1.trace_pb2 import Span as ProtoSpan
|
|
14
|
+
from opentelemetry.proto.trace.v1.trace_pb2 import Status as ProtoStatus
|
|
15
|
+
from opentelemetry.sdk.resources import Resource
|
|
16
|
+
from opentelemetry.sdk.trace import ReadableSpan
|
|
17
|
+
from opentelemetry.sdk.trace.export import SpanExportResult
|
|
18
|
+
from opentelemetry.trace import SpanContext, SpanKind, Status, StatusCode, TraceFlags
|
|
19
|
+
|
|
20
|
+
from agent_engine_runner_shared.tracing.exporters import PlatformSpanExporter
|
|
21
|
+
|
|
22
|
+
_FIXTURE = (
|
|
23
|
+
Path(__file__).resolve().parents[5] / "shared-test-fixtures" / "runner_trace_payload.json"
|
|
24
|
+
)
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
_PROJECT_KEY = "agentic_platform.project_id" # open-source-refs:ignore — data contract
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
class _Response:
|
|
31
|
+
status_code = 200
|
|
32
|
+
headers: dict = {}
|
|
33
|
+
content = b""
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
class _Client:
|
|
37
|
+
def __init__(self) -> None:
|
|
38
|
+
self.bodies: list[bytes] = []
|
|
39
|
+
|
|
40
|
+
async def post(self, url, *, content, headers, timeout):
|
|
41
|
+
self.bodies.append(content)
|
|
42
|
+
return _Response()
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _fixed_span() -> ReadableSpan:
|
|
46
|
+
return ReadableSpan(
|
|
47
|
+
name="agent.run",
|
|
48
|
+
context=SpanContext(
|
|
49
|
+
trace_id=0x0AF7651916CD43DD8448EB211C80319C,
|
|
50
|
+
span_id=0xB7AD6B7169203331,
|
|
51
|
+
is_remote=False,
|
|
52
|
+
trace_flags=TraceFlags(1),
|
|
53
|
+
),
|
|
54
|
+
parent=SpanContext(
|
|
55
|
+
trace_id=0x0AF7651916CD43DD8448EB211C80319C,
|
|
56
|
+
span_id=0x00F067AA0BA902B7,
|
|
57
|
+
is_remote=False,
|
|
58
|
+
),
|
|
59
|
+
resource=Resource({"service.name": "runner-sdk", _PROJECT_KEY: "proj-1"}),
|
|
60
|
+
attributes={
|
|
61
|
+
"session.id": "sess-1",
|
|
62
|
+
"execution.id": "exec-1",
|
|
63
|
+
"thread.id": "sess-1",
|
|
64
|
+
"workspace.id": "ws-1",
|
|
65
|
+
"llm.token_count.total": 42,
|
|
66
|
+
"custom.flag": True,
|
|
67
|
+
"ratio": 0.5,
|
|
68
|
+
"user.note": "contact jane@x.com",
|
|
69
|
+
},
|
|
70
|
+
kind=SpanKind.INTERNAL,
|
|
71
|
+
status=Status(StatusCode.OK),
|
|
72
|
+
start_time=1700000000000000001,
|
|
73
|
+
end_time=1700000001500000002,
|
|
74
|
+
)
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def _any_value(value):
|
|
78
|
+
return getattr(value, value.WhichOneof("value"))
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
def _attributes(pairs) -> dict:
|
|
82
|
+
return {pair.key: _any_value(pair.value) for pair in pairs}
|
|
83
|
+
|
|
84
|
+
|
|
85
|
+
def _normalize(body: bytes) -> dict:
|
|
86
|
+
request = ExportTraceServiceRequest()
|
|
87
|
+
request.ParseFromString(body)
|
|
88
|
+
spans = []
|
|
89
|
+
for resource_spans in request.resource_spans:
|
|
90
|
+
resource = _attributes(resource_spans.resource.attributes)
|
|
91
|
+
for scope_spans in resource_spans.scope_spans:
|
|
92
|
+
for span in scope_spans.spans:
|
|
93
|
+
spans.append(
|
|
94
|
+
{
|
|
95
|
+
"trace_id": span.trace_id.hex(),
|
|
96
|
+
"span_id": span.span_id.hex(),
|
|
97
|
+
"parent_span_id": span.parent_span_id.hex(),
|
|
98
|
+
"name": span.name,
|
|
99
|
+
"kind": ProtoSpan.SpanKind.Name(span.kind),
|
|
100
|
+
"start_time_unix_nano": str(span.start_time_unix_nano),
|
|
101
|
+
"end_time_unix_nano": str(span.end_time_unix_nano),
|
|
102
|
+
"status_code": ProtoStatus.StatusCode.Name(span.status.code),
|
|
103
|
+
"attributes": _attributes(span.attributes),
|
|
104
|
+
"resource": resource,
|
|
105
|
+
}
|
|
106
|
+
)
|
|
107
|
+
return {"spans": spans}
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
def test_platform_payload_matches_the_shared_fixture():
|
|
111
|
+
client = _Client()
|
|
112
|
+
|
|
113
|
+
async def factory(_base: str):
|
|
114
|
+
return client
|
|
115
|
+
|
|
116
|
+
exporter = PlatformSpanExporter(
|
|
117
|
+
"http://oe:8000", client_factory=factory, cert_mtimes=lambda: None
|
|
118
|
+
)
|
|
119
|
+
|
|
120
|
+
assert exporter.export([_fixed_span()]) == SpanExportResult.SUCCESS
|
|
121
|
+
|
|
122
|
+
expected = json.loads(_FIXTURE.read_text())
|
|
123
|
+
assert len(client.bodies) == 1
|
|
124
|
+
assert _normalize(client.bodies[0]) == {"spans": expected["spans"]}
|
|
@@ -622,23 +622,22 @@ def isolated_tracing(monkeypatch):
|
|
|
622
622
|
tracing_setup.shutdown_tracing()
|
|
623
623
|
|
|
624
624
|
|
|
625
|
-
@pytest.mark.parametrize("value", ["1", "true", "TRUE", "
|
|
626
|
-
def
|
|
625
|
+
@pytest.mark.parametrize("value", ["", "1", "true", "TRUE", "yes", "off", "garbage"])
|
|
626
|
+
def test_platform_trace_exporter_enabled_by_default_and_on_other_values(monkeypatch, value):
|
|
627
|
+
monkeypatch.delenv(_PLATFORM_FLAG, raising=False)
|
|
628
|
+
assert tracing_setup.platform_trace_exporter_enabled() is True
|
|
627
629
|
monkeypatch.setenv(_PLATFORM_FLAG, value)
|
|
628
630
|
assert tracing_setup.platform_trace_exporter_enabled() is True
|
|
629
631
|
|
|
630
632
|
|
|
631
|
-
@pytest.mark.parametrize("value", ["
|
|
632
|
-
def
|
|
633
|
-
monkeypatch.delenv(_PLATFORM_FLAG, raising=False)
|
|
634
|
-
assert tracing_setup.platform_trace_exporter_enabled() is False
|
|
633
|
+
@pytest.mark.parametrize("value", ["0", "false", "FALSE", " false "])
|
|
634
|
+
def test_platform_trace_exporter_opt_out_values(monkeypatch, value):
|
|
635
635
|
monkeypatch.setenv(_PLATFORM_FLAG, value)
|
|
636
636
|
assert tracing_setup.platform_trace_exporter_enabled() is False
|
|
637
637
|
|
|
638
638
|
|
|
639
|
-
def
|
|
639
|
+
def test_setup_tracing_installs_platform_exporter_by_default(monkeypatch, isolated_tracing):
|
|
640
640
|
monkeypatch.setenv("OE_URL", "http://oe:8000")
|
|
641
|
-
monkeypatch.setenv(_PLATFORM_FLAG, "1")
|
|
642
641
|
|
|
643
642
|
isolated_tracing.setup_tracing(service_name="svc-platform")
|
|
644
643
|
|
|
@@ -650,9 +649,8 @@ def test_setup_tracing_installs_platform_exporter_when_flagged(monkeypatch, isol
|
|
|
650
649
|
}
|
|
651
650
|
|
|
652
651
|
|
|
653
|
-
def
|
|
652
|
+
def test_setup_tracing_prefers_oe_url_over_a_mongodb_collection(monkeypatch, isolated_tracing):
|
|
654
653
|
monkeypatch.setenv("OE_URL", "http://oe:8000")
|
|
655
|
-
monkeypatch.setenv(_PLATFORM_FLAG, "1")
|
|
656
654
|
collection = MagicMock()
|
|
657
655
|
|
|
658
656
|
isolated_tracing.setup_tracing(service_name="svc-both", mongodb_collection=collection)
|
|
@@ -661,13 +659,15 @@ def test_setup_tracing_flag_prefers_oe_url_over_a_mongodb_collection(monkeypatch
|
|
|
661
659
|
assert isolated_tracing._mongodb_exporter_attached is False
|
|
662
660
|
|
|
663
661
|
|
|
664
|
-
def
|
|
665
|
-
#
|
|
666
|
-
#
|
|
662
|
+
def test_setup_tracing_opt_out_keeps_mongodb_and_warns(monkeypatch, isolated_tracing, caplog):
|
|
663
|
+
# AGENTIC_TRACE_EXPORTER=0 keeps the direct MongoDB path. Those spans skip
|
|
664
|
+
# the OE, so the opt-out must say so in the log.
|
|
667
665
|
monkeypatch.setenv("OE_URL", "http://oe:8000")
|
|
666
|
+
monkeypatch.setenv(_PLATFORM_FLAG, "0")
|
|
668
667
|
collection = MagicMock()
|
|
669
668
|
|
|
670
|
-
|
|
669
|
+
with caplog.at_level("WARNING"):
|
|
670
|
+
isolated_tracing.setup_tracing(service_name="svc-optout", mongodb_collection=collection)
|
|
671
671
|
|
|
672
672
|
assert isolated_tracing._platform_exporter_attached is False
|
|
673
673
|
assert isolated_tracing._mongodb_exporter_attached is True
|
|
@@ -675,6 +675,7 @@ def test_setup_tracing_oe_url_without_flag_keeps_mongodb(monkeypatch, isolated_t
|
|
|
675
675
|
"database_exporter": "attached",
|
|
676
676
|
"platform_exporter": "disabled",
|
|
677
677
|
}
|
|
678
|
+
assert "without PII redaction" in caplog.text
|
|
678
679
|
|
|
679
680
|
|
|
680
681
|
def test_setup_tracing_without_oe_url_uses_mongodb(isolated_tracing):
|
|
@@ -729,6 +730,53 @@ def test_platform_exporter_status_degrades_on_partial_success_and_recovers(isola
|
|
|
729
730
|
assert isolated_tracing.tracing_status()["platform_exporter"] == "attached"
|
|
730
731
|
|
|
731
732
|
|
|
733
|
+
def test_platform_exporter_unreachable_oe_loses_spans_and_reports_degraded(isolated_tracing):
|
|
734
|
+
# No Mongo fallback: while the OE is unreachable the batch is lost, and
|
|
735
|
+
# /health must say so rather than report attached.
|
|
736
|
+
import httpx
|
|
737
|
+
|
|
738
|
+
clock = _Clock()
|
|
739
|
+
|
|
740
|
+
def handler(_body):
|
|
741
|
+
return httpx.ConnectError("oe unreachable")
|
|
742
|
+
|
|
743
|
+
exporter, client = _exporter(handler, clock=clock, sleep=clock.advance)
|
|
744
|
+
isolated_tracing._platform_exporter = exporter
|
|
745
|
+
isolated_tracing._platform_exporter_attached = True
|
|
746
|
+
|
|
747
|
+
assert exporter.export(_make_spans(2)) == SpanExportResult.FAILURE
|
|
748
|
+
|
|
749
|
+
assert len(client.requests) > 1
|
|
750
|
+
assert exporter.last_error is not None
|
|
751
|
+
assert isolated_tracing.tracing_status()["platform_exporter"] == "degraded"
|
|
752
|
+
assert isolated_tracing._mongodb_exporter_attached is False
|
|
753
|
+
|
|
754
|
+
|
|
755
|
+
def test_platform_exporter_sustained_503_backpressure_degrades_then_recovers(isolated_tracing):
|
|
756
|
+
# The OE answers 503 + Retry-After when its 16-slot admission semaphore is
|
|
757
|
+
# full. The exporter retries within its deadline, drops the batch when the
|
|
758
|
+
# OE stays saturated, and recovers on the next clean export.
|
|
759
|
+
clock = _Clock()
|
|
760
|
+
saturated = {"on": True}
|
|
761
|
+
|
|
762
|
+
def handler(_body):
|
|
763
|
+
if saturated["on"]:
|
|
764
|
+
return _Response(503, headers={"Retry-After": "1"})
|
|
765
|
+
return _Response(200)
|
|
766
|
+
|
|
767
|
+
exporter, client = _exporter(handler, clock=clock, sleep=clock.advance)
|
|
768
|
+
isolated_tracing._platform_exporter = exporter
|
|
769
|
+
isolated_tracing._platform_exporter_attached = True
|
|
770
|
+
|
|
771
|
+
assert exporter.export(_make_spans(1)) == SpanExportResult.FAILURE
|
|
772
|
+
assert len(client.requests) > 1
|
|
773
|
+
assert isolated_tracing.tracing_status()["platform_exporter"] == "degraded"
|
|
774
|
+
|
|
775
|
+
saturated["on"] = False
|
|
776
|
+
assert exporter.export(_make_spans(1)) == SpanExportResult.SUCCESS
|
|
777
|
+
assert isolated_tracing.tracing_status()["platform_exporter"] == "attached"
|
|
778
|
+
|
|
779
|
+
|
|
732
780
|
def test_force_flush_tracing_is_true_when_uninitialized(isolated_tracing):
|
|
733
781
|
assert isolated_tracing.force_flush_tracing() is True
|
|
734
782
|
|
|
@@ -748,8 +796,8 @@ def _capture_runtime_setup_calls(monkeypatch) -> list[dict]:
|
|
|
748
796
|
return calls
|
|
749
797
|
|
|
750
798
|
|
|
751
|
-
def
|
|
752
|
-
"""With
|
|
799
|
+
def test_runtime_setup_tracing_skips_the_mongo_store_by_default(monkeypatch):
|
|
800
|
+
"""With OE_URL set and the opt-out unset, the guest routes
|
|
753
801
|
spans to the OE and must not open the trace-store Mongo connection — the
|
|
754
802
|
double-write this change exists to prevent."""
|
|
755
803
|
import pymongo
|
|
@@ -757,7 +805,6 @@ def test_runtime_setup_tracing_skips_the_mongo_store_when_flagged(monkeypatch):
|
|
|
757
805
|
import agent_engine_runner_shared.tracing as tracing_pkg
|
|
758
806
|
|
|
759
807
|
monkeypatch.setenv("OE_URL", "http://oe:8000")
|
|
760
|
-
monkeypatch.setenv(_PLATFORM_FLAG, "1")
|
|
761
808
|
|
|
762
809
|
setup_calls: list[dict] = []
|
|
763
810
|
monkeypatch.setattr(tracing_pkg, "setup_tracing", lambda **kwargs: setup_calls.append(kwargs))
|
|
@@ -782,13 +829,13 @@ def test_runtime_setup_tracing_skips_the_mongo_store_when_flagged(monkeypatch):
|
|
|
782
829
|
assert setup_calls == [{"service_name": "svc"}]
|
|
783
830
|
|
|
784
831
|
|
|
785
|
-
def
|
|
786
|
-
"""
|
|
832
|
+
def test_runtime_keeps_mongodb_path_when_opted_out(monkeypatch):
|
|
833
|
+
"""AGENTIC_TRACE_EXPORTER=0 must not take the OE path."""
|
|
787
834
|
calls = _capture_runtime_setup_calls(monkeypatch)
|
|
788
835
|
monkeypatch.setenv("OE_URL", "http://oe:8000")
|
|
789
|
-
monkeypatch.
|
|
836
|
+
monkeypatch.setenv(_PLATFORM_FLAG, "0")
|
|
790
837
|
|
|
791
|
-
TenantRuntime(app_name="svc-
|
|
838
|
+
TenantRuntime(app_name="svc-optout")
|
|
792
839
|
|
|
793
840
|
# The MongoDB path passes the collection kwarg; the OE path does not.
|
|
794
841
|
assert len(calls) == 1
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/pydoc-markdown.yml
RENAMED
|
File without changes
|
{agent_engine_runner_shared-0.11.13 → agent_engine_runner_shared-0.11.14}/pyrightconfig.json
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|