agent-engine-runner-shared 0.11.10__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.
Files changed (258) hide show
  1. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/CHANGELOG.md +14 -0
  2. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/Makefile +12 -2
  3. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/PKG-INFO +5 -4
  4. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/docs/api.md +39 -1
  5. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/pyproject.toml +6 -4
  6. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/README.md +6 -10
  7. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/__init__.py +1 -5
  8. agent_engine_runner_shared-0.11.11/src/agent_engine_runner_shared/connectors/bundle.py +93 -0
  9. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/create_tool.py +35 -3
  10. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/definitions.py +1 -1
  11. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/README.md +1 -1
  12. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/authoring.py +4 -1
  13. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/modes.py +25 -8
  14. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/materialize.py +3 -12
  15. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/custom_events.py +7 -0
  16. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth.py +66 -45
  17. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_cli.py +52 -33
  18. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_tools.py +198 -78
  19. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/models.py +10 -0
  20. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/progress.py +7 -0
  21. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/runtime.py +42 -2
  22. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/aer.py +20 -1
  23. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/tool.py +84 -20
  24. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/structured_logging.py +33 -1
  25. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/client.py +68 -24
  26. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/corpus/README.md +5 -3
  27. agent_engine_runner_shared-0.11.11/tests/corpus/fetch_corpus.py +78 -0
  28. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/corpus/manifest.json +102 -100
  29. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/corpus/test_api_corpus.py +2 -1
  30. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/pact/test_oe_provider_verification.py +9 -1
  31. agent_engine_runner_shared-0.11.11/tests/unit/connectors/test_bundle.py +99 -0
  32. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_create_tool.py +174 -0
  33. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_materialize.py +4 -58
  34. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_a2a_registration.py +2 -1
  35. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_cancelled_turn.py +3 -0
  36. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_capability_advertise.py +2 -1
  37. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_chunk_delivery_reliability.py +1 -0
  38. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_durable_attempt.py +72 -1
  39. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_llm_invocation_signal.py +3 -1
  40. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_metadata_payload.py +1 -0
  41. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_policy_denied.py +3 -1
  42. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_session_finish.py +1 -0
  43. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_timeout_signal.py +3 -1
  44. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_trace_context.py +1 -0
  45. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_drain.py +2 -1
  46. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_emit_custom_event.py +46 -10
  47. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_emit_progress.py +65 -0
  48. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_graph_warm.py +1 -0
  49. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_hitl_interrupt.py +1 -0
  50. agent_engine_runner_shared-0.11.11/tests/unit/test_mcp_era_compat.py +352 -0
  51. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_oauth.py +89 -36
  52. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_oauth_cli.py +93 -38
  53. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_tools.py +184 -171
  54. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_models.py +72 -0
  55. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_structured_logging.py +172 -0
  56. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tls_client_integration.py +3 -1
  57. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool.py +126 -9
  58. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_server_startup.py +50 -106
  59. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_client.py +115 -2
  60. agent_engine_runner_shared-0.11.10/src/agent_engine_runner_shared/connectors/bundle.py +0 -194
  61. agent_engine_runner_shared-0.11.10/tests/corpus/fetch_corpus.py +0 -52
  62. agent_engine_runner_shared-0.11.10/tests/unit/connectors/test_bundle.py +0 -174
  63. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/Dockerfile +0 -0
  64. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/LICENSE +0 -0
  65. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/README.md +0 -0
  66. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/pydoc-markdown.yml +0 -0
  67. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/pyrightconfig.json +0 -0
  68. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/scripts/agentic-vendored-wheel-check.sh +0 -0
  69. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/__init__.py +0 -0
  70. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/__main__.py +0 -0
  71. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/a2a.py +0 -0
  72. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/a2a_auth.py +0 -0
  73. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/agent_config.py +0 -0
  74. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/async_utils.py +0 -0
  75. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/caller_trace.py +0 -0
  76. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/checkpoint_workspace.py +0 -0
  77. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/executor.py +0 -0
  78. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/__init__.py +0 -0
  79. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/catalog.py +0 -0
  80. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/naming.py +0 -0
  81. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/parameters.py +0 -0
  82. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/security.py +0 -0
  83. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/generate/spec.py +0 -0
  84. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/connectors/runtime.py +0 -0
  85. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/context.py +0 -0
  86. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/db_config.py +0 -0
  87. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/db_naming.py +0 -0
  88. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/error_reporting.py +0 -0
  89. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/execution.py +0 -0
  90. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/__init__.py +0 -0
  91. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/__init__.py +0 -0
  92. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/__init__.py +0 -0
  93. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.py +0 -0
  94. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/activity_pb2.pyi +0 -0
  95. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.py +0 -0
  96. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/common_pb2.pyi +0 -0
  97. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.py +0 -0
  98. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/runtime_pb2.pyi +0 -0
  99. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.py +0 -0
  100. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/generated/workflow/v1/state_pb2.pyi +0 -0
  101. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/guardrails_evaluator/__init__.py +0 -0
  102. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/guardrails_evaluator/core.py +0 -0
  103. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/guardrails_evaluator/regex.py +0 -0
  104. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/hooks.py +0 -0
  105. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/http_path.py +0 -0
  106. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/launcher.py +0 -0
  107. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_cache_lock.py +0 -0
  108. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_cache_name.py +0 -0
  109. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/mcp_oauth_secret.py +0 -0
  110. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/memory.py +0 -0
  111. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/memory_appbound.py +0 -0
  112. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/metrics.py +0 -0
  113. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/node_logger.py +0 -0
  114. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/owner_callback.py +0 -0
  115. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/py.typed +0 -0
  116. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/secure_llm_proxy.py +0 -0
  117. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/secure_wrapper.py +0 -0
  118. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/__init__.py +0 -0
  119. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/atlas_dns.py +0 -0
  120. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/auth.py +0 -0
  121. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/base.py +0 -0
  122. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/call_interrupt.py +0 -0
  123. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/callback_delivery.py +0 -0
  124. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/chunk_types.py +0 -0
  125. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/cors.py +0 -0
  126. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/drain.py +0 -0
  127. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/function.py +0 -0
  128. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/graph_warm.py +0 -0
  129. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/http_retry.py +0 -0
  130. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/metadata.py +0 -0
  131. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/oe_url.py +0 -0
  132. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/owner_url.py +0 -0
  133. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/server/query.py +0 -0
  134. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/span_kinds.py +0 -0
  135. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/span_names.py +0 -0
  136. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/startup_state.py +0 -0
  137. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tls_client.py +0 -0
  138. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tool_api_error.py +0 -0
  139. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tool_memory_ownership.py +0 -0
  140. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/toolpod_handlers.py +0 -0
  141. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tracing/__init__.py +0 -0
  142. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tracing/exporters.py +0 -0
  143. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/tracing/setup.py +0 -0
  144. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/types.py +0 -0
  145. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/utils.py +0 -0
  146. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/__init__.py +0 -0
  147. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/activity.py +0 -0
  148. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/attempt.py +0 -0
  149. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/cancelled_history.py +0 -0
  150. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/context.py +0 -0
  151. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/heartbeat.py +0 -0
  152. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/memory.py +0 -0
  153. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/protojson.py +0 -0
  154. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/src/agent_engine_runner_shared/workflow/settlement.py +0 -0
  155. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/__init__.py +0 -0
  156. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/conftest.py +0 -0
  157. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/corpus/.gitignore +0 -0
  158. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/corpus/__init__.py +0 -0
  159. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/__init__.py +0 -0
  160. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/mock_embedder.py +0 -0
  161. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/test_a2a_trace_propagation.py +0 -0
  162. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/test_runtime.py +0 -0
  163. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/test_secure_async.py +0 -0
  164. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/test_secure_sync.py +0 -0
  165. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/integration/test_tracing_otlp_wire_format.py +0 -0
  166. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/pact/conftest.py +0 -0
  167. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/__init__.py +0 -0
  168. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/__init__.py +0 -0
  169. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/fixtures/jira.tool_defs.yaml +0 -0
  170. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_core.py +0 -0
  171. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/connectors/test_generate.py +0 -0
  172. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_a2a.py +0 -0
  173. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_a2a_auth.py +0 -0
  174. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_build_agent_span.py +0 -0
  175. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_chunk_emission.py +0 -0
  176. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_aer_workspace_scope.py +0 -0
  177. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_agent_config.py +0 -0
  178. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_async_utils.py +0 -0
  179. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_atlas_dns.py +0 -0
  180. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_call_interrupt.py +0 -0
  181. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_call_interrupt_contract.py +0 -0
  182. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_checkpoint_workspace.py +0 -0
  183. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_cors.py +0 -0
  184. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_create_memory_client_headers.py +0 -0
  185. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_custom_headers_context.py +0 -0
  186. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_custom_headers_models.py +0 -0
  187. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_db_naming.py +0 -0
  188. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_debug_hook.py +0 -0
  189. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_drain_contract.py +0 -0
  190. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_durable_guardrail_review.py +0 -0
  191. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_durable_oauth.py +0 -0
  192. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_durable_proxies.py +0 -0
  193. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_error_reporting.py +0 -0
  194. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_execution.py +0 -0
  195. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_extract_turn_messages.py +0 -0
  196. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_format_llm_error.py +0 -0
  197. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_function_mode.py +0 -0
  198. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_guardrails_protocol.py +0 -0
  199. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_hooks.py +0 -0
  200. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_http_path.py +0 -0
  201. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_http_retry.py +0 -0
  202. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_launcher.py +0 -0
  203. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_launcher_reports.py +0 -0
  204. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_listen_host.py +0 -0
  205. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_llm_credential_classification.py +0 -0
  206. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_llm_routing.py +0 -0
  207. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_mcp_oauth_secret.py +0 -0
  208. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_memory_appbound.py +0 -0
  209. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_memory_search_metadata.py +0 -0
  210. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_memory_writer_context.py +0 -0
  211. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_metadata.py +0 -0
  212. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_metrics.py +0 -0
  213. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_models.py +0 -0
  214. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_no_lc_imports.py +0 -0
  215. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_node_logger.py +0 -0
  216. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_oe_url.py +0 -0
  217. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_owner_callback.py +0 -0
  218. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_owner_url.py +0 -0
  219. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_payload_context.py +0 -0
  220. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_query_routes.py +0 -0
  221. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_request_id_context.py +0 -0
  222. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_resume_payload.py +0 -0
  223. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_build_context_from_sources.py +0 -0
  224. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_checkpoint_workspace.py +0 -0
  225. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_custom_memory.py +0 -0
  226. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_memory_context.py +0 -0
  227. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_runtime_register_tool.py +0 -0
  228. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_secure_llm_proxy.py +0 -0
  229. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_secure_wrapper.py +0 -0
  230. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_auth.py +0 -0
  231. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_health.py +0 -0
  232. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_shutdown.py +0 -0
  233. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_server_startup_failures.py +0 -0
  234. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_session_filesystem_isolation.py +0 -0
  235. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_session_finish_context.py +0 -0
  236. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_shared_client.py +0 -0
  237. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_thinking_tokens.py +0 -0
  238. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tls_client.py +0 -0
  239. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_token_capture.py +0 -0
  240. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_api_error.py +0 -0
  241. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_authorization.py +0 -0
  242. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_cancellation_boundary.py +0 -0
  243. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_deserialization.py +0 -0
  244. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_log_redaction.py +0 -0
  245. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_memory_ownership.py +0 -0
  246. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tool_trace_context.py +0 -0
  247. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_toolpod_handlers.py +0 -0
  248. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tracing_exporter.py +0 -0
  249. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/test_tracing_retry.py +0 -0
  250. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_activity.py +0 -0
  251. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_attempt.py +0 -0
  252. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_cancelled_history.py +0 -0
  253. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_context.py +0 -0
  254. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_heartbeat.py +0 -0
  255. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_memory.py +0 -0
  256. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_protojson.py +0 -0
  257. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_protojson_helpers.py +0 -0
  258. {agent_engine_runner_shared-0.11.10 → agent_engine_runner_shared-0.11.11}/tests/unit/workflow/test_settlement.py +0 -0
