agentkit-sdk-python 0.5.7__tar.gz → 0.5.9__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 (196) hide show
  1. {agentkit_sdk_python-0.5.7/agentkit_sdk_python.egg-info → agentkit_sdk_python-0.5.9}/PKG-INFO +1 -1
  2. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_service_client.py +1 -4
  3. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/constants.py +0 -1
  4. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/ve_pipeline.py +35 -3
  5. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_invoke.py +140 -22
  6. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/templates/code-pipeline-tos-cr-step.j2 +8 -6
  7. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/base.py +162 -33
  8. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/ve_agentkit.py +12 -3
  9. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/services/tos_service.py +24 -0
  10. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/version.py +1 -1
  11. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9/agentkit_sdk_python.egg-info}/PKG-INFO +1 -1
  12. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/pyproject.toml +1 -1
  13. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/LICENSE +0 -0
  14. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/MANIFEST.in +0 -0
  15. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/README.md +0 -0
  16. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/__init__.py +0 -0
  17. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/__init__.py +0 -0
  18. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/a2a_app/__init__.py +0 -0
  19. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/a2a_app/a2a_app.py +0 -0
  20. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/a2a_app/telemetry.py +0 -0
  21. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/__init__.py +0 -0
  22. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/agent_server_app.py +0 -0
  23. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/middleware.py +0 -0
  24. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/telemetry.py +0 -0
  25. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/base_app.py +0 -0
  26. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/mcp_app/__init__.py +0 -0
  27. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/mcp_app/mcp_app.py +0 -0
  28. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/mcp_app/telemetry.py +0 -0
  29. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/__init__.py +0 -0
  30. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/simple_app.py +0 -0
  31. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/simple_app_handlers.py +0 -0
  32. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/telemetry.py +0 -0
  33. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/utils.py +0 -0
  34. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/__init__.py +0 -0
  35. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_agentkit_client.py +0 -0
  36. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_iam_client.py +0 -0
  37. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/__init__.py +0 -0
  38. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/configuration.py +0 -0
  39. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/console_urls.py +0 -0
  40. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/context.py +0 -0
  41. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/provider.py +0 -0
  42. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/__init__.py +0 -0
  43. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/account/client.py +0 -0
  44. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/account/types.py +0 -0
  45. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/identity/__init__.py +0 -0
  46. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/identity/auth.py +0 -0
  47. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/knowledge/__init__.py +0 -0
  48. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/knowledge/client.py +0 -0
  49. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/knowledge/types.py +0 -0
  50. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/mcp/__init__.py +0 -0
  51. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/mcp/client.py +0 -0
  52. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/mcp/types.py +0 -0
  53. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/memory/__init__.py +0 -0
  54. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/memory/client.py +0 -0
  55. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/memory/types.py +0 -0
  56. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/runtime/__init__.py +0 -0
  57. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/runtime/client.py +0 -0
  58. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/runtime/types.py +0 -0
  59. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/skills/__init__.py +0 -0
  60. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/skills/client.py +0 -0
  61. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/skills/types.py +0 -0
  62. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/tools/__init__.py +0 -0
  63. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/tools/client.py +0 -0
  64. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/tools/types.py +0 -0
  65. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/__init__.py +0 -0
  66. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/__init__.py +0 -0
  67. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/base.py +0 -0
  68. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/local_docker.py +0 -0
  69. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/__init__.py +0 -0
  70. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/__main__.py +0 -0
  71. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli.py +0 -0
  72. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_build.py +0 -0
  73. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_config.py +0 -0
  74. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_deploy.py +0 -0
  75. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_destroy.py +0 -0
  76. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_init.py +0 -0
  77. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_knowledge.py +0 -0
  78. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_launch.py +0 -0
  79. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_memory.py +0 -0
  80. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_runtime.py +0 -0
  81. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_skills.py +0 -0
  82. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_skills_workflow.py +0 -0
  83. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_status.py +0 -0
  84. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_tools.py +0 -0
  85. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_version.py +0 -0
  86. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/console_reporter.py +0 -0
  87. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/interactive_config.py +0 -0
  88. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/utils.py +0 -0
  89. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/__init__.py +0 -0
  90. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/choice_resolvers.py +0 -0
  91. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/cloud_provider.py +0 -0
  92. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/config.py +0 -0
  93. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/config_handler.py +0 -0
  94. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/config_validator.py +0 -0
  95. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/constants.py +0 -0
  96. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/dataclass_utils.py +0 -0
  97. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/docker_build_config.py +0 -0
  98. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/global_config.py +0 -0
  99. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/region_defaults.py +0 -0
  100. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/region_resolver.py +0 -0
  101. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/strategy_configs.py +0 -0
  102. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/utils.py +0 -0
  103. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/context.py +0 -0
  104. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/__init__.py +0 -0
  105. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/base_images.py +0 -0
  106. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/container.py +0 -0
  107. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/dockerfile/__init__.py +0 -0
  108. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/dockerfile/manager.py +0 -0
  109. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/dockerfile/metadata.py +0 -0
  110. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/utils.py +0 -0
  111. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/errors.py +0 -0
  112. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/__init__.py +0 -0
  113. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/base_executor.py +0 -0
  114. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/build_executor.py +0 -0
  115. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/deploy_executor.py +0 -0
  116. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/init_executor.py +0 -0
  117. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/invoke_executor.py +0 -0
  118. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/lifecycle_executor.py +0 -0
  119. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/status_executor.py +0 -0
  120. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/models.py +0 -0
  121. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/reporter.py +0 -0
  122. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/__pycache__/customer_support_assistant.cpython-312.pyc +0 -0
  123. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/__pycache__/financial_analyst.cpython-312.pyc +0 -0
  124. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/__pycache__/simple_app_veadk.cpython-312.pyc +0 -0
  125. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/__pycache__/simple_mcp_veadk.cpython-312.pyc +0 -0
  126. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/a2a.py +0 -0
  127. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/agent_server.py +0 -0
  128. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/basic.py +0 -0
  129. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/basic_stream.py +0 -0
  130. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/customer_support_assistant.py +0 -0
  131. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/agent.go +0 -0
  132. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/build.sh +0 -0
  133. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/go.mod +0 -0
  134. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/go.sum +0 -0
  135. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/main.go +0 -0
  136. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/financial_analyst.py +0 -0
  137. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/langchain_basic_stream.py +0 -0
  138. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/simple_app_veadk.py +0 -0
  139. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/simple_mcp_veadk.py +0 -0
  140. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/agent.go +0 -0
  141. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/build.sh +0 -0
  142. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.mod +0 -0
  143. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.sum +0 -0
  144. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/main.go +0 -0
  145. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/agent.go +0 -0
  146. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/build.sh +0 -0
  147. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/go.mod +0 -0
  148. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/go.sum +0 -0
  149. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/main.go +0 -0
  150. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/templates/golang/Dockerfile.j2 +0 -0
  151. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/templates/python/Dockerfile.j2 +0 -0
  152. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/wrappers/wrapper_basic.py.jinja2 +0 -0
  153. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/wrappers/wrapper_stream.py.jinja2 +0 -0
  154. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/__init__.py +0 -0
  155. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/local_docker.py +0 -0
  156. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/__init__.py +0 -0
  157. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/bindings/__init__.py +0 -0
  158. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/bindings/memory.py +0 -0
  159. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/builder.py +0 -0
  160. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/client.py +0 -0
  161. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/config.py +0 -0
  162. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/deployer.py +0 -0
  163. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/initializer.py +0 -0
  164. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/invoker.py +0 -0
  165. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/lifecycle.py +0 -0
  166. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/status.py +0 -0
  167. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/__init__.py +0 -0
  168. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/base_strategy.py +0 -0
  169. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/cloud_strategy.py +0 -0
  170. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/hybrid_strategy.py +0 -0
  171. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/local_strategy.py +0 -0
  172. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/utils/__init__.py +0 -0
  173. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/utils/agent_parser.py +0 -0
  174. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/__init__.py +0 -0
  175. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/code_pipeline.py +0 -0
  176. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/cr.py +0 -0
  177. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/iam.py +0 -0
  178. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/services/__init__.py +0 -0
  179. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/services/cr_service.py +0 -0
  180. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/sts.py +0 -0
  181. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/utils/__init__.py +0 -0
  182. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/utils/project_archiver.py +0 -0
  183. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/__init__.py +0 -0
  184. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/global_config_io.py +0 -0
  185. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/logging_config.py +0 -0
  186. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/misc.py +0 -0
  187. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/request.py +0 -0
  188. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/template_utils.py +0 -0
  189. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/ve_sign.py +0 -0
  190. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/SOURCES.txt +0 -0
  191. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/dependency_links.txt +0 -0
  192. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/entry_points.txt +0 -0
  193. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/requires.txt +0 -0
  194. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/top_level.txt +0 -0
  195. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/setup.cfg +0 -0
  196. {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/tests/test_client_uses_platform_context.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentkit-sdk-python
3
- Version: 0.5.7
3
+ Version: 0.5.9
4
4
  Summary: Python SDK for transforming any AI agent into a production-ready application. Framework-agnostic primitives for runtime, memory, authentication, and tools with volcengine-managed infrastructure.
5
5
  Author-email: Xiangrui Cheng <innsdcc@gmail.com>, Yumeng Bao <baoyumeng.123@gmail.com>, Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>
6
6
  License: Apache License
@@ -18,7 +18,6 @@ This is the top-level base class for all service clients.
18
18
  """
19
19
 
20
20
  import json
21
- import logging
22
21
  from typing import Any, Dict, Type, TypeVar, Union, Optional
23
22
  from dataclasses import dataclass
24
23
 
@@ -35,7 +34,6 @@ from agentkit.platform import (
35
34
  from agentkit.platform.configuration import Credentials as PlatformCredentials
36
35
  from agentkit.platform.provider import CloudProvider
37
36
  from agentkit.utils.ve_sign import ensure_x_custom_source_header
38
- logger = logging.getLogger(__name__)
39
37
 
40
38
  T = TypeVar("T")
41
39
  _CREDENTIAL_ERROR_TOKENS = frozenset(
@@ -306,8 +304,7 @@ class BaseServiceClient(Service):
306
304
 
307
305
  if not res:
308
306
  raise Exception(f"Empty response from {api_action} request.")
309
- # debug level log res
310
- logger.debug(f"Response from {api_action} request: {res}")
307
+
311
308
  response_data = json.loads(res)
312
309
  metadata = response_data.get("ResponseMetadata", {})
313
310
  if metadata.get("Error"):
@@ -29,7 +29,6 @@ class ServiceMeta:
29
29
  DEFAULT_REGION_RULES = {
30
30
  "cn-shanghai": {
31
31
  "cp": "cn-beijing",
32
- "tos": "cn-beijing",
33
32
  }
34
33
  }
35
34
 
@@ -952,6 +952,7 @@ class VeCPCRBuilder(Builder):
952
952
  import time
953
953
 
954
954
  created_in_this_run = False
955
+ name_conflict_not_created = False
955
956
 
956
957
  # Step 1: ensure bucket exists / accessible
957
958
  if auto_created_bucket:
@@ -988,9 +989,7 @@ class VeCPCRBuilder(Builder):
988
989
  created_in_this_run = True
989
990
  except tos.exceptions.TosServerError as e:
990
991
  if e.status_code == 409:
991
- # The bucket name is already taken (possibly by another account).
992
- # Ownership verification in step 2 will block the upload.
993
- pass
992
+ name_conflict_not_created = True
994
993
  else:
995
994
  raise
996
995
 
@@ -1032,10 +1031,43 @@ class VeCPCRBuilder(Builder):
1032
1031
  )
1033
1032
  raise Exception(error_msg)
1034
1033
 
1034
+ if name_conflict_not_created and owned:
1035
+ actual_location = tos_service.get_bucket_location(bucket_name)
1036
+ current_region = getattr(
1037
+ tos_service, "actual_region", config.tos_region
1038
+ )
1039
+ if actual_location:
1040
+ raise Exception(
1041
+ f"TOS bucket '{bucket_name}' exists in region '{actual_location}', "
1042
+ f"but the current configuration targets region '{current_region}'. "
1043
+ "TOS buckets are region-scoped and cannot be accessed across regions. "
1044
+ "Please either switch to the bucket's region or use a different bucket name "
1045
+ f"(e.g. '{bucket_name}-{current_region.split('-')[-1]}')."
1046
+ )
1047
+ else:
1048
+ raise Exception(
1049
+ f"TOS bucket '{bucket_name}' is owned by your account but does not exist "
1050
+ f"in the current region '{current_region}'. It may reside in another region. "
1051
+ "TOS buckets are region-scoped and cannot be accessed across regions. "
1052
+ "Please either switch to the bucket's region or use a different bucket name."
1053
+ )
1054
+
1035
1055
  self.reporter.success(
1036
1056
  f"TOS bucket ownership verified for current account: {bucket_name}"
1037
1057
  )
1038
1058
 
1059
+ if created_in_this_run:
1060
+ data_plane_timeout_s = 30
1061
+ data_plane_interval_s = 3
1062
+ data_plane_deadline = time.time() + data_plane_timeout_s
1063
+ while not tos_service.bucket_exists():
1064
+ if time.time() >= data_plane_deadline:
1065
+ raise Exception(
1066
+ f"TOS bucket '{bucket_name}' was created but is not yet "
1067
+ "available for uploads. Please retry in a few seconds."
1068
+ )
1069
+ time.sleep(data_plane_interval_s)
1070
+
1039
1071
  # Update config with auto-generated bucket name if applicable
1040
1072
  if auto_created_bucket:
1041
1073
  config.tos_bucket = bucket_name
@@ -30,6 +30,26 @@ logger = logging.getLogger(__name__)
30
30
  console = Console()
31
31
 
32
32
 
33
+ def _sanitize_headers_for_display(headers: dict) -> dict:
34
+ if not isinstance(headers, dict):
35
+ return {}
36
+ redacted_keys = {
37
+ "authorization",
38
+ "proxy-authorization",
39
+ "x-api-key",
40
+ "x-auth-token",
41
+ "api-key",
42
+ }
43
+ out: dict = {}
44
+ for k, v in headers.items():
45
+ key = str(k)
46
+ if key.lower() in redacted_keys:
47
+ out[key] = "******"
48
+ else:
49
+ out[key] = v
50
+ return out
51
+
52
+
33
53
  def _extract_text_chunks_from_langchain_event(event: dict) -> list[str]:
34
54
  """Extract incremental text chunks from LangChain message_to_dict-style events.
35
55
 
@@ -211,7 +231,9 @@ def build_a2a_payload(
211
231
 
212
232
 
213
233
  def invoke_command(
214
- config_file: Path = typer.Option("agentkit.yaml", help="Configuration file"),
234
+ config_file: Optional[Path] = typer.Option(
235
+ None, "--config-file", help="Configuration file"
236
+ ),
215
237
  message: str = typer.Argument(None, help="Simple message to send to agent"),
216
238
  payload: str = typer.Option(
217
239
  None, "--payload", "-p", help="JSON payload to send (advanced option)"
@@ -219,6 +241,20 @@ def invoke_command(
219
241
  headers: str = typer.Option(
220
242
  None, "--headers", "-h", help="JSON headers for request (advanced option)"
221
243
  ),
244
+ runtime_id: str = typer.Option(
245
+ None, "--runtime-id", "-r", help="Runtime ID for direct invocation"
246
+ ),
247
+ endpoint: str = typer.Option(
248
+ None, "--endpoint", "-e", help="Endpoint URL for direct invocation"
249
+ ),
250
+ region: str = typer.Option(
251
+ None, "--region", help="Region for Runtime lookup (used with --runtime-id)"
252
+ ),
253
+ a2a: bool = typer.Option(
254
+ False,
255
+ "--a2a",
256
+ help="Force A2A JSON-RPC envelope (direct invocation mode only)",
257
+ ),
222
258
  show_reasoning: bool = typer.Option(
223
259
  False,
224
260
  "--show-reasoning",
@@ -262,8 +298,28 @@ def invoke_command(
262
298
  "[red]Error: Must provide either a message or --payload option.[/red]"
263
299
  )
264
300
  raise typer.Exit(1)
265
- config = get_config(config_path=config_file)
266
- common_config = config.get_common_config()
301
+
302
+ direct_mode = bool(runtime_id or endpoint)
303
+ if direct_mode and config_file is not None:
304
+ console.print(
305
+ "[red]Error: --config-file cannot be used with --runtime-id/--endpoint.[/red]"
306
+ )
307
+ raise typer.Exit(1)
308
+ if runtime_id and endpoint:
309
+ console.print(
310
+ "[red]Error: Cannot specify both --runtime-id and --endpoint.[/red]"
311
+ )
312
+ raise typer.Exit(1)
313
+ if region and not runtime_id:
314
+ console.print(
315
+ "[red]Error: --region can only be used together with --runtime-id.[/red]"
316
+ )
317
+ raise typer.Exit(1)
318
+ if a2a and not direct_mode:
319
+ console.print(
320
+ "[red]Error: --a2a can only be used with --runtime-id or --endpoint.[/red]"
321
+ )
322
+ raise typer.Exit(1)
267
323
 
268
324
  # Process headers
269
325
  default_headers = {
@@ -286,38 +342,100 @@ def invoke_command(
286
342
  )
287
343
  raise typer.Exit(1)
288
344
  final_headers.update(custom_headers)
289
- console.print(f"[blue]Using merged headers: {final_headers}[/blue]")
345
+ console.print(
346
+ f"[blue]Using merged headers: {_sanitize_headers_for_display(final_headers)}[/blue]"
347
+ )
290
348
  else:
291
- console.print(f"[blue]Using default headers: {final_headers}[/blue]")
292
-
293
- final_payload = build_standard_payload(message, payload)
294
- agent_type = getattr(common_config, "agent_type", "") or getattr(
295
- common_config, "template_type", ""
296
- )
297
- is_a2a = isinstance(agent_type, str) and "a2a" in agent_type.lower()
298
-
299
- # If it's an A2A Agent, reconstruct payload using A2A constructor
300
- if is_a2a:
301
349
  console.print(
302
- "[cyan]Detected A2A agent type - constructing A2A JSON-RPC envelope[/cyan]"
350
+ f"[blue]Using default headers: {_sanitize_headers_for_display(final_headers)}[/blue]"
303
351
  )
304
- final_payload = build_a2a_payload(message, payload, final_headers)
305
352
 
306
353
  if apikey:
354
+ if runtime_id:
355
+ console.print(
356
+ "[red]Error: --apikey cannot be used together with --runtime-id. "
357
+ "--runtime-id mode resolves the Runtime and infers its auth type automatically: "
358
+ "for API Key (key_auth), omit auth flags and the CLI will fetch and inject the API key; "
359
+ 'for JWT/OAuth (custom_jwt), provide an Authorization header via --headers \'{"Authorization":"Bearer <token>"}\'. '
360
+ "If you want to pass an API key manually, use --endpoint together with --apikey.[/red]"
361
+ )
362
+ raise typer.Exit(1)
307
363
  final_headers["Authorization"] = f"Bearer {apikey}"
308
364
 
365
+ final_payload = build_standard_payload(message, payload)
366
+
309
367
  from agentkit.toolkit.context import ExecutionContext
310
368
 
311
369
  reporter = ConsoleReporter()
312
370
  ExecutionContext.set_reporter(reporter)
313
371
 
314
372
  executor = InvokeExecutor(reporter=reporter)
315
- result = executor.execute(
316
- payload=final_payload,
317
- config_file=str(config_file),
318
- headers=final_headers,
319
- stream=None, # Automatically determined by Runner
320
- )
373
+
374
+ if direct_mode:
375
+ if endpoint and not apikey and not final_headers.get("Authorization"):
376
+ console.print(
377
+ "[red]Error: --endpoint requires --apikey or an Authorization header provided via --headers.[/red]"
378
+ )
379
+ raise typer.Exit(1)
380
+
381
+ direct_common = {
382
+ "agent_name": "direct_invoke",
383
+ "entry_point": "agent.py",
384
+ "launch_type": "cloud",
385
+ }
386
+
387
+ is_a2a_payload = isinstance(final_payload, dict) and bool(
388
+ final_payload.get("jsonrpc")
389
+ )
390
+ if a2a:
391
+ final_payload = build_a2a_payload(message, payload, final_headers)
392
+ is_a2a_payload = True
393
+
394
+ if is_a2a_payload:
395
+ direct_common["agent_type"] = "a2a"
396
+
397
+ direct_cloud: dict[str, Any] = {}
398
+ if region:
399
+ direct_cloud["region"] = region
400
+ if runtime_id:
401
+ direct_cloud["runtime_id"] = runtime_id
402
+ if endpoint:
403
+ direct_cloud["runtime_endpoint"] = endpoint
404
+ if apikey:
405
+ direct_cloud["runtime_apikey"] = apikey
406
+ else:
407
+ direct_cloud["runtime_auth_type"] = "custom_jwt"
408
+
409
+ config_dict = {"common": direct_common, "launch_types": {"cloud": direct_cloud}}
410
+
411
+ result = executor.execute(
412
+ payload=final_payload,
413
+ config_dict=config_dict,
414
+ headers=final_headers,
415
+ stream=None,
416
+ )
417
+ else:
418
+ config_path = config_file or Path("agentkit.yaml")
419
+ config = get_config(config_path=config_path)
420
+ common_config = config.get_common_config()
421
+
422
+ agent_type = getattr(common_config, "agent_type", "") or getattr(
423
+ common_config, "template_type", ""
424
+ )
425
+ is_a2a = isinstance(agent_type, str) and "a2a" in agent_type.lower()
426
+
427
+ if is_a2a:
428
+ console.print(
429
+ "[cyan]Detected A2A agent type - constructing A2A JSON-RPC envelope[/cyan]"
430
+ )
431
+ final_payload = build_a2a_payload(message, payload, final_headers)
432
+
433
+ result = executor.execute(
434
+ payload=final_payload,
435
+ config_file=str(config_path),
436
+ headers=final_headers,
437
+ stream=None, # Automatically determined by Runner
438
+ )
321
439
 
322
440
  if not result.success:
323
441
  console.print(f"[red]❌ Invocation failed: {result.error}[/red]")
@@ -26,22 +26,24 @@ stages:
26
26
  shell: BASH
27
27
  - step: step-c4
28
28
  displayName: 镜像构建推送至镜像仓库服务
29
- component: build@2.0.0/buildkit-cr@3.0.0
29
+ component: build@2.0.0/buildkit-cr@5.0.0
30
30
  inputs:
31
+ buildParams: ""
31
32
  compression: gzip
32
33
  contextPath: $PROJECT_ROOT_DIR
33
34
  crDomain: $CR_DOMAIN
34
- crNamespace: $CR_NAMESPACE
35
- crRegion: $CR_REGION
36
- crRegistryInstance: $CR_INSTANCE
37
- crRepo: $CR_OCI
38
- crTag: $CR_TAG
35
+ namespace: $CR_NAMESPACE
36
+ region: $CR_REGION
37
+ registryInstance: $CR_INSTANCE
38
+ repo: $CR_OCI
39
+ tag: $CR_TAG
39
40
  disableSSLVerify: true
40
41
  dockerfiles:
41
42
  default:
42
43
  path: $DOCKERFILE_PATH
43
44
  loginCredential: []
44
45
  useCache: false
46
+ nydusify: true
45
47
  outputs:
46
48
  - imageOutput_step-c4
47
49
  workspace: {}
@@ -17,6 +17,9 @@ from typing import Dict, Any, Optional, Union, Generator, Tuple
17
17
  import logging
18
18
  import requests
19
19
  import json
20
+ import time
21
+ import uuid
22
+ import random
20
23
  from urllib.parse import urljoin
21
24
  from dataclasses import dataclass
22
25
 
@@ -53,6 +56,8 @@ class Runner(ABC):
53
56
  """
54
57
  self.logger = logging.getLogger(f"{__name__}.{self.__class__.__name__}")
55
58
  self.reporter = reporter or SilentReporter()
59
+ self._backend_detect_cache: Dict[str, Tuple[str, float]] = {}
60
+ self._backend_detect_cache_ttl_s: int = 120
56
61
 
57
62
  # ===== Configuration types =====
58
63
  @dataclass
@@ -387,6 +392,99 @@ class Runner(ABC):
387
392
  or err.startswith("Invocation failed: 405")
388
393
  )
389
394
 
395
+ def _normalize_base_endpoint(self, base_endpoint: str) -> str:
396
+ try:
397
+ return (base_endpoint or "").rstrip("/")
398
+ except Exception:
399
+ return base_endpoint
400
+
401
+ def _get_cached_backend(self, base_endpoint: str) -> Optional[str]:
402
+ key = self._normalize_base_endpoint(base_endpoint)
403
+ item = self._backend_detect_cache.get(key)
404
+ if not item:
405
+ return None
406
+ kind, ts = item
407
+ if time.monotonic() - ts > self._backend_detect_cache_ttl_s:
408
+ try:
409
+ self._backend_detect_cache.pop(key, None)
410
+ except Exception:
411
+ pass
412
+ return None
413
+ return kind
414
+
415
+ def _set_cached_backend(self, base_endpoint: str, kind: str) -> None:
416
+ key = self._normalize_base_endpoint(base_endpoint)
417
+ try:
418
+ self._backend_detect_cache[key] = (kind, time.monotonic())
419
+ except Exception:
420
+ pass
421
+
422
+ def _is_a2a_agent_card_response(self, data: Any) -> bool:
423
+ if not isinstance(data, dict):
424
+ return False
425
+ name = data.get("name")
426
+ if not isinstance(name, str) or not name:
427
+ return False
428
+ if isinstance(data.get("capabilities"), dict):
429
+ return True
430
+ if isinstance(data.get("skills"), list):
431
+ return True
432
+ if isinstance(data.get("endpoints"), (dict, list)):
433
+ return True
434
+ if isinstance(data.get("protocol_version"), str) or isinstance(
435
+ data.get("protocolVersion"), str
436
+ ):
437
+ return True
438
+ return False
439
+
440
+ def _detect_a2a_backend(
441
+ self, base_endpoint: str, headers: Dict[str, str], timeout_s: int = 2
442
+ ) -> bool:
443
+ try:
444
+ base = (base_endpoint.rstrip("/") + "/") if base_endpoint else ""
445
+ url = urljoin(base, ".well-known/agent-card.json")
446
+ resp = requests.get(url, headers=headers, timeout=timeout_s)
447
+ if resp.status_code != 200:
448
+ return False
449
+ try:
450
+ data = resp.json()
451
+ except Exception:
452
+ return False
453
+ return self._is_a2a_agent_card_response(data)
454
+ except Exception:
455
+ return False
456
+
457
+ def _build_a2a_jsonrpc_payload(
458
+ self, original_payload: Any, headers: Dict[str, str]
459
+ ) -> Dict[str, Any]:
460
+ if isinstance(original_payload, dict) and original_payload.get("jsonrpc"):
461
+ return original_payload
462
+
463
+ text = None
464
+ if isinstance(original_payload, dict):
465
+ val = original_payload.get("prompt")
466
+ if isinstance(val, str):
467
+ text = val
468
+ if text is None:
469
+ try:
470
+ text = json.dumps(original_payload, ensure_ascii=False)
471
+ except Exception:
472
+ text = ""
473
+
474
+ return {
475
+ "jsonrpc": "2.0",
476
+ "method": "message/stream",
477
+ "params": {
478
+ "message": {
479
+ "role": "user",
480
+ "messageId": str(uuid.uuid4()),
481
+ "parts": [{"kind": "text", "text": text or ""}],
482
+ },
483
+ "metadata": headers,
484
+ },
485
+ "id": random.randint(1, 999999),
486
+ }
487
+
390
488
  def _post_run_sse(
391
489
  self,
392
490
  base_endpoint: str,
@@ -435,10 +533,8 @@ class Runner(ABC):
435
533
  timeout=policy.invoke_timeout,
436
534
  )
437
535
  else:
438
- # Non-A2A: detect ADK first
439
- if self._detect_adk_backend(
440
- ctx.base_endpoint, ctx.headers, timeout_s=policy.detect_timeout
441
- ):
536
+ cached = self._get_cached_backend(ctx.base_endpoint)
537
+ if cached == "adk":
442
538
  app_name = self._get_adk_app_name(
443
539
  ctx.base_endpoint,
444
540
  ctx.headers,
@@ -465,6 +561,16 @@ class Runner(ABC):
465
561
  adk_payload,
466
562
  timeout_s=policy.sse_timeout,
467
563
  )
564
+ elif cached == "a2a":
565
+ a2a_payload = self._build_a2a_jsonrpc_payload(payload, ctx.headers)
566
+ success, response_data = self._http_post_invoke(
567
+ endpoint=self._normalize_base_endpoint(ctx.base_endpoint)
568
+ or ctx.base_endpoint,
569
+ payload=a2a_payload,
570
+ headers=ctx.headers,
571
+ stream=None,
572
+ timeout=policy.invoke_timeout,
573
+ )
468
574
  else:
469
575
  success, response_data = self._http_post_invoke(
470
576
  endpoint=ctx.invoke_endpoint,
@@ -473,35 +579,58 @@ class Runner(ABC):
473
579
  stream=None,
474
580
  timeout=policy.invoke_timeout,
475
581
  )
476
- if not success and self._should_fallback_to_adk(str(response_data)):
477
- app_name = self._get_adk_app_name(
478
- ctx.base_endpoint,
479
- ctx.headers,
480
- preferred_name=ctx.preferred_app_name,
481
- timeout_s=policy.list_apps_timeout,
482
- )
483
- app_name = app_name or "agentkit-app"
484
- user_id = ctx.headers.get("user_id") or "agentkit_user"
485
- session_id = (
486
- ctx.headers.get("session_id") or "agentkit_sample_session"
487
- )
488
- self._ensure_adk_session(
489
- ctx.base_endpoint,
490
- ctx.headers,
491
- app_name,
492
- user_id,
493
- session_id,
494
- timeout_s=policy.session_timeout,
495
- )
496
- adk_payload = self._build_adk_run_sse_payload(
497
- app_name, ctx.headers, payload
498
- )
499
- success, response_data = self._post_run_sse(
500
- ctx.base_endpoint,
501
- ctx.headers,
502
- adk_payload,
503
- timeout_s=policy.sse_timeout,
504
- )
582
+ if success:
583
+ self._set_cached_backend(ctx.base_endpoint, "invoke")
584
+ elif self._should_fallback_to_adk(str(response_data)):
585
+ if self._detect_adk_backend(
586
+ ctx.base_endpoint, ctx.headers, timeout_s=policy.detect_timeout
587
+ ):
588
+ self._set_cached_backend(ctx.base_endpoint, "adk")
589
+ app_name = self._get_adk_app_name(
590
+ ctx.base_endpoint,
591
+ ctx.headers,
592
+ preferred_name=ctx.preferred_app_name,
593
+ timeout_s=policy.list_apps_timeout,
594
+ )
595
+ app_name = app_name or "agentkit-app"
596
+ user_id = ctx.headers.get("user_id") or "agentkit_user"
597
+ session_id = (
598
+ ctx.headers.get("session_id") or "agentkit_sample_session"
599
+ )
600
+ self._ensure_adk_session(
601
+ ctx.base_endpoint,
602
+ ctx.headers,
603
+ app_name,
604
+ user_id,
605
+ session_id,
606
+ timeout_s=policy.session_timeout,
607
+ )
608
+ adk_payload = self._build_adk_run_sse_payload(
609
+ app_name, ctx.headers, payload
610
+ )
611
+ success, response_data = self._post_run_sse(
612
+ ctx.base_endpoint,
613
+ ctx.headers,
614
+ adk_payload,
615
+ timeout_s=policy.sse_timeout,
616
+ )
617
+ elif self._detect_a2a_backend(
618
+ ctx.base_endpoint, ctx.headers, timeout_s=policy.detect_timeout
619
+ ):
620
+ self._set_cached_backend(ctx.base_endpoint, "a2a")
621
+ a2a_payload = self._build_a2a_jsonrpc_payload(
622
+ payload, ctx.headers
623
+ )
624
+ success, response_data = self._http_post_invoke(
625
+ endpoint=self._normalize_base_endpoint(ctx.base_endpoint)
626
+ or ctx.base_endpoint,
627
+ payload=a2a_payload,
628
+ headers=ctx.headers,
629
+ stream=None,
630
+ timeout=policy.invoke_timeout,
631
+ )
632
+ else:
633
+ self._set_cached_backend(ctx.base_endpoint, "unknown")
505
634
 
506
635
  is_streaming = hasattr(response_data, "__iter__") and not isinstance(
507
636
  response_data, (dict, str, list, bytes)
@@ -416,7 +416,8 @@ class VeAgentkitRuntimeRunner(Runner):
416
416
  """
417
417
  try:
418
418
  runner_config = config
419
- is_jwt_auth = runner_config.runtime_auth_type == AUTH_TYPE_CUSTOM_JWT
419
+ effective_auth_type = runner_config.runtime_auth_type
420
+ is_jwt_auth = effective_auth_type == AUTH_TYPE_CUSTOM_JWT
420
421
 
421
422
  # Get Runtime endpoint and API key
422
423
  endpoint = runner_config.runtime_endpoint
@@ -455,6 +456,14 @@ class VeAgentkitRuntimeRunner(Runner):
455
456
  error_code=ErrorCode.RESOURCE_NOT_FOUND,
456
457
  )
457
458
  raise e
459
+
460
+ authorizer = getattr(runtime, "authorizer_configuration", None)
461
+ if authorizer and getattr(authorizer, "custom_jwt_authorizer", None):
462
+ effective_auth_type = AUTH_TYPE_CUSTOM_JWT
463
+ elif authorizer and getattr(authorizer, "key_auth", None):
464
+ effective_auth_type = AUTH_TYPE_KEY_AUTH
465
+ is_jwt_auth = effective_auth_type == AUTH_TYPE_CUSTOM_JWT
466
+
458
467
  endpoint = self.get_public_endpoint_of_runtime(runtime)
459
468
 
460
469
  # Only fetch API key for key_auth mode
@@ -468,7 +477,7 @@ class VeAgentkitRuntimeRunner(Runner):
468
477
  # Validate based on auth type
469
478
  if not endpoint:
470
479
  error_msg = "Failed to obtain Runtime endpoint. The 'agentkit invoke' command only supports public network endpoints."
471
- logger.error(f"{error_msg}, runtime: {runtime}")
480
+ logger.error(error_msg)
472
481
  return InvokeResult(
473
482
  success=False,
474
483
  error=error_msg,
@@ -476,7 +485,7 @@ class VeAgentkitRuntimeRunner(Runner):
476
485
  )
477
486
  if not is_jwt_auth and not api_key:
478
487
  error_msg = "Failed to obtain Runtime API key."
479
- logger.error(f"{error_msg}, runtime: {runtime}")
488
+ logger.error(error_msg)
480
489
  return InvokeResult(
481
490
  success=False,
482
491
  error=error_msg,
@@ -266,6 +266,30 @@ class TOSService:
266
266
  return False
267
267
  return name in set(self.list_bucket_names())
268
268
 
269
+ def get_bucket_location(self, bucket_name: Optional[str] = None) -> Optional[str]:
270
+ """Return the region (location) of a bucket owned by this account.
271
+
272
+ Uses the already-available ListBuckets data so no extra API call is needed
273
+ beyond what ``bucket_is_owned`` / ``list_bucket_names`` already do.
274
+
275
+ Args:
276
+ bucket_name: Bucket name to look up. Defaults to configured bucket.
277
+
278
+ Returns:
279
+ The region string (e.g. ``"cn-beijing"``) or ``None`` if not found.
280
+ """
281
+ name = bucket_name or self.config.bucket
282
+ if not name:
283
+ return None
284
+ try:
285
+ out = self.client.list_buckets()
286
+ for b in getattr(out, "buckets", None) or []:
287
+ if getattr(b, "name", None) == name:
288
+ return getattr(b, "location", None)
289
+ except Exception as e:
290
+ logger.warning(f"Failed to get bucket location: {str(e)}")
291
+ return None
292
+
269
293
  def bucket_exists(self) -> bool:
270
294
  """Check if the configured bucket exists.
271
295
 
@@ -12,4 +12,4 @@
12
12
  # See the License for the specific language governing permissions and
13
13
  # limitations under the License.
14
14
 
15
- VERSION = "0.5.7"
15
+ VERSION = "0.5.9"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: agentkit-sdk-python
3
- Version: 0.5.7
3
+ Version: 0.5.9
4
4
  Summary: Python SDK for transforming any AI agent into a production-ready application. Framework-agnostic primitives for runtime, memory, authentication, and tools with volcengine-managed infrastructure.
5
5
  Author-email: Xiangrui Cheng <innsdcc@gmail.com>, Yumeng Bao <baoyumeng.123@gmail.com>, Yaozheng Fang <fangyozheng@gmail.com>, Guodong Li <cu.eric.lee@gmail.com>
6
6
  License: Apache License