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.
- {agentkit_sdk_python-0.5.7/agentkit_sdk_python.egg-info → agentkit_sdk_python-0.5.9}/PKG-INFO +1 -1
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_service_client.py +1 -4
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/constants.py +0 -1
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/ve_pipeline.py +35 -3
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_invoke.py +140 -22
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/templates/code-pipeline-tos-cr-step.j2 +8 -6
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/base.py +162 -33
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/ve_agentkit.py +12 -3
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/services/tos_service.py +24 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/version.py +1 -1
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9/agentkit_sdk_python.egg-info}/PKG-INFO +1 -1
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/pyproject.toml +1 -1
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/LICENSE +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/MANIFEST.in +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/README.md +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/a2a_app/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/a2a_app/a2a_app.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/a2a_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/agent_server_app.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/middleware.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/agent_server_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/base_app.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/mcp_app/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/mcp_app/mcp_app.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/mcp_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/simple_app.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/simple_app_handlers.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/simple_app/telemetry.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/apps/utils.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_agentkit_client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_iam_client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/configuration.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/console_urls.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/context.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/platform/provider.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/account/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/account/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/identity/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/identity/auth.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/knowledge/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/knowledge/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/knowledge/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/mcp/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/mcp/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/mcp/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/memory/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/memory/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/memory/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/runtime/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/runtime/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/runtime/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/skills/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/skills/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/skills/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/tools/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/tools/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/sdk/tools/types.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/base.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/local_docker.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/__main__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_build.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_deploy.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_destroy.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_init.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_knowledge.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_launch.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_memory.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_runtime.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_skills.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_skills_workflow.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_status.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_tools.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/cli_version.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/console_reporter.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/interactive_config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/cli/utils.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/choice_resolvers.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/cloud_provider.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/config_handler.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/config_validator.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/constants.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/dataclass_utils.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/docker_build_config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/global_config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/region_defaults.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/region_resolver.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/strategy_configs.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/config/utils.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/context.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/base_images.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/container.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/dockerfile/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/dockerfile/manager.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/dockerfile/metadata.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/docker/utils.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/errors.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/base_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/build_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/deploy_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/init_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/invoke_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/lifecycle_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/executors/status_executor.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/models.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/reporter.py +0 -0
- {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
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/__pycache__/financial_analyst.cpython-312.pyc +0 -0
- {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
- {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
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/a2a.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/agent_server.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/basic.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/basic_stream.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/customer_support_assistant.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/agent.go +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/build.sh +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/go.mod +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/go.sum +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/eino_a2a/main.go +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/financial_analyst.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/langchain_basic_stream.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/simple_app_veadk.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/simple_mcp_veadk.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/agent.go +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/build.sh +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.mod +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/go.sum +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_a2a/main.go +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/agent.go +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/build.sh +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/go.mod +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/go.sum +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/samples/veadk_go_basic/main.go +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/templates/golang/Dockerfile.j2 +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/templates/python/Dockerfile.j2 +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/wrappers/wrapper_basic.py.jinja2 +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/resources/wrappers/wrapper_stream.py.jinja2 +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/local_docker.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/bindings/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/bindings/memory.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/builder.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/client.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/deployer.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/initializer.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/invoker.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/lifecycle.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/sdk/status.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/base_strategy.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/cloud_strategy.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/hybrid_strategy.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/strategies/local_strategy.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/utils/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/utils/agent_parser.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/code_pipeline.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/cr.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/iam.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/services/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/services/cr_service.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/sts.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/utils/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/volcengine/utils/project_archiver.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/__init__.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/global_config_io.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/logging_config.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/misc.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/request.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/template_utils.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/utils/ve_sign.py +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/SOURCES.txt +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/dependency_links.txt +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/entry_points.txt +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/requires.txt +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit_sdk_python.egg-info/top_level.txt +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/setup.cfg +0 -0
- {agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/tests/test_client_uses_platform_context.py +0 -0
{agentkit_sdk_python-0.5.7/agentkit_sdk_python.egg-info → agentkit_sdk_python-0.5.9}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentkit-sdk-python
|
|
3
|
-
Version: 0.5.
|
|
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
|
{agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/client/base_service_client.py
RENAMED
|
@@ -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
|
-
|
|
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"):
|
{agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/builders/ve_pipeline.py
RENAMED
|
@@ -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
|
-
|
|
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(
|
|
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
|
-
|
|
266
|
-
|
|
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(
|
|
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
|
-
"[
|
|
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
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
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@
|
|
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
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
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
|
-
|
|
439
|
-
if
|
|
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
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
ctx.headers
|
|
491
|
-
|
|
492
|
-
|
|
493
|
-
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
adk_payload
|
|
503
|
-
|
|
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)
|
{agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9}/agentkit/toolkit/runners/ve_agentkit.py
RENAMED
|
@@ -416,7 +416,8 @@ class VeAgentkitRuntimeRunner(Runner):
|
|
|
416
416
|
"""
|
|
417
417
|
try:
|
|
418
418
|
runner_config = config
|
|
419
|
-
|
|
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(
|
|
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(
|
|
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
|
|
{agentkit_sdk_python-0.5.7 → agentkit_sdk_python-0.5.9/agentkit_sdk_python.egg-info}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: agentkit-sdk-python
|
|
3
|
-
Version: 0.5.
|
|
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
|