@@ -7,7 +7,21 @@ 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
+
10
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.
11
25
  - Reuse a process-wide keep-alive mTLS client for OE callbacks (tool
12
26
  execute/result, node events, progress and custom events) and drain callback
13
27
  response bodies so connections return to the pool; removes a full TLS
@@ -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.10
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.10
9
- Requires-Dist: agent-engine-sdk==0.11.10
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==1.27.0
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
@@ -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)
@@ -347,7 +349,9 @@ Return the resolved agent.yaml Memory feature setting.
347
349
  #### get\_agent
348
350
 
349
351
  ```python
350
- def get_agent(callbacks: List[Any] | None = None) -> BaseAgent
352
+ def get_agent(callbacks: List[Any] | None = None,
353
+ *,
354
+ graph: Any = None) -> BaseAgent
351
355
  ```
352
356
 
353
357
  Get a BaseAgent instance from the registered App.
@@ -359,6 +363,9 @@ framework-specific graph building and callback adaptation.
359
363
 
360
364
  - `callbacks` - Framework-neutral callbacks for observability
361
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.
362
369
 
363
370
 
364
371
  **Returns**:
@@ -370,6 +377,37 @@ framework-specific graph building and callback adaptation.
370
377
 
371
378
  - `RuntimeError` - If no App has been registered via register_and_run()
