agent-engine-runner-shared 0.11.11__tar.gz → 0.11.13__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.11 → agent_engine_runner_shared-0.11.13}/CHANGELOG.md +17 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/Dockerfile +1 -1
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/PKG-INFO +3 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/docs/api.md +46 -28
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/pyproject.toml +3 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/__init__.py +2 -0
- agent_engine_runner_shared-0.11.13/src/agent_engine_runner_shared/__main__.py +12 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/agent_config.py +35 -8
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/README.md +15 -11
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/__init__.py +2 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/bundle.py +3 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/create_tool.py +32 -60
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/definitions.py +151 -108
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/executor.py +11 -12
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/README.md +17 -8
- agent_engine_runner_shared-0.11.13/src/agent_engine_runner_shared/connectors/generate/authoring.py +361 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/catalog.py +79 -29
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/modes.py +76 -16
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/security.py +89 -49
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/materialize.py +4 -6
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/custom_events.py +9 -9
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/error_reporting.py +44 -1
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/mcp_oauth.py +2 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/mcp_oauth_cli.py +2 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/mcp_tools.py +6 -1
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/memory_appbound.py +10 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/models.py +75 -5
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/runtime.py +10 -8
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/secure_llm_proxy.py +8 -4
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/secure_wrapper.py +115 -29
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/__init__.py +0 -2
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/aer.py +48 -18
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/base.py +1 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/chunk_types.py +7 -4
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/http_retry.py +4 -5
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/tool.py +59 -40
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/structured_logging.py +0 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/tool_api_error.py +14 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/toolpod_handlers.py +4 -2
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/tracing/__init__.py +6 -0
- agent_engine_runner_shared-0.11.13/src/agent_engine_runner_shared/tracing/conversation.py +214 -0
- agent_engine_runner_shared-0.11.13/src/agent_engine_runner_shared/tracing/exporters.py +951 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/tracing/setup.py +116 -14
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/utils.py +1 -8
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/__init__.py +2 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/activity.py +3 -2
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/context.py +74 -4
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/corpus/test_api_corpus.py +81 -39
- agent_engine_runner_shared-0.11.13/tests/unit/connectors/fixtures/auth_cases.yaml +178 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/fixtures/jira.tool_defs.yaml +1 -2
- agent_engine_runner_shared-0.11.13/tests/unit/connectors/test_auth.py +112 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/test_bundle.py +4 -4
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/test_core.py +29 -71
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/test_create_tool.py +102 -99
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/test_generate.py +538 -63
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/test_materialize.py +23 -42
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_cancelled_turn.py +39 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_chunk_delivery_reliability.py +12 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_session_finish.py +61 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_timeout_signal.py +67 -7
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_agent_config.py +83 -22
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_durable_oauth.py +3 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_durable_proxies.py +1 -1
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_error_reporting.py +81 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_http_retry.py +2 -2
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_llm_routing.py +138 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_mcp_tools.py +13 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_memory_appbound.py +18 -0
- agent_engine_runner_shared-0.11.13/tests/unit/test_platform_tracing_exporter.py +796 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_secure_wrapper.py +134 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_server_health.py +47 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_structured_logging.py +0 -1
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool.py +29 -3
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_api_error.py +30 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_server_startup.py +33 -5
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_toolpod_handlers.py +6 -0
- agent_engine_runner_shared-0.11.13/tests/unit/test_trace_conversation.py +278 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tracing_exporter.py +44 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tracing_retry.py +46 -11
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/__main__.py +0 -12
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/connectors/generate/authoring.py +0 -205
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/server/function.py +0 -304
- agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/tracing/exporters.py +0 -410
- agent_engine_runner_shared-0.11.11/tests/unit/test_function_mode.py +0 -858
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/LICENSE +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/Makefile +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/README.md +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/pydoc-markdown.yml +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/pyrightconfig.json +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/scripts/agentic-vendored-wheel-check.sh +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/a2a.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/a2a_auth.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/async_utils.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/caller_trace.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/naming.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/parameters.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/generate/spec.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/connectors/runtime.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/db_config.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/db_naming.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/execution.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.pyi +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/guardrails_evaluator/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/guardrails_evaluator/core.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/guardrails_evaluator/regex.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/hooks.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/http_path.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/launcher.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/mcp_oauth_cache_lock.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/mcp_oauth_cache_name.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/mcp_oauth_secret.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/memory.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/metrics.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/node_logger.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/owner_callback.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/progress.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/py.typed +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/atlas_dns.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/auth.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/call_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/callback_delivery.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/cors.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/drain.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/graph_warm.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/metadata.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/oe_url.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/owner_url.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/server/query.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/span_kinds.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/span_names.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/startup_state.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/tls_client.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/tool_memory_ownership.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/types.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/attempt.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/cancelled_history.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/client.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/heartbeat.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/memory.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/protojson.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/src/agent_engine_runner_shared/workflow/settlement.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/conftest.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/corpus/.gitignore +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/corpus/README.md +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/corpus/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/corpus/fetch_corpus.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/corpus/manifest.json +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/mock_embedder.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/test_a2a_trace_propagation.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/test_runtime.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/test_secure_async.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/test_secure_sync.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/integration/test_tracing_otlp_wire_format.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/pact/conftest.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/pact/test_oe_provider_verification.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/connectors/__init__.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_a2a.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_a2a_auth.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_a2a_registration.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_build_agent_span.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_capability_advertise.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_chunk_emission.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_durable_attempt.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_llm_invocation_signal.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_metadata_payload.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_policy_denied.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_trace_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_aer_workspace_scope.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_async_utils.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_atlas_dns.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_call_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_call_interrupt_contract.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_cors.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_create_memory_client_headers.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_custom_headers_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_custom_headers_models.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_db_naming.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_debug_hook.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_drain.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_drain_contract.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_durable_guardrail_review.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_emit_custom_event.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_emit_progress.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_execution.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_extract_turn_messages.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_format_llm_error.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_graph_warm.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_guardrails_protocol.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_hitl_interrupt.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_hooks.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_http_path.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_launcher.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_launcher_reports.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_listen_host.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_llm_credential_classification.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_mcp_era_compat.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_mcp_oauth.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_mcp_oauth_cli.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_mcp_oauth_secret.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_memory_search_metadata.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_memory_writer_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_metadata.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_metrics.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_models.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_no_lc_imports.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_node_logger.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_oe_url.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_owner_callback.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_owner_url.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_payload_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_query_routes.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_request_id_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_resume_payload.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_runtime_build_context_from_sources.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_runtime_checkpoint_workspace.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_runtime_custom_memory.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_runtime_memory_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_runtime_models.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_runtime_register_tool.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_secure_llm_proxy.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_server_auth.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_server_shutdown.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_server_startup_failures.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_session_filesystem_isolation.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_session_finish_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_shared_client.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_thinking_tokens.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tls_client.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tls_client_integration.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_token_capture.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_authorization.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_cancellation_boundary.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_deserialization.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_log_redaction.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_memory_ownership.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/test_tool_trace_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_activity.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_attempt.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_cancelled_history.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_client.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_context.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_heartbeat.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_memory.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_protojson.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_protojson_helpers.py +0 -0
- {agent_engine_runner_shared-0.11.11 → agent_engine_runner_shared-0.11.13}/tests/unit/workflow/test_settlement.py +0 -0
|
@@ -7,6 +7,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
### Changed
|
|
11
|
+
- **Breaking:** the connector `tool.yaml` `auth` block no longer takes `type`.
|
|
12
|
+
It names exactly one credential: `bearer: <secret>`, `basic: {username,
|
|
13
|
+
password}`, `api_keys: [{env, location, name, prefix}]`, or
|
|
14
|
+
`provider: <OAuth app>` with optional `scopes`, plus optional `headers`; omit
|
|
15
|
+
the block for no credential. A block that still uses `type` or its fields
|
|
16
|
+
fails validation and names the key to use instead. `compile_catalog` and
|
|
17
|
+
`scaffold_tool_yaml` propose the block from the document's security schemes
|
|
18
|
+
and derive secret names from the connector name; `auth` now takes `none`,
|
|
19
|
+
`bearer`, `basic` or `api_keys`, and an OAuth document needs `provider`.
|
|
20
|
+
Generated catalogs record the credential kind without `type`.
|
|
21
|
+
`Auth.header_name()` and `Auth.credential_bindings()` are removed; read
|
|
22
|
+
`Auth.api_keys`. Regenerating a connector with no `auth` block compiles every
|
|
23
|
+
operation anonymously instead of from the OpenAPI document's security, so
|
|
24
|
+
operations the first compile skipped can appear as tools; they send no
|
|
25
|
+
credential.
|
|
26
|
+
|
|
10
27
|
### Removed
|
|
11
28
|
- Removed the unused pre-materialized connector bundle override
|
|
12
29
|
(`AGENTIC_CONNECTOR_BUNDLE_PATH`) and the `load_connector_bundle` /
|
|
@@ -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-202611021131-0cb5df7@sha256:059f4396b31473f85e83c9219255b37f7b24e3caaef1c129363d50bc50383ceb
|
|
9
9
|
|
|
10
10
|
FROM --platform=${BASE_TARGETPLATFORM} ghcr.io/astral-sh/uv@sha256:ff07b86af50d4d9391d9daf4ff89ce427bc544f9aae87057e69a1cc0aa369946 AS uv
|
|
11
11
|
|
|
@@ -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.13
|
|
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.13
|
|
9
|
+
Requires-Dist: agent-engine-sdk==0.11.13
|
|
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
|
|
@@ -183,6 +183,7 @@
|
|
|
183
183
|
* [PolicyDeniedException](#agent_engine_runner_shared.secure_wrapper.PolicyDeniedException)
|
|
184
184
|
* [OERetryAfterError](#agent_engine_runner_shared.secure_wrapper.OERetryAfterError)
|
|
185
185
|
* [ToolExecutionError](#agent_engine_runner_shared.secure_wrapper.ToolExecutionError)
|
|
186
|
+
* [ToolOutcomeUnknownError](#agent_engine_runner_shared.secure_wrapper.ToolOutcomeUnknownError)
|
|
186
187
|
* [ToolPlatformError](#agent_engine_runner_shared.secure_wrapper.ToolPlatformError)
|
|
187
188
|
* [TerminalExecutionError](#agent_engine_runner_shared.secure_wrapper.TerminalExecutionError)
|
|
188
189
|
* [raise\_for\_oe\_rejection](#agent_engine_runner_shared.secure_wrapper.raise_for_oe_rejection)
|
|
@@ -2436,9 +2437,9 @@ return parse(html)
|
|
|
2436
2437
|
Runtime-transparent custom-event emission across Atlas Agent Engine runtimes.
|
|
2437
2438
|
|
|
2438
2439
|
Authors call :func:`emit_custom_event` without knowing which runtime is
|
|
2439
|
-
hosting the code (AER agent process vs Tool Pod
|
|
2440
|
-
|
|
2441
|
-
|
|
2440
|
+
hosting the code (AER agent process vs Tool Pod). The active runtime installs
|
|
2441
|
+
exactly one :class:`CustomEventTransport` before invoking tenant code; the
|
|
2442
|
+
helper dispatches to that transport.
|
|
2442
2443
|
|
|
2443
2444
|
Atlas Agent Engine transports an opaque author-final JSON object as ``custom_event``.
|
|
2444
2445
|
It does not interpret keys — customers who need a shaped vocabulary (e.g.
|
|
@@ -2570,7 +2571,7 @@ no transport is installed (outside an execution context).
|
|
|
2570
2571
|
class OEHTTPCustomEventTransport()
|
|
2571
2572
|
```
|
|
2572
2573
|
|
|
2573
|
-
Tool Pod
|
|
2574
|
+
Tool Pod transport: POST final ``custom_event`` chunks to OE.
|
|
2574
2575
|
|
|
2575
2576
|
Delivery is awaited with a bounded timeout and is non-fatal: delivery
|
|
2576
2577
|
failures are logged and swallowed so a progress event cannot fail the tool.
|
|
@@ -2586,10 +2587,10 @@ class FeatureOffCustomEventTransport()
|
|
|
2586
2587
|
Fail closed when ``use_custom_parser`` is disabled.
|
|
2587
2588
|
|
|
2588
2589
|
Runtime-neutral rejecting transport shared by AER streaming (when Atlas Agent Engine
|
|
2589
|
-
does not subscribe to LangGraph ``custom``) and Tool Pod
|
|
2590
|
-
|
|
2591
|
-
|
|
2592
|
-
|
|
2590
|
+
does not subscribe to LangGraph ``custom``) and the Tool Pod (when OE POSTs
|
|
2591
|
+
would otherwise succeed while Gateway strips client delivery). Authors
|
|
2592
|
+
must not observe a successful emit when the workspace cannot deliver custom
|
|
2593
|
+
events to clients.
|
|
2593
2594
|
|
|
2594
2595
|
<a id="agent_engine_runner_shared.custom_events.install_tool_custom_event_transport"></a>
|
|
2595
2596
|
|
|
@@ -2600,7 +2601,7 @@ def install_tool_custom_event_transport(
|
|
|
2600
2601
|
*, enabled: bool = True) -> Token[Optional[CustomEventTransport]]
|
|
2601
2602
|
```
|
|
2602
2603
|
|
|
2603
|
-
Install Tool Pod
|
|
2604
|
+
Install the Tool Pod custom-event transport; return reset token.
|
|
2604
2605
|
|
|
2605
2606
|
When ``enabled`` is false (workspace does not have ``use_custom_parser``),
|
|
2606
2607
|
install a rejecting transport so emit fails closed instead of POSTing an
|
|
@@ -2855,6 +2856,19 @@ class ToolExecutionError(Exception)
|
|
|
2855
2856
|
|
|
2856
2857
|
Raised when tool execution fails.
|
|
2857
2858
|
|
|
2859
|
+
<a id="agent_engine_runner_shared.secure_wrapper.ToolOutcomeUnknownError"></a>
|
|
2860
|
+
|
|
2861
|
+
## ToolOutcomeUnknownError
|
|
2862
|
+
|
|
2863
|
+
```python
|
|
2864
|
+
class ToolOutcomeUnknownError(ToolExecutionError)
|
|
2865
|
+
```
|
|
2866
|
+
|
|
2867
|
+
The runner was lost while this durable tool call was in flight.
|
|
2868
|
+
|
|
2869
|
+
It may have taken effect and OE did not run it again. ``error`` is OE's
|
|
2870
|
+
message, written for the model reading it.
|
|
2871
|
+
|
|
2858
2872
|
<a id="agent_engine_runner_shared.secure_wrapper.ToolPlatformError"></a>
|
|
2859
2873
|
|
|
2860
2874
|
## ToolPlatformError
|
|
@@ -2977,7 +2991,7 @@ def request_oe_approval(
|
|
|
2977
2991
|
is_local: bool = True,
|
|
2978
2992
|
metadata: Optional[Dict[str, Any]] = None,
|
|
2979
2993
|
redact_fields: Optional[list[str]] = None,
|
|
2980
|
-
|
|
2994
|
+
provider: Optional[str] = None,
|
|
2981
2995
|
scopes: Optional[list[str]] = None,
|
|
2982
2996
|
tool_call_id: Optional[str] = None,
|
|
2983
2997
|
custom_headers: Optional[Dict[str, str]] = None,
|
|
@@ -3163,22 +3177,22 @@ Clean up resources owned by this execution's wrapper.
|
|
|
3163
3177
|
#### execute\_tool
|
|
3164
3178
|
|
|
3165
3179
|
```python
|
|
3166
|
-
def execute_tool(
|
|
3167
|
-
|
|
3168
|
-
|
|
3169
|
-
|
|
3170
|
-
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3174
|
-
|
|
3175
|
-
|
|
3176
|
-
|
|
3177
|
-
|
|
3178
|
-
|
|
3179
|
-
|
|
3180
|
-
|
|
3181
|
-
|
|
3180
|
+
def execute_tool(tool_name: str,
|
|
3181
|
+
arguments: Dict[str, Any],
|
|
3182
|
+
*,
|
|
3183
|
+
metadata: Optional[Dict[str, Any]] = None,
|
|
3184
|
+
provider: Optional[str] = None,
|
|
3185
|
+
scopes: Optional[list[str]] = None,
|
|
3186
|
+
tool_call_id: Optional[str] = None,
|
|
3187
|
+
raw_on_interrupt: bool = False,
|
|
3188
|
+
redact_fields: Optional[list[str]] = None,
|
|
3189
|
+
is_local: bool = True,
|
|
3190
|
+
local_executor: Optional[Callable[[], Any]] = None,
|
|
3191
|
+
is_framework_control_flow: Optional[Callable[[BaseException],
|
|
3192
|
+
bool]] = None,
|
|
3193
|
+
call_channel_expected: bool = False,
|
|
3194
|
+
on_unknown_outcome: Optional[UnknownOutcomePolicy] = None,
|
|
3195
|
+
owning_tool_call: Optional[OwningToolCall] = None) -> Any
|
|
3182
3196
|
```
|
|
3183
3197
|
|
|
3184
3198
|
Execute a tool call through OE.
|
|
@@ -3206,6 +3220,10 @@ Its consent answer never becomes a tool result or Memory content.
|
|
|
3206
3220
|
- `on_unknown_outcome` - What a retry does when the runner was lost while
|
|
3207
3221
|
this tool was in flight in a durable workflow: ``"rerun"`` runs it
|
|
3208
3222
|
again, ``"fail"`` refuses the retry.
|
|
3223
|
+
- `owning_tool_call` - The tool call or subagent this operation is performed
|
|
3224
|
+
for, when it is not itself a tool the model requested. In a durable
|
|
3225
|
+
workflow it runs alongside other activities, at a position derived
|
|
3226
|
+
from that call.
|
|
3209
3227
|
|
|
3210
3228
|
|
|
3211
3229
|
**Returns**:
|
|
@@ -3233,7 +3251,7 @@ def create_secure_tool_function(
|
|
|
3233
3251
|
allow_direct: bool = False,
|
|
3234
3252
|
metadata: Optional[Dict[str, Any]] = None,
|
|
3235
3253
|
is_local: bool = True,
|
|
3236
|
-
|
|
3254
|
+
provider: Optional[str] = None,
|
|
3237
3255
|
scopes: Optional[list[str]] = None,
|
|
3238
3256
|
response_format: Literal["content",
|
|
3239
3257
|
"content_and_artifact"] = "content",
|
|
@@ -3929,7 +3947,7 @@ stdout output so the Local Dev UI can read the agent's logs.
|
|
|
3929
3947
|
**Arguments**:
|
|
3930
3948
|
|
|
3931
3949
|
- `app_name` - Application name for log file naming
|
|
3932
|
-
- `mode` - Runtime mode (aer, tool
|
|
3950
|
+
- `mode` - Runtime mode (aer, tool)
|
|
3933
3951
|
- `log_dir` - Directory for log files (default: ./logs)
|
|
3934
3952
|
- `log_level` - Log level (default: from LOG_LEVEL env or INFO)
|
|
3935
3953
|
- `backup_count` - Number of rotated backup files to keep
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "agent-engine-runner-shared"
|
|
3
|
-
version = "0.11.
|
|
3
|
+
version = "0.11.13"
|
|
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.13",
|
|
31
31
|
# Memory models and the MemoryClient HTTP client
|
|
32
|
-
"agent-engine-sdk-memory==0.11.
|
|
32
|
+
"agent-engine-sdk-memory==0.11.13",
|
|
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
|
|
@@ -96,6 +96,7 @@ from agent_engine_runner_shared.secure_wrapper import (
|
|
|
96
96
|
TerminalExecutionError,
|
|
97
97
|
ToolCallTimeoutError,
|
|
98
98
|
ToolExecutionError,
|
|
99
|
+
ToolOutcomeUnknownError,
|
|
99
100
|
ToolPlatformError,
|
|
100
101
|
extract_usage,
|
|
101
102
|
)
|
|
@@ -191,6 +192,7 @@ __all__ = [
|
|
|
191
192
|
"TerminalExecutionError",
|
|
192
193
|
"ToolCallTimeoutError",
|
|
193
194
|
"ToolExecutionError",
|
|
195
|
+
"ToolOutcomeUnknownError",
|
|
194
196
|
"ToolPlatformError",
|
|
195
197
|
"ExternalAPICallError",
|
|
196
198
|
# Utilities
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
"""Generic platform entrypoint for the runner-shared image.
|
|
2
|
+
|
|
3
|
+
Dispatches via RUNNER_MODE (aer | tool) through
|
|
4
|
+
TenantRuntime.register_and_run(). Tool mode does not need a graph builder; aer
|
|
5
|
+
mode does, so user agents provide their own __main__.py for that case
|
|
6
|
+
(App.run() enforces the builder check there).
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
from agent_engine_runner_shared.runtime import TenantRuntime
|
|
10
|
+
|
|
11
|
+
if __name__ == "__main__":
|
|
12
|
+
TenantRuntime().register_and_run()
|
|
@@ -340,7 +340,20 @@ class RuntimeMCPServerConfig(BaseModel):
|
|
|
340
340
|
default="streamable_http",
|
|
341
341
|
description="MCP transport used to connect to the server.",
|
|
342
342
|
)
|
|
343
|
-
url: NonEmptyString = Field(
|
|
343
|
+
url: NonEmptyString | None = Field(
|
|
344
|
+
default=None,
|
|
345
|
+
description=(
|
|
346
|
+
"Streamable HTTP endpoint for the MCP server. An entry with no url names "
|
|
347
|
+
"a project OAuth app with its key, and the app's resource is the endpoint."
|
|
348
|
+
),
|
|
349
|
+
)
|
|
350
|
+
scopes: list[NonEmptyString] = Field(
|
|
351
|
+
default_factory=list,
|
|
352
|
+
description=(
|
|
353
|
+
"Scopes requested from the OAuth app the entry names, instead of the "
|
|
354
|
+
"app's defaults. Refused beside a url."
|
|
355
|
+
),
|
|
356
|
+
)
|
|
344
357
|
headers: dict[str, str] = Field(
|
|
345
358
|
default_factory=dict,
|
|
346
359
|
description="Static non-secret HTTP headers sent to the MCP server.",
|
|
@@ -361,11 +374,25 @@ class RuntimeMCPServerConfig(BaseModel):
|
|
|
361
374
|
|
|
362
375
|
@model_validator(mode="after")
|
|
363
376
|
def validate_server_config(self) -> "RuntimeMCPServerConfig":
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
377
|
+
if self.url is None:
|
|
378
|
+
# The app supplies the credential, so an auth block here could only
|
|
379
|
+
# disagree with it. auth has a default, so ask whether it was written.
|
|
380
|
+
if "auth" in self.model_fields_set:
|
|
381
|
+
raise ValueError(
|
|
382
|
+
"mcp server auth is not allowed without url; "
|
|
383
|
+
"an entry with no url names an OAuth app"
|
|
384
|
+
)
|
|
385
|
+
else:
|
|
386
|
+
if "scopes" in self.model_fields_set:
|
|
387
|
+
raise ValueError(
|
|
388
|
+
"mcp server scopes is not allowed with url; "
|
|
389
|
+
"scopes apply to an entry that names an OAuth app"
|
|
390
|
+
)
|
|
391
|
+
parsed = urlparse(self.url)
|
|
392
|
+
if parsed.scheme not in {"http", "https"} or parsed.hostname is None:
|
|
393
|
+
raise ValueError("mcp server url must be an absolute http(s) URL")
|
|
394
|
+
if parsed.scheme == "http" and self.auth.type != "none":
|
|
395
|
+
raise ValueError("mcp server url must be https when auth.type is set")
|
|
369
396
|
|
|
370
397
|
forbidden_headers = sorted(
|
|
371
398
|
header for header in self.headers if header.lower() in _FORBIDDEN_MCP_HEADER_KEYS
|
|
@@ -452,8 +479,8 @@ class RuntimeAgentConfig(BaseModel):
|
|
|
452
479
|
a2a: A2AConfig = Field(default_factory=A2AConfig)
|
|
453
480
|
mcp: RuntimeMCPConfig = Field(default_factory=RuntimeMCPConfig)
|
|
454
481
|
required_secrets: SecretsConfig = Field(default_factory=SecretsConfig)
|
|
455
|
-
#
|
|
456
|
-
# The shared Go parser rejects the key for
|
|
482
|
+
# LangGraph only: connector authoring files materialized at startup.
|
|
483
|
+
# The shared Go parser rejects the key for other frameworks.
|
|
457
484
|
connectors: list[RuntimeConnectorReference] = Field(default_factory=list)
|
|
458
485
|
|
|
459
486
|
def feature_enabled(
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
# Compiled connector core
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
The Python and TypeScript Runner SDKs share this connector contract. The Python
|
|
4
|
+
implementation covers definition loading, synchronous HTTP execution, and opt-in
|
|
5
|
+
registration; the TypeScript implementation mirrors the same materialization,
|
|
6
|
+
registration, and execution contract. It is not exposed through the CLI. Connector
|
|
7
|
+
tools use the existing AER → OE → Tool Pod execution path.
|
|
6
8
|
|
|
7
9
|
Runtime integration follows the platform's config → discover → register flow: each
|
|
8
10
|
process derives its own view from the same manifest. Resolution in
|
|
@@ -35,24 +37,26 @@ source:
|
|
|
35
37
|
expose:
|
|
36
38
|
allow: [jiradc_getComments]
|
|
37
39
|
auth:
|
|
38
|
-
|
|
39
|
-
env: JIRA_TOKEN
|
|
40
|
+
bearer: JIRA_TOKEN
|
|
40
41
|
```
|
|
41
42
|
|
|
42
|
-
|
|
43
|
+
The block names exactly one of `bearer`, `basic`, `api_keys` or `provider`, by
|
|
44
|
+
workspace secret name or OAuth app; no block means no credential. For OAuth,
|
|
45
|
+
bind the project's OAuth app instead:
|
|
43
46
|
|
|
44
47
|
```yaml
|
|
45
48
|
auth:
|
|
46
|
-
|
|
47
|
-
provider_type: github
|
|
49
|
+
provider: github
|
|
48
50
|
scopes: [repo]
|
|
49
51
|
```
|
|
50
52
|
|
|
51
|
-
`
|
|
53
|
+
`provider` names an OAuth app configured for the project, independent
|
|
52
54
|
of the resource API's base URL. The scopes apply to every exposed operation in
|
|
53
55
|
this connector. Registration carries this policy outside the model's argument
|
|
54
|
-
schema. The Orchestration Engine resolves a credential
|
|
55
|
-
|
|
56
|
+
schema. The Orchestration Engine resolves a credential and passes it to the Tool
|
|
57
|
+
Pod for that invocation. The app's grant decides whose: an authorization code app
|
|
58
|
+
gives the saved application user's token, and a client credentials app gives the
|
|
59
|
+
project's shared token with no user and no consent. A missing or invalid token
|
|
56
60
|
stops the HTTP call; OAuth never falls back to a tenant environment secret.
|
|
57
61
|
Existing static auth modes continue to use their configured environment bindings.
|
|
58
62
|
Catalog regeneration preserves the authored OAuth binding and records only
|
|
@@ -8,6 +8,7 @@ from agent_engine_runner_shared.connectors.bundle import (
|
|
|
8
8
|
)
|
|
9
9
|
from agent_engine_runner_shared.connectors.definitions import (
|
|
10
10
|
Auth,
|
|
11
|
+
BasicAuth,
|
|
11
12
|
Credential,
|
|
12
13
|
ToolDefinitions,
|
|
13
14
|
load_tool_defs,
|
|
@@ -43,6 +44,7 @@ __all__ = [
|
|
|
43
44
|
"GenerateError",
|
|
44
45
|
"MaterializeError",
|
|
45
46
|
"Auth",
|
|
47
|
+
"BasicAuth",
|
|
46
48
|
"ToolDefinitions",
|
|
47
49
|
"compile_catalog",
|
|
48
50
|
"load_tool_defs",
|
|
@@ -62,13 +62,13 @@ class BundledTool:
|
|
|
62
62
|
"""Return detached AER/Tool Pod policy, with delegated binding outside the schema."""
|
|
63
63
|
operation = self.operation
|
|
64
64
|
auth = self.connector.definitions.auth
|
|
65
|
-
|
|
65
|
+
provider = auth.provider if auth is not None else None
|
|
66
66
|
return {
|
|
67
67
|
"name": operation.name,
|
|
68
68
|
"description": operation.description.strip() or f"REST connector tool {operation.name}",
|
|
69
69
|
"is_local": False,
|
|
70
|
-
"
|
|
71
|
-
"scopes": list(
|
|
70
|
+
"provider": provider,
|
|
71
|
+
"scopes": list(auth.scopes or []) if auth is not None and provider else [],
|
|
72
72
|
"network": self.network,
|
|
73
73
|
"timeout_seconds": DEFAULT_EXECUTION_TIMEOUT_SECONDS,
|
|
74
74
|
"redact_fields": [],
|
|
@@ -16,13 +16,13 @@ import sys
|
|
|
16
16
|
|
|
17
17
|
from pydantic import ValidationError
|
|
18
18
|
|
|
19
|
-
from agent_engine_runner_shared.connectors.definitions import Auth
|
|
20
19
|
from agent_engine_runner_shared.connectors.generate import (
|
|
21
20
|
GenerateError,
|
|
22
21
|
compile_catalog,
|
|
23
22
|
regenerate_catalog,
|
|
24
23
|
scaffold_tool_yaml,
|
|
25
24
|
)
|
|
25
|
+
from agent_engine_runner_shared.connectors.generate.authoring import AUTH_CHOICES
|
|
26
26
|
|
|
27
27
|
__all__ = ["RESULT_PREFIX", "main"]
|
|
28
28
|
|
|
@@ -47,23 +47,21 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
47
47
|
"--config",
|
|
48
48
|
help="Existing tool.yaml that declares source.spec; regenerates its catalog",
|
|
49
49
|
)
|
|
50
|
-
parser.add_argument("--name", help="Connector name (compile mode)")
|
|
51
|
-
parser.add_argument("--base-url", help="Tenant API base URL recorded in the authoring file")
|
|
52
50
|
parser.add_argument(
|
|
53
|
-
"
|
|
54
|
-
|
|
55
|
-
help="
|
|
51
|
+
"name",
|
|
52
|
+
nargs="?",
|
|
53
|
+
help="Connector name; required with --spec, defaults to the catalog's with --tool-defs",
|
|
56
54
|
)
|
|
55
|
+
parser.add_argument("--base-url", help="Tenant API base URL recorded in the authoring file")
|
|
57
56
|
parser.add_argument(
|
|
58
|
-
"--auth
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
parser.add_argument(
|
|
62
|
-
"--provider-type",
|
|
63
|
-
help="Credential provider key registered in the project (with --auth oauth)",
|
|
57
|
+
"--auth",
|
|
58
|
+
choices=AUTH_CHOICES,
|
|
59
|
+
help="Credential to present instead of the one the document proposes",
|
|
64
60
|
)
|
|
61
|
+
parser.add_argument("--provider", help="Project OAuth app whose token each call presents")
|
|
65
62
|
parser.add_argument(
|
|
66
|
-
"--scopes",
|
|
63
|
+
"--scopes",
|
|
64
|
+
help="Comma-separated OAuth scopes (with --provider) instead of the document's",
|
|
67
65
|
)
|
|
68
66
|
parser.add_argument("--allow", help="Comma-separated operation allow list (default: allow_all)")
|
|
69
67
|
parser.add_argument(
|
|
@@ -79,36 +77,11 @@ def _parser() -> argparse.ArgumentParser:
|
|
|
79
77
|
return parser
|
|
80
78
|
|
|
81
79
|
|
|
82
|
-
def
|
|
83
|
-
"""
|
|
84
|
-
|
|
85
|
-
the shared ``Auth`` model validates the values themselves."""
|
|
86
|
-
if args.auth != "oauth" and (args.provider_type is not None or args.scopes is not None):
|
|
87
|
-
raise GenerateError("--provider-type and --scopes require --auth oauth")
|
|
88
|
-
if args.auth == "oauth":
|
|
89
|
-
if args.auth_env or args.auth_header:
|
|
90
|
-
raise GenerateError("--auth oauth cannot take --auth-env or --auth-header")
|
|
91
|
-
if not args.provider_type:
|
|
92
|
-
raise GenerateError("--auth oauth requires --provider-type")
|
|
93
|
-
return Auth(type="oauth", provider_type=args.provider_type, scopes=_scopes(args.scopes))
|
|
94
|
-
if args.auth == "none":
|
|
95
|
-
if args.auth_env or args.auth_header:
|
|
96
|
-
raise GenerateError("--auth none cannot take --auth-env or --auth-header")
|
|
97
|
-
return Auth(type="none")
|
|
98
|
-
if args.auth is None:
|
|
99
|
-
if args.auth_env or args.auth_header:
|
|
100
|
-
raise GenerateError("--auth-env and --auth-header require --auth")
|
|
101
|
-
return None
|
|
102
|
-
if not args.auth_env:
|
|
103
|
-
raise GenerateError(f"--auth {args.auth} requires --auth-env")
|
|
104
|
-
return Auth(type=args.auth, env=args.auth_env, header=args.auth_header)
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
def _scopes(raw: str | None) -> list[str]:
|
|
108
|
-
"""Split ``--scopes``; omitted means no scopes. An empty entry is refused
|
|
109
|
-
rather than dropped, so a typo cannot silently narrow the grant."""
|
|
80
|
+
def _scopes(raw: str | None) -> list[str] | None:
|
|
81
|
+
"""Split ``--scopes``; omitted means the document's scopes. An empty entry
|
|
82
|
+
is refused rather than dropped, so a typo cannot silently narrow the grant."""
|
|
110
83
|
if raw is None:
|
|
111
|
-
return
|
|
84
|
+
return None
|
|
112
85
|
scopes = [scope.strip() for scope in raw.split(",")]
|
|
113
86
|
if not all(scopes):
|
|
114
87
|
raise GenerateError("--scopes must not contain empty entries")
|
|
@@ -149,44 +122,40 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
149
122
|
return EXIT_OK if exc.code in (None, 0) else EXIT_FAILED
|
|
150
123
|
skipped: tuple[str, ...] = ()
|
|
151
124
|
try:
|
|
152
|
-
|
|
125
|
+
scopes = _scopes(args.scopes)
|
|
153
126
|
allow = _allow(args.allow)
|
|
154
127
|
if args.config is not None:
|
|
155
128
|
if (
|
|
156
|
-
args.
|
|
157
|
-
or args.
|
|
158
|
-
or args.
|
|
159
|
-
or args.provider_type is not None
|
|
129
|
+
args.name is not None
|
|
130
|
+
or args.auth
|
|
131
|
+
or args.provider is not None
|
|
160
132
|
or args.scopes is not None
|
|
161
133
|
or args.allow is not None
|
|
162
134
|
or args.base_url
|
|
163
|
-
or args.name
|
|
164
135
|
or args.out_dir
|
|
165
136
|
):
|
|
166
137
|
raise GenerateError(
|
|
167
|
-
"--config regeneration
|
|
168
|
-
"tool.yaml and writes beside it;
|
|
169
|
-
"--
|
|
170
|
-
"do not apply"
|
|
138
|
+
"--config regeneration keeps the name and settings written in "
|
|
139
|
+
"tool.yaml and writes beside it; a name, --auth, --provider, "
|
|
140
|
+
"--scopes, --allow, --base-url and --out-dir do not apply"
|
|
171
141
|
)
|
|
172
142
|
result = regenerate_catalog(args.config, skip_unsupported=args.skip_unsupported)
|
|
173
143
|
written = [str(result.catalog)]
|
|
174
144
|
skipped = result.skipped
|
|
175
145
|
elif args.spec is not None:
|
|
176
146
|
if not args.name:
|
|
177
|
-
raise GenerateError("
|
|
147
|
+
raise GenerateError("a connector name is required with --spec")
|
|
178
148
|
if not args.out_dir:
|
|
179
149
|
raise GenerateError("--out-dir is required with --spec")
|
|
180
|
-
#
|
|
181
|
-
#
|
|
182
|
-
# override from the credential the developer chose (e.g. the
|
|
183
|
-
# official Jira document declares basic; a DC PAT is Bearer).
|
|
184
|
-
# An explicit Auth(type="none") is the anonymous override.
|
|
150
|
+
# --auth and --provider override the document's own security (e.g.
|
|
151
|
+
# the official Jira document declares basic; a DC PAT is Bearer).
|
|
185
152
|
result = compile_catalog(
|
|
186
153
|
args.spec,
|
|
187
154
|
name=args.name,
|
|
188
155
|
base_url=args.base_url,
|
|
189
|
-
auth=auth,
|
|
156
|
+
auth=args.auth,
|
|
157
|
+
provider=args.provider,
|
|
158
|
+
scopes=scopes,
|
|
190
159
|
allow=allow,
|
|
191
160
|
skip_unsupported=args.skip_unsupported,
|
|
192
161
|
out_dir=args.out_dir,
|
|
@@ -212,8 +181,11 @@ def main(argv: list[str] | None = None) -> int:
|
|
|
212
181
|
str(
|
|
213
182
|
scaffold_tool_yaml(
|
|
214
183
|
args.tool_defs,
|
|
184
|
+
name=args.name,
|
|
215
185
|
base_url=args.base_url,
|
|
216
|
-
auth=auth,
|
|
186
|
+
auth=args.auth,
|
|
187
|
+
provider=args.provider,
|
|
188
|
+
scopes=scopes,
|
|
217
189
|
allow=allow,
|
|
218
190
|
out_dir=args.out_dir,
|
|
219
191
|
)
|