agent-engine-runner-shared 0.11.9__tar.gz → 0.11.11__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.9 → agent_engine_runner_shared-0.11.11}/CHANGELOG.md +20 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/Dockerfile +1 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/Makefile +12 -2
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/PKG-INFO +6 -5
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/docs/api.md +130 -30
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/pyproject.toml +9 -5
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/__init__.py +2 -0
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/caller_trace.py +138 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/README.md +14 -15
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/__init__.py +1 -5
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/connectors/bundle.py +93 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/create_tool.py +35 -3
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/definitions.py +1 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/executor.py +13 -2
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/README.md +1 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/authoring.py +4 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/modes.py +25 -8
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/materialize.py +3 -12
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/custom_events.py +12 -2
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/error_reporting.py +1 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/launcher.py +103 -3
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth.py +66 -45
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_cli.py +52 -33
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_secret.py +27 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_tools.py +198 -78
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/models.py +10 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/node_logger.py +5 -3
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/owner_callback.py +139 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/progress.py +16 -85
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/runtime.py +42 -2
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/secure_wrapper.py +516 -125
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/aer.py +33 -23
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/server/atlas_dns.py +88 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/base.py +54 -3
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/http_retry.py +29 -2
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/tool.py +194 -35
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/startup_state.py +19 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/structured_logging.py +33 -1
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/tls_client.py +579 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tool_api_error.py +44 -5
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/utils.py +7 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/__init__.py +8 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/activity.py +76 -6
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/client.py +68 -24
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/context.py +198 -11
- agent_engine_runner_shared-0.11.11/tests/conftest.py +33 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/corpus/README.md +5 -3
- agent_engine_runner_shared-0.11.11/tests/corpus/fetch_corpus.py +78 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/corpus/manifest.json +102 -100
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/corpus/test_api_corpus.py +2 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/pact/test_oe_provider_verification.py +9 -1
- agent_engine_runner_shared-0.11.11/tests/unit/connectors/test_bundle.py +99 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_core.py +155 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_create_tool.py +174 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_materialize.py +4 -58
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_a2a_registration.py +2 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_cancelled_turn.py +3 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_capability_advertise.py +2 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_chunk_delivery_reliability.py +1 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_durable_attempt.py +72 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_llm_invocation_signal.py +3 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_metadata_payload.py +1 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_policy_denied.py +3 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_session_finish.py +1 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_timeout_signal.py +3 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_trace_context.py +1 -0
- agent_engine_runner_shared-0.11.11/tests/unit/test_atlas_dns.py +129 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_drain.py +2 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_durable_guardrail_review.py +1 -2
- agent_engine_runner_shared-0.11.11/tests/unit/test_durable_oauth.py +300 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_durable_proxies.py +5 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_emit_custom_event.py +79 -23
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_emit_progress.py +102 -40
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_function_mode.py +12 -6
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_graph_warm.py +1 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_hitl_interrupt.py +57 -4
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_http_retry.py +100 -5
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_launcher.py +30 -3
- agent_engine_runner_shared-0.11.11/tests/unit/test_launcher_reports.py +390 -0
- agent_engine_runner_shared-0.11.11/tests/unit/test_mcp_era_compat.py +352 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_oauth.py +89 -36
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_oauth_cli.py +93 -38
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_tools.py +184 -171
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_node_logger.py +28 -53
- agent_engine_runner_shared-0.11.11/tests/unit/test_owner_callback.py +234 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_query_routes.py +1 -1
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_models.py +72 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_secure_wrapper.py +384 -94
- agent_engine_runner_shared-0.11.11/tests/unit/test_server_startup_failures.py +194 -0
- agent_engine_runner_shared-0.11.11/tests/unit/test_shared_client.py +510 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_structured_logging.py +172 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tls_client.py +15 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tls_client_integration.py +5 -3
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool.py +140 -19
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_api_error.py +56 -5
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_server_startup.py +50 -106
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_trace_context.py +250 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_activity.py +108 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_client.py +115 -2
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_context.py +147 -0
- agent_engine_runner_shared-0.11.9/src/agent_engine_runner_shared/connectors/bundle.py +0 -194
- agent_engine_runner_shared-0.11.9/src/agent_engine_runner_shared/owner_callback.py +0 -60
- agent_engine_runner_shared-0.11.9/src/agent_engine_runner_shared/tls_client.py +0 -314
- agent_engine_runner_shared-0.11.9/tests/conftest.py +0 -18
- agent_engine_runner_shared-0.11.9/tests/corpus/fetch_corpus.py +0 -52
- agent_engine_runner_shared-0.11.9/tests/unit/connectors/test_bundle.py +0 -174
- agent_engine_runner_shared-0.11.9/tests/unit/test_owner_callback.py +0 -109
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/LICENSE +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/README.md +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/pydoc-markdown.yml +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/pyrightconfig.json +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/scripts/agentic-vendored-wheel-check.sh +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/__main__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/a2a.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/a2a_auth.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/agent_config.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/async_utils.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/catalog.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/naming.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/parameters.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/security.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/spec.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/runtime.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/db_config.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/db_naming.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/execution.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/guardrails_evaluator/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/guardrails_evaluator/core.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/guardrails_evaluator/regex.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/hooks.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/http_path.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_cache_lock.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_cache_name.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/memory.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/memory_appbound.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/metrics.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/py.typed +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/secure_llm_proxy.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/auth.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/call_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/callback_delivery.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/chunk_types.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/cors.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/drain.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/function.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/graph_warm.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/metadata.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/oe_url.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/owner_url.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/query.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/span_kinds.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/span_names.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tool_memory_ownership.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/toolpod_handlers.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tracing/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tracing/exporters.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tracing/setup.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/types.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/attempt.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/cancelled_history.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/heartbeat.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/memory.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/protojson.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/settlement.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/corpus/.gitignore +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/corpus/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/mock_embedder.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/test_a2a_trace_propagation.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/test_runtime.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/test_secure_async.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/test_secure_sync.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/integration/test_tracing_otlp_wire_format.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/pact/conftest.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/fixtures/jira.tool_defs.yaml +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_generate.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_a2a.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_a2a_auth.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_build_agent_span.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_chunk_emission.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_workspace_scope.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_agent_config.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_async_utils.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_call_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_call_interrupt_contract.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_cors.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_create_memory_client_headers.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_custom_headers_context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_custom_headers_models.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_db_naming.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_debug_hook.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_drain_contract.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_error_reporting.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_execution.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_extract_turn_messages.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_format_llm_error.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_guardrails_protocol.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_hooks.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_http_path.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_listen_host.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_llm_credential_classification.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_llm_routing.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_oauth_secret.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_memory_appbound.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_memory_search_metadata.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_memory_writer_context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_metadata.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_metrics.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_models.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_no_lc_imports.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_oe_url.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_owner_url.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_payload_context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_request_id_context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_resume_payload.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_build_context_from_sources.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_custom_memory.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_memory_context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_register_tool.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_secure_llm_proxy.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_auth.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_health.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_shutdown.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_session_filesystem_isolation.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_session_finish_context.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_thinking_tokens.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_token_capture.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_authorization.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_cancellation_boundary.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_deserialization.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_log_redaction.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_memory_ownership.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_toolpod_handlers.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tracing_exporter.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tracing_retry.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_attempt.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_cancelled_history.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_heartbeat.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_memory.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_protojson.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_protojson_helpers.py +0 -0
- {agent_engine_runner_shared-0.11.9 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_settlement.py +0 -0
|
@@ -7,6 +7,26 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Removed
|
|
11
|
+
- Removed the unused pre-materialized connector bundle override
|
|
12
|
+
(`AGENTIC_CONNECTOR_BUNDLE_PATH`) and the `load_connector_bundle` /
|
|
13
|
+
`CONNECTOR_BUNDLE_PATH_ENV` exports. Connectors resolve only from
|
|
14
|
+
`agent.yaml` and its local connector authoring files.
|
|
15
|
+
|
|
16
|
+
### Changed
|
|
17
|
+
- Remote MCP servers now use MCP Python SDK 2.x (`mcp==2.3.0`). Each call
|
|
18
|
+
negotiates the protocol automatically: it probes `server/discover` and falls
|
|
19
|
+
back to the legacy `initialize` handshake, so servers on `2025-11-25` and
|
|
20
|
+
older keep working while `2026-07-28` servers are reached directly. Tool
|
|
21
|
+
result content keeps its wire field names (`mimeType`, `readOnlyHint`) and
|
|
22
|
+
failed HTTP calls keep reporting their status in error messages. OAuth caches
|
|
23
|
+
written by the previous SDK still load; new entries record the authorization
|
|
24
|
+
server's `issuer` when it provides one.
|
|
25
|
+
- Reuse a process-wide keep-alive mTLS client for OE callbacks (tool
|
|
26
|
+
execute/result, node events, progress and custom events) and drain callback
|
|
27
|
+
response bodies so connections return to the pool; removes a full TLS
|
|
28
|
+
handshake per callback.
|
|
29
|
+
|
|
10
30
|
### Fixed
|
|
11
31
|
- Uncaught exceptions in agent code now emit one filterable `level=ERROR`
|
|
12
32
|
record instead of only `WARNING`. Ordinary stderr writes with no
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
# Usage: docker buildx build -t runner:latest -f packages/python/packages/agent-engine-runner-shared/Dockerfile .
|
|
6
6
|
|
|
7
7
|
ARG BASE_TARGETPLATFORM=linux/amd64
|
|
8
|
-
ARG RUNNER_BASE_IMAGE=664315256653.dkr.ecr.us-east-1.amazonaws.com/base/amazonlinux2023-python:v3.11-
|
|
8
|
+
ARG RUNNER_BASE_IMAGE=664315256653.dkr.ecr.us-east-1.amazonaws.com/base/amazonlinux2023-python:v3.11-202610191636-2ff39c3@sha256:30ecac067fceafe43a5f0f5e80d1725b60708204dcd2fe3f176363417e2a2402
|
|
9
9
|
|
|
10
10
|
FROM --platform=${BASE_TARGETPLATFORM} ghcr.io/astral-sh/uv@sha256:ff07b86af50d4d9391d9daf4ff89ce427bc544f9aae87057e69a1cc0aa369946 AS uv
|
|
11
11
|
|
|
@@ -13,6 +13,16 @@ PYDOC_MARKDOWN := uv tool run --from 'pydoc-markdown>=4.8' pydoc-markdown
|
|
|
13
13
|
# pydoc-markdown emits trailing spaces on blank lines and an extra trailing
|
|
14
14
|
# blank line; strip both so docs-check only fails on content changes.
|
|
15
15
|
NORMALIZE_DOCS := perl -0pe 's/[^\S\n]+$$//mg; s/\n+\z/\n/'
|
|
16
|
+
# ruff formats the Python inside Markdown fences, so the generated reference has
|
|
17
|
+
# to go through it too. Without this stage the pre-commit ruff-format hook
|
|
18
|
+
# rewrites api.md and docs-check then fails on the unformatted generator output.
|
|
19
|
+
# Ruff runs from the uv workspace root so it resolves from the workspace lock,
|
|
20
|
+
# the same version the hook and CI pin.
|
|
21
|
+
# $(CURDIR) rather than $(abspath ...): abspath splits its argument on
|
|
22
|
+
# whitespace, so a checkout whose path contains a space would break. Both paths
|
|
23
|
+
# are quoted at the point of use for the same reason.
|
|
24
|
+
PYTHON_WORKSPACE := $(CURDIR)/../..
|
|
25
|
+
FORMAT_DOCS := uv run --directory "$(PYTHON_WORKSPACE)" ruff format --stdin-filename "$(CURDIR)/docs/api.md" -
|
|
16
26
|
|
|
17
27
|
# Output path for the generated reference. Defaults to the committed file;
|
|
18
28
|
# override (e.g. DOCS_OUT=/tmp/api.md) to generate elsewhere without clobbering
|
|
@@ -21,11 +31,11 @@ DOCS_OUT ?= docs/api.md
|
|
|
21
31
|
|
|
22
32
|
# Regenerate API reference from docstrings.
|
|
23
33
|
docs:
|
|
24
|
-
$(PYDOC_MARKDOWN) pydoc-markdown.yml | $(NORMALIZE_DOCS) > $(DOCS_OUT)
|
|
34
|
+
$(PYDOC_MARKDOWN) pydoc-markdown.yml | $(NORMALIZE_DOCS) | $(FORMAT_DOCS) > $(DOCS_OUT)
|
|
25
35
|
|
|
26
36
|
# CI: fail if docs/api.md is stale.
|
|
27
37
|
docs-check:
|
|
28
|
-
@$(PYDOC_MARKDOWN) pydoc-markdown.yml | $(NORMALIZE_DOCS) > /tmp/api-docs-check.md
|
|
38
|
+
@$(PYDOC_MARKDOWN) pydoc-markdown.yml | $(NORMALIZE_DOCS) | $(FORMAT_DOCS) > /tmp/api-docs-check.md
|
|
29
39
|
@diff -u docs/api.md /tmp/api-docs-check.md || { \
|
|
30
40
|
echo ""; \
|
|
31
41
|
echo "ERROR: docs/api.md is stale. Run 'make docs' to regenerate."; \
|
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
Metadata-Version: 2.5
|
|
2
2
|
Name: agent-engine-runner-shared
|
|
3
|
-
Version: 0.11.
|
|
3
|
+
Version: 0.11.11
|
|
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.11
|
|
9
|
+
Requires-Dist: agent-engine-sdk==0.11.11
|
|
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
|
|
13
|
+
Requires-Dist: httpx2>=2.5.0
|
|
13
14
|
Requires-Dist: httpx>=0.27.0
|
|
14
15
|
Requires-Dist: jsonschema>=4.26.0
|
|
15
|
-
Requires-Dist: mcp==
|
|
16
|
+
Requires-Dist: mcp==2.3.0
|
|
16
17
|
Requires-Dist: msgpack>=1.0.0
|
|
17
18
|
Requires-Dist: protobuf<7,>=6.33.6
|
|
18
19
|
Requires-Dist: pydantic>=2.0.0
|
|
@@ -21,7 +22,7 @@ Requires-Dist: pyyaml>=6.0
|
|
|
21
22
|
Requires-Dist: regex>=2026.4.4
|
|
22
23
|
Requires-Dist: sentry-sdk>=2.27.0
|
|
23
24
|
Requires-Dist: starlette>=1.7.0
|
|
24
|
-
Requires-Dist: uvicorn>=0.
|
|
25
|
+
Requires-Dist: uvicorn>=0.50.0
|
|
25
26
|
Provides-Extra: debug
|
|
26
27
|
Requires-Dist: debugpy>=1.8.0; extra == 'debug'
|
|
27
28
|
Provides-Extra: dev
|
|
@@ -6,6 +6,8 @@
|
|
|
6
6
|
* [agent\_config](#agent_engine_runner_shared.runtime.TenantRuntime.agent_config)
|
|
7
7
|
* [memory\_enabled](#agent_engine_runner_shared.runtime.TenantRuntime.memory_enabled)
|
|
8
8
|
* [get\_agent](#agent_engine_runner_shared.runtime.TenantRuntime.get_agent)
|
|
9
|
+
* [build\_graph](#agent_engine_runner_shared.runtime.TenantRuntime.build_graph)
|
|
10
|
+
* [uses\_per\_invocation\_build](#agent_engine_runner_shared.runtime.TenantRuntime.uses_per_invocation_build)
|
|
9
11
|
* [warm\_up\_agent](#agent_engine_runner_shared.runtime.TenantRuntime.warm_up_agent)
|
|
10
12
|
* [memory\_engine](#agent_engine_runner_shared.runtime.TenantRuntime.memory_engine)
|
|
11
13
|
* [memory\_writer](#agent_engine_runner_shared.runtime.TenantRuntime.memory_writer)
|
|
@@ -174,10 +176,14 @@
|
|
|
174
176
|
* [response\_from\_stream\_chunks](#agent_engine_runner_shared.secure_llm_proxy.SecureLLMProxy.response_from_stream_chunks)
|
|
175
177
|
* [stream](#agent_engine_runner_shared.secure_llm_proxy.SecureLLMProxy.stream)
|
|
176
178
|
* [agent\_engine\_runner\_shared.secure\_wrapper](#agent_engine_runner_shared.secure_wrapper)
|
|
179
|
+
* [\_OAuthAuthorizationRequired](#agent_engine_runner_shared.secure_wrapper._OAuthAuthorizationRequired)
|
|
180
|
+
* [\_\_init\_\_](#agent_engine_runner_shared.secure_wrapper._OAuthAuthorizationRequired.__init__)
|
|
181
|
+
* [oauth\_authorization\_wait\_id](#agent_engine_runner_shared.secure_wrapper.oauth_authorization_wait_id)
|
|
177
182
|
* [extract\_usage](#agent_engine_runner_shared.secure_wrapper.extract_usage)
|
|
178
183
|
* [PolicyDeniedException](#agent_engine_runner_shared.secure_wrapper.PolicyDeniedException)
|
|
179
184
|
* [OERetryAfterError](#agent_engine_runner_shared.secure_wrapper.OERetryAfterError)
|
|
180
185
|
* [ToolExecutionError](#agent_engine_runner_shared.secure_wrapper.ToolExecutionError)
|
|
186
|
+
* [ToolPlatformError](#agent_engine_runner_shared.secure_wrapper.ToolPlatformError)
|
|
181
187
|
* [TerminalExecutionError](#agent_engine_runner_shared.secure_wrapper.TerminalExecutionError)
|
|
182
188
|
* [raise\_for\_oe\_rejection](#agent_engine_runner_shared.secure_wrapper.raise_for_oe_rejection)
|
|
183
189
|
* [ToolCallTimeoutError](#agent_engine_runner_shared.secure_wrapper.ToolCallTimeoutError)
|
|
@@ -343,7 +349,9 @@ Return the resolved agent.yaml Memory feature setting.
|
|
|
343
349
|
#### get\_agent
|
|
344
350
|
|
|
345
351
|
```python
|
|
346
|
-
def get_agent(callbacks: List[Any] | None = None
|
|
352
|
+
def get_agent(callbacks: List[Any] | None = None,
|
|
353
|
+
*,
|
|
354
|
+
graph: Any = None) -> BaseAgent
|
|
347
355
|
```
|
|
348
356
|
|
|
349
357
|
Get a BaseAgent instance from the registered App.
|
|
@@ -355,6 +363,9 @@ framework-specific graph building and callback adaptation.
|
|
|
355
363
|
|
|
356
364
|
- `callbacks` - Framework-neutral callbacks for observability
|
|
357
365
|
(e.g., NodeExecutionLogger)
|
|
366
|
+
- `graph` - A graph already built by ``build_graph`` for this
|
|
367
|
+
invocation (a per-execution agent). Only forwarded when
|
|
368
|
+
present, so an App that does not accept it keeps working.
|
|
358
369
|
|
|
359
370
|
|
|
360
371
|
**Returns**:
|
|
@@ -366,6 +377,37 @@ framework-specific graph building and callback adaptation.
|
|
|
366
377
|
|
|
367
378
|
- `RuntimeError` - If no App has been registered via register_and_run()
|
|
368
379
|
|
|
380
|
+
<a id="agent_engine_runner_shared.runtime.TenantRuntime.build_graph"></a>
|
|
381
|
+
|
|
382
|
+
#### build\_graph
|
|
383
|
+
|
|
384
|
+
```python
|
|
385
|
+
async def build_graph(agent_input: Any = None, ctx: Any = None) -> Any
|
|
386
|
+
```
|
|
387
|
+
|
|
388
|
+
Build the graph for this invocation before ``get_agent``.
|
|
389
|
+
|
|
390
|
+
The AER awaits this so a per-execution agent's builder -- which may do
|
|
391
|
+
its own async I/O -- runs off the build path. Returns ``None`` when the
|
|
392
|
+
registered App declares no per-execution build (every global agent),
|
|
393
|
+
which tells the caller to use the cached build path unchanged. A
|
|
394
|
+
context-free discovery call passes ``(None, None)``.
|
|
395
|
+
|
|
396
|
+
<a id="agent_engine_runner_shared.runtime.TenantRuntime.uses_per_invocation_build"></a>
|
|
397
|
+
|
|
398
|
+
#### uses\_per\_invocation\_build
|
|
399
|
+
|
|
400
|
+
```python
|
|
401
|
+
def uses_per_invocation_build() -> bool
|
|
402
|
+
```
|
|
403
|
+
|
|
404
|
+
Whether the registered App builds its graph per invocation.
|
|
405
|
+
|
|
406
|
+
True only for an App that opted into ``load_strategy="per-execution"``.
|
|
407
|
+
The Tool Pod reads this to decide whether a failed context-free
|
|
408
|
+
discovery build should keep the registrations the builder made before
|
|
409
|
+
it raised, rather than discarding them.
|
|
410
|
+
|
|
369
411
|
<a id="agent_engine_runner_shared.runtime.TenantRuntime.warm_up_agent"></a>
|
|
370
412
|
|
|
371
413
|
#### warm\_up\_agent
|
|
@@ -2733,6 +2775,36 @@ This module provides:
|
|
|
2733
2775
|
|
|
2734
2776
|
HITL is handled via LangGraph's native interrupt() / Command(resume=...) API.
|
|
2735
2777
|
|
|
2778
|
+
<a id="agent_engine_runner_shared.secure_wrapper._OAuthAuthorizationRequired"></a>
|
|
2779
|
+
|
|
2780
|
+
## \_OAuthAuthorizationRequired
|
|
2781
|
+
|
|
2782
|
+
```python
|
|
2783
|
+
class _OAuthAuthorizationRequired(Exception)
|
|
2784
|
+
```
|
|
2785
|
+
|
|
2786
|
+
Leave durable dispatch with typed consent control instead of interrupting its activity.
|
|
2787
|
+
|
|
2788
|
+
<a id="agent_engine_runner_shared.secure_wrapper._OAuthAuthorizationRequired.__init__"></a>
|
|
2789
|
+
|
|
2790
|
+
#### \_\_init\_\_
|
|
2791
|
+
|
|
2792
|
+
```python
|
|
2793
|
+
def __init__(elicitation: ElicitationInfo, step: int) -> None
|
|
2794
|
+
```
|
|
2795
|
+
|
|
2796
|
+
Carry the OE response to its activity boundary without exposing it in errors.
|
|
2797
|
+
|
|
2798
|
+
<a id="agent_engine_runner_shared.secure_wrapper.oauth_authorization_wait_id"></a>
|
|
2799
|
+
|
|
2800
|
+
#### oauth\_authorization\_wait\_id
|
|
2801
|
+
|
|
2802
|
+
```python
|
|
2803
|
+
def oauth_authorization_wait_id(value: Any) -> str | None
|
|
2804
|
+
```
|
|
2805
|
+
|
|
2806
|
+
Identify a consent wait only when this attempt recorded the platform's challenge.
|
|
2807
|
+
|
|
2736
2808
|
<a id="agent_engine_runner_shared.secure_wrapper.extract_usage"></a>
|
|
2737
2809
|
|
|
2738
2810
|
#### extract\_usage
|
|
@@ -2783,12 +2855,26 @@ class ToolExecutionError(Exception)
|
|
|
2783
2855
|
|
|
2784
2856
|
Raised when tool execution fails.
|
|
2785
2857
|
|
|
2858
|
+
<a id="agent_engine_runner_shared.secure_wrapper.ToolPlatformError"></a>
|
|
2859
|
+
|
|
2860
|
+
## ToolPlatformError
|
|
2861
|
+
|
|
2862
|
+
```python
|
|
2863
|
+
class ToolPlatformError(ToolExecutionError)
|
|
2864
|
+
```
|
|
2865
|
+
|
|
2866
|
+
Raised when the platform, not the tool, failed a tool call.
|
|
2867
|
+
|
|
2868
|
+
The tool may already have run, for example when OE rejects or never
|
|
2869
|
+
acknowledges its result, so an adapter must not report this to the model as
|
|
2870
|
+
a failed tool it could call again.
|
|
2871
|
+
|
|
2786
2872
|
<a id="agent_engine_runner_shared.secure_wrapper.TerminalExecutionError"></a>
|
|
2787
2873
|
|
|
2788
2874
|
## TerminalExecutionError
|
|
2789
2875
|
|
|
2790
2876
|
```python
|
|
2791
|
-
class TerminalExecutionError(
|
|
2877
|
+
class TerminalExecutionError(ToolPlatformError)
|
|
2792
2878
|
```
|
|
2793
2879
|
|
|
2794
2880
|
Raised when OE rejects a tool call because the execution already ended.
|
|
@@ -3077,24 +3163,30 @@ Clean up resources owned by this execution's wrapper.
|
|
|
3077
3163
|
#### execute\_tool
|
|
3078
3164
|
|
|
3079
3165
|
```python
|
|
3080
|
-
def execute_tool(
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3166
|
+
def execute_tool(
|
|
3167
|
+
tool_name: str,
|
|
3168
|
+
arguments: Dict[str, Any],
|
|
3169
|
+
*,
|
|
3170
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
3171
|
+
provider_type: Optional[str] = None,
|
|
3172
|
+
scopes: Optional[list[str]] = None,
|
|
3173
|
+
tool_call_id: Optional[str] = None,
|
|
3174
|
+
raw_on_interrupt: bool = False,
|
|
3175
|
+
redact_fields: Optional[list[str]] = None,
|
|
3176
|
+
is_local: bool = True,
|
|
3177
|
+
local_executor: Optional[Callable[[], Any]] = None,
|
|
3178
|
+
is_framework_control_flow: Optional[Callable[[BaseException],
|
|
3179
|
+
bool]] = None,
|
|
3180
|
+
call_channel_expected: bool = False,
|
|
3181
|
+
on_unknown_outcome: Optional[UnknownOutcomePolicy] = None) -> Any
|
|
3094
3182
|
```
|
|
3095
3183
|
|
|
3096
3184
|
Execute a tool call through OE.
|
|
3097
3185
|
|
|
3186
|
+
Durable OAuth records a typed challenge before a separate framework
|
|
3187
|
+
wait, then records the actual resource call after reauthorization.
|
|
3188
|
+
Its consent answer never becomes a tool result or Memory content.
|
|
3189
|
+
|
|
3098
3190
|
**Arguments**:
|
|
3099
3191
|
|
|
3100
3192
|
- `tool_name` - Name of the tool
|
|
@@ -3111,6 +3203,9 @@ Execute a tool call through OE.
|
|
|
3111
3203
|
- `is_local` - Whether OE should return the approved call to this AER.
|
|
3112
3204
|
- `local_executor` - Callback that invokes the registered tool on the
|
|
3113
3205
|
current framework stack. Required for local tools.
|
|
3206
|
+
- `on_unknown_outcome` - What a retry does when the runner was lost while
|
|
3207
|
+
this tool was in flight in a durable workflow: ``"rerun"`` runs it
|
|
3208
|
+
again, ``"fail"`` refuses the retry.
|
|
3114
3209
|
|
|
3115
3210
|
|
|
3116
3211
|
**Returns**:
|
|
@@ -3132,20 +3227,22 @@ Execute a tool call through OE.
|
|
|
3132
3227
|
|
|
3133
3228
|
```python
|
|
3134
3229
|
def create_secure_tool_function(
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
|
|
3141
|
-
|
|
3142
|
-
|
|
3143
|
-
|
|
3144
|
-
|
|
3145
|
-
|
|
3146
|
-
|
|
3147
|
-
|
|
3148
|
-
|
|
3230
|
+
original_tool: Any,
|
|
3231
|
+
tool_name: str,
|
|
3232
|
+
*,
|
|
3233
|
+
allow_direct: bool = False,
|
|
3234
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
3235
|
+
is_local: bool = True,
|
|
3236
|
+
provider_type: Optional[str] = None,
|
|
3237
|
+
scopes: Optional[list[str]] = None,
|
|
3238
|
+
response_format: Literal["content",
|
|
3239
|
+
"content_and_artifact"] = "content",
|
|
3240
|
+
tool_declared_format: Optional[Literal["content",
|
|
3241
|
+
"content_and_artifact"]] = None,
|
|
3242
|
+
redact_fields: Optional[list[str]] = None,
|
|
3243
|
+
is_framework_control_flow: Optional[Callable[[BaseException],
|
|
3244
|
+
bool]] = None,
|
|
3245
|
+
on_unknown_outcome: Optional[UnknownOutcomePolicy] = None) -> Callable
|
|
3149
3246
|
```
|
|
3150
3247
|
|
|
3151
3248
|
Create a wrapped tool function that routes through SecureToolWrapper.
|
|
@@ -3165,6 +3262,9 @@ to be built before execution context exists.
|
|
|
3165
3262
|
- `tool_declared_format` - The tool author's own original format, used only
|
|
3166
3263
|
to decide whether a normal result gets shape-matched into a tuple.
|
|
3167
3264
|
Defaults to ``response_format``.
|
|
3265
|
+
- `on_unknown_outcome` - What a retry does when the runner was lost while
|
|
3266
|
+
this tool was in flight in a durable workflow: ``"rerun"`` runs it
|
|
3267
|
+
again, ``"fail"`` refuses the retry.
|
|
3168
3268
|
|
|
3169
3269
|
|
|
3170
3270
|
**Returns**:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agent-engine-runner-shared"
|
|
3
|
-
version = "0.11.
|
|
3
|
+
version = "0.11.11"
|
|
4
4
|
description = "Runner SDK - Framework-agnostic agent runtime"
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = {text = "Apache-2.0"}
|
|
@@ -12,20 +12,24 @@ dependencies = [
|
|
|
12
12
|
# validation, which can disagree with scope["path"]. The
|
|
13
13
|
# Host-validating _HOST_RE landed in starlette 1.4.1.
|
|
14
14
|
"starlette>=1.7.0",
|
|
15
|
-
|
|
15
|
+
# The launcher relies on uvicorn's STARTUP_FAILURE (exit 3) contract for
|
|
16
|
+
# lifespan startup and bind failures, added in 0.50.0.
|
|
17
|
+
"uvicorn>=0.50.0",
|
|
16
18
|
"pydantic>=2.0.0",
|
|
17
19
|
"protobuf>=6.33.6,<7",
|
|
18
20
|
"httpx>=0.27.0",
|
|
21
|
+
# MCP 2.x talks httpx2; the two clients install side by side.
|
|
22
|
+
"httpx2>=2.5.0",
|
|
19
23
|
"httpx-sse>=0.4.0",
|
|
20
|
-
"mcp==
|
|
24
|
+
"mcp==2.3.0",
|
|
21
25
|
"python-dotenv>=1.0.0",
|
|
22
26
|
"PyYAML>=6.0",
|
|
23
27
|
"jsonschema>=4.26.0",
|
|
24
28
|
"sentry-sdk>=2.27.0",
|
|
25
29
|
# BaseAgent protocol and AgentInput/AgentEvent models
|
|
26
|
-
"agent-engine-sdk==0.11.
|
|
30
|
+
"agent-engine-sdk==0.11.11",
|
|
27
31
|
# Memory models and the MemoryClient HTTP client
|
|
28
|
-
"agent-engine-sdk-memory==0.11.
|
|
32
|
+
"agent-engine-sdk-memory==0.11.11",
|
|
29
33
|
# Required for checkpoint message decoding (query/sessions endpoints)
|
|
30
34
|
"msgpack>=1.0.0",
|
|
31
35
|
# Required by guardrails_evaluator/regex.py for advanced regex matching
|
|
@@ -96,6 +96,7 @@ from agent_engine_runner_shared.secure_wrapper import (
|
|
|
96
96
|
TerminalExecutionError,
|
|
97
97
|
ToolCallTimeoutError,
|
|
98
98
|
ToolExecutionError,
|
|
99
|
+
ToolPlatformError,
|
|
99
100
|
extract_usage,
|
|
100
101
|
)
|
|
101
102
|
from agent_engine_runner_shared.structured_logging import (
|
|
@@ -190,6 +191,7 @@ __all__ = [
|
|
|
190
191
|
"TerminalExecutionError",
|
|
191
192
|
"ToolCallTimeoutError",
|
|
192
193
|
"ToolExecutionError",
|
|
194
|
+
"ToolPlatformError",
|
|
193
195
|
"ExternalAPICallError",
|
|
194
196
|
# Utilities
|
|
195
197
|
"extract_usage",
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"""Distinguish an inbound caller trace from a root this runner created.
|
|
2
|
+
|
|
3
|
+
AER always starts ``aer.execute``. With no inbound traceparent that span is a
|
|
4
|
+
root, and ``tls_client`` injects it on the call to the OE. The OE forwards
|
|
5
|
+
that header, so the tool process sees a remote parent even though no caller
|
|
6
|
+
trace was bound. W3C traceparent cannot say who created the root, so the
|
|
7
|
+
outgoing tracestate carries ``agentengine=root`` for a runner-created trace.
|
|
8
|
+
Guardrail content is recorded only when that marker is absent.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from __future__ import annotations
|
|
12
|
+
|
|
13
|
+
from contextlib import contextmanager
|
|
14
|
+
from typing import Any, Iterator
|
|
15
|
+
|
|
16
|
+
# Simple W3C tracestate member. A value of "root" means a runner process
|
|
17
|
+
# created this trace; an inbound caller does not set it.
|
|
18
|
+
RUNNER_ROOT_TRACESTATE_KEY = "agentengine"
|
|
19
|
+
RUNNER_ROOT_TRACESTATE_VALUE = "root"
|
|
20
|
+
|
|
21
|
+
_RUNNER_ROOTED_KEY: Any = None
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _runner_rooted_key() -> Any:
|
|
25
|
+
global _RUNNER_ROOTED_KEY
|
|
26
|
+
if _RUNNER_ROOTED_KEY is None:
|
|
27
|
+
from opentelemetry import context
|
|
28
|
+
|
|
29
|
+
_RUNNER_ROOTED_KEY = context.create_key("agentengine.runner_rooted_trace")
|
|
30
|
+
return _RUNNER_ROOTED_KEY
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def trace_state_marks_runner_root(trace_state: Any) -> bool:
|
|
34
|
+
"""True when tracestate says a runner created this trace's root."""
|
|
35
|
+
if trace_state is None:
|
|
36
|
+
return False
|
|
37
|
+
try:
|
|
38
|
+
marked = RUNNER_ROOT_TRACESTATE_KEY in trace_state
|
|
39
|
+
except TypeError:
|
|
40
|
+
return False
|
|
41
|
+
if not marked:
|
|
42
|
+
return False
|
|
43
|
+
return trace_state[RUNNER_ROOT_TRACESTATE_KEY] == RUNNER_ROOT_TRACESTATE_VALUE
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
def merge_runner_root_trace_state(existing: str | None) -> str:
|
|
47
|
+
"""Return tracestate with the runner-root member first, without duplicates."""
|
|
48
|
+
kept: list[str] = []
|
|
49
|
+
prefix = f"{RUNNER_ROOT_TRACESTATE_KEY}="
|
|
50
|
+
for part in (existing or "").split(","):
|
|
51
|
+
item = part.strip()
|
|
52
|
+
if not item or item.startswith(prefix):
|
|
53
|
+
continue
|
|
54
|
+
kept.append(item)
|
|
55
|
+
member = f"{RUNNER_ROOT_TRACESTATE_KEY}={RUNNER_ROOT_TRACESTATE_VALUE}"
|
|
56
|
+
return ",".join([member, *kept])
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def parent_context_is_runner_rooted(parent_context: Any) -> bool:
|
|
60
|
+
"""True when ``parent_context`` is not an inbound caller trace.
|
|
61
|
+
|
|
62
|
+
An invalid extract means this process is about to create the root. A
|
|
63
|
+
remote parent without the runner-root marker was already bound by a caller.
|
|
64
|
+
"""
|
|
65
|
+
from opentelemetry import trace
|
|
66
|
+
|
|
67
|
+
span_context = trace.get_current_span(parent_context).get_span_context()
|
|
68
|
+
if span_context is None or not span_context.is_valid:
|
|
69
|
+
return True
|
|
70
|
+
if trace_state_marks_runner_root(getattr(span_context, "trace_state", None)):
|
|
71
|
+
return True
|
|
72
|
+
if getattr(span_context, "is_remote", False):
|
|
73
|
+
return False
|
|
74
|
+
return True
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
def bind_runner_rooted_trace(ctx: Any, rooted: bool) -> Any:
|
|
78
|
+
"""Return ``ctx`` with the runner-rooted flag set for descendant spans."""
|
|
79
|
+
from opentelemetry import context
|
|
80
|
+
|
|
81
|
+
return context.set_value(_runner_rooted_key(), rooted, ctx)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
def runner_rooted_trace_active() -> bool:
|
|
85
|
+
"""True when the active span's trace was created by a runner, not a caller.
|
|
86
|
+
|
|
87
|
+
The flag set at span entry wins. Without it, a remote parent that carries
|
|
88
|
+
the marker — or any local root — is treated as runner-created so guardrail
|
|
89
|
+
content stays off unless a caller trace was already bound.
|
|
90
|
+
"""
|
|
91
|
+
try:
|
|
92
|
+
from opentelemetry import context, trace
|
|
93
|
+
except ImportError:
|
|
94
|
+
return False
|
|
95
|
+
|
|
96
|
+
explicit = context.get_value(_runner_rooted_key())
|
|
97
|
+
if explicit is True:
|
|
98
|
+
return True
|
|
99
|
+
if explicit is False:
|
|
100
|
+
return False
|
|
101
|
+
|
|
102
|
+
span = trace.get_current_span()
|
|
103
|
+
span_context = span.get_span_context()
|
|
104
|
+
if trace_state_marks_runner_root(getattr(span_context, "trace_state", None)):
|
|
105
|
+
return True
|
|
106
|
+
parent = getattr(span, "parent", None)
|
|
107
|
+
if parent is not None and getattr(parent, "is_valid", False):
|
|
108
|
+
if trace_state_marks_runner_root(getattr(parent, "trace_state", None)):
|
|
109
|
+
return True
|
|
110
|
+
if getattr(parent, "is_remote", False):
|
|
111
|
+
return False
|
|
112
|
+
# Parent was created in this process and nobody bound a caller trace.
|
|
113
|
+
return True
|
|
114
|
+
if span_context is not None and span_context.is_valid:
|
|
115
|
+
if getattr(span_context, "is_remote", False):
|
|
116
|
+
return trace_state_marks_runner_root(getattr(span_context, "trace_state", None))
|
|
117
|
+
return True
|
|
118
|
+
return False
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
@contextmanager
|
|
122
|
+
def runner_trace_scope(parent_context: Any) -> Iterator[None]:
|
|
123
|
+
"""Attach the runner-rooted flag for the span about to be started.
|
|
124
|
+
|
|
125
|
+
``start_as_current_span`` copies the ambient context, so the flag has to
|
|
126
|
+
be attached before the span or nested ``tls_client`` calls will not see it.
|
|
127
|
+
"""
|
|
128
|
+
try:
|
|
129
|
+
from opentelemetry import context as otel_context
|
|
130
|
+
except ImportError:
|
|
131
|
+
yield
|
|
132
|
+
return
|
|
133
|
+
rooted = parent_context_is_runner_rooted(parent_context)
|
|
134
|
+
token = otel_context.attach(bind_runner_rooted_trace(otel_context.get_current(), rooted))
|
|
135
|
+
try:
|
|
136
|
+
yield
|
|
137
|
+
finally:
|
|
138
|
+
otel_context.detach(token)
|
|
@@ -5,20 +5,17 @@ opt-in registration. It is not exposed through the CLI. Connector tools use the
|
|
|
5
5
|
AER → OE → Tool Pod execution path.
|
|
6
6
|
|
|
7
7
|
Runtime integration follows the platform's config → discover → register flow: each
|
|
8
|
-
process derives its own view from the same manifest. Resolution
|
|
8
|
+
process derives its own view from the same manifest. Resolution in
|
|
9
9
|
`resolve_runtime_bundle`:
|
|
10
10
|
|
|
11
|
-
1.
|
|
12
|
-
platform-owned `AGENTIC_CONNECTOR_BUNDLE_PATH` environment variable (the
|
|
13
|
-
deployment contract for hosted builds).
|
|
14
|
-
2. Otherwise, the `connectors` entries in `agent.yaml` are materialized in memory at
|
|
11
|
+
1. The `connectors` entries in `agent.yaml` are materialized in memory at
|
|
15
12
|
startup: each entry names a `tool.yaml` (resolved relative to `agent.yaml`) that
|
|
16
13
|
selects operations from a local catalog file (resolved relative to the
|
|
17
14
|
`tool.yaml`, contained within the agent workspace) and binds the endpoint and
|
|
18
15
|
credential environment reference. Catalogs are local files only — HTTPS catalog
|
|
19
16
|
references fail; there is no network fetch.
|
|
20
|
-
|
|
21
|
-
network access.
|
|
17
|
+
2. With no connectors configured, loading is an immediate no-op without filesystem
|
|
18
|
+
or network access.
|
|
22
19
|
|
|
23
20
|
```yaml
|
|
24
21
|
version: 1
|
|
@@ -61,9 +58,8 @@ Existing static auth modes continue to use their configured environment bindings
|
|
|
61
58
|
Catalog regeneration preserves the authored OAuth binding and records only
|
|
62
59
|
secret-free Bearer presentation in the catalog.
|
|
63
60
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
same materialized view and owns one `ConnectorExecutor` per connector.
|
|
61
|
+
AER loads the materialized schemas as ordinary remote tools. Tool Pod startup
|
|
62
|
+
materializes the same view and owns one `ConnectorExecutor` per connector.
|
|
67
63
|
|
|
68
64
|
`load_tool_defs(path)` reads a local compiled YAML artifact into `ToolDefinitions`.
|
|
69
65
|
`tool_schemas()` returns detached name, description and `inputSchema` dictionaries.
|
|
@@ -107,14 +103,17 @@ Only GET, HEAD and OPTIONS retry 429/503, at most three times; `Retry-After` is
|
|
|
107
103
|
at 30 seconds. Each invocation carries a 30-second budget between requests, redirects,
|
|
108
104
|
response chunks and retry waits. Every request
|
|
109
105
|
uses its remaining budget for HTTPX's standard connect, read, write and pool timeouts;
|
|
110
|
-
the read timeout bounds each blocking read, as defined by HTTPX.
|
|
106
|
+
the read timeout bounds each blocking read, as defined by HTTPX. Requests carry
|
|
107
|
+
`User-Agent: agent-engine-connector` unless the connector sets its own in
|
|
108
|
+
`auth.headers`, matched case-insensitively.
|
|
111
109
|
|
|
112
110
|
HTTP failures, including rejected provider redirects, use `httpx.HTTPStatusError`,
|
|
113
111
|
and transport failures use the existing
|
|
114
112
|
timeout/connection exception types recognized by `classify_tool_api_error`. An HTTP
|
|
115
113
|
error may retain a bounded provider error body (at most 4 KB) so the shared classifier
|
|
116
|
-
can surface the provider's own explanation
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
can surface the provider's own explanation: a recognized JSON error field, or a
|
|
115
|
+
plain-text body that is not HTML markup, up to its first link. The retained body is
|
|
116
|
+
never logged; the classifier applies rudimentary hygiene to the extracted explanation
|
|
117
|
+
— control characters dropped, URL-shaped text rejected, exact credential values
|
|
118
|
+
redacted, result bounded. This is best-effort, not a guarantee. Oversized bodies, redirect locations,
|
|
120
119
|
and credential-bearing request objects are never retained.
|
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
"""Compiled OpenAPI connector core
|
|
1
|
+
"""Compiled OpenAPI connector core and authoring materialization."""
|
|
2
2
|
|
|
3
3
|
from agent_engine_runner_shared.connectors.bundle import (
|
|
4
|
-
CONNECTOR_BUNDLE_PATH_ENV,
|
|
5
4
|
BundledConnector,
|
|
6
5
|
BundledTool,
|
|
7
6
|
ConnectorBundle,
|
|
8
7
|
ConnectorBundleError,
|
|
9
|
-
load_connector_bundle,
|
|
10
8
|
)
|
|
11
9
|
from agent_engine_runner_shared.connectors.definitions import (
|
|
12
10
|
Auth,
|
|
@@ -33,7 +31,6 @@ from agent_engine_runner_shared.connectors.runtime import (
|
|
|
33
31
|
)
|
|
34
32
|
|
|
35
33
|
__all__ = [
|
|
36
|
-
"CONNECTOR_BUNDLE_PATH_ENV",
|
|
37
34
|
"BundledConnector",
|
|
38
35
|
"BundledTool",
|
|
39
36
|
"CompileResult",
|
|
@@ -48,7 +45,6 @@ __all__ = [
|
|
|
48
45
|
"Auth",
|
|
49
46
|
"ToolDefinitions",
|
|
50
47
|
"compile_catalog",
|
|
51
|
-
"load_connector_bundle",
|
|
52
48
|
"load_tool_defs",
|
|
53
49
|
"materialize_connectors",
|
|
54
50
|
"regenerate_catalog",
|