372
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
+
373
411
  <a id="agent_engine_runner_shared.runtime.TenantRuntime.warm_up_agent"></a>
374
412
 
375
413
  #### warm\_up\_agent
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "agent-engine-runner-shared"
3
- version = "0.11.10"
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"}
@@ -18,16 +18,18 @@ dependencies = [
18
18
  "pydantic>=2.0.0",
19
19
  "protobuf>=6.33.6,<7",
20
20
  "httpx>=0.27.0",
21
+ # MCP 2.x talks httpx2; the two clients install side by side.
22
+ "httpx2>=2.5.0",
21
23
  "httpx-sse>=0.4.0",
22
- "mcp==1.27.0",
24
+ "mcp==2.3.0",
23
25
  "python-dotenv>=1.0.0",
24
26
  "PyYAML>=6.0",
25
27
  "jsonschema>=4.26.0",
26
28
  "sentry-sdk>=2.27.0",
27
29
  # BaseAgent protocol and AgentInput/AgentEvent models
28
- "agent-engine-sdk==0.11.10",
30
+ "agent-engine-sdk==0.11.11",
29
31
  # Memory models and the MemoryClient HTTP client
30
- "agent-engine-sdk-memory==0.11.10",
32
+ "agent-engine-sdk-memory==0.11.11",
31
33
  # Required for checkpoint message decoding (query/sessions endpoints)
32
34
  "msgpack>=1.0.0",
33
35
  # Required by guardrails_evaluator/regex.py for advanced regex matching
@@ -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 order in
8
+ process derives its own view from the same manifest. Resolution in
9
9
  `resolve_runtime_bundle`:
10
10
 
11
- 1. A pre-materialized bundle published by the platform build, located via the
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
- 3. With neither configured, loading is an immediate no-op without filesystem or
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
- The pre-materialized index paths are relative to the index and must remain inside its
65
- directory. AER loads the schemas as ordinary remote tools. Tool Pod startup loads the
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.
@@ -1,12 +1,10 @@
1
- """Compiled OpenAPI connector core, bundle loading, and authoring materialization."""
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",
@@ -0,0 +1,93 @@
1
+ """Validated runtime views shared by AER and Tool Pod connector registration.
2
+
3
+ The authoring materializer builds these objects from ``agent.yaml``,
4
+ ``tool.yaml``, and the local compiled catalog. AER consumes each tool's schema
5
+ and registration metadata; Tool Pod consumes the same views to bind executor
6
+ callables. Nothing here reads files or performs I/O.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ from dataclasses import dataclass
12
+ from typing import Any
13
+ from urllib.parse import urlsplit
14
+
15
+ from agent_engine_runner_shared.connectors.definitions import (
16
+ Operation,
17
+ ToolDefinitions,
18
+ )
19
+ from agent_engine_runner_shared.connectors.executor import DEFAULT_EXECUTION_TIMEOUT_SECONDS
20
+
21
+ __all__ = [
22
+ "BundledConnector",
23
+ "BundledTool",
24
+ "ConnectorBundle",
25
+ "ConnectorBundleError",
26
+ ]
27
+
28
+
29
+ class ConnectorBundleError(ValueError):
30
+ """Raised when a connector bundle cannot be registered safely."""
31
+
32
+
33
+ @dataclass(frozen=True)
34
+ class BundledConnector:
35
+ """One validated compiled connector from the materialized runtime view."""
36
+
37
+ name: str
38
+ definitions: ToolDefinitions
39
+
40
+
41
+ @dataclass(frozen=True)
42
+ class BundledTool:
43
+ """One operation and the connector definitions needed to execute it."""
44
+
45
+ connector: BundledConnector
46
+ operation: Operation
47
+
48
+ @property
49
+ def schema(self) -> dict[str, Any]:
50
+ """Return a detached SDK-visible schema."""
51
+ return self.operation.model_dump(include={"name", "description", "inputSchema"})
52
+
53
+ @property
54
+ def network(self) -> list[str]:
55
+ """Return the single outbound host declared by this connector."""
56
+ hostname = urlsplit(self.connector.definitions.source.base_url).hostname
57
+ assert hostname is not None # ToolDefinitions validated the URL.
58
+ return [hostname]
59
+
60
+ @property
61
+ def registration_metadata(self) -> dict[str, Any]:
62
+ """Return detached AER/Tool Pod policy, with delegated binding outside the schema."""
63
+ operation = self.operation
64
+ auth = self.connector.definitions.auth
65
+ delegated = auth if auth is not None and auth.type == "oauth" else None
66
+ return {
67
+ "name": operation.name,
68
+ "description": operation.description.strip() or f"REST connector tool {operation.name}",
69
+ "is_local": False,
70
+ "provider_type": delegated.provider_type if delegated else None,
71
+ "scopes": list(delegated.scopes) if delegated else [],
72
+ "network": self.network,
73
+ "timeout_seconds": DEFAULT_EXECUTION_TIMEOUT_SECONDS,
74
+ "redact_fields": [],
75
+ "connector": self.connector.name,
76
+ }
77
+
78
+
79
+ @dataclass(frozen=True)
80
+ class ConnectorBundle:
81
+ """Fully validated runtime bundle shared by AER and Tool Pod startup."""
82
+
83
+ connectors: tuple[BundledConnector, ...] = ()
84
+ tools: tuple[BundledTool, ...] = ()
85
+
86
+ def require_available_names(self, registered_names: set[str]) -> None:
87
+ """Reject all name collisions before a caller mutates its registry."""
88
+ collisions = sorted({tool.operation.name for tool in self.tools} & registered_names)
89
+ if collisions:
90
+ raise ConnectorBundleError(
91
+ "connector tool names collide with registered or reserved tools: "
92
+ + ", ".join(collisions)
93
+ )
@@ -51,13 +51,20 @@ def _parser() -> argparse.ArgumentParser:
51
51
  parser.add_argument("--base-url", help="Tenant API base URL recorded in the authoring file")
52
52
  parser.add_argument(
53
53
  "--auth",
54
- choices=("none", "bearer", "api_key"),
54
+ choices=("none", "bearer", "api_key", "oauth"),
55
55
  help="Credential presentation; the authority over the spec's own security schemes",
56
56
  )
57
57
  parser.add_argument(
58
58
  "--auth-env", help="Workspace secret environment reference for the credential"
59
59
  )
60
60
  parser.add_argument("--auth-header", help="Header name for API key credentials")
61
+ parser.add_argument(
62
+ "--provider-type",
63
+ help="Credential provider key registered in the project (with --auth oauth)",
64
+ )
65
+ parser.add_argument(
66
+ "--scopes", help="Comma-separated delegated OAuth scopes (with --auth oauth)"
67
+ )
61
68
  parser.add_argument("--allow", help="Comma-separated operation allow list (default: allow_all)")
62
69
  parser.add_argument(
63
70
  "--out-dir",
@@ -73,6 +80,17 @@ def _parser() -> argparse.ArgumentParser:
73
80
 
74
81
 
75
82
  def _auth(args: argparse.Namespace) -> Auth | None:
83
+ """Build the credential presentation the flags select, or None to let the
84
+ spec's own security schemes govern. Flag-combination refusals live here;
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))
76
94
  if args.auth == "none":
77
95
  if args.auth_env or args.auth_header:
78
96
  raise GenerateError("--auth none cannot take --auth-env or --auth-header")
@@ -86,6 +104,17 @@ def _auth(args: argparse.Namespace) -> Auth | None:
86
104
  return Auth(type=args.auth, env=args.auth_env, header=args.auth_header)
87
105
 
88
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."""
110
+ if raw is None:
111
+ return []
112
+ scopes = [scope.strip() for scope in raw.split(",")]
113
+ if not all(scopes):
114
+ raise GenerateError("--scopes must not contain empty entries")
115
+ return scopes
116
+
117
+
89
118
  def _allow(raw: str | None) -> list[str] | None:
90
119
  if raw is None:
91
120
  return None
@@ -127,6 +156,8 @@ def main(argv: list[str] | None = None) -> int:
127
156
  args.auth
128
157
  or args.auth_env
129
158
  or args.auth_header
159
+ or args.provider_type is not None
160
+ or args.scopes is not None
130
161
  or args.allow is not None
131
162
  or args.base_url
132
163
  or args.name
@@ -134,8 +165,9 @@ def main(argv: list[str] | None = None) -> int:
134
165
  ):
135
166
  raise GenerateError(
136
167
  "--config regeneration preserves the authored settings from "
137
- "tool.yaml and writes beside it; --auth, --auth-env, "
138
- "--auth-header, --allow, --base-url, --name and --out-dir do not apply"
168
+ "tool.yaml and writes beside it; --auth, --auth-env, --auth-header, "
169
+ "--provider-type, --scopes, --allow, --base-url, --name and --out-dir "
170
+ "do not apply"
139
171
  )
140
172
  result = regenerate_catalog(args.config, skip_unsupported=args.skip_unsupported)
141
173
  written = [str(result.catalog)]
@@ -47,7 +47,7 @@ CONNECTOR_NAME_PATTERN = r"^[A-Za-z0-9_-]{1,64}$"
47
47
 
48
48
 
49
49
  def validate_connector_name(value: str) -> str:
50
- """Connector names key connector identity and appear in bundle indexes."""
50
+ """Connector names key connector identity in runtime registration."""
51
51
  if re.fullmatch(r"[A-Za-z0-9_-]{1,64}", value) is None:
52
52
  raise ValueError(f"connector name must match {CONNECTOR_NAME_PATTERN}")
53
53
  return value
@@ -187,7 +187,7 @@ concerns.
187
187
 
188
188
  ## Acceptance corpus
189
189
 
190
- `tests/corpus/manifest.json` pins 100 real-world APIs.guru documents by URL and SHA-256.
190
+ `tests/corpus/manifest.json` pins 100 real-world APIs.guru documents by path and SHA-256 within one GitHub commit.
191
191
  The set contains 10,059 declared operations and requires at least 9,512 generated tools
192
192
  overall, at least 80% for every API, and named Pinecone data-plane operations. The
193
193
  current implementation produces 9,880 tools (98.22%) for the pinned inputs.
@@ -136,7 +136,10 @@ def _guidance_comment(base_url: str, auth: Auth | None) -> str:
136
136
  lines.append(f"# secret grant {granted} to the tool sandbox under")
137
137
  lines.append("# sandboxes.tool.secrets (sandboxes requires an agent block)")
138
138
  elif auth is not None and auth.type == "oauth":
139
- lines.append("# auth delegated OAuth; configure the named provider for this project")
139
+ lines.append(
140
+ "# auth delegated OAuth; register a credential provider with provider "
141
+ f"type {_quote(auth.provider_type)} in this project"
142
+ )
140
143
  lines.append("# secret none required in the tool sandbox; tokens are request-local")
141
144
  else:
142
145
  lines.append("# secret none required; this connector authenticates anonymously")
@@ -8,6 +8,7 @@ coordinates the focused parser, compiler, and writer modules.
8
8
 
9
9
  from __future__ import annotations
10
10
 
11
+ import difflib
11
12
  from dataclasses import dataclass
12
13
  from pathlib import Path
13
14
  from typing import Any, Sequence
@@ -39,6 +40,28 @@ from agent_engine_runner_shared.connectors.generate.spec import (
39
40
  _quote,
40
41
  )
41
42
 
43
+ # Catalogs up to this size list every operation when an allow rule misses.
44
+ _LISTED_OPERATIONS = 20
45
+
46
+
47
+ def _unmatched_allow_error(unmatched: list[str], available: set[str]) -> GenerateError:
48
+ """Name the allow rules that match no operation and point at the fix.
49
+
50
+ Small catalogs list every operation. Large ones, which can run to
51
+ thousands of operations, report the count and the closest names, so a
52
+ typo does not flood the terminal.
53
+ """
54
+ if len(available) <= _LISTED_OPERATIONS:
55
+ hint = f"available: {sorted(available)}"
56
+ else:
57
+ closest = sorted(
58
+ {match for name in unmatched for match in difflib.get_close_matches(name, available)}
59
+ )
60
+ hint = f"{len(available)} operations available"
61
+ if closest:
62
+ hint += f"; closest: {closest}"
63
+ return GenerateError(f"allow rules match no catalog operation: {unmatched}; {hint}")
64
+
42
65
 
43
66
  @dataclass(frozen=True)
44
67
  class CompileResult:
@@ -89,10 +112,7 @@ def compile_catalog(
89
112
  available = {operation.name for operation in catalog.tools}
90
113
  unmatched = sorted(set(allow) - available)
91
114
  if unmatched:
92
- raise GenerateError(
93
- f"allow rules match no catalog operation: {unmatched}; "
94
- f"available: {sorted(available)}"
95
- )
115
+ raise _unmatched_allow_error(unmatched, available)
96
116
 
97
117
  catalog_path = _ensure_output(out, _CATALOG_NAME)
98
118
  catalog.write(catalog_path)
@@ -146,10 +166,7 @@ def scaffold_tool_yaml(
146
166
  if allow is not None:
147
167
  unmatched = sorted(set(allow) - available)
148
168
  if unmatched:
149
- raise GenerateError(
150
- f"allow rules match no catalog operation: {unmatched}; "
151
- f"available: {sorted(available)}"
152
- )
169
+ raise _unmatched_allow_error(unmatched, available)
153
170
  return _write_tool_yaml(
154
171
  out,
155
172
  name=catalog.source.name,
@@ -23,18 +23,15 @@ and load-bearing:
23
23
 
24
24
  from __future__ import annotations
25
25
 
26
- import os
27
26
  from pathlib import Path
28
27
  from typing import TYPE_CHECKING, Any, Sequence
29
28
 
30
29
  import yaml
31
30
 
32
31
  from agent_engine_runner_shared.connectors.bundle import (
33
- CONNECTOR_BUNDLE_PATH_ENV,
34
32
  BundledConnector,
35
33
  BundledTool,
36
34
  ConnectorBundle,
37
- load_connector_bundle,
38
35
  )
39
36
  from agent_engine_runner_shared.connectors.definitions import (
40
37
  Auth,
@@ -311,16 +308,10 @@ def materialize_connectors(connector_paths: Sequence[str | Path], *, root: Path)
311
308
  def resolve_runtime_bundle(agent_config: RuntimeAgentConfig) -> ConnectorBundle:
312
309
  """Resolve the connector bundle for this process.
313
310
 
314
- A pre-materialized bundle published by the platform build (via
315
- ``AGENTIC_CONNECTOR_BUNDLE_PATH``) wins; otherwise the ``agent.yaml``
316
- ``connectors`` entries are materialized in memory from local files. With
317
- neither configured this is an immediate no-op without file or network
318
- I/O, matching the no-connector contract.
311
+ The ``agent.yaml`` ``connectors`` entries are materialized in memory from
312
+ local files. With none configured this is an immediate no-op without file
313
+ or network I/O, matching the no-connector contract.
319
314
  """
320
- configured = os.environ.get(CONNECTOR_BUNDLE_PATH_ENV)
321
- if configured:
322
- return load_connector_bundle(configured)
323
-
324
315
  # Shape check, not truthiness: mocked runtime configs auto-create
325
316
  # truthy attributes, and only a real list/tuple of references counts.
326
317
  references = getattr(agent_config, "connectors", None)
@@ -18,6 +18,7 @@ from __future__ import annotations
18
18
 
19
19
  import asyncio
20
20
  import logging
21
+ import uuid
21
22
  from collections.abc import Mapping
22
23
  from contextlib import contextmanager
23
24
  from contextvars import ContextVar, Token
@@ -157,6 +158,11 @@ class OEHTTPCustomEventTransport:
157
158
  return
158
159
  try:
159
160
  client = get_shared_client(oe_url)
161
+ # delivery_id is minted once per event and reused verbatim by the
162
+ # owner-first helper across both attempts, so a fallback after a
163
+ # lost owner response carries the same stable identity and the
164
+ # platform can dedup the redelivered event. Regenerated per emit —
165
+ # two intentionally identical events must remain distinct.
160
166
  _post_chunk_owner_first(
161
167
  client,
162
168
  service_url=f"{oe_url.rstrip('/')}/stream/chunk",
@@ -165,6 +171,7 @@ class OEHTTPCustomEventTransport:
165
171
  "execution_id": execution_id,
166
172
  "chunk_type": CUSTOM_EVENT,
167
173
  "custom_event": dict(payload),
174
+ "delivery_id": uuid.uuid4().hex,
168
175
  },
169
176
  on_owner_failure=report_oe_owner_url_failure,
170
177
  timeout=PROGRESS_TIMEOUT_SECS,